2015-11-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline does not immediately update current time after switching tabs while recording
        https://bugs.webkit.org/show_bug.cgi?id=151528

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.shown):
        Provide a number so that _startUpdatingCurrentTime doesn't decide
        to wait until the next event to update current time.

        (WebInspector.TimelineRecordingContentView.prototype._update):
        When switching tabs we stop updating and hit this code. However
        we want to keep _lastUpdateTimestamp so that if we switch back
        to the tab we can re-compute the current time. So don't clear it
        in cases where the view was hidden, as it might need to use
        it when it is shown again.

2015-11-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove "Show only resources with breakpoints" filter button
        https://bugs.webkit.org/show_bug.cgi?id=151517

        Reviewed by Timothy Hatcher.

        Removed filter button in preparation for https://bugs.webkit.org/show_bug.cgi?id=151119.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.showResourcesWithBreakpointsOnlyFilterFunction): Deleted.
        (WebInspector.DebuggerSidebarPanel): Deleted.

2015-11-20  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Add support for Gradients in the Visual sidebar background editor
        https://bugs.webkit.org/show_bug.cgi?id=150494

        Reviewed by Timothy Hatcher.

        Allows the editors in the Visual sidebar Background Style section to
        work with gradients and data URIs.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/CodeMirrorGradientEditingController.css: Deleted.
        Some styling was reused in VisualStyleBackgroundPicker.css.

        * UserInterface/Controllers/CodeMirrorGradientEditingController.js:
        (WebInspector.CodeMirrorGradientEditingController):
        (WebInspector.CodeMirrorGradientEditingController.prototype.popoverWillPresent):
        (WebInspector.CodeMirrorGradientEditingController.prototype.popoverDidPresent):
        (WebInspector.CodeMirrorGradientEditingController.prototype._gradientEditorGradientChanged):
        (WebInspector.CodeMirrorGradientEditingController.prototype.handleEvent): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopsDidChange): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype._handleInputEvent): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype._angleInputValueDidChange): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype._handleChangeEvent): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype._colorPickerColorChanged): Deleted.
        (WebInspector.CodeMirrorGradientEditingController.prototype._updateCSSClassForGradientType): Deleted.
        Reworked gradient editor popup into WebInspector.GradientEditor.

        * UserInterface/Main.html:
        * UserInterface/Models/Gradient.js:
        (WebInspector.Gradient.fromString):
        (WebInspector.Gradient.stopsWithComponents):
        (WebInspector.LinearGradient.linearGradientWithComponents):
        Removed console.error statements as they didn't do anything but clog the console.

        * UserInterface/Views/GradientEditor.css: Added.
        (.gradient-editor):
        (.gradient-editor.radial-gradient):
        (.gradient-editor.editing-color):
        (.gradient-editor.radial-gradient.editing-color):
        (.gradient-editor > .gradient-type-select):
        (.gradient-editor > .gradient-slider):
        (.gradient-editor > .color-picker):
        (.gradient-editor > .color-picker > .slider):
        (.gradient-editor > .color-picker > .brightness):
        (.gradient-editor > .color-picker > .opacity):
        (.gradient-editor > .gradient-angle):
        (.gradient-editor.radial-gradient > .gradient-angle):
        (.gradient-editor > .gradient-angle > input):

        * UserInterface/Views/GradientEditor.js: Added.
        (WebInspector.GradientEditor):
        (WebInspector.GradientEditor.prototype.get element):
        (WebInspector.GradientEditor.prototype.set gradient):
        (WebInspector.GradientEditor.prototype.get gradient):
        (WebInspector.GradientEditor.prototype.gradientSliderStopsDidChange):
        (WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
        (WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount):
        (WebInspector.GradientEditor.prototype._updateCSSClassForGradientType):
        (WebInspector.GradientEditor.prototype._gradientTypeChanged):
        (WebInspector.GradientEditor.prototype._colorPickerColorChanged):
        (WebInspector.GradientEditor.prototype._angleChanged):
        (WebInspector.GradientEditor.prototype._angleInputValueDidChange):
        New standalone editor for CSS Gradients.

        * UserInterface/Views/VisualStyleBackgroundPicker.css: Added.
        (.visual-style-property-container.background-picker > .visual-style-property-value-container):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .color-gradient-swatch):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .color-gradient-swatch:hover):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .color-gradient-swatch:active):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .color-gradient-swatch > span):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container.gradient-value > .color-gradient-swatch):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container.gradient-value > .color-gradient-swatch + .value-input):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .value-input):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .value-input[disabled]):
        (.visual-style-property-container.background-picker > .visual-style-property-value-container > .value-type-picker-select):

        * UserInterface/Views/VisualStyleBackgroundPicker.js: Added.
        (WebInspector.VisualStyleBackgroundPicker):
        (WebInspector.VisualStyleBackgroundPicker.prototype.get value):
        (WebInspector.VisualStyleBackgroundPicker.prototype.set value):
        (WebInspector.VisualStyleBackgroundPicker.prototype.get synthesizedValue):
        (WebInspector.VisualStyleBackgroundPicker.prototype.parseValue):
        (WebInspector.VisualStyleBackgroundPicker.prototype._updateValueInput):
        (WebInspector.VisualStyleBackgroundPicker.prototype._updateGradientSwatch):
        (WebInspector.VisualStyleBackgroundPicker.prototype._gradientSwatchClicked):
        (WebInspector.VisualStyleBackgroundPicker.prototype._gradientEditorGradientChanged):
        (WebInspector.VisualStyleBackgroundPicker.prototype._valueInputValueChanged):
        (WebInspector.VisualStyleBackgroundPicker.prototype._keywordSelectMouseDown):
        (WebInspector.VisualStyleBackgroundPicker.prototype._handleKeywordChanged):
        (WebInspector.VisualStyleBackgroundPicker.prototype._createValueOptions):
        (WebInspector.VisualStyleBackgroundPicker.prototype._addAdvancedValues):
        (WebInspector.VisualStyleBackgroundPicker.prototype._removeAdvancedValues):
        (WebInspector.VisualStyleBackgroundPicker.prototype._toggleTabbingOfSelectableElements):
        Visual property editor for the CSS background-image property. Supports
        limited keywords, as well as url() and gradients.

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set value):
        Fixed regular expression parsing to not match commas inside parenthesis.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):

        * UserInterface/Views/VisualStylePropertyEditorLink.css:
        (.visual-style-property-editor-link:not(.link-all) > .visual-style-property-editor-link-border):
        Fixed spacing of link line.

        * UserInterface/Views/VisualStyleURLInput.js: Removed.
        Reworked into VisualStyleBackgroundPicker.js.

2015-11-19  Brian Burg  <bburg@apple.com>

        Web Inspector: yank/kill shortcuts (CTRL+Y, K) don't work in Console / QuickConsole
        https://bugs.webkit.org/show_bug.cgi?id=151157

        Reviewed by Joseph Pecoraro.

        CodeMirror maintains its own editor buffer and implements its own
        `killLine` command but doesn't implement the yank command. So, text
        that is "killed" with CTRL-k inside a CodeMirror instance isn't
        added to WebCore's kill ring. Subsequent yank commands won't match
        up with the killed text, instead returning text from a prior kill
        that was handled by WebCore (i.e., in a contenteditable or form input).

        This patch adds a host function so that the Inspector frontend can
        append "missed" killed text to WebCore's kill ring. Subsequent
        yanks handled by WebCore will then match the text killed by CodeMirror.

        In the frontend, we implement our own key binding handler for
        CTRL-k that captures killed text, detects whether the kill
        should start a new sequence, and sends it to WebCore. Because this
        involves several flags and listeners, and we want this behavior for
        all editable CodeMirror instances, the text kill handling is
        factored into its own CodeMirrorTextKillController.

        To add this behavior to all instances, this patch centralizes the
        code that constructs a base CodeMirror instance, and attaches the
        CodeMirrorTextKillController to all instances. The shortcut
        does nothing when its CodeMirror instance is read-only.

        The particulars of the kill controller are documented inline.

        No new tests, because we need to use both InspectorFrontendHost
        and TestRunner.execCommand, but the latter is not available in
        the inspector context where we would need to simulate a kill.

        * UserInterface/Controllers/CodeMirrorTextKillController.js: Added.
        (WebInspector.CodeMirrorTextKillController):
        (WebInspector.CodeMirrorTextKillController.prototype._handleKillLine):
        (WebInspector.CodeMirrorTextKillController.prototype._handleTextChange):
        (WebInspector.CodeMirrorTextKillController.prototype._handleEditorBlur):
        (WebInspector.CodeMirrorTextKillController.prototype._handleSelectionOrCaretChange):
        * UserInterface/Main.html:
        * UserInterface/Protocol/InspectorFrontendHostStub.js:
        (window.InspectorFrontendHost.WebInspector.InspectorFrontendHostStub.prototype.killText): Add a stub to avoid check-before-use.
        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._updateBody):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):
        * UserInterface/Views/CodeMirrorEditor.js: Added.
        (WebInspector.CodeMirrorEditor.create):
        (WebInspector.CodeMirrorEditor):
        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):

2015-11-19  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Convert remaining timeline views to use View base class
        https://bugs.webkit.org/show_bug.cgi?id=151410

        Reviewed by Timothy Hatcher.

        Converted timeline views to use View base class. Mostly mechanical
        changes (override View.prototype.layout, use let in more places).

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph.prototype.layout):
        (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout): Deleted.

        * UserInterface/Views/NetworkTimelineOverviewGraph.js:
        (WebInspector.NetworkTimelineOverviewGraph.prototype.layout.createBar):
        (WebInspector.NetworkTimelineOverviewGraph.prototype.layout):
        (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar): Deleted.
        (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout): Deleted.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.layout):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.updateLayout): Deleted.

        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph.prototype.layout.createBar):
        (WebInspector.ScriptTimelineOverviewGraph.prototype.layout):
        (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout.createBar): Deleted.
        (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout): Deleted.

        * UserInterface/Views/TimelineOverview.js:
        Extend View.
        (WebInspector.TimelineOverview):
        Add ruler as a subview.
        (WebInspector.TimelineOverview.prototype.set startTime):
        (WebInspector.TimelineOverview.prototype.set currentTime):
        (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
        (WebInspector.TimelineOverview.prototype.set endTime):
        (WebInspector.TimelineOverview.prototype.set scrollStartTime):
        (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
        (WebInspector.TimelineOverview.prototype.get timelineRuler):
        (WebInspector.TimelineOverview.prototype.canShowTimeline):
        (WebInspector.TimelineOverview.prototype.layout):
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        (WebInspector.TimelineOverview._handleGestureStart):
        (WebInspector.TimelineOverview.prototype._handleGestureChange):
        (WebInspector.TimelineOverview.prototype._timelineAdded):
        (WebInspector.TimelineOverview.prototype._timelineRemoved):
        (WebInspector.TimelineOverview.prototype.get element): Deleted.
        (WebInspector.TimelineOverview.prototype.updateLayout): Deleted.

        * UserInterface/Views/TimelineOverviewGraph.js:
        Extend view.
        (WebInspector.TimelineOverviewGraph):
        (WebInspector.TimelineOverviewGraph.prototype.needsLayout):
        (WebInspector.TimelineOverviewGraph.prototype._needsSelectedRecordLayout):
        (WebInspector.TimelineOverviewGraph.prototype.updateLayout): Deleted.
        (WebInspector.TimelineOverviewGraph.prototype.updateLayoutIfNeeded): Deleted.
        (WebInspector.TimelineOverviewGraph.prototype._needsSelectedRecordLayout.update): Deleted.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        Add overview as a subview.
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        Use View.prototype.replaceSubview to swap overview graphs.

2015-11-18  Brian Burg  <bburg@apple.com>

        Web Inspector: Storage tab shouldn't hide cookies for .example.com when inspected page is foo.bar.example.com
        https://bugs.webkit.org/show_bug.cgi?id=151408

        Reviewed by Timothy Hatcher.

        The regex should allow multiple subdomains to match a cookie for domain .example.com.

        Test: inspector/page/filter-cookies-for-domain.html

        * UserInterface/Models/CookieStorageObject.js:
        (WebInspector.CookieStorageObject.cookieDomainMatchesResourceDomain):

            Also make the group non-capturing. We don't use the match.

        (WebInspector.CookieStorageObject.prototype.saveIdentityToCookie):
        (WebInspector.CookieStorageObject):
        * UserInterface/Test.html:

2015-11-18  Brian Burg  <bburg@apple.com>

        Web Inspector: move cookie url matching out of CookieStorageContentView and clean up some code
        https://bugs.webkit.org/show_bug.cgi?id=151424

        Reviewed by Timothy Hatcher.

        Move the code that decides whether a cookie matches a resource URL to a model class.
        This will make it possible to test this code easily without pulling Views into tests.

        * UserInterface/Models/CookieStorageObject.js:
        (WebInspector.CookieStorageObject.cookieMatchesResourceURL):
        (WebInspector.CookieStorageObject.cookieDomainMatchesResourceDomain):
        (WebInspector.CookieStorageObject.prototype.saveIdentityToCookie):
        (WebInspector.CookieStorageObject):
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype.update): use Promises.
        (WebInspector.CookieStorageContentView.prototype._rebuildTable):
        (WebInspector.CookieStorageContentView.prototype._filterCookies):

            Use Array.filter() and Array.some() to express this logic more directly.

        (WebInspector.CookieStorageContentView.cookieMatchesResourceURL): Deleted.
        (WebInspector.CookieStorageContentView.cookieDomainMatchesResourceDomain): Deleted.
        (WebInspector.CookieStorageContentView.prototype.update.callback): Deleted.

2015-11-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clear watch expressions button using wrong icon
        https://bugs.webkit.org/show_bug.cgi?id=151422

        Reviewed by Timothy Hatcher.

        Updated "clear" button to use trashcan image. This was broken by
        https://bugs.webkit.org/show_bug.cgi?id=151377.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):

2015-11-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Reduce synchronous view layouts
        https://bugs.webkit.org/show_bug.cgi?id=151058

        Reviewed by Timothy Hatcher.

        Replace calls to View.updateLayout with needsLayout, when a synchronous layout
        isn't absolutely necessary.

        * UserInterface/Models/BackForwardEntry.js:
        (WebInspector.BackForwardEntry.prototype.prepareToShow):

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype.updateLayout): Deleted.
        View subclasses shouldn't override updateLayout.

        * UserInterface/Views/ButtonNavigationItem.js:
        (WebInspector.ButtonNavigationItem.prototype.set label):

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
        (WebInspector.ContentBrowser.prototype._currentContentViewDidChange):
        (WebInspector.ContentBrowser.prototype._contentViewNavigationItemsDidChange):

        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView.prototype._queryFinished):
        Just update DataGrid's layout, not the whole view. The grid is the only subview
        so the result is identical, but the intent is cleared this way.
        (WebInspector.DatabaseTableContentView.prototype.updateLayout): Deleted.
        View subclasses shouldn't override updateLayout.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
        (WebInspector.LogContentView.prototype.promptDidChangeHeight): Deleted.
        Unused code.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.set width):
        (WebInspector.Sidebar.prototype.set collapsed):

        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype._contentWillPopulate):
        Add TextEditor as a subview.
        (WebInspector.TextResourceContentView.prototype.updateLayout): Deleted.
        View subclasses shouldn't override updateLayout.


2015-11-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Probes sidebar panel sections should use NavigationBar
        https://bugs.webkit.org/show_bug.cgi?id=151373

        Reviewed by Brian Burg.

        Replaces image elements with a NavigationBar instance. The "Clear samples"
        button is disabled when no samples exist in the probe set.

        * Localizations/en.lproj/localizedStrings.js:
        New navigation item labels.

        * UserInterface/Models/ProbeSet.js:
        (WebInspector.ProbeSet.prototype._sampleCollected):
        Dispatch new event WebInspector.ProbeSet.Event.SampleAdded.

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .header > .options > .navigation-bar):
        (.details-section > .header > .options > .navigation-bar > .item):
        Define consistent style for showing a NavigationBar inside the section header.

        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection):
        Add "options" class name in the base class.

        * UserInterface/Views/ProbeDetailsSidebarPanel.css:
        (.details-section.probe-set .options > :matches(.probe-remove, .probe-clear-samples, .probe-add)): Deleted.
        (.details-section.probe-set .options > .probe-clear-samples): Deleted.
        (.details-section.probe-set .options > .probe-remove): Deleted.
        (.details-section.probe-set .options > .probe-add): Deleted.
        Remove <img> button styles.

        * UserInterface/Views/ProbeSetDetailsSection.js:
        (WebInspector.ProbeSetDetailsSection):
        (WebInspector.ProbeSetDetailsSection.prototype._addProbeButtonClicked.createProbeFromEnteredExpression):
        (WebInspector.ProbeSetDetailsSection.prototype._addProbeButtonClicked):
        (WebInspector.ProbeSetDetailsSection.prototype._clearSamplesButtonClicked):
        (WebInspector.ProbeSetDetailsSection.prototype._probeSetSamplesChanged):
        Update "Clear samples" enabled state.
        (WebInspector.ProbeSetDetailsSection.prototype._probeSetHasSamples):
        Helper function to check if the probe set is empty.

2015-11-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Watch Expressions details section should use NavigationBar
        https://bugs.webkit.org/show_bug.cgi?id=151377

        Reviewed by Timothy Hatcher.

        Replaces image elements with a NavigationBar instance. The refresh and 
        clear buttons are disabled if no watch expressions exist.

        * Localizations/en.lproj/localizedStrings.js:
        New navigation item labels.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
        (.details-section.watch-expressions .options > *): Deleted.
        (.details-section.watch-expressions .options > *:active): Deleted.
        (.details-section.watch-expressions .options > .watch-expression-add): Deleted.
        (.details-section.watch-expressions .options > .watch-expression-clear): Deleted.
        (.details-section.watch-expressions .options > .watch-expression-refresh): Deleted.
        Remove <img> button styles.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.presentPopoverOverTargetElement):
        Use the navigation item element.
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._updateWatchExpressionsNavigationBar):
        Enable/disable refresh and clear buttons.

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

        Web Inspector: Move Timeline creation into a recording
        https://bugs.webkit.org/show_bug.cgi?id=151367

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._loadNewRecording): Deleted.
        * UserInterface/Models/Timeline.js:
        (WebInspector.Timeline.create):
        (WebInspector.Timeline.prototype.get type):
        (WebInspector.Timeline): Deleted.
        (WebInspector.Timeline.prototype.get recording): Deleted.
        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording):
        (WebInspector.TimelineRecording.prototype.get readonly):
        (WebInspector.TimelineRecording.prototype.unloaded):
        (WebInspector.TimelineRecording.prototype.reset):
        (WebInspector.TimelineRecording.prototype.isWritable): Deleted.
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.shown):

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

        Web Inspector: Breakpoint condition field should use CodeMirror
        https://bugs.webkit.org/show_bug.cgi?id=151333

        Reviewed by Joseph Pecoraro.

        Updated breakpoint popover's condition field to use CodeMirror.

        * UserInterface/Controllers/BreakpointPopoverController.js:
        Removed keyboard shortcuts. Now handled by CodeMirror.
        (WebInspector.BreakpointPopoverController.prototype.completionControllerShouldAllowEscapeCompletion):
        Prevent handling of escape to allow tabbing to next element.
        (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
        Create CodeMirror instance.
        (WebInspector.BreakpointPopoverController.prototype._conditionCodeMirrorChanged):
        (WebInspector.BreakpointPopoverController.prototype._conditionCodeMirrorBeforeChange):
        Enforce single-line editor.
        (WebInspector.BreakpointPopoverController.prototype._conditionCodeMirrorEscapeOrEnterKey):
        (WebInspector.BreakpointPopoverController): Deleted.
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.editBreakpoint):
        Removed condition element select. CodeMirror sets focus when popover content is created.
        (WebInspector.BreakpointPopoverController.prototype._popoverConditionInputChanged): Deleted.
        Replaced by BreakpointPopoverController.prototype._conditionCodeMirrorChanged.
        (WebInspector.BreakpointPopoverController.prototype._popoverConditionInputKeyDown): Deleted.
        Replaced by BreakpointPopoverController.prototype._conditionCodeMirrorEscapeOrEnterKey.

        * UserInterface/Views/BreakpointPopoverController.css:
        (.edit-breakpoint-popover-condition):
        (.edit-breakpoint-popover-condition > .CodeMirror):
        (#edit-breakpoint-popover-condition): Deleted.
        Replace selector id with class, styled CodeMirror element to match original input element.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-placeholder): Deleted.
        Moved common CodeMirror placeholder text style to CodeMirrorOverrides.css.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror .CodeMirror-placeholder):
        Add placeholder style.

2015-11-12  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Deleting a probe should remove probe breakpoint actions only.
        https://bugs.webkit.org/show_bug.cgi?id=151245

        Reviewed by Brian Burg.

        Fixed breakpoint action filter.

        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype.clearActions):
        Missing return in named function expression.

2015-11-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Auto-log inspect node selected elements to the console
        https://bugs.webkit.org/show_bug.cgi?id=151178

        Reviewed by Brian Burg.

        Auto-logging user selected elements to the console helps with
        quick use in the console. $0 is not very discoverable, and $n
        values are expendable. This also makes it convenient to use the
        inspect node toolbar search option to select a few different
        nodes and use each of them in the console without extra work.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.inspectNodeObject.nodeAvailable):
        (WebInspector.DOMTreeManager.prototype.inspectNodeObject):
        Log selected nodes to the console. Treat this as a synthetic log that
        will not immediately open the console like normal evaluation results.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult.saveResultCallback):
        (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted.printResult):
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
        Initialize ConsoleCommandResultMessage's synthetic properties.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu):
        * UserInterface/Controllers/RuntimeManager.js:
        Create a global for the special "console" object group used in multiple places.

        * UserInterface/Models/ConsoleCommandResultMessage.js:
        (WebInspector.ConsoleCommandResultMessage):
        (WebInspector.ConsoleCommandResultMessage.prototype.get synthetic):
        Add a synthetic property.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
        When the ConsoleResult is a synthetic result, do not auto-open the console.

2015-11-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: timeline event markers are added to overview even when not capturing a timeline recording
        https://bugs.webkit.org/show_bug.cgi?id=151166

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording.prototype.addEventMarker):
        Do not add event markers when not capturing. This would have resulted in more
        and more markers showing in the Timeline for page loads when the Timeline was
        not active. For example reloading when a non-Timeline tab was active.

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

        Web Inspector: Add Debug toolbar button to toggle InspectorBackend.dumpInspectorProtocolMessages
        https://bugs.webkit.org/show_bug.cgi?id=151175

        Reviewed by Brian Burg.

        Add debug UI and a way to toggle it on and off in non-production builds.
        To enable the debug UI use a keyboard shortcut in Inspector:
        Option+Shift+Command+D (Mac) or Option+Shift+Ctrl+D (Windows / Linux)

        The debug UI setting is a persistent setting, so those of use developing
        Web Inspector will turn it on and leave it on.

        Currently the only debug UI is a new toolbar button to toggle
        the frontend logging on or off.

        * Scripts/combine-resources.pl:
        (concatenateFiles):
        Exclude "Debug" files when combining resources for minification.

        * UserInterface/Main.html:
        Rename "Base/Bootstrap.js" to "Debug/Bootstrap" so that we can easily exclude it.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Only evaluate bootstrap functions if they exist.

        * UserInterface/Debug/Bootstrap.js: Renamed from Source/WebInspectorUI/UserInterface/Base/Bootstrap.js.
        (WebInspector.runBootstrapOperations):
        Add a debug setting, toolbar button, and keyboard shortcut.

2015-11-11  Brian Burg  <bburg@apple.com>

        Web Inspector: blank debugger tab when opening inspector on unvisited website
        https://bugs.webkit.org/show_bug.cgi?id=151149

        Reviewed by Joseph Pecoraro.

        When Inspector tries to show default content when initially showing a tab upon opening,
        there may not be any tree elements added to the navigation bar yet. In the case of an
        unvisited website, there will be no state restoration cookie to trigger deferred selection.
        So, showDefaultContentView finds no tree elements it can show, and the main view is blank.

        We can fix this by speculatively showing the first script/resource that's added to the tree
        if no content view is being shown. If a state restoration cookie exists, it will take priority
        over the default-displayed content view.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._addResource):
        (WebInspector.DebuggerSidebarPanel.prototype._addScript):

2015-11-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Convert sidebars to use View base class
        https://bugs.webkit.org/show_bug.cgi?id=151057

        Reviewed by Timothy Hatcher.

        This patch makes Sidebar a subclass of View. Mostly mechanical changes and cleanup,
        such as adding navigation bars and panels as subviews, removing element getters,
        and replacing external properties with symbols.

        * UserInterface/Base/Main.js:
        Added sidebars to view hierarchy.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        Add navigation bar as a subview.

        * UserInterface/Views/NetworkSidebarPanel.js:
        Add navigation bar as a subview.
        (WebInspector.NetworkSidebarPanel):
        (WebInspector.NetworkSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.NetworkSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        (WebInspector.NetworkSidebarPanel.prototype._treeElementGoToArrowWasClicked):
        External properties replaced with symbols.

        * UserInterface/Views/ResourceSidebarPanel.js:
        Add navigation bar as a subview.
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        External properties replaced with symbols.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar):
        (WebInspector.Sidebar.prototype.addSidebarPanel):
        (WebInspector.Sidebar.prototype.removeSidebarPanel):
        Panels are now added and removed as subviews.
        (WebInspector.Sidebar.prototype.get width):
        (WebInspector.Sidebar.prototype.set width):
        (WebInspector.Sidebar.prototype.get collapsed):
        (WebInspector.Sidebar.prototype.set collapsed):
        "collapsed" property now backed by private class variable, not DOM state.
        (WebInspector.Sidebar.prototype.get element): Deleted.

        * UserInterface/Views/SidebarPanel.js:
        (WebInspector.SidebarPanel):
        (WebInspector.SidebarPanel.prototype.get visible):
        (WebInspector.SidebarPanel.prototype.get selected):
        (WebInspector.SidebarPanel.prototype.set selected):
        "selected" property now backed by private class variable, not DOM state.
        (WebInspector.SidebarPanel.prototype.get parentSidebar):
        No longer stored as separate property. Wrapper around View.prototype.parentView.
        Original getter retained for clarity.
        (WebInspector.SidebarPanel.prototype.show):
        (WebInspector.SidebarPanel.prototype.hide):
        (WebInspector.SidebarPanel.prototype.added):
        (WebInspector.SidebarPanel.prototype.removed):
        (WebInspector.SidebarPanel.prototype.get element): Deleted.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel):
        Add navigation bar as a subview.

2015-11-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Enable/disable All Breakpoints not usable when "No Filter Results" displayed
        https://bugs.webkit.org/show_bug.cgi?id=151062

        Reviewed by Timothy Hatcher.

        Position the placeholder element below the navigation bar. This was already being done
        for the other navigation sidebars.

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

2015-11-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Batch all scheduled layouts and update the view tree in a single animation frame
        https://bugs.webkit.org/show_bug.cgi?id=150993

        Reviewed by Brian Burg.

        Shifts responsibility for scheduling asynchronous layouts from view objects to a controller
        layer, implemented as private static methods and properties in the View class. A single animation
        frame callback performs a breadth-first traversal of the view tree starting at the root view,
        updating views marked as needing a layout.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Setup root view.

        * UserInterface/Views/View.js:
        Added private class properties for root view reference and rAF identifier.
        (WebInspector.View):
        (WebInspector.View.prototype.get layoutPending):
        (WebInspector.View.prototype.get parentView):
        (WebInspector.View.prototype.makeRootView):
        Set current view to be the root of the view hierarchy.
        Can only be called once.
        (WebInspector.View.prototype.insertSubviewBefore):
        No longer appends subview element to parent element, if subview already in the DOM.
        Checks that view being inserted isn't the root view.
        (WebInspector.View.prototype.removeSubview):
        (WebInspector.View.prototype.updateLayout):
        Cancels any scheduled layouts for the view, then does a synchronous layout.
        (WebInspector.View.prototype.updateLayoutIfNeeded):
        (WebInspector.View.prototype.needsLayout):
        Schedules view for the next asynchronous layout, if not already scheduled.
        (WebInspector.View.prototype.didAttach):
        (WebInspector.View.prototype.didDetach):
        Inform view of changing parent view.
        (WebInspector.View.prototype._layoutSubtree):
        (WebInspector.View._scheduleLayoutForView):
        Increments dirty counts on ancestor views, schedules a layout if needed.
        (WebInspector.View._cancelScheduledLayoutForView):
        Decrements dirty counts on ancestor views, cancels a pending layout if needed.
        (WebInspector.View._visitViewTreeForLayout):
        Animation frame callback. Does a breadth-first traversal of the view tree,
        and updates the layout of views marked as dirty.

2015-11-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Code coverage profiler: incorrect "in-viewport" detection algorithm
        https://bugs.webkit.org/show_bug.cgi?id=151116

        Reviewed by Brian Burg.

        * UserInterface/Controllers/BasicBlockAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):

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

        Web Inspector: Support Gesture Events to zoom in / out of the Timeline
        https://bugs.webkit.org/show_bug.cgi?id=151071

        Reviewed by Timothy Hatcher.

        Adjust the Timeline's secondsPerPixel value by the gesture event's scale factor.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        (WebInspector.TimelineOverview._handleGestureStart):
        (WebInspector.TimelineOverview.prototype._handleGestureChange):
        (WebInspector.TimelineOverview.prototype._handleGestureEnd):

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

        Web Inspector: Uncaught exception creating TimelineRecord alternate subtitles
        https://bugs.webkit.org/show_bug.cgi?id=151046

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        We just need to create an element, it does not need to be
        a child of subtitle, as it gets appended to the right
        place later on.

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

        Web Inspector: [Regression] [Mavericks] Top border of selected tab matches the background when Web Inspector is undocked
        https://bugs.webkit.org/show_bug.cgi?id=150981

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBar.css:
        (body.mavericks .tab-bar > .item:not(.disabled).selected): Added.

2015-11-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Convert DatabaseContentView to use View base class
        https://bugs.webkit.org/show_bug.cgi?id=150959

        Reviewed by Timothy Hatcher.

        Update DatabaseContentView to inherit from View. This required that query results be
        promoted to a first-class view object, and that ConsolePrompt's DOM element not be wrapped
        inside a container element.

        Two new query result view classes (and their base class) wrap up DOM element creation
        which was being performed by DatabaseContentView.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Main.html:
        New files.

        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt):
        Removed unused parameter.

        * UserInterface/Views/DatabaseContentView.css:
        (.storage-view):
        (.storage-view > .console-prompt):
        (.storage-view > .console-prompt::before):
        (:matches(.database-user-query, .database-query-result)::before):
        (.database-query-result.no-results):
        (.database-query-prompt): Deleted.
        (:matches(.database-user-query, .database-query-prompt, .database-query-result)::before): Deleted.
        (.database-query-prompt::before): Deleted.
        Modified styles to create prompt without needing a wrapper element.

        * UserInterface/Views/DatabaseContentView.js:
        (WebInspector.DatabaseContentView):
        (WebInspector.DatabaseContentView.prototype.shown):
        (WebInspector.DatabaseContentView.prototype.consolePromptCompletionsNeeded.accumulateMatches):
        (WebInspector.DatabaseContentView.prototype.consolePromptCompletionsNeeded.tableNamesCallback):
        (WebInspector.DatabaseContentView.prototype.consolePromptCompletionsNeeded):
        (WebInspector.DatabaseContentView.prototype._messagesClicked):
        (WebInspector.DatabaseContentView.prototype._queryFinished):
        (WebInspector.DatabaseContentView.prototype._queryError):
        (WebInspector.DatabaseContentView.prototype.updateLayout): Deleted.
        No longer needed.
        (WebInspector.DatabaseContentView.prototype._appendViewQueryResult): Deleted.
        (WebInspector.DatabaseContentView.prototype._appendErrorQueryResult): Deleted.
        (WebInspector.DatabaseContentView.prototype._appendQueryResult): Deleted.
        Removed methods subsumed under DatabaseUserQueryView.

        * UserInterface/Views/DatabaseUserQueryErrorView.js: Added.
        (WebInspector.DatabaseUserQueryErrorView):
        Displays supplied error message.

        * UserInterface/Views/DatabaseUserQuerySuccessView.js: Added.
        (WebInspector.DatabaseUserQuerySuccessView):
        Creates data grid if results exist, otherwise displays "no results" message.
        (WebInspector.DatabaseUserQuerySuccessView.prototype.get dataGrid):
        External access to view's data grid for autosizing columns, etc.
        (WebInspector.DatabaseUserQuerySuccessView.prototype.layout):
        Update grid layout manually, since the grid's parent in the DOM isn't the view's root element.

        * UserInterface/Views/DatabaseUserQueryViewBase.js: Added.
        Base class for success and error message views.
        (WebInspector.DatabaseUserQueryViewBase):
        Creates DOM common to subclasses.
        (WebInspector.DatabaseUserQueryViewBase.prototype.get resultElement):
        Protected getter exposing the content root for both subclasses.

2015-11-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [Regression] [Mavericks] Toolbar is too dark while docked
        https://bugs.webkit.org/show_bug.cgi?id=150977

        Set the toolbar color of the docked inspector to be the same as on OS X 10.10+.
        Undocked toolbar color on Mavericks is unnaffected.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Toolbar.css:
        (body.mavericks.docked .toolbar):
        (body:not(.mavericks) .toolbar): Added.

2015-11-06  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Search Results tab causes jump to Resources tab on reload
        https://bugs.webkit.org/show_bug.cgi?id=150817

        Reviewed by Brian Burg.

        Remove the "search on reload" behavior from the Search Results tab. It often didn't find everything
        on large pages, since it only searched after 500ms of the main resource changing. The bug here
        was caused by performSearch selecting the first result, even if it was a background tab. We now
        avoid doing unnecessary search work in the background when the Search Results tab isn't visible.

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel): Deleted.
        (WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange): Remove children from the
        sidebar since performSearch isn't doing it now and ScriptTreeElements were not being removed.
        ResourceTreeElements were already being removed by NavigationSidebarPanel's prune behavior.
        Removed the call to performSearch and related code.
        (WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange.delayedWork): Deleted.

2015-11-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Convert remaining ContentViews to View base class
        https://bugs.webkit.org/show_bug.cgi?id=150729

        Reviewed by Brian Burg.

        Refactor content views to reuse View features: remove updateLayout and
        element getters, and use View.prototype.addSubview and removeSubview
        where appropriate.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype._createDataGrid):
        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView):
        (WebInspector.ClusterContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype._rebuildTable):
        (WebInspector.CookieStorageContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView):
        (WebInspector.DOMStorageContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.layout):
        (WebInspector.DOMTreeContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView):
        (WebInspector.DatabaseTableContentView.prototype._queryFinished):
        (WebInspector.DatabaseTableContentView.prototype._queryError):
        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView.prototype.layout):
        (WebInspector.FontResourceContentView):
        (WebInspector.FontResourceContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        (WebInspector.IndexedDatabaseObjectStoreContentView):
        (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.layout):
        (WebInspector.LogContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype.needsLayout):
        (WebInspector.NetworkGridContentView.prototype.layout):
        (WebInspector.NetworkGridContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView):
        (WebInspector.OverviewTimelineView.prototype.layout): Deleted.
        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView.prototype._contentWillPopulate):
        (WebInspector.ScriptContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/TextContentView.js:
        (WebInspector.TextContentView):
        (WebInspector.TextContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):
        (WebInspector.TextEditor.prototype.layout):
        (WebInspector.TextEditor.prototype.get element): Deleted.
        (WebInspector.TextEditor.prototype.updateLayout): Deleted.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype.layout):
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        (WebInspector.TimelineRecordingContentView.prototype.updateLayout): Deleted.

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

        Web Inspector: Pretty print falsely triggers on some JS that wasn't minified
        https://bugs.webkit.org/show_bug.cgi?id=150876

        Change the minification detection heuristic. Look for the ratio of whitespace to
        non-whitespace characters in the first 5000 characters.

        The previous heuristic looked for lines longer than 500 characters. Not only it was
        slower on large unminified files, it also had a false positive on unminified codemirror.js.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._contentWillPopulate):
        (WebInspector.SourceCodeTextEditor.prototype._isLikelyMinified):
        Exit early if whitespace to non-whitespace ratio drops below 5%.

2015-11-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Convert TimelineRuler to View base class
        https://bugs.webkit.org/show_bug.cgi?id=150703

        Reviewed by Brian Burg.

        Convert TimelineRuler to View base class. Ruler markers and selection elements
        can be updated independent from its main layout. The logic for these additional
        layouts is implemented as an override of View.prototype.needsLayout, and remains
        largely unchanged.

        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView):
        Add ruler as a subview.
        (WebInspector.OverviewTimelineView.prototype.layout): Deleted.
        Separate ruler layout no longer needed.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler):
        (WebInspector.TimelineRuler.prototype.set allowsClippedLabels):
        (WebInspector.TimelineRuler.prototype.set formatLabelCallback):
        (WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection):
        (WebInspector.TimelineRuler.prototype.set zeroTime):
        (WebInspector.TimelineRuler.prototype.set startTime):
        (WebInspector.TimelineRuler.prototype.set duration):
        (WebInspector.TimelineRuler.prototype.get endTime):
        (WebInspector.TimelineRuler.prototype.set endTime):
        (WebInspector.TimelineRuler.prototype.get secondsPerPixel):
        (WebInspector.TimelineRuler.prototype.set secondsPerPixel):
        (WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
        (WebInspector.TimelineRuler.prototype.needsLayout):
        (WebInspector.TimelineRuler.prototype.layout):
        (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
        (WebInspector.TimelineRuler.prototype._needsSelectionLayout):
        (WebInspector.TimelineRuler.prototype._recalculate):
        (WebInspector.TimelineRuler.prototype._updateMarkers):
        (WebInspector.TimelineRuler.prototype._updateSelection):
        (WebInspector.TimelineRuler.prototype._handleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseUp):
        Renamed methods to match new View.prototype methods and cleaned up
        some code to use let, for...of.
        (WebInspector.TimelineRuler.prototype.get element): Deleted.
        No longer needed.
        (WebInspector.TimelineRuler.prototype.updateLayout): Deleted.
        Renamed to layout, overrides View.prototype.layout.
        (WebInspector.TimelineRuler.prototype._needsLayout): Deleted.
        Renamed to needsLayout, overrides View.prototype.needsLayout.
        (WebInspector.TimelineRuler.prototype._needsMarkerLayout.update): Deleted.
        (WebInspector.TimelineRuler.prototype._needsSelectionLayout.update): Deleted.

        * UserInterface/Views/View.js:
        (WebInspector.View.prototype.get isLayoutPending):
        Added getter to check for pending layout.

2015-11-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ⌥⌘C sometimes ends ups up opening inspector without console prompt focused
        https://bugs.webkit.org/show_bug.cgi?id=150916

        Reviewed by Timothy Hatcher.

        When first opening the inspector we hide the window until the document
        is mostly ready / loaded. However once displaying the window WK2 would
        set the initial focus, clearing what we already had and focusing the
        first natural element (tabindex dictates the toolbar). Workaround this
        by detecting when the document becomes visible and then focusing the
        console prompt.

        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showConsole):
        (InspectorFrontendAPI.handleEvent):

2015-11-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Toolbar "Inspect Node" button not highlighting when active
        https://bugs.webkit.org/show_bug.cgi?id=150938

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated) > .glyph):
        (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated) > .glyph):
        Copy the navigation-bar button activated styles to toolbar.

2015-11-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Load markers persist in timeline ruler after resetting recording
        https://bugs.webkit.org/show_bug.cgi?id=150918

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView):
        (WebInspector.OverviewTimelineView.prototype._recordingReset):
        Clears ruler markers on recording reset. Adds current time marker back.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype._recordingReset):
        Clears ruler markers on recording reset. Adds current time marker back.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.clearMarkers):
        Added method to clear markers and marker elements.

2015-11-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Uncaught Exception opening inspector - TypeError: Attempted to assign to readonly property.
        https://bugs.webkit.org/show_bug.cgi?id=150913

        Reviewed by Timothy Hatcher.

        Fix invalid call to BackForwardEntry.prototype.contentView set.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.replaceContentView):
        Replace each BackForwardEntry matching the old content view with a new entry.

2015-11-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Uncaught exception mousing over CSS resource
        https://bugs.webkit.org/show_bug.cgi?id=150917

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processMarkedToken): Add missing parameter.

2015-11-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: WebInspector.Color should support #rgba and #rrggbbaa syntax
        https://bugs.webkit.org/show_bug.cgi?id=150894

        Reviewed by Timothy Hatcher.

        Support for hex with alpha color syntax.

        * UserInterface/Models/Color.js:
        (WebInspector.Color.fromString):
        (WebInspector.Color.prototype.nextFormat):
        (WebInspector.Color.prototype.copy):
        (WebInspector.Color.prototype.toString):
        (WebInspector.Color.prototype._toShortHEXAlphaString):
        (WebInspector.Color.prototype._toHEXAlphaString):
        Add support for new hex syntax. Address some minor issues
        like case insensitivity and extra comma separate values.

        * UserInterface/Views/CodeMirrorTextMarkers.js:
        This prevent trailing hex characters from showing up
        when cycling through color variants.

        * UserInterface/Views/CodeMirrorAdditions.js:
        When CodeMirror stops treating the new values as error
        this will give them our hex-color styles.

2015-11-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r191612): Storage sidebar panel tree outline is broken
        https://bugs.webkit.org/show_bug.cgi?id=150862

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        Inherit from ContentView.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel.prototype._addDatabase):
        Fixed syntax error.
        (WebInspector.StorageSidebarPanel.prototype._addIndexedDatabase):
        (WebInspector.StorageSidebarPanel.prototype._addFrameManifest):
        WebInspector.TreeOutline.append doesn't exist; changed to appendChild.

2015-11-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Create View base class, refactor some core view classes
        https://bugs.webkit.org/show_bug.cgi?id=149186

        Reviewed by Brian Burg and Timothy Hatcher.

        This patch introduces a new View base class, which encapsulates DOM element creation,
        layout scheduling, and subview management. The View class constructor accepts an optional
        element parameter, allowing an existing DOM element to be associated with the View object,
        rather than dynamically creating a new element. View also adds a `__view` property to its
        associated DOM element to facilitate debugging the Inspector UI.

        For the view classes refactored in this patch, the changes are largely mechanical. Dynamically
        created DOM elements and redundant element getters have been removed. needsLayout has replaced
        updateLayoutIfNeeded where appropriate. updateLayout has been removed entirely for views that
        performed no layout other than to cascade layouts to their children.

        * UserInterface/Base/Main.js:
        Moved TabBar layout updates out of TabBrowser and into Main.js.

        * UserInterface/Main.html:
        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt):
        (WebInspector.ConsolePrompt.prototype.layout):
        (WebInspector.ConsolePrompt.prototype.get element): Deleted.
        (WebInspector.ConsolePrompt.prototype.updateLayout): Deleted.
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        (WebInspector.ContentBrowser.prototype.get element): Deleted.
        (WebInspector.ContentBrowser.prototype.updateLayout): Deleted.
        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):
        (WebInspector.ContentBrowserTabContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        (WebInspector.ContentView.prototype.get element): Deleted.
        (WebInspector.ContentView.prototype.updateLayout): Deleted.
        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer):
        (WebInspector.ContentViewContainer.prototype._showEntry):
        (WebInspector.ContentViewContainer.prototype._hideEntry):
        (WebInspector.ContentViewContainer.prototype.get element): Deleted.
        (WebInspector.ContentViewContainer.prototype.updateLayout): Deleted.
        (WebInspector.ContentViewContainer.prototype._addContentViewElement): Deleted.
        (WebInspector.ContentViewContainer.prototype._removeContentViewElement): Deleted.
        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.autoSizeColumns):
        (WebInspector.DataGrid.prototype.layout):
        (WebInspector.DataGrid.prototype.applyColumnWidthsMap):
        (WebInspector.DataGrid): Deleted.
        (WebInspector.DataGrid.prototype.updateLayout): Deleted.
        (WebInspector.DataGrid.prototype.resizerDragging): Deleted.
        (WebInspector.DataGrid.prototype.resizerDragEnded): Deleted.
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WebInspector.HierarchicalPathNavigationItem.prototype.set components):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView):
        (WebInspector.LayoutTimelineView.prototype.layout):
        (WebInspector.LayoutTimelineView.prototype.updateLayout): Deleted.
        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar):
        (WebInspector.NavigationBar.prototype.insertNavigationItem):
        (WebInspector.NavigationBar.prototype.removeNavigationItem):
        (WebInspector.NavigationBar.prototype.get minimumWidth):
        (WebInspector.NavigationBar.prototype.layout):
        (WebInspector.NavigationBar.prototype._mouseDown):
        (WebInspector.NavigationBar.prototype._mouseMoved):
        (WebInspector.NavigationBar.prototype._mouseUp):
        (WebInspector.NavigationBar.prototype._calculateMinimumWidth):
        (WebInspector.NavigationBar.prototype.updateLayoutSoon.update): Deleted.
        (WebInspector.NavigationBar.prototype.updateLayoutSoon): Deleted.
        (WebInspector.NavigationBar.prototype.updateLayout): Deleted.
        (WebInspector.NavigationBar.prototype.get element): Deleted.
        * UserInterface/Views/NavigationItem.js:
        (WebInspector.NavigationItem.prototype.set hidden):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView):
        (WebInspector.NetworkTimelineView.prototype.layout):
        (WebInspector.NetworkTimelineView.prototype.updateLayout): Deleted.
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView):
        (WebInspector.OverviewTimelineView.prototype.layout):
        (WebInspector.OverviewTimelineView.prototype.updateLayout): Deleted.
        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole):
        (WebInspector.QuickConsole.prototype.layout):
        (WebInspector.QuickConsole.prototype.get element): Deleted.
        (WebInspector.QuickConsole.prototype.updateLayout): Deleted.
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        (WebInspector.RenderingFrameTimelineView.prototype.layout):
        (WebInspector.RenderingFrameTimelineView.prototype.updateLayout): Deleted.
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView):
        (WebInspector.ScriptTimelineView.prototype.layout):
        (WebInspector.ScriptTimelineView.prototype.updateLayout): Deleted.
        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar):
        (WebInspector.TabBar.prototype.insertTabBarItem.animateTabs):
        (WebInspector.TabBar.prototype.insertTabBarItem.removeStyles):
        (WebInspector.TabBar.prototype.insertTabBarItem):
        (WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
        (WebInspector.TabBar.prototype.removeTabBarItem.removeStyles):
        (WebInspector.TabBar.prototype.removeTabBarItem):
        (WebInspector.TabBar.prototype.hasNormalTab):
        (WebInspector.TabBar.prototype.layout):
        (WebInspector.TabBar.prototype._recordTabBarItemSizesAndPositions):
        (WebInspector.TabBar.prototype._finishExpandingTabsAfterClose.):
        (WebInspector.TabBar.prototype._finishExpandingTabsAfterClose):
        (WebInspector.TabBar.prototype._handleClick):
        (WebInspector.TabBar.prototype._handleMouseMoved):
        (WebInspector.TabBar.prototype._handleMouseUp):
        (WebInspector.TabBar.prototype._handleMouseLeave):
        (WebInspector.TabBar.prototype._handleNewTabMouseEnter):
        (WebInspector.TabBar.prototype.updateLayoutSoon.update): Deleted.
        (WebInspector.TabBar.prototype.updateLayoutSoon): Deleted.
        (WebInspector.TabBar.prototype.updateLayout): Deleted.
        (WebInspector.TabBar.prototype.get element): Deleted.
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype.get element): Deleted.
        (WebInspector.TabBrowser.prototype.updateLayout): Deleted.
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.filterUpdated):
        (WebInspector.TimelineView.prototype.needsLayout):
        (WebInspector.TimelineView.prototype.updateLayout): Deleted.
        (WebInspector.TimelineView.prototype.updateLayoutIfNeeded): Deleted.
        (WebInspector.TimelineView): Deleted.

        * UserInterface/Views/Toolbar.js:
        (WebInspector.Toolbar):
        (WebInspector.Toolbar.prototype.set displayMode):
        (WebInspector.Toolbar.prototype.set sizeMode):
        (WebInspector.Toolbar.prototype.addToolbarItem):
        (WebInspector.Toolbar.prototype.layout):
        (WebInspector.Toolbar.prototype.customUpdateLayout): Deleted.
        Renamed to layout. This eliminated a layering violation in NavigationBar,
        where the function previously known as updateLayout checked for a
        a `customUpdateLayout` function property, and would call it instead of its
        own layout logic if found.

        * UserInterface/Views/View.js: Added.
        (WebInspector.View):
        (WebInspector.View.prototype.get element):
        (WebInspector.View.prototype.get subviews):
        (WebInspector.View.prototype.addSubview):
        Appends a view to the end of the subview list.
        (WebInspector.View.prototype.insertSubviewBefore):
        Inserts a view into subview list before another subview.
        (WebInspector.View.prototype.removeSubview):
        (WebInspector.View.prototype.replaceSubview):
        (WebInspector.View.prototype.updateLayout):
        No longer overridden by subclasses.
        (WebInspector.View.prototype.updateLayoutIfNeeded):
        Forces a layout if one has been scheduled, otherwise does nothing.
        (WebInspector.View.prototype.needsLayout):
        Schedules a layout for the view.
        (WebInspector.View.prototype.layout):
        Overridden by views that require special layout logic. Layouts
        cascade to child views automatically.
        (WebInspector.View.prototype._layoutSubtree):
        Main layout entry point. Called by requestAnimationFrame via needsLayut, by
        updateLayout when forcing a synchronous layout, and called recursively during
        subview traversal.

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

        Web Inspector: Handle or Remove ParseHTML Timeline Event Records
        https://bugs.webkit.org/show_bug.cgi?id=150689

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):

2015-11-02  Andy Estes  <aestes@apple.com>

        [Cocoa] Add tvOS and watchOS to SUPPORTED_PLATFORMS
        https://bugs.webkit.org/show_bug.cgi?id=150819

        Reviewed by Dan Bernstein.

        This tells Xcode to include these platforms in its Devices dropdown, making it possible to build in the IDE.

        * Configurations/Base.xcconfig:

2015-10-30  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Unexpected background color behind the Continue button in the DebuggerDashboardView
        https://bugs.webkit.org/show_bug.cgi?id=150734

        Reviewed by Brian Burg.

        * UserInterface/Views/DebuggerDashboardView.css:
        (.dashboard.debugger .navigation-bar .item.button):
        (.dashboard.debugger .navigation-bar .item.button > .glyph):

2015-10-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make use of other Timer details in Timeline (timeout, singleShot)
        https://bugs.webkit.org/show_bug.cgi?id=150697

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        Create a small object for timer details.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.EventType.displayName):
        New details object requires new path to timer identifier.

        * UserInterface/Views/ScriptTimelineView.css:
        (.sidebar > .panel.navigation.timeline:not(.timeline-recording-content-view-showing) .navigation-sidebar-panel-content-tree-outline.script .item .alternate-subtitle):
        (.navigation-sidebar-panel-content-tree-outline .item .alternate-subtitle):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected .alternate-subtitle):
        (.navigation-sidebar-panel-content-tree-outline .item.small:not(.two-line) .alternate-subtitle::before):
        Styles for an alternate-subtitle, a subtitle to show when the timeline
        content view is showing and not a resource content view.

        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        Create alternate subtitle for Timers with the timeout millisecond details.
        Differentiate between setTimeout / setInterval.

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent): Deleted.
        (WebInspector.ScriptTimelineDataGridNode): Deleted.
        Remove dead code. Normally there would be a filter / scope bar for an eventType
        column but no such column exists.

2015-10-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Display console.timeStamp(title) title in timeline markers
        https://bugs.webkit.org/show_bug.cgi?id=150691

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        (WebInspector.TimelineManager.prototype._processEvent):
        Detect unused timeline records.

        * UserInterface/Models/TimelineMarker.js:
        (WebInspector.TimelineMarker):
        (WebInspector.TimelineMarker.prototype.get details):
        Give markers an optional details argument.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.addMarker):
        When a marker is a TimeStamp, use the details title in
        the tooltip if one is available.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype._refreshFrameSelectionChart):
        Used \u in localized string. Kept this an endash since it is a range.

2015-10-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Navigation bar icons are missing
        https://bugs.webkit.org/show_bug.cgi?id=150677

        Reviewed by Joseph Pecoraro.

        The glyph width and height were not being set correctly and it broke NavigationBar buttons.
        The width and height attribute was being set on a div, when it should have used the style property.
        Also remove the suppressEmboss flag, which is no longer used but the clients and subclasses still did.

        * UserInterface/Base/ImageUtilities.js:
        (useSVGSymbol): Use style property instead of setting width and height. The attributes
        didn't accomplish the same thing in all cases. Use title and className property on the
        wrapper element and remove the comments, which applied when there wasn't a wrapper.

        * UserInterface/Views/ActivateButtonNavigationItem.js:
        (WebInspector.ActivateButtonNavigationItem): Remove suppressEmboss.
        * UserInterface/Views/ActivateButtonToolbarItem.js:
        (WebInspector.ActivateButtonToolbarItem): Remove suppressEmboss.

        * UserInterface/Views/ButtonNavigationItem.js:
        (WebInspector.ButtonNavigationItem): Remove suppressEmboss.
        (WebInspector.ButtonNavigationItem.prototype.set image): Use style property instead of setting
        width and height attributes. This assumed the SVG element was the glyph element, which changed
        at one point without me remembering to fix this client.

        * UserInterface/Views/ButtonToolbarItem.js:
        (WebInspector.ButtonToolbarItem):  Remove suppressEmboss.
        * UserInterface/Views/DebuggerDashboardView.js:
        (WebInspector.DebuggerDashboardView): Remove suppressEmboss use.
        * UserInterface/Views/FilterBar.js:
        (WebInspector.FilterBar.prototype.addFilterBarButton): Remove suppressEmboss.
        * UserInterface/Views/FilterBarButton.js:
        (WebInspector.FilterBarButton): Remove suppressEmboss.
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):  Remove suppressEmboss use.
        * UserInterface/Views/ToggleButtonNavigationItem.js:
        (WebInspector.ToggleButtonNavigationItem): Remove suppressEmboss.

2015-10-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clean up and audit TimelineRecordFactory records
        https://bugs.webkit.org/show_bug.cgi?id=150660

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        (WebInspector.TimelineManager.prototype._processEvent):
        Add FIXME for payload data which we are not yet using but could.
        Fix typo in some rAF records where we were mistakenly using "timerId"
        instead of "id" for the request identifier.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.EventType.displayName):
        Display the now correctly accessed rAF identifier in the Scripts timeline.

2015-10-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add "revert" to CSS value autocompletion
        https://bugs.webkit.org/show_bug.cgi?id=150652

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.forProperty):
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateAlignmentSection):
        Treat "revert" like initial and unset. It is valid on all properties.

2015-10-28  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION(r191071): Web Inspector: Can't resize split console when the window is too narrow
        https://bugs.webkit.org/show_bug.cgi?id=150492

        Reviewed by Timothy Hatcher.

        Make some items inside of the navigation bar click-through to incsease the draggable area.

        * UserInterface/Views/Main.css:
        (#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-scope-bar)):

2015-10-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show Timeline Markers again (DOMContentLoaded, Load, console.timeStamp)
        https://bugs.webkit.org/show_bug.cgi?id=150612

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        Tooltip strings for the timeline markers.

        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording.prototype.addEventMarker):
        Dispatch an event so the views listening to this recording can add the markers.

        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView):
        (WebInspector.OverviewTimelineView.prototype._markerAdded):
        Add the marker to the OverviewTimelineView's ruler.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype._markerAdded):
        (WebInspector.TimelineOverview.prototype.addMarker): Deleted.
        Add the marker to the TimelineOverview's ruler. Remove the unused method.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.addMarker):
        Give some marker's a tooltip based on their type.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview > .timeline-ruler > .markers):
        (.timeline-overview.frames > .timeline-ruler > .markers > .marker:not(.current-time)):
        Correct the height of markers in the timeline overview.
        Hide markers non-current-time markers in the rendering frames view.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .markers > .marker):
        (.timeline-ruler > .markers > .marker::before):
        Give markers a bit of width to make it easier to trigger their tooltip.

        (.timeline-ruler > .markers > .marker.load-event):
        (.timeline-ruler > .markers > .marker.dom-content-event):
        (.timeline-ruler > .markers > .marker.timestamp):
        Adjust coloring of the markers. hsla(0.5) was causing bleeding
        with width 1px to 2px. hsl() with opacity it was always 1px.

2015-10-28  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Zoom never goes back to 100% size
        https://bugs.webkit.org/show_bug.cgi?id=150637

        Add and subtract 20% from the zoom level so the zoom factor can return
        to the 1 starting zoom factor if you go back the other direction.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector._increaseZoom): Add 0.2 instead of multiplying 1.2.
        (WebInspector._decreaseZoom): Subtract 0.2 instead of multiplying 0.8.

2015-10-28  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames pie chart does not update during initial selection of a timeline range
        https://bugs.webkit.org/show_bug.cgi?id=150630

        Reviewed by Geoffrey Garen.

        No longer suppress selection changed events while dragging to create a new selection.
        We dispatch selection changed events when adjusting an existing selection, so it makes
        sense to treat both cases identically.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler): Deleted.
        (WebInspector.TimelineRuler.prototype._dispatchTimeRangeSelectionChangedEvent): Deleted.
        (WebInspector.TimelineRuler.prototype._handleMouseMove): Deleted.

2015-10-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove image generators and use SVG directly
        https://bugs.webkit.org/show_bug.cgi?id=150602

        Reviewed by Brian Burg.

        This removes the code used to generate button image states as various canvas bitmaps.
        With the simplification of the UI in Yosemite, we can now just style SVG images to change
        the color used by the glyphs in these images. To do that we use the special "currentColor"
        color keyword. That keyword represents the current value of the applied CSS text color.
        This approach was used since it works across shadow DOM boundaries, which are there with
        our new use of the SVG <use> element to import glyphs. This allows us to eliminate the
        "stroked" and "filled" classes that were used to style some images that used the old
        wrappedSVGDocument image utility.

        Some of the SVG images had to be recreated -- specifically the removal of <clipPath> and
        <text> elements. Those elements do not work or work well with the <use> element. We can
        now only use graphical elements like <path>, <rect>, <circle>, etc.

        * UserInterface/Images/*.svg: Added id to the top level for most images. Use currentColor instead of black. Sorted attributes.
        * UserInterface/Images/gtk/*.svg: Added id to the top level for most images. Filed bug 150603 to track adopting currentColor.

        * UserInterface/Base/ImageUtilities.js:
        (useSVGSymbol): Added.
        (catch): Deleted.
        (_devicePixelRatioChanged): Deleted.
        (_registerGeneratedImageUpdateFunction): Deleted.
        (_logSQLError): Deleted.
        (_logSQLTransactionError): Deleted.
        (_prefetchCachedImagesAndUpdate): Deleted.
        (_prefetchCachedImagesAndUpdate.): Deleted.
        (else.): Deleted.
        (restoreImageFromStorage): Deleted.
        (imageLoaded): Deleted.
        (ensureImageIsLoaded): Deleted.
        (restoreImages.restoreActiveImages): Deleted.
        (restoreImages): Deleted.
        (restoreImage): Deleted.
        (update): Deleted.
        (generateImages.generateActiveImages): Deleted.
        (generateImages): Deleted.
        (generateImage): Deleted.
        (_drawImageShadow): Deleted.
        (_invertMaskImage): Deleted.
        (_applyImageMask): Deleted.
        (generateEmbossedImages): Deleted.
        (invokeCallbackWithDocument): Deleted.
        (imageLoad): Deleted.
        (imageError): Deleted.
        (wrappedSVGDocument): Deleted.
        * UserInterface/Views/ActivateButtonNavigationItem.js:
        (WebInspector.ActivateButtonNavigationItem.prototype.set activated):
        (WebInspector.ActivateButtonNavigationItem.prototype.generateStyleText): Deleted.
        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button):
        (.navigation-bar .item.button > .glyph):
        (.navigation-bar .item.button:not(.disabled):active > .glyph):
        (.navigation-bar .item.button:not(.disabled):matches(:focus, .activate.activated, .radio.selected) > .glyph):
        (.navigation-bar .item.button:not(.disabled):active:matches(:focus, .activate.activated, .radio.selected) > .glyph):
        (body.window-inactive .navigation-bar .item.button > .glyph):
        (.navigation-bar .item.button.disabled > .glyph):
        (body.window-inactive .navigation-bar .item.button.disabled > .glyph):
        (.navigation-bar .item.button.text-only): Deleted.
        (body.window-inactive .navigation-bar .item.button:not(.suppress-emboss) > .glyph): Deleted.
        (body.window-inactive .navigation-bar .item.button.disabled:not(.suppress-emboss) > .glyph): Deleted.
        (.navigation-bar .item.button.suppress-emboss): Deleted.
        (.navigation-bar .item.button.suppress-emboss > .glyph): Deleted.
        (.navigation-bar .item.button.suppress-emboss:active > .glyph): Deleted.
        (.navigation-bar .item.button.suppress-emboss.disabled > .glyph): Deleted.
        * UserInterface/Views/ButtonNavigationItem.js:
        (WebInspector.ButtonNavigationItem.prototype.set image):
        (WebInspector.ButtonNavigationItem): Deleted.
        (WebInspector.ButtonNavigationItem.prototype.get suppressBezel): Deleted.
        (WebInspector.ButtonNavigationItem.prototype.set suppressBezel): Deleted.
        (WebInspector.ButtonNavigationItem.prototype.generateStyleText): Deleted.
        (WebInspector.ButtonNavigationItem.prototype._canvasIdentifier): Deleted.
        (WebInspector.ButtonNavigationItem.prototype._updateImage): Deleted.
        (WebInspector.ButtonNavigationItem.prototype._generateImages): Deleted.
        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button > .glyph):
        (.toolbar .item.button:not(.disabled):active > .glyph):
        * UserInterface/Views/ControlToolbarItem.css:
        (.toolbar .item.control):
        (.toolbar .item.control:hover):
        * UserInterface/Views/MultipleScopeBarItem.js:
        (WebInspector.MultipleScopeBarItem):
        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype.updateLayoutSoon.update):
        (WebInspector.NavigationBar.prototype.updateLayoutSoon):
        (WebInspector.NavigationBar): Deleted.
        (WebInspector.NavigationBar.prototype.insertNavigationItem): Deleted.
        (WebInspector.NavigationBar.prototype.removeNavigationItem): Deleted.
        (WebInspector.NavigationBar.prototype.updateLayout): Deleted.
        (WebInspector.NavigationBar.prototype._updateStyle): Deleted.
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        * UserInterface/Views/RadioButtonNavigationItem.js:
        (WebInspector.RadioButtonNavigationItem.prototype.set active):
        (WebInspector.RadioButtonNavigationItem.prototype.generateStyleText): Deleted.
        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows):
        (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows svg .filled): Deleted.
        (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows svg .stroked): Deleted.
        * UserInterface/Views/ScopeBarItem.js:
        (WebInspector.ScopeBarItem):
        * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
        (.scope-radio-button-navigation-item:hover > .arrows):
        (.scope-radio-button-navigation-item.selected > .arrows > svg .stroked): Deleted.
        * UserInterface/Views/ScopeRadioButtonNavigationItem.js:
        (WebInspector.ScopeRadioButtonNavigationItem):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple .arrows):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple svg .filled): Deleted.
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple svg .stroked): Deleted.
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.treeElementAddedOrChanged):
        (WebInspector.TimelineSidebarPanel.prototype._timelineAdded):
        * UserInterface/Views/ToggleButtonNavigationItem.js:
        (WebInspector.ToggleButtonNavigationItem): Deleted.
        * UserInterface/Views/TreeElementStatusButton.css:
        (.item > .status > .status-button):
        (:matches(:focus, .force-focus) .item.selected > .status > .status-button):
        (.item > .status > .status-button > svg .filled): Deleted.
        (:matches(:focus, .force-focus) .item.selected > .status > .status-button > svg .filled): Deleted.
        (.item > .status > .status-button > svg .stroked): Deleted.
        (:matches(:focus, .force-focus) .item.selected > .status > .status-button > svg .stroked): Deleted.
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):
        * UserInterface/Views/VisualStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear):
        * UserInterface/Views/VisualStyleKeywordIconList.css:
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:not(.selected) > div):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected svg .stroked): Deleted.
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected svg .filled): Deleted.
        * UserInterface/Views/VisualStyleKeywordIconList.js:
        (WebInspector.VisualStyleKeywordIconList.createListItem):
        (WebInspector.VisualStyleKeywordIconList):
        * UserInterface/Views/VisualStylePropertyEditorLink.css:
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > :matches(.linked-icon, .unlinked-icon)):
        (.visual-style-property-editor-link:not(.linked) > .visual-style-property-editor-link-icon > :matches(.linked-icon, .unlinked-icon)):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon): Deleted.
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon svg .filled): Deleted.
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon svg .stroked): Deleted.
        * UserInterface/Views/VisualStylePropertyEditorLink.js:
        (WebInspector.VisualStylePropertyEditorLink):
        * UserInterface/Views/VisualStyleSelectorSection.css:
        (.details-section.visual-style-selector-section > .header > .controls > .visual-style-selector-section-add-rule):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection):

2015-10-28  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: jsmin.py mistakenly removes whitespace from template literal strings
        https://bugs.webkit.org/show_bug.cgi?id=148728

        Reviewed by Joseph Pecoraro.

        * Scripts/jsmin.py:
        (JavascriptMinify.minify): Make backtick a quoting character.

2015-10-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline recording start button missing when WEB_REPLAY disabled (no ReplayAgent)
        https://bugs.webkit.org/show_bug.cgi?id=150633

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype._updateReplayInterfaceVisibility):
        Ensure we pass a boolean to classList.toggle.

2015-10-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove Timeline MarkDOMContent and MarkLoad, data is already available
        https://bugs.webkit.org/show_bug.cgi?id=150615

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processEvent):
        Remove the now unneed mark event handling.

        (WebInspector.TimelineManager.prototype.pageDOMContentLoadedEventFired):
        (WebInspector.TimelineManager.prototype.pageLoadEventFired):
        Update the main frame and create markers for the current recording.

        * UserInterface/Protocol/PageObserver.js:
        (WebInspector.PageObserver.prototype.domContentEventFired):
        (WebInspector.PageObserver.prototype.loadEventFired):
        Forward to TimelineManager.

2015-10-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused / duplicated XHR timeline instrumentation
        https://bugs.webkit.org/show_bug.cgi?id=150605

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        Remove unused events and add an assert that we don't miss
        any script embedders.

2015-10-27  Matt Baker  <mattbaker@apple.com>

        REGRESSION: Web Inspector: DOM path bar blinks when modifying inline styles
        https://bugs.webkit.org/show_bug.cgi?id=149258

        Reviewed by Timothy Hatcher.

        Now that Object now longer spams constructor event listeners, ContentBrowser can safely
        update the NavigationBar synchronously. This fixes the issue, with zero impact on layout
        responsiveness when selecting Rendering Frames tree elements.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
        Force NavigationBar to update synchronously.

2015-10-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline current time marker does not start moving when starting recording after just opening inspector
        https://bugs.webkit.org/show_bug.cgi?id=150178

        Reviewed by Brian Burg.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.capturingStarted):
        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording.prototype.initializeTimeBoundsIfNecessary):
        For a recording to start updating current time the recording itself
        must have a start time. Provide a setter so that the start time can
        be set without waiting for a timeline record. For example the
        timestamp that the frontend receives when it starts a recording.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
        When we have a startTime number (new backends) always use it as the current time.
        Previously we were only doing this if current time was NaN, which would be when
        re-starting a recording after it had stopped, but not for the initial recording
        after opening the inspector.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.updateLayout):
        Even if we do not need to create new time dividers we may need to perform
        other updates like update the current time marker. So do work before bailing.

2015-10-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: WebInspector.Object can dispatch constructor-level events multiple times
        https://bugs.webkit.org/show_bug.cgi?id=150579

        Reviewed by Timothy Hatcher.

        Use `hasOwnProperty` when checking for constructor event listeners when walking the
        prototype chain. This prevents listeners registered with a base class constructor
        from being dispatched multiple times by getting picked up higher in the prototype chain.

        * UserInterface/Base/Object.js:
        (WebInspector.Object.prototype.dispatchEventToListeners.dispatch):
        (WebInspector.Object.prototype.dispatchEventToListeners):
        (WebInspector.Object):

2015-10-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Hundreds of failed assertions after switching to Rendering Frames after recording complete
        https://bugs.webkit.org/show_bug.cgi?id=150568

        Reviewed by Timothy Hatcher.

        When the TimelineRecordingContentView responds to the current content view changing,
        the TimelineOverview may be swapped out (if switching from a Timelines content view to a
        Rendering Frames content view). This patch installs a new overview (if it's changing) prior
        to setting the TimelineSidebarPanel's tree outline, as setting the tree outline forces
        filters to run.

        Filtering tree elements requires that the timeline overview is up to date, which was the
        cause the assertion deluge.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):

2015-10-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Spacebar to start recording should not cause system beep
        https://bugs.webkit.org/show_bug.cgi?id=150573

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype._toggleRecordingOnSpacebar):
        (WebInspector.TimelineSidebarPanel.prototype._toggleNewRecordingOnSpacebar):
        The keyboard shortcuts do not implicitly prevent default because they may bail.
        So in cases where they do handle the key, prevent default to prevent system beeps.

2015-10-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cleanup sidebar panels, reduce `delete` and use Maps instead of objects
        https://bugs.webkit.org/show_bug.cgi?id=150548

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel):
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype._updateDataGrid):
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype._dataGridNodeForLayer):

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        (WebInspector.NavigationSidebarPanel.restoreStateFromCookie.finalAttemptToRestoreViewStateFromCookie):
        (WebInspector.NavigationSidebarPanel.restoreStateFromCookie):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
        (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
        (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
        Switched to using Symbol() to set external properties on tree elements.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel):
        (WebInspector.StorageSidebarPanel.prototype._addDatabase):
        (WebInspector.StorageSidebarPanel.prototype._addIndexedDatabase):
        (WebInspector.StorageSidebarPanel.prototype._addFrameManifest):
        (WebInspector.StorageSidebarPanel.prototype._storageCleared):

2015-10-24  Nikita Vasilyev  <nvasilyev@apple.com>

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

        Reverted changeset:

        "Web Inspector: Autocompletion previews in the CSS sidebar do not apply"
        https://bugs.webkit.org/show_bug.cgi?id=147720
        http://trac.webkit.org/changeset/191419

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

        Web Inspector: Remove unused ScrollLayer Timeline EventType
        https://bugs.webkit.org/show_bug.cgi?id=150518

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:

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

        Web Inspector: xlink:href should be linkified
        https://bugs.webkit.org/show_bug.cgi?id=150505

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        When opening a URL with a fragment, prefer opening a resource
        that has the same URL without the fragment, otherwise this would
        open in a new tab.

        * UserInterface/Base/URLUtilities.js:
        (absoluteURL):
        Better handling absoluteURL("#frag", baseURL).

        * UserInterface/Views/CodeMirrorAdditions.js:
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
        Allow for more "href" style attributes, such as XML namespaced
        "xlink:href" attribute names.

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

        Web Inspector: Command-Enter in Debugger should show a popover with evaluation result
        https://bugs.webkit.org/show_bug.cgi?id=149195

        Currenty, the only way to display the popover is to hover over the text with a mouse cursor.
        Provide a way to display it via a keyboard shortcut.

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController): Deleted.
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions): Deleted.
        Don't evaluate selected text from Debugger or Sources in the console.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._handleCommandEnterKey):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._hidePopover):
        Cmd-Enter triggers the popover, Esc hides it.

        (WebInspector.CodeMirrorTokenTrackingController.prototype.set mode):
        (WebInspector.CodeMirrorTokenTrackingController.prototype.removeHighlightedRange):
        Don't use delete.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._mouseMovedWithMarkedText):
        When a token isn't hovered, hide it only when it was triggered not by the keyboard.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._markedTextIsNoLongerHovered):
        Don't use delete.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._getTokenInfoForPosition):
        Abstract out a no side effects _getTokenInfoForPosition method, which is also used by _handleCommandEnterKey.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._mouseMovedOutOfEditor):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._mouseButtonWasReleasedOverEditor):
        Don't use delete.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._processNewHoveredToken):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processNonSymbolToken):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
        Pass tokenInfo as an argument to explicitly state that these methods require it.

        (WebInspector.CodeMirrorTokenTrackingController.prototype._resetTrackingStates):
        Don't use delete.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeReleased):
        Allow to hide the popover regardless of mouse position. Used when the text cursor moves or
        when Esc key is pressed.

2015-10-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Visual sidebar should support multiple backgrounds
        https://bugs.webkit.org/show_bug.cgi?id=148310

        Reviewed by Timothy Hatcher.

        Changes the layout of the Background - Style section in the Visual sidebar
        to be a list instead of a single editable field for a background-image URL.
        Allows for comma-separated background properties (both shorthand and
        longhand) and displays them all in a single list for editing.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/VisualStyleColorPicker.js:
        (WebInspector.VisualStyleColorPicker):
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
        (.visual-style-property-container.comma-separated-keyword-editor):
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._generateTextFromLonghandProperties.propertyValue):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._generateTextFromLonghandProperties):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.modifyPropertyText):
        Comma separated properties will now try to assemble a value from related longhand
        properties so that a single shorthand property with commas may be used.

        * UserInterface/Views/VisualStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .visual > .details-section.background .details-section.background-style .visual-style-property-container.comma-separated-keyword-editor.background):
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._noRemainingCommaSeparatedEditorItems):
        (WebInspector.VisualStyleDetailsPanel.prototype._selectedCommaSeparatedEditorItemValueChanged):
        (WebInspector.VisualStyleDetailsPanel.prototype._commaSeparatedEditorTreeItemSelected):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.noRemainingTreeItems): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.selectedBoxShadowItemValueChanged): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.boxShadowItemSelected): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.noRemainingTreeItems): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.selectedtransitionItemValueChanged): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.transitionItemSelected): Deleted.
        Made the "background-image" property into a comma separated editor.

        * UserInterface/Views/VisualStyleFontFamilyListEditor.js:
        (WebInspector.VisualStyleFontFamilyListEditor):
        * UserInterface/Views/VisualStyleKeywordIconList.js:
        (WebInspector.VisualStyleKeywordIconList.prototype.set value):
        (WebInspector.VisualStyleKeywordIconList.prototype._handleKeywordChanged):
        (WebInspector.VisualStyleKeywordIconList):
        * UserInterface/Views/VisualStyleKeywordPicker.js:
        (WebInspector.VisualStyleKeywordPicker.prototype.updateEditorValues):
        (WebInspector.VisualStyleKeywordPicker.prototype._setValue):
        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        * UserInterface/Views/VisualStylePropertyCombiner.js:
        (WebInspector.VisualStylePropertyCombiner):
        (WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateCompatibleEditor):
        (WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText):
        * UserInterface/Views/VisualStylePropertyEditor.js:
        (WebInspector.VisualStylePropertyEditor):
        (WebInspector.VisualStylePropertyEditor.prototype.update):
        (WebInspector.VisualStylePropertyEditor.prototype.getValuesFromText):
        (WebInspector.VisualStylePropertyEditor.prototype.get propertyMissing):
        (WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
        Moved "propertyMissing" into a member variable for better access.

        * UserInterface/Views/VisualStyleURLInput.js:
        (WebInspector.VisualStyleURLInput):
        (WebInspector.VisualStyleURLInput.prototype.get synthesizedValue):
        (WebInspector.VisualStyleURLInput.prototype.parseValue):
        Added support for specific keywords to be used in the input field.

2015-10-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove generateColoredImagesForCSS and its clients
        https://bugs.webkit.org/show_bug.cgi?id=150474

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/ImageUtilities.js:
        (generateColoredImage): Deleted.
        (imageLoaded): Deleted.
        (ensureImageIsLoaded): Deleted.
        (restoreImages.restoreActiveImages): Deleted.
        (restoreImages): Deleted.
        (restoreImage): Deleted.
        (update): Deleted.
        (generateImage): Deleted.
        (generateColoredImagesForCSS): Deleted.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded): Deleted call to _generateDisclosureTriangleImages.
        (WebInspector._generateDisclosureTriangleImages): Deleted.
        (WebInspector.createGoToArrowButton): Deleted code to generate the states.

        * UserInterface/Images/BackArrow.svg: Removed.
        * UserInterface/Images/BackForwardArrows.svg: Added.
        * UserInterface/Images/DisclosureTriangleSmallClosed.svg: Removed.
        * UserInterface/Images/DisclosureTriangleSmallOpen.svg: Removed.
        * UserInterface/Images/DisclosureTriangleTinyClosed.svg: Removed.
        * UserInterface/Images/DisclosureTriangleTinyOpen.svg: Removed.
        * UserInterface/Images/DisclosureTriangles.svg: Added.
        * UserInterface/Images/ForwardArrow.svg: Removed.
        * UserInterface/Images/GoToArrow.svg:
        * UserInterface/Images/Locked.svg: Moved fill color here.
        * UserInterface/Images/SortIndicatorArrows.svg: Added.
        * UserInterface/Images/SortIndicatorDownArrow.svg: Removed.
        * UserInterface/Images/SortIndicatorUpArrow.svg: Removed.
        * UserInterface/Images/gtk/BackArrow.svg: Removed.
        * UserInterface/Images/gtk/BackForwardArrows.svg: Added.
        * UserInterface/Images/gtk/DisclosureTriangleSmallClosed.svg: Removed.
        * UserInterface/Images/gtk/DisclosureTriangleSmallOpen.svg: Removed.
        * UserInterface/Images/gtk/DisclosureTriangleTinyClosed.svg: Removed.
        * UserInterface/Images/gtk/DisclosureTriangleTinyOpen.svg: Removed.
        * UserInterface/Images/gtk/DisclosureTriangles.svg: Added.
        * UserInterface/Images/gtk/ForwardArrow.svg: Removed.
        * UserInterface/Images/gtk/GoToArrow.svg:
        * UserInterface/Images/gtk/Locked.svg: Moved fill color here.
        * UserInterface/Images/gtk/SortIndicatorArrows.svg: Added.
        * UserInterface/Images/gtk/SortIndicatorDownArrow.svg: Removed.
        * UserInterface/Images/gtk/SortIndicatorUpArrow.svg: Removed.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section.locked > .header::before):

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection): Deleted.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message.expandable .console-top-level-message::before):
        (.console-message.expandable.expanded .console-top-level-message::before):

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser): Use BackForwardArrows.svg.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.parent::before):
        (.dom-tree-outline:focus li.parent.selected::before):
        (.dom-tree-outline li.parent.expanded::before):
        (.dom-tree-outline:focus li.parent.expanded.selected::before):

        * UserInterface/Views/DataGrid.css:
        (.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):
        (.data-grid tr.parent.expanded td.disclosure::before):
        (.data-grid:matches(:focus, .force-focus) tr.parent.selected td.disclosure::before):
        (.data-grid:matches(:focus, .force-focus) tr.parent.expanded.selected td.disclosure::before):

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid): Deleted call to _generateSortIndicatorImagesIfNeeded.
        (WebInspector.DataGrid.prototype._generateSortIndicatorImagesIfNeeded): Deleted.

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .header::before):
        (.details-section > .header:not(.mouse-over-options-element):active::before):
        (.details-section.collapsed > .header::before):
        (.details-section.collapsed > .header:not(.mouse-over-options-element):active::before):

        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection): Deleted call to _generateDisclosureTrianglesIfNeeded.
        (WebInspector.DetailsSection.prototype._generateDisclosureTrianglesIfNeeded): Deleted.

        * UserInterface/Views/ErrorObjectView.css:
        (.error-object > .formatted-error::before):
        (.error-object.expanded > .formatted-error::before):

        * 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):

        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner): Deleted call to _generateButtonsGlyphsIfNeeded.
        (WebInspector.FindBanner.prototype._generateButtonsGlyphsIfNeeded): Deleted.

        * UserInterface/Views/LogContentView.css:
        (.console-group-title::before):
        (.console-group.collapsed .console-group-title::before):

        * UserInterface/Views/Main.css:
        (.go-to-arrow):
        (.go-to-arrow:active):
        (:matches(:focus, .force-focus) .selected .go-to-arrow):
        (:matches(:focus, .force-focus) .selected .go-to-arrow:active):

        * UserInterface/Views/NavigationSidebarPanel.css:
        (.navigation-sidebar-panel-content-tree-outline .item .disclosure-button):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected .disclosure-button):
        (.navigation-sidebar-panel-content-tree-outline .item.expanded .disclosure-button):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected.expanded .disclosure-button):

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel): Deleted call to _generateDisclosureTrianglesIfNeeded.
        (WebInspector.NavigationSidebarPanel.prototype._generateDisclosureTrianglesIfNeeded): Deleted.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property.parent > .disclosure-button):
        (.object-tree-property.parent.expanded > .disclosure-button):
        (.object-tree-property .read-only): Deleted.

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree > :matches(.title, .object-preview)::before):
        (.object-tree.expanded > :matches(.title, .object-preview)::before):

        * UserInterface/Views/TypeTreeElement.css:
        (.type-tree-element.parent > .disclosure-button):
        (.type-tree-element.parent.expanded > .disclosure-button):

2015-10-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: CSS Data URIs count against page weight twice
        https://bugs.webkit.org/show_bug.cgi?id=150101

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._resourceSizeDidChange):
        Exclude resources with a data URI from the total page weight.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.prototype.updateForRedirectResponse):
        (WebInspector.Resource.prototype.updateForResponse):
        (WebInspector.Resource.prototype.markAsFinished):
        Removed uses of `delete`.

2015-10-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused Timeline GCEvent Record type
        https://bugs.webkit.org/show_bug.cgi?id=150477

        Reviewed by Timothy Hatcher.

        iOS backends never emitted a GCEvent timeline event.

        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:

2015-10-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: srcset attributes should have hyperlinks to the resources
        https://bugs.webkit.org/show_bug.cgi?id=150409

        Reviewed by Timothy Hatcher.

        Follow-up tweaks and fixes that were intended to be landed.

        * UserInterface/Views/CodeMirrorAdditions.js:
        (tokenizeSrcSetString):
        Multiline parsing has issues recovering the state CodeMirror
        expects, so we just bail in those cases. Leading whitespace
        is also handled poorly, but expected to be rare.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
        Trim to eliminate leading whitespace.

2015-10-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Restore :not(:placeholder-shown) behavior on search bars with comments
        https://bugs.webkit.org/show_bug.cgi?id=150452

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FindBanner.css:
        (.find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown)):
        * UserInterface/Views/SearchBar.css:
        (.search-bar > input[type="search"]:not(:placeholder-shown)):
        Add back the placeholder-shown related styles and add a comment about what they are for.

2015-10-22  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Tabbing over CSS properties prepended by * doesn't move the highlighted range
        https://bugs.webkit.org/show_bug.cgi?id=150294

        Reviewed by Timothy Hatcher.

        Moving the selected text when tabbing and shift-tabbing now relies upon
        the last index of ";" if it exists instead of whether the line ends with it.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey):

2015-10-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: srcset attributes should have hyperlinks to the resources
        https://bugs.webkit.org/show_bug.cgi?id=150409

        Reviewed by Timothy Hatcher.

        The "srcset" attribute parsing is a simplification of:
        https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset

        The "srcset" attribute value is expected to be in comma
        separated groups. Within each group we always expect a link,
        and an optional descriptor. We want to linkify the link.

        * UserInterface/Views/CodeMirrorAdditions.js:
        (tokenizeSrcSetString):
        (extendedXMLToken):
        When parsing srcset attribute, parse links as link tokens
        so that they are linkified in resource content views.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
        When creating the DOMTree DOM for srcset attributes,
        create link elements for the link values of attribute value.

2015-10-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Autocompletion previews in the CSS sidebar do not apply
        https://bugs.webkit.org/show_bug.cgi?id=147720

        Reviewed by Timothy Hatcher.

        When autocompletion hints are added to styles or the console, the history
        object used by CodeMirror was edited to remove the last entry. Instead of
        using this method (which caused glitchy behaviour when undo-ing), call
        CodeMirror.undo() and adjust accordingly. In addition, a marker was being
        used as the completion hint instead of applying text, whereas these
        changes use actual text, ensuring that completions are previewed in the page.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController):
        (WebInspector.CodeMirrorCompletionController.prototype.close):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._handleBeforeChange):
        (WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker): Deleted.
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker): Deleted.

2015-10-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Add forgotten WebInspector.UIString from r190521
        https://bugs.webkit.org/show_bug.cgi?id=150425

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (UserInterface/Views/CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded)

2015-10-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Adjust usages of classList.toggle to ensure a true/false value instead of undefined
        https://bugs.webkit.org/show_bug.cgi?id=150424

        Reviewed by Timothy Hatcher.

        Adds "!!" in front of force parameters in classList.toggle calls that
        could possibly be undefined (thereby breaking the UI).

        * UserInterface/Views/ScopeBarItem.js:
        (WebInspector.ScopeBarItem):
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
        * UserInterface/Views/VisualStylePropertyEditor.js:
        (WebInspector.VisualStylePropertyEditor):

2015-10-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Option-Up doesn't increment certain attribute values
        https://bugs.webkit.org/show_bug.cgi?id=149257

        Reviewed by Brian Burg.

        If the user tries to modify a numerical attribute in HTML and the cursor
        was at the beginning of the attribute value, the range of the selection
        was within a sibling element instead of the text node containin the value.
        This patch fixes this issue and ensures that the correct text is selected.

        * UserInterface/Views/EditingSupport.js:
        (WebInspector.startEditing.handleEditingResult):
        Replaced var with let.

2015-10-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use some CSS Variables in Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=150405

        Reviewed by Timothy Hatcher.

        * UserInterface/Main.html:
        Include the new variables stylesheet.

        * UserInterface/Views/Variables.css: Added.
        (:root):
        Introduce new global variables.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .cm-link):
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message-preview-divider):
        (.console-message-enclosed):
        (.console-message .console-message-extra-parameters-container > li::before):
        (.console-saved-variable):
        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.selected > span::after):
        * UserInterface/Views/FormattedValue.css:
        (:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset) > .size):
        (.formatted-number):
        (.formatted-boolean):
        (.formatted-string):
        (.formatted-regexp):
        (.formatted-symbol):
        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview > .size):
        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-name):
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.syntax-highlighted :matches(.css-keyword, .css-tag, .css-at-rule, .css-important, .javascript-keyword, .html-tag)):
        (.syntax-highlighted :matches(.css-number, .javascript-number)):
        (.syntax-highlighted :matches(.css-string, .javascript-string, .html-attribute-value)):
        (.syntax-highlighted .javascript-regexp):
        * UserInterface/Views/TypeTokenView.css:
        (.type-token-symbol):
        Make use of variables.

2015-10-21  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Typo in a property name: style.inerhited
        https://bugs.webkit.org/show_bug.cgi?id=150391

        Reviewed by Csaba Osztrogonác.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):

2015-10-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Pressing Command-S while focused on the styles sidebar should save CSS file
        https://bugs.webkit.org/show_bug.cgi?id=150298

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        Beep when saving didn't work. Inline CSS and CSS in style attributes aren't curently supported.

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

        Web Inspector: JavaScriptCore should parse sourceURL and sourceMappingURL directives
        https://bugs.webkit.org/show_bug.cgi?id=150096

        Reviewed by Geoffrey Garen.

        * UserInterface/Test/InspectorProtocol.js:
        (InspectorProtocol._sendMessage):
        (InspectorProtocol.dispatchMessageFromBackend):
        This is only used for tests, so avoid console.log
        and just dump directly to the system console.

2015-10-19  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [Streams API] Add skeleton for initial WritableStream support
        https://bugs.webkit.org/show_bug.cgi?id=149951

        Reviewed by Darin Adler.

        * UserInterface/Models/NativeFunctionParameters.js: Added support for WritableStream.

2015-10-19  James Craig  <jcraig@apple.com>

        Web Inspector: AX: console list 'input'/'output' markers are not perceivable
        https://bugs.webkit.org/show_bug.cgi?id=133045

        Enabling WebKit Web Inspector console pseudo-element labels using the new CSS4 'alt' property.

        Reviewed by Brian Burg.

        * UserInterface/Views/LogContentView.css: 
        (.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
        (.console-messages:focus .console-item.selected .console-user-command-result.console-log-level::before):
        (@media reader): Deleted.

2015-10-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console Search should update when console is cleared
        https://bugs.webkit.org/show_bug.cgi?id=150141

        Reviewed by Brian Burg.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._logCleared):
        Reperform the search if there is a search query.

        (WebInspector.LogContentView.prototype._filterMessageElements):
        Reperform the current search.

2015-10-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add "unset" to CSS value autocompletion
        https://bugs.webkit.org/show_bug.cgi?id=127616

        Reviewed by Brian Burg.

        * UserInterface/Models/CSSCompletions.js:
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.forProperty):
        Treat "unset" similiar to "initial". Also, no need for "initial"
        in an individual property's list. We always include it.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateAlignmentSection):
        Add "Unset" alongside "Initial".

2015-10-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Garbage Collection Event in Timeline
        https://bugs.webkit.org/show_bug.cgi?id=142510

        Reviewed by Geoffrey Garen and Brian Burg.

        * UserInterface/Base/Utilities.js:
        (Array.prototype.partition):
        Helper to partition an Array into two arrays.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        * UserInterface/Protocol/HeapObserver.js: Added.
        (WebInspector.HeapObserver.prototype.garbageCollected):
        (WebInspector.HeapObserver):
        Create the new observer and manager.

        * UserInterface/Models/GarbageCollection.js: Added.
        (WebInspector.GarbageCollection):
        (WebInspector.GarbageCollection.fromPayload):
        (WebInspector.GarbageCollection.prototype.get type):
        (WebInspector.GarbageCollection.prototype.get startTime):
        (WebInspector.GarbageCollection.prototype.get endTime):
        (WebInspector.GarbageCollection.prototype.get duration):
        Model object for Heap.GarbageCollection.

        * UserInterface/Controllers/HeapManager.js: Added.
        (WebInspector.HeapManager):
        (WebInspector.HeapManager.prototype.garbageCollected):
        Dispatch events with the GC object.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager):
        (WebInspector.TimelineManager.prototype._garbageCollected):
        Include new GC Timeline Events as Script events.

        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
        For the Script overview, make two sets of bars, one for Scripts and one for GCs.
        The GCs bar will be overlaid on top of the the Scripts bar. This is particularly
        useful since a GC can happen during script execution.

        * UserInterface/Images/TimelineRecordGarbageCollection.svg: Added.
        * UserInterface/Main.html:
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype.isGarbageCollection):
        (WebInspector.ScriptTimelineRecord.EventType.displayName):
        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
        (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ScriptTimelineDataGridNode):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
        * UserInterface/Views/SourceCodeTimelineTreeElement.js:
        (WebInspector.SourceCodeTimelineTreeElement):
        * UserInterface/Views/TimelineIcons.css:
        (.garbage-collection-profile-record .icon):
        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar.timeline-record-type-script.script-timeline-record-garbage-collected > .segment):
        UI for GC events.

        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.createCombinedBars):
        Simplify by storing start time into a variable.

        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        Icon for GC events.

2015-10-15  Commit Queue  <commit-queue@webkit.org>

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

        This patch causes 50+ LayoutTest crashes related to the
        inspector (Requested by ryanhaddad on #webkit).

        Reverted changeset:

        "Web Inspector: JavaScriptCore should parse sourceURL and
        sourceMappingURL directives"
        https://bugs.webkit.org/show_bug.cgi?id=150096
        http://trac.webkit.org/changeset/191135

2015-10-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: JavaScriptCore should parse sourceURL and sourceMappingURL directives
        https://bugs.webkit.org/show_bug.cgi?id=150096

        Reviewed by Geoffrey Garen.

        * UserInterface/Test/InspectorProtocol.js:
        (InspectorProtocol._sendMessage):
        (InspectorProtocol.dispatchMessageFromBackend):
        This is only used for tests, so avoid console.log
        and just dump directly to the system console.

2015-10-13  João Oliveira  <hello@jxs.pt>

        Web Inspector: Console SearchBar should work more like ContentBrowser FindBanner
        https://bugs.webkit.org/show_bug.cgi?id=149505

        Reviewed by Joseph Pecoraro.

        Console tab now uses findBanner, adapted LogContentView to use findBanner,
        and findBanner to be more agnostic to both usecases, either as fixed, on console tab,
        and hideable on other inspector tabs.

        * UserInterface/Views/FindBanner.css:
        (.find-banner.console-find-banner):
        (.find-banner.console-findbanner input[type="search"]):
        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner):
        (WebInspector.FindBanner.set targetElement.delayedWork):
        (WebInspector.FindBanner.prototype.set targetElement):
        (WebInspector.FindBanner.prototype.get showing):
        (WebInspector.FindBanner.prototype.focus):
        (WebInspector.FindBanner.prototype._clearAndBlur):
        (WebInspector.FindBanner.prototype.show.delayedWork):
        (WebInspector.FindBanner.prototype.show):
        (WebInspector.FindBanner.prototype.hide):
        (WebInspector.FindBanner.prototype.get element): Deleted.
        (WebInspector.FindBanner.prototype._inputFieldSearch): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype.get navigationItems):
        (WebInspector.LogContentView.prototype.handleFindEvent):
        (WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
        (WebInspector.LogContentView.prototype.findBannerRevealNextResult):
        (WebInspector.LogContentView.prototype._filterMessageElements):
        (WebInspector.LogContentView.prototype.findBannerPerformSearch):
        (WebInspector.LogContentView.prototype.findBannerSearchCleared):
        (WebInspector.LogContentView.prototype.revealNextSearchResult):
        (WebInspector.LogContentView.prototype.revealPreviousSearchResult):
        (WebInspector.LogContentView.prototype._performSearch):
        (WebInspector.LogContentView.prototype.searchBarDidActivate): Deleted.
        (WebInspector.LogContentView.prototype._searchTextDidChange): Deleted.

2015-10-13  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION(r189567): Web Inspector: Clipped filter icons when debugger sidebar is narrow
        https://bugs.webkit.org/show_bug.cgi?id=150023

        r189567 changed flexbox items' default min-width from 0 to auto.
        Explicitly set it to 0 in CSS.

        Reviewed by Brian Burg.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar > input[type="search"]):

2015-10-13  Yusuke Suzuki  <utatane.tea@gmail.com>

        Web Inspector: Don't shadow global Object constructor in WebInspector.Object class definition
        https://bugs.webkit.org/show_bug.cgi?id=150093

        Reviewed by Joseph Pecoraro.

        Currently, class expression does not define any variables. So even in `class Object { }`,
        we were able to touch the global Object constructor (like `Object.keys`).
        However, that is a bug. After https://bugs.webkit.org/show_bug.cgi?id=150089 fixes that bug,
        the global `Object` is shadowed by the user-defined `class Object` name.

        To solve this issue, we changed the `class Object` to `class WebInspectorObject`.
        And we expose this class as a `WebInspector.Object`.

        * UserInterface/Base/Object.js:

2015-10-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Improve error messages for internal Inspector code
        https://bugs.webkit.org/show_bug.cgi?id=149995

        Don't log "error.stack" since the error view already includes a nicely formatted stacktrace.

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass.prototype._dispatchResponseToCallback):
        (InspectorBackendClass.prototype._dispatchEvent):

2015-10-08  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Stack trace view doesn't properly display lines without function names
        https://bugs.webkit.org/show_bug.cgi?id=149922

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/StackTrace.js:
        (WebInspector.StackTrace._parseStackTrace):
        (WebInspector.StackTrace._parseLocation): Added.

2015-10-08  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: An error view doesn't get expanded by clicking on the expand arrow
        https://bugs.webkit.org/show_bug.cgi?id=149917

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ErrorObjectView.css:
        (.error-object > .formatted-error::before):
        (.error-object.expanded > .formatted-error::before):
        (.error-object::before): Deleted.
        (.error-object.expanded::before): Deleted.

2015-10-06  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Clicking on a stack trace link does not navigate to the corresponding line
        https://bugs.webkit.org/show_bug.cgi?id=149405

        lineNumber should be a number type but it was a string.

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.openURL):
        (WebInspector.linkifyStringAsFragmentWithCustomLinkifier):
        Keep lineNumber undefined when it isn't present in the string.
        WebInspector.linkifyStringAsFragmentWithCustomLinkifier is only used by
        WebInspector.linkifyStringAsFragment and it expects lineNumber to be undefined
        when it wasn't found in the parsed string.

2015-10-06  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Fix spacing of FindBanner prev/next buttons
        https://bugs.webkit.org/show_bug.cgi?id=149717

        Reviewed by Darin Adler.

        The sizing and spacing of the previous and next buttons in the FindBanner
        is slightly off and should be readjusted to ensure that both buttons are
        the same size and have the same spacing.

        * UserInterface/Views/FindBanner.css:
        (.find-banner > button.segmented.right > .glyph):
        (.find-banner > button.segmented):
        (.find-banner > button.segmented > .glyph):
        (.find-banner > button.segmented.left): Deleted.
        (.find-banner > button.segmented.left > .glyph): Deleted.
        (.find-banner > button.segmented.right): Deleted.

2015-10-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Simplify TimelineRecordBar a bit
        https://bugs.webkit.org/show_bug.cgi?id=149733

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.prototype.set records):

2015-10-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Error displayed as an object when passed as a second argument to console.log
        https://bugs.webkit.org/show_bug.cgi?id=149799

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
        Don't format errors as objects.

        (WebInspector.ConsoleMessageView.prototype._formatParameter):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsValue):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsNode):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsObject):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsError):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsArray):
        Replace an unnecessary span element with a document fragment.

        * UserInterface/Views/ErrorObjectView.css:
        (.error-object):
        Display an error object on the same line as a list bullet.

2015-10-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Unprefix -webkit-font-feature-settings
        https://bugs.webkit.org/show_bug.cgi?id=149722

        Reviewed by Sam Weinig.

        * UserInterface/Models/CSSKeywordCompletions.js:

2015-10-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Wrong column numbers in error object views
        https://bugs.webkit.org/show_bug.cgi?id=149795

        Convert columnNumber and lineNumber properties from strings to numbers
        to prevent accidental string concatenations.

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/StackTrace.js:
        (WebInspector.StackTrace._parseStackTrace):

2015-10-02  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add breakpoint option to ignore n times before stopping
        https://bugs.webkit.org/show_bug.cgi?id=147664

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New strings for breakpoint popover labels.

        * UserInterface/Controllers/BreakpointPopoverController.js:
        (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
        Add ignoreCount UI to popover, if backend support exists. UI based on same
        feature in Xcode's breakpoint editing dialog.
        (WebInspector.BreakpointPopoverController.prototype._popoverIgnoreInputChanged):
        User input sanity checks on numeric input.

        * UserInterface/Controllers/DebuggerManager.js:
        Listen for changes to breakpoint ignoreCount property.

        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint):
        (WebInspector.Breakpoint.prototype.get ignoreCount):
        (WebInspector.Breakpoint.prototype.set ignoreCount):
        New property for ignoreCount.
        (WebInspector.Breakpoint.prototype.get options):
        Added ignoreCount to options object.
        (WebInspector.Breakpoint.prototype.get info):
        Added ignoreCount to info object.

        * UserInterface/Views/BreakpointPopoverController.css:
        (#edit-breakpoint-popover-ignore):
        New styles for breakpoint popover.

2015-10-02  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cleanup DebuggerManager, reduce `delete` and use Maps instead of objects
        https://bugs.webkit.org/show_bug.cgi?id=149760

        Reviewed by Joseph Pecoraro.

        Replaced objects used as hashmaps with Map.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.breakpointsForSourceCode):
        (WebInspector.DebuggerManager.prototype.breakpointForIdentifier):
        (WebInspector.DebuggerManager.prototype.scriptForIdentifier):
        (WebInspector.DebuggerManager.prototype.scriptsForURL):
        (WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
        (WebInspector.DebuggerManager.prototype.removeBreakpoint):
        (WebInspector.DebuggerManager.prototype.breakpointResolved):
        (WebInspector.DebuggerManager.prototype.reset):
        (WebInspector.DebuggerManager.prototype.scriptDidParse):
        (WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload):
        (WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
        (WebInspector.DebuggerManager.prototype._setBreakpoint):
        (WebInspector.DebuggerManager.prototype._removeBreakpoint.didRemoveBreakpoint):
        (WebInspector.DebuggerManager.prototype._removeBreakpoint):

2015-10-02  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Copying inline style text puts "undefined" in the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=149155

        Reviewed by Brian Burg.

        CSSStyleDeclarations for inline styles do not have a owner CSSRule, which means
        that they do not have a selector or media list. CSS strings must have a selector
        and, for inline styles without an owner rule and selector, this was a problem.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WebInspector.CSSStyleDeclaration.prototype.get mediaList):
        (WebInspector.CSSStyleDeclaration.prototype.get selectorText):
        (WebInspector.CSSStyleDeclaration.prototype.generateCSSRuleString):
        Added getters for the list of media queries and selector text with fallbacks
        for CSSStyleDeclarations that do not have an owner CSSRule (inline styles).

        * UserInterface/Test.html:
        Added CSSMedia include for new inspector/css/generate-css-rule-string.html test.

        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
        Removed parameter that no longer exists.

2015-10-02  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed, rolling out r190520, some tests assert / crash.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded): Deleted.
        * UserInterface/Base/Utilities.js:
        (value): Deleted.
        * UserInterface/Controllers/HeapManager.js: Removed.
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager): Deleted.
        (WebInspector.TimelineManager.prototype._garbageCollected): Deleted.
        * UserInterface/Images/TimelineRecordGarbageCollection.svg: Removed.
        * UserInterface/Main.html:
        * UserInterface/Models/GarbageCollection.js: Removed.
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.EventType.displayName):
        (WebInspector.ScriptTimelineRecord.prototype.isGarbageCollection): Deleted.
        * UserInterface/Protocol/HeapObserver.js: Removed.
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded): Deleted.
        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
        (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent): Deleted.
        (WebInspector.ScriptTimelineDataGridNode): Deleted.
        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
        * UserInterface/Views/SourceCodeTimelineTreeElement.js:
        (WebInspector.SourceCodeTimelineTreeElement):
        * UserInterface/Views/TimelineIcons.css:
        (.garbage-collection-profile-record .icon): Deleted.
        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar.timeline-record-type-script.script-timeline-record-garbage-collected > .segment): Deleted.
        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.createCombinedBars):
        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):

2015-10-02  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Option-Click on a property name in the Computed view should jump to resource view
        https://bugs.webkit.org/show_bug.cgi?id=149521

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.effectivePropertyForName):
        Now tries to search for a non-canonical property before falling back to
        the canonical version.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
        If the user option-clicks the goto arrow, it shows the source for the
        property instead.

        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty.delegateShowProperty):
        (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
        Attempts to show the source of the given property. Will fallback to
        highlighting the property in the rules panel.

2015-10-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Garbage Collection Event in Timeline
        https://bugs.webkit.org/show_bug.cgi?id=142510

        Reviewed by Geoffrey Garen.

        * UserInterface/Base/Utilities.js:
        (Array.prototype.parition):
        Helper to partition an Array into two arrays.

        * UserInterface/Main.html:
        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        * UserInterface/Protocol/HeapObserver.js:
        (WebInspector.HeapObserver.prototype.garbageCollected):
        (WebInspector.HeapObserver):
        Create the new observer and manager.

        * UserInterface/Models/GarbageCollection.js:
        (WebInspector.GarbageCollection):
        (WebInspector.GarbageCollection.fromPayload):
        (WebInspector.GarbageCollection.prototype.get type):
        (WebInspector.GarbageCollection.prototype.get startTime):
        (WebInspector.GarbageCollection.prototype.get endTime):
        (WebInspector.GarbageCollection.prototype.get duration):
        Model object for Heap.GarbageCollection.

        * UserInterface/Controllers/HeapManager.js:
        (WebInspector.HeapManager):
        (WebInspector.HeapManager.prototype.garbageCollected):
        Dispatch events with.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager):
        (WebInspector.TimelineManager.prototype._garbageCollected):
        Include new GC Timeline Events as Script events.

        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
        For the Script overview, make two sets of bars, one for Scripts and one for GCs.
        The GCs bar will be on top of the the Scripts bar. This is particularly useful
        since a GC can happen during script execution.

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
        (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ScriptTimelineDataGridNode):
        Give a NaN call count to top level Script DataGridNodes.
        In the UI, display the empty placeholder for NaN call counts.

        * UserInterface/Images/TimelineRecordGarbageCollection.svg: Added.
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype.isGarbageCollection):
        (WebInspector.ScriptTimelineRecord.EventType.displayName):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
        * UserInterface/Views/SourceCodeTimelineTreeElement.js:
        (WebInspector.SourceCodeTimelineTreeElement):
        * UserInterface/Views/TimelineIcons.css:
        (.garbage-collection-profile-record .icon):
        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar.timeline-record-type-script.script-timeline-record-garbage-collected > .segment):
        UI for GC events.

        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.createCombinedBars):
        Simplify by storing start time into a variable.

        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        Icon for GC events.

2015-10-02  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Fix indentation of console message parameters
        https://bugs.webkit.org/show_bug.cgi?id=149740

        Reviewed by Darin Adler.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message .console-message-stack-trace-container > li):
        (.console-message .console-message-extra-parameters-container > li::before):

2015-10-02  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add GTK+ icons for new plus icons in the style sidebar
        https://bugs.webkit.org/show_bug.cgi?id=149227

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/NewTabPlus.svg: Updated.
        * UserInterface/Images/gtk/Plus13.svg: Copied from Source/WebInspectorUI/UserInterface/Images/gtk/Plus.svg.
        * UserInterface/Images/gtk/Plus15.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/Plus.svg.

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

        Web Inspector: Simplify filterableData processing
        https://bugs.webkit.org/show_bug.cgi?id=149730

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.get filterableData):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype.get filterableData):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
        * UserInterface/Views/SearchResultTreeElement.js:
        (WebInspector.SearchResultTreeElement.prototype.get filterableData):
        (WebInspector.SearchResultTreeElement):

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

        Web Inspector: Do not immediately create all ProfileNodeTreeElements when showing JavaScript and Events timeline
        https://bugs.webkit.org/show_bug.cgi?id=149726

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.shouldFilterPopulate):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
        We were populating during filtering if there were any custom filters.
        However the TimelineSidebarPanel has custom filters (based on time and type)
        but those don't need to trigger population. Delay population until it
        would actually be needed (like a text search).

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.shouldFilterPopulate):
        Do not populate on filter via this custom filters.

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

        Web Inspector: REGRESSION (r189567): Toolbar collapses when inspector at minimum height with console open
        https://bugs.webkit.org/show_bug.cgi?id=149725

        Reviewed by Timothy Hatcher.

        CSS Flexible Box Layout Module Level 1 introduces a new `auto` initial value for the min-{width|height}
        of flex box items, breaking some areas of the inspector UI. This is fixed by setting a min-height of
        zero for the #main <div>.

        * UserInterface/Views/Main.css:
        (#main):

2015-10-01  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Clip string previews
        https://bugs.webkit.org/show_bug.cgi?id=149708

        Only show first 140 characters in strings previews.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Utilities.js:
        (String.prototype.truncate): Added.
        A smart trancate function that doesn't split words.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._shouldConsiderObjectLossless):
        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):

2015-09-30  João Oliveira  <hello@jxs.pt>

        Web Inspector: Adjust font size of Developer Tools using Command,+ or Command,-
        https://bugs.webkit.org/show_bug.cgi?id=149590

        Reviewed by Joseph Pecoraro.

        Patch by João Oliveira and Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded): Add global keyboard shortcuts for zoom in and zoom out.

2015-10-01  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add GTK+ icons for the numerical input and slider based Visual editors for CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147847

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/VisualStylePropertyLinked.svg: Added.
        * UserInterface/Images/gtk/VisualStylePropertyUnlinked.svg: Added.

2015-10-01  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add GTK+ icons for the different types of non-numerical Visual editors for CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147846

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/AUTHORS: Updated.
        * UserInterface/Images/gtk/ClearBoth.svg: Added.
        * UserInterface/Images/gtk/ClearLeft.svg: Added.
        * UserInterface/Images/gtk/ClearRight.svg: Added.
        * UserInterface/Images/gtk/CubicBezier.svg: Updated.
        * UserInterface/Images/gtk/FloatLeft.svg: Added.
        * UserInterface/Images/gtk/FloatRight.svg: Added.
        * UserInterface/Images/gtk/FontStyleItalic.svg: Added.
        * UserInterface/Images/gtk/FontStyleNormal.svg: Added.
        * UserInterface/Images/gtk/FontVariantSmallCaps.svg: Added.
        * UserInterface/Images/gtk/TextAlignCenter.svg: Added.
        * UserInterface/Images/gtk/TextAlignJustify.svg: Added.
        * UserInterface/Images/gtk/TextAlignLeft.svg: Added.
        * UserInterface/Images/gtk/TextAlignRight.svg: Added.
        * UserInterface/Images/gtk/TextDecorationLineThrough.svg: Added.
        * UserInterface/Images/gtk/TextDecorationOverline.svg: Added.
        * UserInterface/Images/gtk/TextDecorationUnderline.svg: Added.
        * UserInterface/Images/gtk/TextTransformCapitalize.svg: Added.
        * UserInterface/Images/gtk/TextTransformLowercase.svg: Added.
        * UserInterface/Images/gtk/TextTransformUppercase.svg: Added.
        * UserInterface/Images/gtk/VisualStyleNone.svg: Added.

2015-09-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce `delete` in Timeline related classes
        https://bugs.webkit.org/show_bug.cgi?id=149686

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.capturingStopped):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
        (WebInspector.TimelineDataGrid.prototype._sort):
        (WebInspector.TimelineDataGrid.prototype._updatePopoverForSelectedNode):
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype.updateLayout):
        (WebInspector.TimelineOverview.prototype._handleScrollEvent):
        * UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):

        * UserInterface/Views/ProbeSetDataGrid.js:
        (WebInspector.ProbeSetDataGrid):
        (WebInspector.ProbeSetDataGrid.prototype._teardownData):
        Remove an unused member variable as well.

2015-09-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Thousands of timers fire after switching to JavaScript and Events timeline
        https://bugs.webkit.org/show_bug.cgi?id=149682

        Reviewed by Timothy Hatcher.

        Setting the status element of a GeneralTreeElement was triggering a
        TreeOutline.onchange event. For TreeOutlines with lots of tree elements
        (JavaScript & Events with profile nodes) this could result in thousands
        of onchange events that causes lots of unnecessary work and blocks
        future timers (like scroll synchronization) from firing.

        This change eliminates TreeOutline change events for tree element
        changes that are not interesting.

        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.set status): Deleted.
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeElement.prototype.set tooltip): Deleted.

2015-09-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce `delete` in TreeElements and DataGridNodes
        https://bugs.webkit.org/show_bug.cgi?id=149680

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement):
        (WebInspector.BreakpointTreeElement.prototype._removeProbeSet):
        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._editingCommitted.moveToNextCell):
        (WebInspector.DataGrid.prototype._editingCommitted):
        (WebInspector.DataGrid.prototype._editingCancelled):
        (WebInspector.DataGrid.prototype.removeColumn):
        (WebInspector.DataGridNode.prototype.refreshIfNeeded):
        (WebInspector.DataGridNode.prototype.refresh):
        (WebInspector.DataGridNode.prototype.expand):
        (WebInspector.DataGridNode.prototype.restorePosition):
        (WebInspector.DataGridNode):
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.ondetach):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.refresh):
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeElement.prototype._fireDidChange):
        (WebInspector.TreeElement.prototype.expand):

2015-09-30  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add GTK+ icon for the Bezier curve visual editor
        https://bugs.webkit.org/show_bug.cgi?id=147681

        Reviewed by Joseph Pecoraro.

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

2015-09-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console completion suggestions should include properties on Object (hasOwnProperty, toString, etc)
        https://bugs.webkit.org/show_bug.cgi?id=149649

        Reviewed by Darin Adler.

        * UserInterface/Base/Utilities.js:
        (value):
        Since keySets in this instance are often used as hash maps with the
        `in` operator, create a blank object that won't have Object.prototype
        functions that would be seen by `in`.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames.compare):
        Sort __defineGetter__ and __lookupGetter__ and friends last, since they
        are rarely used properties.

2015-09-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Missing completions for Symbol objects, console.error warning
        https://bugs.webkit.org/show_bug.cgi?id=149641

        Reviewed by Darin Adler.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.getCompletions):
        (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
        Include completions for symbol types.

2015-09-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Hitting ESC while editing element tag name leaves element in bad state
        https://bugs.webkit.org/show_bug.cgi?id=149506

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._startEditingTagName.editingCancelled):
        (WebInspector.DOMTreeElement.prototype._startEditingTagName):
        When cancelling editing of a tag name, revert any changes we had
        been making to the closing tag name.

2015-09-28  João Oliveira  <hello@jxs.pt>

        Web Inspector: search shortcut in split console moves focus to search box, but doesn't show caret
        https://bugs.webkit.org/show_bug.cgi?id=149223

        Reviewed by Timothy Hatcher.

        When pressing console find shortcut (CMD+F) SearchBar now checks if there's text on _searchInput
        if so text is selected, if the textbox is empty, textbox gains focus.

        * UserInterface/Views/SearchBar.js:
        (WebInspector.SearchBar.prototype.focus):

2015-09-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reloading the page causes the inspector tab to switch back to "Resources" tab
        https://bugs.webkit.org/show_bug.cgi?id=148732

        Reviewed by Darin Adler.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
        Suppress selection of sibiling tree elements when removing extra folders.

2015-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        Ran sort-Xcode-project-file.

        * WebInspectorUI.xcodeproj/project.pbxproj:

2015-09-23  Saam barati  <sbarati@apple.com>

        Fix broken inspector tests.

        Reviewed by Joseph Pecoraro and Brian Burg.

        We can't redeclare a "let" variable and "var" variable using the same
        identifier at the top-level of a function.

        * UserInterface/Test/InspectorProtocol.js:
        (InspectorProtocol.sendCommand):
        (InspectorProtocol.addEventListener):
        (InspectorProtocol.dispatchMessageFromBackend):

2015-09-23  Saam barati  <sbarati@apple.com>

        Web Inspector: Don't use bind() when creating internal AST, instead, pass in "this" parameter to map()
        https://bugs.webkit.org/show_bug.cgi?id=149483

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):

2015-09-23  Saam barati  <sbarati@apple.com>

        Web Inspector: Type bubbles missing for computed methods and methods on object literals
        https://bugs.webkit.org/show_bug.cgi?id=148562

        Reviewed by Joseph Pecoraro.

        This patch makes sure that computed methods are working
        for both classes and object literals. Also, methods now
        work on object literals. This patch also cleans up the
        "isGetterOrSetter" and "getterOrSetterRange" fields.
        Basically, we used this as a way to ask the type profiler
        for the return types of a function. Now, we just have
        a field called "typeProfilingReturnDivot" that is set
        on all functions so we don't need to conditionally ask
        if it's a getter or setter.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeToken):
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.functionReturnDivot):
        (WebInspector.ScriptSyntaxTree.prototype._recurseArray):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):

2015-09-22  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: The right sidebar always opens up on breakpoint
        https://bugs.webkit.org/show_bug.cgi?id=149261

        Reviewed by Timothy Hatcher.

        Whenever the debugger was paused, the sidebar was being forced to open.
        This has been removed in favor of letting the user decide.

        * UserInterface/Base/Main.js:
        (WebInspector._debuggerDidPause):

2015-09-22  Saam barati  <sbarati@apple.com>

        Web Inspector: [ES6] Improve Type Profiler Support for Arrow Functions
        https://bugs.webkit.org/show_bug.cgi?id=143171

        Reviewed by Joseph Pecoraro.

        Esprima and JSC both support arrow functions. We just
        need to support it in our AST and do the right things
        to include support in the type profiler bits.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeToken):
        (WebInspector.TypeTokenAnnotator.prototype._translateToOffsetAfterFunctionParameterList.isLineTerminator):
        (WebInspector.TypeTokenAnnotator.prototype._translateToOffsetAfterFunctionParameterList):
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement.removeFunctionsFilter):
        (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
        (WebInspector.ScriptSyntaxTree.functionReturnDivot):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):

2015-09-22  Saam barati  <sbarati@apple.com>

        Web Inspector: update Esprima to latest version
        https://bugs.webkit.org/show_bug.cgi?id=148960

        Reviewed by Joseph Pecoraro.

        Esprima version 2.6 further supports ES6. We're
        updating to it so we can support more ES6 features
        in our script syntax tree.

        * UserInterface/External/Esprima/LICENSE:
        * UserInterface/External/Esprima/esprima.js:
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):

2015-09-21  Matt Baker  <mattbaker@apple.com>

        Web Inspector: requestAnimationFrame continues to be called after stopping the timeline recording
        https://bugs.webkit.org/show_bug.cgi?id=149390

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._update):
        Stop calling requestAnimationFrame if this._updating is false and recording end time is NaN.

2015-09-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Simplify some functional callbacks
        https://bugs.webkit.org/show_bug.cgi?id=149333

        Reviewed by Brian Burg.

        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager.prototype.messageWasAdded):
        * UserInterface/Models/Color.js:
        (WebInspector.Color):
        * UserInterface/Models/Geometry.js:
        (WebInspector.CubicBezier.fromCoordinates):
        * UserInterface/Models/ObjectPreview.js:
        (WebInspector.ObjectPreview.fromPayload):
        * UserInterface/Models/TypeDescription.js:
        (WebInspector.TypeDescription.fromPayload):
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.getCollectionEntries):
        (WebInspector.RemoteObject.prototype.getCollectionEntries.): Deleted.
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.get markers):
        (WebInspector.TextEditor.prototype.markersAtPosition):

2015-09-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused canClearBrowserCookies / canClearBrowserCache protocol methods
        https://bugs.webkit.org/show_bug.cgi?id=149307

        Reviewed by Brian Burg.

        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        Retroactively remove the protocol methods as they were unused
        in these earlier versions as well.

2015-09-17  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION: Web Inspector: Double clicking on an attribute second time doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=149259

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeElement.js:
        Be sure to clear the editing state when committed, even if the value did not change.

2015-09-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make Find / Save keyboard shortcuts work better globally
        https://bugs.webkit.org/show_bug.cgi?id=149198

        Reviewed by Brian Burg.

        Previously find/save keyboard shortcuts required the user have the
        ContentView in the ContentBrowser focused. That means nothing would
        happen if you clicked / focused in the Sidebars. This change considers
        the keyboard shortcuts globally, like Copy.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Add global find and save keyboard shortcuts.

        (WebInspector._focusChanged):
        It is often useful to have the currentFocusedElement know if it is
        in a TextEditor or other CodeMirror editor. When editable the <textarea>
        is selected and not updating focused element. 

        (WebInspector._focusedContentBrowser):
        (WebInspector._focusedContentView):
        Provide helpers for getting a good approximation of the current focused
        or visible content view that users would expect to be interacting with.
        Since the focus event may not fire when clicking around to elements
        like the <body>. Rather than make it explicitly focusable, check the
        document.activeElement, and if it is body aim for the main content
        browser instead of the currentFocusedElement which may be stale.
        Likewise, if the QuickConsole is focused and the split console is
        showing, treat it like the split browser is focused.

        (WebInspector._focusedOrVisibleContentBrowser):
        (WebInspector._focusedOrVisibleContentView):
        If nothing is focused, default to the main content browser.

        (WebInspector._find):
        Pass on to the ContentView which typically handles Find
        by showing its find banner.

        (WebInspector._save):
        (WebInspector._saveAs):
        Check and save the current ContentView if supported.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.get supportsSearch):
        (WebInspector.LogContentView.prototype.handleFindEvent):
        Add custom find handling for LogContentView from the routed through the
        BrowserController instead of special event handlers in the controller.

        (WebInspector.LogContentView.prototype.get supportsSave):
        (WebInspector.LogContentView.prototype.save): Deleted.
        (WebInspector.LogContentView.prototype.saveAs): Deleted.
        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController): Deleted.
        (WebInspector.JavaScriptLogViewController.prototype._handleFindShortcut): Deleted.
        (WebInspector.JavaScriptLogViewController.prototype._save): Deleted.
        (WebInspector.JavaScriptLogViewController.prototype._saveAs): Deleted.
        Special save handling is no longer needed in the log view controller.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype.handleFindEvent):
        (WebInspector.ContentBrowser): Deleted.
        (WebInspector.ContentBrowser.prototype._save): Deleted.
        (WebInspector.ContentBrowser.prototype._saveAs): Deleted.
        (WebInspector.ContentBrowser.prototype._showFindBanner): Deleted.
        Save functionality moved globally, find functionality moved to a
        public method called like copy event handling.

2015-09-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inactive window may cause many layers to be created due to Dashboard opacity
        https://bugs.webkit.org/show_bug.cgi?id=149274

        Reviewed by Brian Burg.

        The dashboard container gets an opacity when the window is inactive. Combined
        with the animating debugger continue button this caused a cascade of slightly
        overlapping content causing a cascade of a lot of small layers. The simple
        approach taken here is to stop the slight pulse animation when the window
        is inactive.

        * UserInterface/Views/DebuggerDashboardView.css:
        (body.window-inactive .dashboard.debugger .navigation-bar .item.button > .glyph):

2015-09-17  Devin Rousso  <dcrousso+webkit@gmail.com>

        REGRESSION(r188427): Web Inspector: Extra whitespace left behind in styles sidebar after clicking in and out
        https://bugs.webkit.org/show_bug.cgi?id=149197

        Reviewed by Timothy Hatcher.

        In r188427, logic was added to preserve the leading whitespace of styles in a CSS file.
        An unfortunate side effect of this was that extra newlines in between CSS properties
        were treated as valid and left where they were.  This is undesired behaviour and often
        clutters the styles sidebar.  These changes remove the extra newlines.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._formattedContent):

2015-09-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce Annotation Update Frequency
        https://bugs.webkit.org/show_bug.cgi?id=149250

        Reviewed by Saam Barati.

        * UserInterface/Controllers/BasicBlockAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype.insertAnnotations):
        Set a lower bound of 500ms on update frequency for both annotators.

2015-09-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix common typo "supress" => "suppress"
        https://bugs.webkit.org/show_bug.cgi?id=149199

        Reviewed by Gyuyoung Kim.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGridNode.prototype.select):
        (WebInspector.DataGridNode.prototype.deselect):
        * UserInterface/Views/SearchBar.js:
        (WebInspector.SearchBar):

2015-09-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Turn off line wrapping in resource text editors
        https://bugs.webkit.org/show_bug.cgi?id=149121

        Reviewed by Darin Adler.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):

2015-09-15  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Picking unchanged for font-size does not reset back to the unchanged value
        https://bugs.webkit.org/show_bug.cgi?id=148351

        Reviewed by Brian Burg.

        Visual number editors now save any new values in the special placeholder element
        to display it whenever the "Unchanged" option is selected by the user.

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        (WebInspector.VisualStyleNumberInputBox.prototype.set units):
        (WebInspector.VisualStyleNumberInputBox.prototype._setNumberInputIsEditable):
        (WebInspector.VisualStyleNumberInputBox.prototype._keywordChanged):
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown.adjustValue):
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown):

2015-09-15  Brian Burg  <bburg@apple.com>

        Web Inspector: command-click in NewTabContentView should open new tab without switching to it
        https://bugs.webkit.org/show_bug.cgi?id=149173

        Reviewed by Joseph Pecoraro.

        To allow a user to quickly restore tabs, it should be possible to command-click
        all the tabs that are desired without going back through the [+] tab button.

        * UserInterface/Base/Main.js:
        (WebInspector.createNewTabWithType): Renamed.

            Use an options object and split creating the tab from deleting the
            replaced tab and showing the new tab. Add better error checking.

        (WebInspector.createNewTab): Deleted.
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):
        (WebInspector.NewTabContentView.prototype._createNewTabWithType): Renamed.

            If the meta key is pressed, don't switch to the new tab or remove this view
            unless there are no more tabs that can be created beyond the current one.

        (WebInspector.NewTabContentView.prototype._allowableTabTypes): Added.
        (WebInspector.NewTabContentView.prototype._createNewTab): Deleted.

2015-09-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Watch Expressions uncaught exceptions on page reload
        https://bugs.webkit.org/show_bug.cgi?id=149150

        Reviewed by Brian Burg.

        Instead of waiting 50ms to Resume, when the page navigates
        Resume immediately. This ensures nobody is using a stale
        activeCallFrame after the navigation.

        Also clean up the manager a bit by removing some deletes.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.restoreBreakpointsSoon):
        (WebInspector.DebuggerManager.prototype.reset):
        (WebInspector.DebuggerManager.prototype.debuggerDidPause):
        (WebInspector.DebuggerManager.prototype.debuggerDidResume):
        (WebInspector.DebuggerManager.prototype._mainResourceDidChange):
        (WebInspector.DebuggerManager.prototype._didResumeInternal):
        (WebInspector.DebuggerManager.prototype._associateBreakpointsWithSourceCode):
        (WebInspector.DebuggerManager.prototype.debuggerDidResume.delayedWork): Deleted.

2015-09-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Closing the final inspector tab should be allowed
        https://bugs.webkit.org/show_bug.cgi?id=149130

        Reviewed by Brian Burg.

        Previously we did not allow closing the last inspector tab. Now, we
        will allow closing all inspector tabs, and when the last is closed,
        present an unclosable New Tab tab, which would then be used to create
        a new tab.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        If we have no tabs to restore, show the New Tab tab.

        (WebInspector._openDefaultTab):
        When the last tab is closed, the tab bar requests we open a default tab.
        Open the New Tab tab.

        (WebInspector.TabBar.prototype._handleClick):
        Disallow closing the single default tab.

        (WebInspector._newTabItemClicked):
        (WebInspector.showNewTabTab):
        Share logic for showing the New Tab tab.

        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):
        Mark the new tab's tab bar item as the "default" tab bar item. It gets
        special behavior when it is the single normal tab (cannot be closed).

        * UserInterface/Views/TabBar.css:
        (body:not(.window-inactive) .tab-bar > .item:hover > .close):
        (body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close):
        (.tab-bar.single-tab > .item.default-tab > .close):
        (body:not(.window-inactive) .tab-bar:not(.single-tab) > .item:not(.hide-close-button):hover > .close): Deleted.
        (.tab-bar > .item.hide-close-button > .close): Deleted.
        Update styles to only disable the close button on the
        "default-tab" when it is the "single-tab" open. Otherwise
        always allow closing tabs.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype.removeTabBarItem):
        (WebInspector.TabBar.prototype.hasNormalTab):
        (WebInspector.TabBar.prototype._openDefaultTab):
        When removing the last normal tab, send an event to open
        the default tab.

        * UserInterface/Views/TabBarItem.js:
        (WebInspector.TabBarItem.prototype.get default):
        (WebInspector.TabBarItem.prototype.get isDefaultTab):
        (WebInspector.TabBarItem.prototype.set isDefaultTab):
        (WebInspector.TabBarItem.prototype.get hideCloseButton): Deleted.
        (WebInspector.TabBarItem.prototype.set hideCloseButton): Deleted.
        Switch to marking a tab bar item as the default tab. This tab
        will be allowed when it is the single remaining tab. Currently
        the default tab is always the "New Tab" tab.

2015-09-15  Brian Burg  <bburg@apple.com>

        Web Inspector: new tab content view should disallow split console
        https://bugs.webkit.org/show_bug.cgi?id=149164

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView.prototype.get supportsSplitContentBrowser):

2015-09-14  Brian Burg  <bburg@apple.com>

        Web Inspector: tab bar stutters when moving mouse after closing tab
        https://bugs.webkit.org/show_bug.cgi?id=149138

        Reviewed by Joseph Pecoraro.

        The tab bar lacked the 'static-layout' class between when the Promise microtask
        ran and the beginning of the requestAnimationFrame. This caused a flash of
        tabs that are way too wide.

        Re-add the static-layout class immediately after measuring the 'after' tab size.
        This code should probably just manually compute tab sizes since flexbox
        layout is quite slow and our measurement code here forces layout several times.

        * UserInterface/Views/TabBar.js:

2015-09-14  Brian Burg  <bburg@apple.com>

        Web Inspector: backend command promises are not rejected when a protocol error occurs
        https://bugs.webkit.org/show_bug.cgi?id=141403

        Reviewed by Joseph Pecoraro.

        Fix a few corner cases for how InspectorBackend delivers command failures.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Command.prototype.deliverFailure): Added.
        (InspectorBackend.Command.prototype._invokeWithArguments):

            If argument-checking fails, return a rejected promise or invoke the supplied callback
            on a zero-delay setTimeout to ensure that the reply is asynchronous.

2015-09-14  Brian Burg  <bburg@apple.com>

        Web Inspector: middle-clicking a tab in the tab bar should close it
        https://bugs.webkit.org/show_bug.cgi?id=149135

        Reviewed by Joseph Pecoraro.

        This matches the behavior of the tab bar in Safari and other browsers.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype._handleMouseDown):
        (WebInspector.TabBar.prototype._handleClick):

2015-09-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Border under the styles filter field is clipped
        https://bugs.webkit.org/show_bug.cgi?id=149115

        Reviewed by Darin Adler.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content + .options-container > .filter-bar):

2015-09-11  Nan Wang  <n_wang@apple.com>

        AX: ARIA 1.1 @aria-current
        https://bugs.webkit.org/show_bug.cgi?id=146012

        Reviewed by Chris Fleizach.

        Added support for ARIA 1.1 aria-current.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/DOMNode.js:
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

2015-09-10  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Styles sidebar says Media: all when it should say Media: screen
        https://bugs.webkit.org/show_bug.cgi?id=148436

        Reviewed by Timothy Hatcher.

        Removed filter that prevented "Media: screen" from being displayed.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.filteredMediaList): Deleted.

2015-09-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Prefer calling ContentViewContainer.updateLayout directly
        https://bugs.webkit.org/show_bug.cgi?id=149041

        Reviewed by Timothy Hatcher.

        Cleaned up two places where a parent view duplicated logic encapsulated by ContentViewContainer.

        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView.prototype.updateLayout):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.updateLayout):

2015-09-08  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r189189): Missing breakpoint context menu for debugger sidebar tree elements
        https://bugs.webkit.org/show_bug.cgi?id=148651

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Create BreakpointPopoverController singleton, expose as public property of global WebInspector object.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.oncontextmenu):
        Use BreakpointPopoverController singleton.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        Don't create BreakpointPopoverController instance.
        (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
        Use BreakpointPopoverController singleton.

2015-09-08  Joseph Pecoraro  <pecoraro@apple.com>

        Fix inspector/codemirror tests.

        Rubber-stamped by Brian Burg.

        * UserInterface/Test.html:
        Reorder includes to be more like Main.html. This ensures that CodeMirror
        resources are loaded before Inspector sources use it, like CodeMirrorAdditions
        which gets merged into TestCombined.js.

2015-09-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Move PrettyPrinting tests into LayoutTests
        https://bugs.webkit.org/show_bug.cgi?id=148698

        Reviewed by Timothy Hatcher.

        * Tools/PrettyPrinting/index.html:
        Modify the relative path to the tests which are now in LayoutTests.

        * UserInterface/Test.html:
        Load CodeMirror and related resources for Formatting.

2015-09-06  Andy Estes  <aestes@apple.com>

        WebKit.xcworkspace should be be able to build iOS platforms
        https://bugs.webkit.org/show_bug.cgi?id=148881

        Reviewed by Daniel Bates.

        Since we don't want to create platform-specific schemes, all projects in the workspace's schemes need to build
        for all supported platforms.

        * Configurations/Base.xcconfig: Included iphoneos and iphonesimulator in SUPPORTED_PLATFORMS.
        * Configurations/WebInspectorUIFramework.xcconfig: Skipped installing on iOS.

2015-09-04  Brian Burg  <bburg@apple.com>

        Web Inspector: combine Test.html resources to make tests run faster
        https://bugs.webkit.org/show_bug.cgi?id=148726

        Reviewed by Timothy Hatcher.

        In an attempt to make inspector tests run faster, always combine resources
        on the Test.html page. This cuts down from 110+ resource loads to 5 loads.

        To avoid name clashes, add the 'Combined' suffix to files that would clash
        with uncombined Test resources, and add the 'Test' prefix when combining
        or minifying files that would clash with production minification. So, it
        would be possible for Main.html and Test.html to have different minified
        versions of CodeMirror or other external libraries if they use different
        subsets.

        Combining is unlikely to make debugging tests more difficult, since almost
        all test code is marshalled and eval'd into existence anyway.

        * Configurations/WebInspectorUIFramework.xcconfig:
        * Scripts/combine-resources.pl: Drive-by spelling.
        (concatenateFiles):
        (concatinateFiles): Deleted.
        * Scripts/copy-user-interface-resources-dryrun.rb:
        * Scripts/copy-user-interface-resources.pl:

            Drive-by spelling. Add a new code path for combining Test resources, which
            doesn't require minification or handling CSS, images, or most externals.

        * WebInspectorUI.vcxproj/build-webinspectorui.pl:

            Always combine Test.html, but also ditto everything into place for
            engineering builds.

2015-09-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Test Runtime.saveResult and $n values
        https://bugs.webkit.org/show_bug.cgi?id=148837

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass):
        Initialize the dump logging function different if we are in tests or not.
        When in tests, using console.log as well as dumping system activity to
        the system console results in an infinite loop of logging!

        (InspectorBackendClass.prototype.dispatch):
        (InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
        Use the logging function we figured out earlier.

2015-09-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clean up and modernize DOMTreeManager
        https://bugs.webkit.org/show_bug.cgi?id=148821

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.requestDocument.onDocumentAvailable):
        (WebInspector.DOMTreeManager.prototype.requestDocument):
        (WebInspector.DOMTreeManager.prototype.pushNodeByPathToFrontend):
        (WebInspector.DOMTreeManager.prototype._wrapClientCallback):
        (WebInspector.DOMTreeManager.prototype._attributeModified):
        (WebInspector.DOMTreeManager.prototype._attributeRemoved):
        (WebInspector.DOMTreeManager.prototype._inlineStyleInvalidated):
        (WebInspector.DOMTreeManager.prototype._loadNodeAttributes):
        (WebInspector.DOMTreeManager.prototype.cancelSearch):
        (WebInspector.DOMTreeManager.prototype.querySelector):
        (WebInspector.DOMTreeManager.prototype.querySelectorAll):
        (WebInspector.DOMTreeManager.prototype.highlightDOMNode):
        (WebInspector.DOMTreeManager.prototype._buildHighlightConfig):
        Cleanup and modernize where appropriate.

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.performSearch):
        Callback is now required.

2015-09-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Render Frames "Other" task filter checkbox misaligned with text
        https://bugs.webkit.org/show_bug.cgi?id=148788

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ChartDetailsSectionRow.css:
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > .color-key):
        Adjust "fake" checkbox margin to align with label text.

2015-09-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Expand Console domain test coverage
        https://bugs.webkit.org/show_bug.cgi?id=148740

        Reviewed by Brian Burg.

        * UserInterface/Protocol/RemoteObject.js:
        Add a few helpers for checking the RemoteObject type.

2015-09-02  Commit Queue  <commit-queue@webkit.org>

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

        These tests crash with assertions (Requested by ap on
        #webkit).

        Reverted changeset:

        "Web Inspector: Move PrettyPrinting tests into LayoutTests"
        https://bugs.webkit.org/show_bug.cgi?id=148698
        http://trac.webkit.org/changeset/189241

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

        Web Inspector: Move PrettyPrinting tests into LayoutTests
        https://bugs.webkit.org/show_bug.cgi?id=148698

        Reviewed by Timothy Hatcher.

        * Tools/PrettyPrinting/index.html:
        Modify the relative path to the tests which are now in LayoutTests.

        * UserInterface/Test.html:
        Load CodeMirror and related resources for Formatting.

2015-09-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r187873): Location column icon is missing in timeline data grids
        https://bugs.webkit.org/show_bug.cgi?id=148691

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.createCellContent):
        Added "icon" class name. Was using removed class variable (class="undefined").

2015-09-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Show layout/paint pixel area in the Rendering Frames tree outline
        https://bugs.webkit.org/show_bug.cgi?id=148674

        Reviewed by Brian Burg.

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

        * UserInterface/Views/RenderingFrameTimelineView.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.rendering-frame .item:not(.paint-record):not(.layout-record) .subtitle):
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.rendering-frame .item .subtitle): Deleted.
        Show subtitles for layout and paint records only. We still want to hide script record subtitles,
        since that information is already in the 'Location' column.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
        Add tree element subtitle for LayoutTimelineRecords that specify width and height.

2015-09-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Reorder columns in the Rendering Frames data grid by importance
        https://bugs.webkit.org/show_bug.cgi?id=148672

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        Updated column order, rearranged the column object setup code to match.

2015-09-01  Brian Burg  <bburg@apple.com>

        Web Inspector: rewrite inspector/console/command-line-api.html to use AsyncTestSuite
        https://bugs.webkit.org/show_bug.cgi?id=148637

        Reviewed by Darin Adler.

        * UserInterface/Base/Object.js:
        (WebInspector.Object.singleFireEventListener):
        (WebInspector.Object.singleFireEventListener.let.wrappedCallback): Arrow.

2015-09-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: New rule button in the style sidebar is blurry and too dark
        https://bugs.webkit.org/show_bug.cgi?id=148108

        Reviewed by Timothy Hatcher.

        Added support for Plus and Minus icons on non-retina screens.
        Also removed some CSS rules that no longer apply to anything.

        * UserInterface/Images/Minus.svg:
        * UserInterface/Images/NewTabPlus.svg:
        * UserInterface/Images/Plus.svg: Removed.
        * UserInterface/Images/Plus13.svg: Copied from Source/WebInspectorUI/UserInterface/Images/Plus.svg.
        * UserInterface/Images/Plus15.svg: Copied from Source/WebInspectorUI/UserInterface/Images/Plus.svg.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content + .options-container):
        (.sidebar > .panel.details.css-style > .content + .options-container > .new-rule):

        * UserInterface/Views/ProbeDetailsSidebarPanel.css:
        (.details-section.probe-set .options > .probe-add):

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules .new-rule): Deleted.
        (.sidebar > .panel.details.css-style .rules > *:first-child:matches(.new-rule)): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .new-rule): Deleted.
        (.sidebar > .panel.details.css-style > .content:not(.filter-in-progress) > .rules > .new-rule + .style-declaration-section): Deleted.
        (.sidebar > .panel.details.css-style > .content:not(.filter-in-progress) > .rules > .new-rule + .label): Deleted.
        (.sidebar > .panel.details.css-style .rules .new-rule img): Deleted.
        (.sidebar > .panel.details.css-style .rules .new-rule:hover): Deleted.
        (.sidebar > .panel.details.css-style .rules .new-rule:active): Deleted.
        (@media (-webkit-min-device-pixel-ratio: 2)): Deleted.
        Removed CSS rules that no longer apply.  The new rule button was moved to the Styles sidebar.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
        (.details-section.watch-expressions .options > .watch-expression-add):

        * UserInterface/Views/TabBar.css:
        (.tab-bar > .item.new-tab-button > .icon):

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > div):

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):

        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection):

2015-09-01  Brian Burg  <bburg@apple.com>

        Web Inspector: add TestSuite hooks for per-testcase setup and teardown actions
        https://bugs.webkit.org/show_bug.cgi?id=148641

        Reviewed by Timothy Hatcher.

        It should be possible to run setup and teardown actions for each test case.
        The use case here is to add listeners, set up testcase-specific state, etc.
        To match how test functions work in each suite, the sync and async implementations
        take functions with no arguments and(resolve, reject), respectively.

        * UserInterface/Test/TestSuite.js:
        (TestSuite.prototype.addTestCase):
        (TestSuite.messageFromThrownObject):
        (TestSuite):
        (AsyncTestSuite.prototype.runTestCases): Stick the extra functions in the chain.
        (AsyncTestSuite):
        (SyncTestSuite.prototype.runTestCases):
        (SyncTestSuite):

2015-09-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Visual style editor shouldn't allow alpha characters in numeric input fields
        https://bugs.webkit.org/show_bug.cgi?id=148580

        Reviewed by Brian Burg.

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox):
        Added input element "changed" handler, renamed "keyup" handler to match "keydown" handler.
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputChanged):
        Validate input in response to changed event.

2015-08-31  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Command-Enter for selected JS in Debugger/Sources shouldn't change the focus
        https://bugs.webkit.org/show_bug.cgi?id=148613

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleTabContentView.js:
        (WebInspector.ConsoleTabContentView.prototype.shown):
        Always focus on the console prompt when the console tab get selected.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.shown): Deleted.

2015-08-31  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Debugger Popovers should work for object literal shorthand variables
        https://bugs.webkit.org/show_bug.cgi?id=148603

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
        Allow debugger popovers for object property shorthands, because they
        are actually variables that have values. Previously we ignored property
        name literals, because they were just property names until ES6.

        * UserInterface/Views/CodeMirrorAdditions.js:
        Add a helper for walking through token types from a start position. It may be useful elsewhere.

2015-08-31  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Move the Popover code out of the Breakpoint model object
        https://bugs.webkit.org/show_bug.cgi?id=127328

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/BreakpointPopoverController.js: Added.
        (WebInspector.BreakpointPopoverController):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.editBreakpoint):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.removeBreakpoint):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.toggleBreakpoint):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.toggleAutoContinue):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems.revealOriginalSourceCodeLocation):
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
        (WebInspector.BreakpointPopoverController.prototype.showEditBreakpointPopover):
        (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
        (WebInspector.BreakpointPopoverController.prototype._popoverToggleEnabledCheckboxChanged):
        (WebInspector.BreakpointPopoverController.prototype._popoverConditionInputChanged):
        (WebInspector.BreakpointPopoverController.prototype._popoverToggleAutoContinueCheckboxChanged):
        (WebInspector.BreakpointPopoverController.prototype._popoverConditionInputKeyDown):
        (WebInspector.BreakpointPopoverController.prototype._popoverActionsCreateAddActionButton):
        (WebInspector.BreakpointPopoverController.prototype._popoverActionsAddActionButtonClicked):
        (WebInspector.BreakpointPopoverController.prototype._popoverActionsInsertBreakpointActionView):
        (WebInspector.BreakpointPopoverController.prototype.breakpointActionViewAppendActionView):
        (WebInspector.BreakpointPopoverController.prototype.breakpointActionViewRemoveActionView):
        (WebInspector.BreakpointPopoverController.prototype.breakpointActionViewResized):
        (WebInspector.BreakpointPopoverController.prototype.willDismissPopover):
        (WebInspector.BreakpointPopoverController.prototype.didDismissPopover):
        Added controller class to encapsulate view logic previously located in WebInspector.Breakpoint.

        * UserInterface/Main.html:
        Added and updated file paths.

        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.editBreakpoint): Deleted.
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.removeBreakpoint): Deleted.
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.toggleBreakpoint): Deleted.
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.toggleAutoContinue): Deleted.
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.revealOriginalSourceCodeLocation): Deleted.
        (WebInspector.Breakpoint.prototype.appendContextMenuItems): Deleted.
        (WebInspector.Breakpoint.prototype._popoverToggleEnabledCheckboxChanged): Deleted.
        (WebInspector.Breakpoint.prototype._popoverConditionInputChanged): Deleted.
        (WebInspector.Breakpoint.prototype._popoverToggleAutoContinueCheckboxChanged): Deleted.
        (WebInspector.Breakpoint.prototype._popoverConditionInputKeyDown): Deleted.
        (WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement): Deleted.
        (WebInspector.Breakpoint.prototype._popoverActionsCreateAddActionButton): Deleted.
        (WebInspector.Breakpoint.prototype._popoverActionsAddActionButtonClicked): Deleted.
        (WebInspector.Breakpoint.prototype._popoverActionsInsertBreakpointActionView): Deleted.
        (WebInspector.Breakpoint.prototype.breakpointActionViewAppendActionView): Deleted.
        (WebInspector.Breakpoint.prototype.breakpointActionViewRemoveActionView): Deleted.
        (WebInspector.Breakpoint.prototype.breakpointActionViewResized): Deleted.
        (WebInspector.Breakpoint.prototype.willDismissPopover): Deleted.
        (WebInspector.Breakpoint.prototype.didDismissPopover): Deleted.
        (WebInspector.Breakpoint.prototype._showEditBreakpointPopover): Deleted.
        Removed view logic.

        * UserInterface/Views/BreakpointPopoverController.css: Renamed from Source/WebInspectorUI/UserInterface/Views/Breakpoint.css.
        (.popover .edit-breakpoint-popover-content):
        (.popover .edit-breakpoint-popover-content.wide):
        (.popover .edit-breakpoint-popover-content > label.toggle):
        (.popover .edit-breakpoint-popover-content > table):
        (.popover .edit-breakpoint-popover-content > table > tr > th):
        (.popover .edit-breakpoint-popover-content > table > tr > td):
        (#edit-breakpoint-popover-condition):
        (#edit-breakpoint-popoover-auto-continue):

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        Creates a BreakpointPopoverController instance. The lifetime of the 'Edit Breakpoint' view is internal to the
        controller, and can't be initiated outside of a context menu item click.

2015-08-31  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frame tasks making up < 1% of the selection don't appear in the pie chart
        https://bugs.webkit.org/show_bug.cgi?id=148549

        Reviewed by Timothy Hatcher.

        Small data points can be invisible or difficult to see in the pie chart. This patch introduces
        a minimum slice size of 1.5% (determined by visual inspection) for chart items.

        Legend items continue to show the original data point values, not the adjusted values used to
        draw the chart slices.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow):
        (WebInspector.ChartDetailsSectionRow.prototype._updateLayout):
        Adjust display values up or down as needed, so no data point is less than the
        minimum and all chart slices still total 100%.

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "animationEnd" event names should be "animationend" (broken dashboard animation after pause)
        https://bugs.webkit.org/show_bug.cgi?id=148604

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight):
        * UserInterface/Views/DashboardContainerView.js:
        (WebInspector.DashboardContainerView.prototype._showDashboardView.animationEnded):
        (WebInspector.DashboardContainerView.prototype._showDashboardView):
        (WebInspector.DashboardContainerView.prototype._hideDashboardView.animationEnded):
        (WebInspector.DashboardContainerView.prototype._hideDashboardView):
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView.prototype._setConsoleItemValue.animationEnded):
        (WebInspector.DefaultDashboardView.prototype._setConsoleItemValue):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype._revealSearchResult):

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Resource.prototype.associateWithScript assertions firing
        https://bugs.webkit.org/show_bug.cgi?id=148601

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.associateWithScript):
        Restore the code that was here before it was converted to asserts.
        It looked as if it was iOS 6 only but it was not.

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve ScriptSyntaxTree a bit
        https://bugs.webkit.org/show_bug.cgi?id=148563

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        Share and fix ClassDeclaration and ClassExpression recursion to visit
        the identifier (node.id). Include the kind with a VariableDeclaration
        ("var", "let", "const").

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Separate creating a style sheet from adding a new rule in the protocol
        https://bugs.webkit.org/show_bug.cgi?id=148502

        Reviewed by Timothy Hatcher.

        The backend allows creating multiple stylesheets. This patch makes
        the frontend have a preferred InspectorStyleSheet per-frame.

        * UserInterface/Base/Object.js:
        (WebInspector.Object.singleFireEventListener):
        Return the wrapped listener so it can be removed if needed.

        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet.prototype.isInspectorStyleSheet):
        Helper to check if the current stylesheet is an inspector created stylesheet.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame):
        (WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame.documentNodeAvailable):
        (WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame.bodyNodeAvailable):
        (WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame.cssRuleAvailable):
        (WebInspector.CSSStyleManager.prototype._inspectorStyleSheetsForFrame):
        Lookup the inspector stylesheet for a particular frame. If one doesn't exist create it.
        For legacy backends, exploit "addRule" to create the inspector stylesheet.

        * UserInterface/Models/DOMNode.js:
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.addEmptyRule.inspectorStyleSheetAvailable):
        (WebInspector.DOMNodeStyles.prototype.addEmptyRule):
        Currently add all new rules to the inspector stylesheet.

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Type Profiler does not understand Functions within Default Argument Expressions
        https://bugs.webkit.org/show_bug.cgi?id=148557

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):
        Add support for abstracting and recursing through the default parameter
        expressions Esprima has on function expressions and declarations.

2015-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Type Profiler does not understand Functions inside Template Strings (ScriptSyntaxTree warnings)
        https://bugs.webkit.org/show_bug.cgi?id=148556

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):
        Add support for abstracting and recursing through the Esprima template nodes.

2015-08-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Standardize on CSSStyleSheet.Type enum and move more protocol enum conversion to the manager
        https://bugs.webkit.org/show_bug.cgi?id=148515

        Reviewed by Brian Burg.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.protocolStyleSheetOriginToEnum):
        (WebInspector.CSSStyleManager.protocolMediaSourceToEnum):
        Protocol enum to frontend enum conversion.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
        (WebInspector.DOMNodeStyles.prototype.refresh):
        (WebInspector.DOMNodeStyles.prototype._parseRulePayload):
        (WebInspector.DOMNodeStyles.prototype._collectStylesInCascadeOrder):
        Use the manager to convert from a protocol payload enum to frontend num for css types.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.get editable):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.appendStyleSection):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
        (WebInspector.VisualStyleSelectorSection.prototype.update.uniqueOrderedRules.set return):
        (WebInspector.VisualStyleSelectorSection.prototype.update.uniqueOrderedRules):
        (WebInspector.VisualStyleSelectorSection.prototype.update):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem):
        Update enum use.

2015-08-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [Regression] [Mavericks]: Undocked Web Inspector toolbar is two different colors and has extra space
        https://bugs.webkit.org/show_bug.cgi?id=148510

        Make body element transparent and remove extra padding above the toolbar only for OS X Mavericks.

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        * UserInterface/Views/Main.css:
        (body:not(.mavericks)):
        (body): Deleted.
        * UserInterface/Views/Toolbar.css:
        (body:not(.mavericks) .toolbar):
        (body.window-inactive:not(.mavericks) .toolbar):
        (body.mac-platform:not(.docked, .mavericks) .toolbar):
        (.toolbar): Deleted.
        (body.window-inactive .toolbar): Deleted.
        (body.mac-platform:not(.docked) .toolbar): Deleted.

2015-08-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception in CSS Completion - TypeError: undefined is not an object (evaluating 'this._values[middleIndex].startsWith')
        https://bugs.webkit.org/show_bug.cgi?id=148508

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions):
        Add a comment explaining that the constructor may be called with
        a list of strings or a list of objects from the protocol. Add
        a fast path for when this is constructed with a list of strings.

2015-08-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames timeline pie chart should use SVG instead of 2D canvas
        https://bugs.webkit.org/show_bug.cgi?id=148457

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ChartDetailsSectionRow.css:
        (.details-section > .content > .group > .row.chart > .chart-content > svg > path.hidden):
        (.details-section > .content > .group > .row.chart > .chart-content > svg > path.chart-segment):
        (.details-section > .content > .group > .row.chart > .chart-content > svg > path.empty-chart):
        New styles for SVG chart elements.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow):
        Calculate radii and create SVG chart elements.
        (WebInspector.ChartDetailsSectionRow.prototype.clearItems):
        Remove chart segment path elements.
        (WebInspector.ChartDetailsSectionRow.prototype._needsLayout):
        (WebInspector.ChartDetailsSectionRow.prototype._updateLayout.createSegmentPathData):
        Helper function that creates path data for a single pie chart segment.
        (WebInspector.ChartDetailsSectionRow.prototype._updateLayout):
        Creates path elements as needed, and updates path data for for non-zero data points.
        (WebInspector.ChartDetailsSectionRow.prototype.set innerLabel): Deleted.
        (WebInspector.ChartDetailsSectionRow.prototype.set innerRadius): Deleted.
        These properties are now set during construction.
        (WebInspector.ChartDetailsSectionRow.prototype.updateLayout): Deleted.
        Renamed to _updateLayout.

        * UserInterface/Views/TimelineSidebarPanel.js:
        Chart size and inner radius passed to chart constructor.

2015-08-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Implement tracking of active stylesheets in the frontend
        https://bugs.webkit.org/show_bug.cgi?id=105828

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet):
        (WebInspector.CSSStyleSheet.prototype.get origin):
        (WebInspector.CSSStyleSheet.prototype.updateInfo):
        Add a new origin attribute that has been sent from the backend for a while.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype.styleSheetAdded):
        (WebInspector.CSSStyleManager.prototype.styleSheetRemoved):
        Handle the new events by managing the new CSSStyleSheets.
        
        (WebInspector.CSSStyleManager):
        (WebInspector.CSSStyleManager.prototype._mainResourceDidChange):
        Reset the legacy fetching flag. Fetching is only needed for legacy backends.

        (WebInspector.CSSStyleManager.prototype._fetchInfoForAllStyleSheets):
        Include the new origin property in the legacy updateInfo path.

        * UserInterface/Protocol/CSSObserver.js:
        (WebInspector.CSSObserver.prototype.styleSheetAdded):
        (WebInspector.CSSObserver.prototype.styleSheetRemoved):
        Forward to the manager.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        Refresh the sidebar when stylesheets are added / removed, as that
        may affect the style of the select element.

2015-08-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Drop iOS 6 Legacy Remote Inspector Support
        https://bugs.webkit.org/show_bug.cgi?id=148456

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector._updateReloadToolbarButton):
        (WebInspector._updateDownloadToolbarButton):
        (WebInspector.canArchiveMainFrame):
        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype._frameURLMapKey):
        (WebInspector.CSSStyleManager.prototype._lookupStyleSheet.styleSheetsFetched):
        (WebInspector.CSSStyleManager._updateResourceContent.fetchedStyleSheetContent):
        (WebInspector.CSSStyleManager.prototype._clearStyleSheetsForResource): Deleted.
        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.highlightSelector):
        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype._setBreakpoint):
        * UserInterface/Controllers/JavaScriptLogViewController.js:
        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager):
        (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
        * UserInterface/Controllers/SourceMapManager.js:
        (WebInspector.SourceMapManager.prototype._loadAndParseSourceMap):
        * UserInterface/Controllers/StorageManager.js:
        (WebInspector.StorageManager):
        (WebInspector.StorageManager.prototype._addDOMStorageIfNeeded):
        (WebInspector.StorageManager.prototype.domStorageWasUpdated): Deleted.
        (WebInspector.StorageManager.prototype._domStorageForIdentifier): Deleted.
        (WebInspector.StorageManager.prototype._extraDomainsActivated): Deleted.
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):
        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions):
        (WebInspector.CSSCompletions.requestCSSCompletions):
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.addCustomCompletions): Deleted.
        * UserInterface/Models/CSSProperty.js:
        (WebInspector.CSSProperty):
        (WebInspector.CSSProperty.prototype.update):
        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.get matchedSelectors): Deleted.
        (WebInspector.CSSRule.prototype.get matchedSelectorText): Deleted.
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.refresh.parseRuleMatchArrayPayload):
        (WebInspector.DOMNodeStyles.prototype.refresh.fetchedMatchedStyles):
        (WebInspector.DOMNodeStyles.prototype.changeRule.changeText):
        (WebInspector.DOMNodeStyles.prototype.changeStyleText):
        (WebInspector.DOMNodeStyles.prototype._parseStylePropertyPayload):
        (WebInspector.DOMNodeStyles.prototype._parseRulePayload):
        (WebInspector.DOMNodeStyles.prototype.changeStyleText.attributeChanged): Deleted.
        (WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent.contentDidChange): Deleted.
        (WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent): Deleted.
        (WebInspector.DOMNodeStyles.prototype._parseSourceRangePayload): Deleted.
        (WebInspector.DOMNodeStyles.prototype._parseSelectorListPayload): Deleted.
        * UserInterface/Models/DOMStorageObject.js:
        * UserInterface/Models/DOMTree.js:
        (WebInspector.DOMTree.prototype.requestRootDOMNode):
        (WebInspector.DOMTree.prototype._requestRootDOMNode):
        * UserInterface/Models/DatabaseObject.js:
        (WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
        (WebInspector.DatabaseObject.prototype.executeSQL):
        (WebInspector.DatabaseObject):
        (WebInspector.DatabaseObject.prototype.executeSQL.callback): Deleted.
        * UserInterface/Models/ExecutionContext.js:
        (WebInspector.ExecutionContext.supported): Deleted.
        * UserInterface/Models/IssueMessage.js:
        (WebInspector.IssueMessage): Deleted.
        * UserInterface/Models/LayoutTimelineRecord.js:
        (WebInspector.LayoutTimelineRecord):
        (WebInspector.LayoutTimelineRecord.prototype.get width):
        (WebInspector.LayoutTimelineRecord.prototype.get height):
        (WebInspector.LayoutTimelineRecord.prototype.get area):
        (WebInspector.LayoutTimelineRecord.prototype.get x): Deleted.
        (WebInspector.LayoutTimelineRecord.prototype.get y): Deleted.
        (WebInspector.LayoutTimelineRecord.prototype.get rect): Deleted.
        * UserInterface/Models/ProfileNode.js:
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.associateWithScript):
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
        * UserInterface/Models/SourceMapResource.js:
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend):
        * UserInterface/Models/TextRange.js:
        (WebInspector.TextRange.prototype.resolveLinesAndColumns.countNewLineCharacters): Deleted.
        (WebInspector.TextRange.prototype.resolveLinesAndColumns): Deleted.
        * UserInterface/Models/TimelineRecording.js:
        * UserInterface/Protocol/ConsoleObserver.js:
        (WebInspector.ConsoleObserver.prototype.messageAdded): Deleted.
        * UserInterface/Protocol/DOMStorageObserver.js:
        (WebInspector.DOMStorageObserver.prototype.addDOMStorage): Deleted.
        (WebInspector.DOMStorageObserver.prototype.updateDOMStorage): Deleted.
        * UserInterface/Protocol/DatabaseObserver.js:
        (WebInspector.DatabaseObserver.prototype.sqlTransactionSucceeded): Deleted.
        (WebInspector.DatabaseObserver.prototype.sqlTransactionFailed): Deleted.
        (WebInspector.DatabaseObserver): Deleted.
        * UserInterface/Protocol/Legacy/6.0/InspectorBackendCommands.js: Removed.
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype._deleteCallback):
        (WebInspector.CookieStorageContentView):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): Deleted.
        * UserInterface/Views/EventListenerSectionGroup.js:
        (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
        (WebInspector.EventListenerSectionGroup):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._showHighlightForRecord):
        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole):
        (WebInspector.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
        (WebInspector.QuickConsole.prototype._frameAdded): Deleted.
        (WebInspector.QuickConsole.prototype._frameRemoved): Deleted.
        (WebInspector.QuickConsole.prototype._frameMainResourceChanged): Deleted.
        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
        (WebInspector.SourceCodeTextEditor.prototype._makeBasicBlockAnnotator):
        * Versions/Inspector-iOS-6.0.json: Removed.
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

2015-08-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Command-Enter should evaluate selected JS in Debugger/Sources
        https://bugs.webkit.org/show_bug.cgi?id=148368

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController):
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
        Evaluate selected text in the console only for JS and HTML resources. HTML resources
        should be allowed because they can have commented out (inside <!-- -->) and
        inline (onclick="") JavaScript.

2015-08-25  Brian Burg  <bburg@apple.com>

        Web Inspector: no need to allocate protocolErrors array for every dispatched backend command
        https://bugs.webkit.org/show_bug.cgi?id=146466

        Reviewed by Joseph Pecoraro.

        * UserInterface/TestStub.html: Fix a typo, this property exists on ProtocolTest.

2015-08-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames legend item checkbox colors are too light
        https://bugs.webkit.org/show_bug.cgi?id=148465

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow.prototype._addCheckboxColorFilter):
        Gamma primitive should use an "exponent" attribute instead of "value".
        Increased gamma exponent to 1.4.

2015-08-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Make DOM node attribute changes highlighting less obnoxious
        https://bugs.webkit.org/show_bug.cgi?id=148050

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.css:
        (@keyframes node-state-changed): Change color to a light green.
        (.node-state-changed): Add a slight ease-in for the animation function.

2015-08-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Refresh button to Cookie Content View
        https://bugs.webkit.org/show_bug.cgi?id=148468

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView):
        (WebInspector.CookieStorageContentView.prototype.get navigationItems):
        (WebInspector.CookieStorageContentView.prototype._refreshButtonClicked):

2015-08-25  Brian Burg  <bburg@apple.com>

        Web Inspector: message dispatch metrics should use high-resolution timing data
        https://bugs.webkit.org/show_bug.cgi?id=135467

        Reviewed by Timothy Hatcher.

        Use performance.now if it's available, otherwise fallback to Date.now().
        Format timestamps with fixed decimal point, and sprinkle some ES6.

        * UserInterface/Base/Utilities.js:
        (timestamp): Added.
        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass):
        (InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
        (InspectorBackendClass.prototype._dispatchEvent):
        * UserInterface/Protocol/MessageDispatcher.js:
        (WebInspector.dispatchNextQueuedMessageFromBackend):
        (WebInspector.dispatchMessageFromBackend): Be consistent about using `this`.

2015-08-25  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames pie chart should use the needsLayout/updateLayout idiom
        https://bugs.webkit.org/show_bug.cgi?id=148412

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow):
        (WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
        (WebInspector.ChartDetailsSectionRow.prototype.set innerRadius):
        Schedule a layout.
        (WebInspector.ChartDetailsSectionRow.prototype.set data): Deleted.
        Replaced by addItem, setItemValue, and clearItems.
        (WebInspector.ChartDetailsSectionRow.prototype.addItem):
        (WebInspector.ChartDetailsSectionRow.prototype.setItemValue):
        (WebInspector.ChartDetailsSectionRow.prototype.clearItems):
        Add/update data points and schedule a layout.
        (WebInspector.ChartDetailsSectionRow.prototype._needsLayout):
        (WebInspector.ChartDetailsSectionRow.prototype.updateLayout):
        Update legend and draw pie chart.
        (WebInspector.ChartDetailsSectionRow.prototype._createLegend): Deleted.
        Refactored as _updateLegend.
        (WebInspector.ChartDetailsSectionRow.prototype._refresh): Deleted.
        Refactored as updateLayout.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        Add chart data points once.
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart):
        Update chart values.

2015-08-24  Brian Burg  <bburg@apple.com>

        Web Inspector: add protocol test for existing error handling performed by the backend
        https://bugs.webkit.org/show_bug.cgi?id=147097

        Reviewed by Joseph Pecoraro.

        Add a way to send raw messages to the backend while still awaiting on responses.
        This is necessary to test protocol error handling in the inspector backend.

        * UserInterface/Test/InspectorProtocol.js:
        (InspectorProtocol.sendCommand):
        (InspectorProtocol.awaitCommand): Use awaitMessage internally.
        (InspectorProtocol.awaitMessage): Added. Use a dummy requestId if none is supplied.
        (InspectorProtocol._sendMessage): Added.
        (InspectorProtocol.dispatchMessageFromBackend):
        Reject with the error object instead of the error message, so error code/data can be checked.
        (InspectorProtocol.sendMessage): Deleted, it is now a private method.

2015-08-24  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Change webkitAnimationEnd use, should be animationEnd
        https://bugs.webkit.org/show_bug.cgi?id=148385

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight):
        * UserInterface/Views/DashboardContainerView.js:
        (WebInspector.DashboardContainerView.prototype._showDashboardView.animationEnded):
        (WebInspector.DashboardContainerView.prototype._showDashboardView):
        (WebInspector.DashboardContainerView.prototype._hideDashboardView.animationEnded):
        (WebInspector.DashboardContainerView.prototype._hideDashboardView):
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView.prototype._setConsoleItemValue.animationEnded):
        (WebInspector.DefaultDashboardView.prototype._setConsoleItemValue):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
        (WebInspector.TextEditor.prototype.revealPosition):
        (WebInspector.TextEditor.prototype._revealSearchResult):

2015-08-24  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r188581): Web Inspector: Console user command isn't visible when it's expected to be
        https://bugs.webkit.org/show_bug.cgi?id=148283

        One of the improvements of r188581 "Option-Enter should commit console command
        without erasing the prompt" was not to show a console user command if it's the
        same as the previous one.

        However, there could be a lot of other messages between the last two user
        commands - console.log, CSS warnings, etc. In that case we should show a console
        user command again by resetting _lastCommitted.

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        (WebInspector.JavaScriptLogViewController.prototype.startNewSession):
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
        Reset _lastCommitted for all messages except for user commands and use command results.

2015-08-24  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames filter checkboxes all become checked during recording
        https://bugs.webkit.org/show_bug.cgi?id=148375

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow.prototype._createLegend):
        Removed incorrect code that forced checked to true.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart):
        Persist legend item checkbox state when updating the chart.

2015-08-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Filtered style not applied to graph elements during timeline recording
        https://bugs.webkit.org/show_bug.cgi?id=148339

        Reviewed by Brian Burg.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
        Check for hidden state change when applying filters to newly added tree elements.

2015-08-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Drop webkit prefixes from animation, keyframes and transform
        https://bugs.webkit.org/show_bug.cgi?id=148364

        Reviewed by Darin Adler.

        * UserInterface/Views/BreakpointTreeElement.css:
        (.breakpoint-generic-line-icon .icon > span):
        (.data-updated.breakpoint-generic-line-icon .icon > span):
        * UserInterface/Views/ColorPicker.css:
        (.color-picker > .slider):
        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard):
        (.toolbar .dashboard.slide-out-up):
        (.toolbar .dashboard.slide-out-down):
        (.toolbar .dashboard.slide-in-up):
        (.toolbar .dashboard.slide-in-down):
        (@keyframes slide-top-edge):
        (@keyframes slide-bottom-edge):
        (@-webkit-keyframes slide-top-edge): Deleted.
        (@-webkit-keyframes slide-bottom-edge): Deleted.
        * UserInterface/Views/DebuggerDashboardView.css:
        (.dashboard.debugger .navigation-bar .item.button > .glyph):
        (@keyframes pulse-pause-button):
        (@-webkit-keyframes pulse-pause-button): Deleted.
        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item.pulsing):
        (@keyframes console-item-pulse):
        (@-webkit-keyframes console-item-pulse): Deleted.
        * UserInterface/Views/GoToLineDialog.css:
        (.go-to-line-dialog):
        * UserInterface/Views/HoverMenu.css:
        (.hover-menu):
        * UserInterface/Views/IndeterminateProgressSpinner.css:
        (@keyframes discrete-spinner):
        (.indeterminate-progress-spinner):
        (@-webkit-keyframes discrete-spinner): Deleted.
        * UserInterface/Views/Main.css:
        (.bouncy-highlight):
        (@keyframes bouncy-highlight-animation):
        (@-webkit-keyframes bouncy-highlight-animation): Deleted.
        * UserInterface/Views/ProbeSetDataGrid.css:
        (.details-section.probe-set .data-grid tr.revealed.highlighted):
        (@keyframes blink-frame-highlight):
        (.details-section.probe-set .data-grid > tr.data-updated):
        (@keyframes blink-probe-frame):
        (@-webkit-keyframes blink-frame-highlight): Deleted.
        (@-webkit-keyframes blink-probe-frame): Deleted.
        * UserInterface/Views/TextEditor.css:
        (.text-editor > .CodeMirror .highlighted):
        (@keyframes text-editor-highlight-fadeout):
        (.text-editor > .CodeMirror .hovered-expression-highlight):
        (@keyframes text-editor-hovered-expression-highlight-fadeout):
        (@-webkit-keyframes text-editor-highlight-fadeout): Deleted.
        (@-webkit-keyframes text-editor-hovered-expression-highlight-fadeout): Deleted.
        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview.frames > .timeline-ruler > .markers > .divider):
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):
        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .header > .divider):
        (.timeline-ruler > .markers > .divider):
        (.timeline-ruler > .markers > .marker):
        (.timeline-ruler > .selection-handle.left):
        (.timeline-ruler > .selection-handle.right):

2015-08-21  Saam barati  <sbarati@apple.com>

        Web Inspector: Type profiler shows 'Undefined' annotation for functions with no return statements
        https://bugs.webkit.org/show_bug.cgi?id=146882

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeToken):
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):

2015-08-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: WebInspector.domTreeManager.regionLayoutUpdated does not exist
        https://bugs.webkit.org/show_bug.cgi?id=148348

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/CSSObserver.js:
        (WebInspector.CSSObserver.prototype.regionLayoutUpdated):
        Just do the same as the new event name.

2015-08-21  Brian Burg  <bburg@apple.com>

        Web Inspector: clean up uses of `new` with zero-argument constructors and factory methods
        https://bugs.webkit.org/show_bug.cgi?id=148311

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/InspectorFrontendHostStub.js:
        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView):
        * UserInterface/Views/ColorPicker.js:
        (WebInspector.ColorPicker):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject): This was causing a console assertion
        when a breakpoint tree element was selected and the inspector tried to restore the view state
        after a reload or back/forward navigation.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):

2015-08-20  Brian Burg  <bburg@apple.com>

        Web Inspector: add a regression test for the fix introduced in r188679
        https://bugs.webkit.org/show_bug.cgi?id=148223

        Reviewed by Joseph Pecoraro.

        Turns out that we were possibly leaking a single DOMTree on reload.
        Always clear the main frame's DOMTree as well as those of sub-frames.

        * UserInterface/Base/Object.js: Add back single-fire listeners.
        (WebInspector.Object.singleFireEventListener.let.wrappedCallback):
        (WebInspector.Object.singleFireEventListener):
        (WebInspector.Object.retainedObjectsWithPrototype):
        (WebInspector.Object.prototype.singleFireEventListener):
        (WebInspector.Object.prototype.retainedObjectsWithPrototype):
        * UserInterface/Models/Frame.js:
        (WebInspector.Frame.prototype.removeAllChildFrames): Clear own tree too.

2015-08-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Better Remember open tab types and order if using JSContext inspector
        https://bugs.webkit.org/show_bug.cgi?id=148285

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.activateExtraDomains):
        Save and restore extra domain related tabs at the expected saved index.

        (WebInspector._rememberOpenTabs):
        Keep unsupported tab types in the setting so when they are supported they open.

        * UserInterface/Base/Utilities.js:
        Add a helper for inserting a single object into an array.

2015-08-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: inline errors/warnings are taller than the line height
        https://bugs.webkit.org/show_bug.cgi?id=148232

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor > .CodeMirror .issue-widget.inline):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline > .text):

2015-08-20  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: Uncaught Exception opening Search Tab
        https://bugs.webkit.org/show_bug.cgi?id=148284

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel):
        This is copied / pasted code that shouldn't apply to the Search tab.
        We want to show results under Resources in the Search tab.

2015-08-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Truncate data URIs
        https://bugs.webkit.org/show_bug.cgi?id=148212

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/URLUtilities.js:
        (parseURL):
        Exit early to avoid an expensive RegExp match on a potentially very large data URI.

        (parseQueryString):
        Fix typo.

        (WebInspector.displayNameForURL):
        (WebInspector.truncateURL):
        By default, only show first and last 3 characters of data URIs.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.get displayURL):
        For tooltips, show first and last 32 characters of data URIs.

        * UserInterface/Models/SourceCodeLocation.js:
        (WebInspector.SourceCodeLocation.prototype._locationString):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype._updateToolTip):

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add flex alignment section to Visual sidebar
        https://bugs.webkit.org/show_bug.cgi?id=148243

        Reviewed by Timothy Hatcher.

        Uses select keyword pickers to contain the list of possible values.  Also supports
        the upcoming Grid layout keywords in the advanced keyword list.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateFlexboxSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateAlignmentSection):

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Labels in the computed panel are shifted when a filter is applieds
        https://bugs.webkit.org/show_bug.cgi?id=148250

        Reviewed by Timothy Hatcher.

        Added to the selectors for filtering to ensure they only apply to the rules panel.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label:not(.filter-section-non-matching) ~ .label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label.filter-matching-label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label:not(.filter-section-non-matching) + .label.filter-matching-label:not(.filter-section-non-matching)):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .new-rule):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .style-declaration-section:not(.filter-section-non-matching) ~ .label:not(.filter-section-non-matching)):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label:not(.filter-section-non-matching) ~ .label): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label.filter-matching-label): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label:not(.filter-section-non-matching) + .label.filter-matching-label:not(.filter-section-non-matching)): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .new-rule): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .style-declaration-section:not(.filter-section-non-matching) ~ .label:not(.filter-section-non-matching)): Deleted.

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Fix "attempted to assign to readonly property" in Visual editor links
        https://bugs.webkit.org/show_bug.cgi?id=148264

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStylePropertyEditorLink.js:
        (WebInspector.VisualStylePropertyEditorLink.prototype.set linked):
        No longer attempts to set the "hidden" attribute of the link icons before they exist.

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Visual editor adds extra spaces to styles with no properties
        https://bugs.webkit.org/show_bug.cgi?id=148242

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WebInspector.CSSStyleDeclaration.prototype.set text):
        Now trims the text and, if the resulting string has no length or the style is inline,
        replaces the text to be set with the trimmed text.

        * UserInterface/Views/VisualStylePropertyCombiner.js:
        (WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):
        Removed unnecessary trim.

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Font size between computed and set value is off in visual styles popups
        https://bugs.webkit.org/show_bug.cgi?id=148226

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStylePropertyEditor.css:
        (.visual-style-property-container > .visual-style-property-value-container > .visual-style-special-property-placeholder):
        Increased font-size to match the font-size of the overlaid select element.

2015-08-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Filtered frames shouldn't be selectable in the Rendering Frames overview graph
        https://bugs.webkit.org/show_bug.cgi?id=148253

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        Check record's filtered state before setting new frame selection.

2015-08-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: visual style number inputs don't style the units correctly
        https://bugs.webkit.org/show_bug.cgi?id=148222

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        Added extra checks to see if the number input has a value when setting the value on the editor.

2015-08-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Filtered frames should be styled differently in the Rendering Frames overview graph
        https://bugs.webkit.org/show_bug.cgi?id=147421

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.representedObjectWasFiltered):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        Inform derived sidebar of tree element filter state changes.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.recordWasFiltered):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.updateLayout):
        Update filtered frame style when a record's state changes, and during layout.

        * UserInterface/Views/TimelineOverview.js:
        * UserInterface/Views/TimelineOverviewGraph.js:
        (WebInspector.TimelineOverviewGraph.prototype.recordWasFiltered):
        Allow setting a record's filtered state for a given timeline in the overview.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame.filtered > .frame):
        New filtered frame style.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.prototype.get filtered):
        (WebInspector.TimelineRecordFrame.prototype.set filtered):

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.recordWasFiltered):

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.representedObjectWasFiltered):
        (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        Apply task filters to RenderingFrameTimelineRecords and their immediate children.

2015-08-20  Brian Burg  <bburg@apple.com>

        Web Inspector: console assertion when hitting breakpoint after auto-recording ends
        https://bugs.webkit.org/show_bug.cgi?id=148225

        Reviewed by Timothy Hatcher.

        Add checks for the precondition to starting/stopping time updates.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
        (WebInspector.TimelineRecordingContentView.prototype._debuggerPaused):
        (WebInspector.TimelineRecordingContentView.prototype._debuggerResumed):

2015-08-19  Brian Burg  <bburg@apple.com>

        Web Inspector: add TestHarness option to tee all commands to system console
        https://bugs.webkit.org/show_bug.cgi?id=148181

        Reviewed by Joseph Pecoraro.

        It is currently difficult to trace what's going on when a test times out
        on a buildbot instance. The existing option for forcing debug logging can
        still drop messages that don't make it from the inspector to the test page.

        This patch adds an option which logs all TestHarness commands directly to
        stderr in the Inspector instance using InspectorFrontendHost::unbufferedLog.

        Clean up how existing harness logging code calls into each other. Extract
        the stringifying code that is duplicated everywhere.

        * UserInterface/Test.html: Reorganize options and add new option.
        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.completeTest):
        (FrontendTestHarness.prototype.addResult):
        (FrontendTestHarness.prototype.debugLog):
        (FrontendTestHarness.prototype.testPageDidLoad):
        (FrontendTestHarness.prototype._resendResults):
        (FrontendTestHarness):
        * UserInterface/Test/ProtocolTestHarness.js:
        (ProtocolTestHarness.prototype.completeTest):
        (ProtocolTestHarness.prototype.addResult):
        (ProtocolTestHarness.prototype.debugLog):
        * UserInterface/Test/TestHarness.js:
        (TestHarness.prototype.log):
        (TestHarness.prototype.assert):
        (TestHarness.prototype.expectThat):
        (TestHarness.messageAsString):
        (TestHarness):
        * UserInterface/TestStub.html: Reorganize options and add new option.

2015-08-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused temporary variable
        https://bugs.webkit.org/show_bug.cgi?id=148215

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel):

2015-08-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Visual styles panel does not work with pseudo-elements
        https://bugs.webkit.org/show_bug.cgi?id=148187

        Reviewed by Timothy Hatcher.

        If the inline style does not exist, such as for pseudo-elements, default to the first matched rule.

        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection.prototype.update):

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: DOMTree leaks on main resource changes
        https://bugs.webkit.org/show_bug.cgi?id=148158

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMTree.js:
        (WebInspector.DOMTree.prototype.disconnect):
        Add a way to disconnect the DOMTree and allow it to get garbage collected.

        (WebInspector.DOMTree.prototype.invalidate.performInvalidate):
        (WebInspector.DOMTree.prototype.invalidate):
        (WebInspector.DOMTree.prototype._requestRootDOMNode):
        (WebInspector.DOMTree.prototype._framePageExecutionContextChanged):
        Remove some uses of the delete operator.

        * UserInterface/Models/Frame.js:
        (WebInspector.Frame.prototype.removeChildFrame):
        (WebInspector.Frame.prototype.removeAllChildFrames):
        (WebInspector.Frame.prototype._detachFromParentFrame):
        When a frame gets removed from its parent, disconnect its DOMTree.

2015-08-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: The first style in the Rules panel for pseudo-elements needs padding
        https://bugs.webkit.org/show_bug.cgi?id=148207

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules .label:first-child):
        If the first element in the Rules panel is a label, add some top padding.

2015-08-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Committing a valid selector in the styles sidebar replaces the new selector with the old one
        https://bugs.webkit.org/show_bug.cgi?id=148206

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._markSelector):
        No longer unnecessarily refreshes the section if the selector is valid.

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exceptions regarding PseudoElements / TemplateContent
        https://bugs.webkit.org/show_bug.cgi?id=148190

        Reviewed by Brian Burg.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._unbind):
        Iterate over the values in the map, not the iterator pairs.

        * UserInterface/Models/DOMNode.js:
        When removing a pseudo element, don't assume this._children
        exists, it may be null. So separate the two paths.

2015-08-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: long selectors in the visual editor sidebar can overflow
        https://bugs.webkit.org/show_bug.cgi?id=148185

        Reviewed by Timothy Hatcher.

        Selectors in the Visual editor sidebar are now clipped and use ellipses.

        * UserInterface/Views/VisualStyleSelectorSection.css:
        (.details-section.visual-style-selector-section > .header > .current-selector):
        (.details-section.visual-style-selector-section:not(.collapsed) > .content):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > .titles):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > .titles > .title): Deleted.

        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (.item.visual-style-selector-item):
        (.item.visual-style-selector-item > .titles):
        (.item.visual-style-selector-item > input[type="checkbox"]):
        (.item.visual-style-selector-item > .icon):

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Legacy Inspector JSON for iOS 9
        https://bugs.webkit.org/show_bug.cgi?id=148200

        Reviewed by Timothy Hatcher.

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

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update Copyright in minified / combined output
        https://bugs.webkit.org/show_bug.cgi?id=148201

        Reviewed by Timothy Hatcher.

        * Scripts/copy-user-interface-resources.pl:
        Include copyright comments from missing 2014 and 2015 contributors
        in the comment in the minified / combined Main.js.

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception in inspector page while handling event DOMStorage.domStorageItemRemoved
        https://bugs.webkit.org/show_bug.cgi?id=148191

        Reviewed by Brian Burg.

        * UserInterface/Controllers/StorageManager.js:
        (WebInspector.StorageManager.prototype.itemsCleared):
        (WebInspector.StorageManager.prototype.itemRemoved):
        (WebInspector.StorageManager.prototype.itemAdded):
        (WebInspector.StorageManager.prototype.itemUpdated):
        Check if the DOMStorage for the identifier actually exists.
        Due to how the backend emits events, the page may have already
        navigated when we get a storage update for the previous page.
        In that case, we don't want to create a DOMStorage for the
        previous page if it doesn't exist.

2015-08-19  Brian Burg  <bburg@apple.com>

        Web Inspector: use unprefixed CSS property 'filter' instead of '-webkit-filter'
        https://bugs.webkit.org/show_bug.cgi?id=148186

        Reviewed by Dean Jackson.

        * UserInterface/Views/BreakpointActionView.css:
        (.breakpoint-action-remove-button:active):
        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section:not(.invalid-selector) > .header > .icon.toggle-able:hover):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .invalid-warning-marker.clickable:hover):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .cubic-bezier-marker:hover):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .cubic-bezier-marker:active):
        * UserInterface/Views/ChartDetailsSectionRow.css:
        (body.window-inactive .details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > input[type=checkbox]):
        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow.prototype._addCheckboxColorFilter):
        * UserInterface/Views/NewTabContentView.css:
        (.new-tab.tab.content-view > .tab-item.disabled):
        (.new-tab.tab.content-view > .tab-item:not(.disabled):hover > .box):
        (.new-tab.tab.content-view > .tab-item:not(.disabled):active > .box):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
        (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:hover):
        (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:active):
        * UserInterface/Views/VisualStyleKeywordIconList.css:
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:not(.selected) > div):
        * UserInterface/Views/VisualStyleSelectorSection.css:
        (.details-section.visual-style-selector-section > .header > .controls > .visual-style-selector-section-add-rule):

2015-08-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exception while handling event DOM.pseudoElementRemoved reloading twitter pages
        https://bugs.webkit.org/show_bug.cgi?id=148180

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._visibleChildren):
        DOMNode.children can be null before it is filled in.

2015-08-19  Brian Burg  <bburg@apple.com>

        Web Inspector: InspectorTest should be a subclass of TestHarness
        https://bugs.webkit.org/show_bug.cgi?id=148079

        Reviewed by Timothy Hatcher.

        Extract the frontend test harness into a subclass. Delete some code that
        is now redundant. Sprinkle some ES6 syntax where possible.

        Rewrite the code that redirects the Inspector page's console messages to
        the test page, since it didn't appear to work any more.

        * UserInterface/Test.html: Add debug options here, and a wiki link.
        * UserInterface/Test/FrontendTestHarness.js: Added.
        (FrontendTestHarness):
        (FrontendTestHarness.prototype.completeTest):
        (FrontendTestHarness.prototype.addResult):
        (FrontendTestHarness.prototype.debugLog):
        (FrontendTestHarness.prototype.evaluateInPage):
        (FrontendTestHarness.prototype.expectNoError):
        (FrontendTestHarness.prototype.testPageDidLoad):
        (FrontendTestHarness.prototype.reloadPage):
        (FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
        (FrontendTestHarness.prototype.redirectConsoleToTestOutput):
        (FrontendTestHarness.prototype.reportUncaughtException):
        (FrontendTestHarness.prototype._resendResults):
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        (WebInspector.UIString): Arrow it.
        (WebInspector.updateDockedState): Arrow it.
        (WebInspector.updateDockingAvailability): Arrow it.
        (InspectorTest.EventDispatcher.prototype.dispatchEvent): Deleted.
        (InspectorTest.EventDispatcher): Deleted.
        (InspectorTest.log): Deleted.
        (InspectorTest.assert): Deleted.
        (InspectorTest.expectThat): Deleted.
        (InspectorTest.debugLog): Deleted.
        (InspectorTest.expectNoError): Deleted.
        (InspectorTest.completeTest): Deleted.
        (InspectorTest.evaluateInPage): Deleted.
        (InspectorTest.addResult): Deleted.
        (InspectorTest._resendResults): Deleted.
        (InspectorTest.testPageDidLoad): Deleted.
        (InspectorTest.reloadPage): Deleted.
        (InspectorTest.reportUncaughtException): Deleted.
        * UserInterface/Test/TestSuite.js: Clean an unnecessary self = this.
        (SyncTestSuite.prototype.runTestCases):
        (SyncTestSuite):
        * UserInterface/TestStub.html: Add matching link to wiki.

2015-08-19  Brian Burg  <bburg@apple.com>

        Web Inspector: split TestStub.js into multiple files and modernize it
        https://bugs.webkit.org/show_bug.cgi?id=148077

        Reviewed by Timothy Hatcher.
 
        Since we want to share files between the two harnesses, split some of the parts
        into different files so not everything has to be included at once.

        Rename InjectedTestHarness to just TestHarness. Update some code to use
        ES6 features where appropriate. Put test classes into Test/ directory.

        * UserInterface/Base/TestStub.js: Removed.
        * UserInterface/Test.html:
        * UserInterface/Test/InspectorProtocol.js: Added.
        (InspectorProtocol.sendCommand):
        (InspectorProtocol.awaitCommand):
        (InspectorProtocol.awaitEvent.):
        (InspectorProtocol.awaitEvent):
        (InspectorProtocol.addEventListener):
        (InspectorProtocol.sendMessage):
        (InspectorProtocol.checkForError):
        (InspectorProtocol.dispatchMessageFromBackend):
        * UserInterface/Test/ProtocolTestHarness.js: Added.
        (ProtocolTestHarness.prototype.completeTest):
        (ProtocolTestHarness.prototype.addResult):
        (ProtocolTestHarness.prototype.debugLog):
        (ProtocolTestHarness.prototype.evaluateInPage):
        (ProtocolTestHarness):
        * UserInterface/Test/Test.js: Renamed from Source/WebInspectorUI/UserInterface/Base/Test.js.
        (WebInspector.loaded):
        (WebInspector.contentLoaded):
        (WebInspector.UIString):
        (WebInspector.updateDockedState):
        (WebInspector.updateDockingAvailability):
        (InspectorTest.EventDispatcher.prototype.dispatchEvent):
        (InspectorTest.EventDispatcher):
        (InspectorTest.log):
        (InspectorTest.assert):
        (InspectorTest.expectThat):
        (InspectorTest.debugLog):
        (InspectorTest.expectNoError):
        (InspectorTest.completeTest):
        (InspectorTest.evaluateInPage):
        (InspectorTest.addResult):
        (InspectorTest._resendResults):
        (InspectorTest.testPageDidLoad):
        (InspectorTest.reloadPage):
        (InspectorTest.reportUncaughtException):
        * UserInterface/Test/TestHarness.js: Added.
        (TestHarness):
        (TestHarness.prototype.completeTest):
        (TestHarness.prototype.addResult):
        (TestHarness.prototype.debugLog):
        (TestHarness.prototype.evaluateInPage):
        (TestHarness.prototype.createAsyncSuite):
        (TestHarness.prototype.createSyncSuite):
        (TestHarness.prototype.get logCount):
        (TestHarness.prototype.log):
        (TestHarness.prototype.assert):
        (TestHarness.prototype.expectThat):
        * UserInterface/Test/TestStub.js: Added.
        * UserInterface/Test/TestSuite.js: Added.
        (TestSuite):
        (TestSuite.prototype.runTestCasesAndFinish):
        (TestSuite.prototype.runTestCases):
        (TestSuite.prototype.get passCount):
        (TestSuite.prototype.get skipCount):
        (TestSuite.prototype.addTestCase):
        (AsyncTestSuite.prototype.runTestCasesAndFinish.finish):
        (AsyncTestSuite.prototype.runTestCasesAndFinish):
        (AsyncTestSuite.prototype.runTestCases):
        (AsyncTestSuite):
        (SyncTestSuite.prototype.runTestCasesAndFinish):
        (SyncTestSuite.prototype.runTestCases):
        (SyncTestSuite):
        * UserInterface/TestStub.html:

2015-08-19  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Pressing Command-Enter should re-evaluate selected console user command
        https://bugs.webkit.org/show_bug.cgi?id=147918

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._keyDown):
        (WebInspector.LogContentView.prototype._commandEnterWasPressed):
        Only re-evaluate one selected user command.

2015-08-19  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r188581): Web Inspector: Console user command isn't visible after reloading the page
        https://bugs.webkit.org/show_bug.cgi?id=148166

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.startNewSession):

2015-08-19  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r188581): Web Inspector: Option-Enter no longer inserts a new line in the console
        https://bugs.webkit.org/show_bug.cgi?id=148165

        Make Option-Enter insert a new line, as it was before r188581.
        Make Command-Enter keep executed command in the prompt.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt): Deleted.
        (WebInspector.ConsolePrompt.prototype._handleCommandEnterKey):
        (WebInspector.ConsolePrompt.prototype._handleOptionEnterKey): Deleted.
        (WebInspector.ConsolePrompt.prototype._handleCommandOptionEnterKey): Deleted.

2015-08-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Links for rules in <style> are incorrect, do not account for <style> offset in the document
        https://bugs.webkit.org/show_bug.cgi?id=148141

        Reviewed by Brian Burg.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager):
        (WebInspector.CSSStyleManager.prototype.get styleSheets):
        (WebInspector.CSSStyleManager.prototype.fetchStyleSheetsIfNeeded):
        (WebInspector.CSSStyleManager.prototype.styleSheetForIdentifier):
        (WebInspector.CSSStyleManager.prototype._mainResourceDidChange):
        Update more information about a StyleSheet when fetched.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.update):
        Eliminate usage of `delete`.

        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet):
        (WebInspector.CSSStyleSheet.prototype.get startLineNumber):
        (WebInspector.CSSStyleSheet.prototype.get startColumnNumber):
        (WebInspector.CSSStyleSheet.prototype.hasInfo):
        (WebInspector.CSSStyleSheet.prototype.isInlineStyleTag):
        (WebInspector.CSSStyleSheet.prototype.updateInfo):
        Include more information about this stylesheet.

        (WebInspector.CSSStyleSheet.prototype.offsetSourceCodeLocation):
        Include helper API to offset a source code location by the startLine/Column
        of this stylesheet itself, if it was an inline style.

        (WebInspector.CSSStyleSheet.prototype.isInlineStyleAttributeStyleSheet):
        (WebInspector.CSSStyleSheet.prototype.markAsInlineStyleAttributeStyleSheet):
        (WebInspector.CSSStyleSheet.isInlineStyle): Deleted.
        (WebInspector.CSSStyleSheet.prototype.markAsInlineStyle): Deleted.
        Rename for clarity.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.refresh):
        Fetch stylesheet header information eagerly, so we have them early on.

        (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
        (WebInspector.DOMNodeStyles.prototype._parseRulePayload):
        Offset sourceCodeLocations for CSSRules based on the StyleSheet offset.

        * UserInterface/Models/SourceCodeLocation.js:
        (WebInspector.SourceCodeLocation.prototype.update):
        Improve coding style.

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add proper formatting for editing styles in the Visual Panel
        https://bugs.webkit.org/show_bug.cgi?id=148147

        Reviewed by Timothy Hatcher.

        Editing styles in the Visual styles panel now preserves whitespace in the related resource file.

        * UserInterface/Views/VisualStylePropertyCombiner.js:
        (WebInspector.VisualStylePropertyCombiner):
        (WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):

        * UserInterface/Views/VisualStylePropertyEditor.js:
        (WebInspector.VisualStylePropertyEditor):
        (WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.modifyPropertyText):

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add support for positioning Visual editors on non-retina displays
        https://bugs.webkit.org/show_bug.cgi?id=148160

        Reviewed by Timothy Hatcher.

        Cleans up the positioning, dimensions, and widths of the
        Visual editors on non-retina displays.

        * UserInterface/Views/VisualStyleColorPicker.css:
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):

        * UserInterface/Views/VisualStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row.visual-style-separated-row):
        (@media (-webkit-min-device-pixel-ratio: 2)):

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._clearModifiedSection):

        * UserInterface/Views/VisualStylePropertyEditorLink.css:
        (.visual-style-property-editor-link):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-border.left):
        (.visual-style-property-editor-link.link-all > .visual-style-property-editor-link-border.left):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon):
        (.visual-style-property-editor-link:not(.link-all) > .visual-style-property-editor-link-icon):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.left):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-icon:hover + .visual-style-property-editor-link-border.right): Deleted.
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.right): Deleted.
        (.visual-style-property-editor-link.link-all > .visual-style-property-editor-link-icon): Deleted.

        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (.item.visual-style-selector-item > input[type="checkbox"]):
        (.item.visual-style-selector-item > .icon):
        (.item.visual-style-selector-item.selector-invalid > .titles > .title::before):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (.item.visual-style-selector-item > .titles):
        (.item.visual-style-selector-item.selector-invalid > .icon): Deleted.

        * UserInterface/Views/VisualStyleTimingEditor.css:
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor):
        (@media (-webkit-min-device-pixel-ratio: 2)):



2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Show the computed value in an overlay for numerical Visual Editors
        https://bugs.webkit.org/show_bug.cgi?id=148161

        Reviewed by Timothy Hatcher.

        Adds an "Unchanged" option to the number-based Visual editors that shows the
        computed value if it is not a number (it would therefore be a keyword).

        * UserInterface/Views/VisualStyleNumberInputBox.css:
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-container):
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-container:not(.has-value) > span):

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox):
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        (WebInspector.VisualStyleNumberInputBox.prototype.get units):
        (WebInspector.VisualStyleNumberInputBox.prototype.set units):
        (WebInspector.VisualStyleNumberInputBox.prototype.set placeholder):
        (WebInspector.VisualStyleNumberInputBox.prototype.get synthesizedValue):
        (WebInspector.VisualStyleNumberInputBox.prototype.set _unitsElementTextContent):
        (WebInspector.VisualStyleNumberInputBox.prototype._markUnitsContainerIfInputHasValue):
        (WebInspector.VisualStyleNumberInputBox.prototype._keywordChanged):
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown):
        (WebInspector.VisualStyleNumberInputBox.prototype._numberInputChanged):

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Small Caps variant checkbox should be to the left of the Small Caps label
        https://bugs.webkit.org/show_bug.cgi?id=148102

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleKeywordCheckbox.css:
        (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input): Deleted.
        (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::after):
        (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::before): Deleted.

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Visual editor links should unlink when switching styles
        https://bugs.webkit.org/show_bug.cgi?id=148153

        Reviewed by Timothy Hatcher.

        Visual editor links are now deactivated when switching rules/nodes.

        * UserInterface/Images/VisualStylePropertyUnlinked.svg:
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):

        * UserInterface/Views/VisualStylePropertyEditorLink.js:
        (WebInspector.VisualStylePropertyEditorLink.prototype.set linked):
        (WebInspector.VisualStylePropertyEditorLink.prototype._iconClicked):
        (WebInspector.VisualStylePropertyEditorLink):

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Consider showing style summary on collapsed visual sidebar sections
        https://bugs.webkit.org/show_bug.cgi?id=148104

        Reviewed by Timothy Hatcher.

        The blue indicator dot on a section now means that that section has at least one set value.
        If a section has been modified, it will display a trash can that will clear those modifications.

        * UserInterface/Views/VisualStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section.has-set-property > .header > span::after):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section.modified > .header > span::after): Deleted.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
        (WebInspector.VisualStyleDetailsPanel.prototype._sectionModified):
        (WebInspector.VisualStyleDetailsPanel.prototype._groupHasSetProperty):

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: round sub-pixel values we get from computed style in visual sidebar
        https://bugs.webkit.org/show_bug.cgi?id=148105

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        (WebInspector.VisualStyleNumberInputBox.prototype.set placeholder):
        Now rounds the value and placeholder to the nearest 100th.

2015-08-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: transparent color swatches have lopsided checkered background on non-retina
        https://bugs.webkit.org/show_bug.cgi?id=148150

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (@media (-webkit-max-device-pixel-ratio: 1)):
        Make color and bezier widgets slightly smaller, but evenly sized so the
        checkered background is not lopsided and the curve is a little less blurry.

2015-08-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Modernize CSSStyleManager
        https://bugs.webkit.org/show_bug.cgi?id=148143

        Reviewed by Brian Burg.

        * UserInterface/Controllers/CSSStyleManager.js:
          - Eliminate `delete` operator use.
          - Move from using Objects as hashmaps to Map.
          - Fix typos.

2015-08-18  Brian Burg  <bburg@apple.com>

        Web Inspector: load ProtocolTestStub from the WebInspectorUI bundle
        https://bugs.webkit.org/show_bug.cgi?id=147955

        Reviewed by Timothy Hatcher.

        Move ProtocolTestStub.{html,js} into the actual WebInspectorUI project.

        * UserInterface/Base/TestStub.js: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js.
        * UserInterface/TestStub.html: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.html.

2015-08-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Better keyboard shortcut to focus on the console prompt
        https://bugs.webkit.org/show_bug.cgi?id=147927

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._focusConsolePrompt):
        Added a Control-Tilde keyboard shortcut to focus the console prompt.

2015-08-18  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Option-Enter should commit console command without erasing the prompt
        https://bugs.webkit.org/show_bug.cgi?id=148123

        Also, don't append a console command if it's the same as the last one.

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt):
        (WebInspector.ConsolePrompt.prototype._handleEnterKey.commitTextOrInsertNewLine):
        (WebInspector.ConsolePrompt.prototype._handleEnterKey):
        (WebInspector.ConsolePrompt.prototype._handleOptionEnterKey):
        (WebInspector.ConsolePrompt.prototype._handleCommandOptionEnterKey):

2015-08-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r188539, r188544, r188552, and
        r188564.
        https://bugs.webkit.org/show_bug.cgi?id=148122

        Broke tests and some build styles (Requested by ap on
        #webkit).

        Reverted changesets:

        "Web Inspector: load ProtocolTestStub from the WebInspectorUI
        bundle"
        https://bugs.webkit.org/show_bug.cgi?id=147955
        http://trac.webkit.org/changeset/188539

        "Web Inspector: split TestStub.js into multiple files and
        modernize it"
        https://bugs.webkit.org/show_bug.cgi?id=148077
        http://trac.webkit.org/changeset/188544

        "Web Inspector: InspectorTest should be a subclass of
        TestHarness"
        https://bugs.webkit.org/show_bug.cgi?id=148079
        http://trac.webkit.org/changeset/188552

        "Unreviewed internal build fix attempt after r188539."
        http://trac.webkit.org/changeset/188564

2015-08-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Allow typing command when a console message is selected
        https://bugs.webkit.org/show_bug.cgi?id=148121

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._keyPress):
        Command-C should still copy the selected message.

2015-08-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Update slider styles
        https://bugs.webkit.org/show_bug.cgi?id=148120

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Main.css:
        (input[type=range]):
        (input[type=range]::-webkit-slider-runnable-track::before):

2015-08-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: font-family list is backwards in visual sidebar
        https://bugs.webkit.org/show_bug.cgi?id=148101

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addCommaSeparatedKeyword):
        Now appends new children if the current index is not set instead of inserting them.

2015-08-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: Style changes to Visual sidebar selector items
        https://bugs.webkit.org/show_bug.cgi?id=148114

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype._updateTitleElements):
        (WebInspector.GeneralTreeElement.prototype._updateTitleTooltip):
        Moved the code to update the item tooltip to its own function.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.editorMouseover):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.editorMouseout):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateMarginSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populatePaddingSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseover): Deleted.
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseout): Deleted.
        Added on-hover node/selector highlighting to margin and padding editor links.

        * UserInterface/Views/VisualStyleNumberInputBox.js:
        (WebInspector.VisualStyleNumberInputBox):
        Replaced "No Units" with "Number" for better clarity.

        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (body:not(.window-inactive, .window-docked-inactive) .item.visual-style-selector-item.selected > input[type="checkbox"]:checked::before):
        (.item.visual-style-selector-item.selected > input[type="checkbox"]::before): Deleted.
        Removes the white border when the window is inactive and when the checkbox is unchecked.

        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):
        Now updates the title of the item when the selector changes.

2015-08-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: delete key should work on multi-values visual sidebar grid sections
        https://bugs.webkit.org/show_bug.cgi?id=148110

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._listElementKeyDown):
        If the backspace/delete key is pressed when focus is within the list element, delete
        the selected list item if it is not currently being edited (if it has an editor).

        * UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.get currentlyEditing):

2015-08-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: web fonts or unknown fonts show up as Times in visual sidebar
        https://bugs.webkit.org/show_bug.cgi?id=148103

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
        Fonts now fall back to sans-serif and -apple-system if they do not exist.

2015-08-17  Myles C. Maxfield  <mmaxfield@apple.com>

        Implement IntegerHasher
        https://bugs.webkit.org/show_bug.cgi?id=147866

        Reviewed by Darin Adler and Anders Carlsson.

        Update comment.

        * UserInterface/Base/Utilities.js:

2015-08-17  Brian Burg  <bburg@apple.com>

        Web Inspector: InspectorTest should be a subclass of TestHarness
        https://bugs.webkit.org/show_bug.cgi?id=148079

        Reviewed by Timothy Hatcher.

        Extract the frontend test harness into a subclass. Delete some code that
        is now redundant. Sprinkle some ES6 syntax where possible.

        Rewrite the code that redirects the Inspector page's console messages to
        the test page, since it didn't appear to work any more.

        * UserInterface/Test.html:
        * UserInterface/Test/FrontendTestHarness.js: Added.
        (FrontendTestHarness):
        (FrontendTestHarness.prototype.completeTest):
        (FrontendTestHarness.prototype.addResult):
        (FrontendTestHarness.prototype.debugLog):
        (FrontendTestHarness.prototype.evaluateInPage):
        (FrontendTestHarness.prototype.expectNoError):
        (FrontendTestHarness.prototype.testPageDidLoad):
        (FrontendTestHarness.prototype.reloadPage):
        (FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
        (FrontendTestHarness.prototype.redirectConsoleToTestOutput):
        (FrontendTestHarness.prototype.reportUncaughtException):
        (FrontendTestHarness.prototype._resendResults):
        * UserInterface/Test/Test.js:
        (InspectorTest.EventDispatcher.prototype.dispatchEvent): Deleted.
        (InspectorTest.EventDispatcher): Deleted.
        (InspectorTest.log): Deleted.
        (InspectorTest.assert): Deleted.
        (InspectorTest.expectThat): Deleted.
        (InspectorTest.debugLog): Deleted.
        (InspectorTest.expectNoError): Deleted.
        (InspectorTest.completeTest): Deleted.
        (InspectorTest.evaluateInPage): Deleted.
        (InspectorTest.addResult): Deleted.
        (InspectorTest._resendResults): Deleted.
        (InspectorTest.testPageDidLoad): Deleted.
        (InspectorTest.reloadPage): Deleted.
        (InspectorTest.reportUncaughtException): Deleted.

2015-08-17  Saam barati  <sbarati@apple.com>

        Web Inspector: Type profiler return types aren't showing up
        https://bugs.webkit.org/show_bug.cgi?id=147348

        Reviewed by Brian Burg.

        Bug #145995 changed the starting offset of a function to 
        be the open parenthesis of the function's parameter list.
        This broke the type profiler's text offset based protocol with JSC.
        The text offset used in the protocol is now the first letter of the 
        function/get/set/method name.  So "f" in "function a() {}", "s" in "set foo(){}", etc.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
        (WebInspector.ScriptSyntaxTree.functionReturnDivot):

2015-08-17  Brian Burg  <bburg@apple.com>

        Web Inspector: REGRESSION: spurious console.assert inside ResourceContentView._contentAvailable
        https://bugs.webkit.org/show_bug.cgi?id=147886

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype._hasContent): Fix the style class name.

2015-08-17  Brian Burg  <bburg@apple.com>

        Web Inspector: split TestStub.js into multiple files and modernize it
        https://bugs.webkit.org/show_bug.cgi?id=148077

        Reviewed by Timothy Hatcher.
 
        Since we want to share files between the two harnesses, split some of the parts
        into different files so not everything has to be included at once.

        Rename InjectedTestHarness to just TestHarness. Update some code to use
        ES6 features where appropriate. Put test classes into Test/ directory.

        * UserInterface/Base/TestStub.js: Removed.
        * UserInterface/Test.html:
        * UserInterface/Test/InspectorProtocol.js: Added.
        (InspectorProtocol.sendCommand):
        (InspectorProtocol.awaitCommand):
        (InspectorProtocol.awaitEvent.):
        (InspectorProtocol.awaitEvent):
        (InspectorProtocol.addEventListener):
        (InspectorProtocol.sendMessage):
        (InspectorProtocol.checkForError):
        (InspectorProtocol.dispatchMessageFromBackend):
        * UserInterface/Test/ProtocolTestHarness.js: Added.
        (ProtocolTestHarness.prototype.completeTest):
        (ProtocolTestHarness.prototype.addResult):
        (ProtocolTestHarness.prototype.debugLog):
        (ProtocolTestHarness.prototype.evaluateInPage):
        (ProtocolTestHarness):
        * UserInterface/Test/Test.js: Renamed from Source/WebInspectorUI/UserInterface/Base/Test.js.
        (WebInspector.loaded):
        (WebInspector.contentLoaded):
        (WebInspector.UIString):
        (WebInspector.updateDockedState):
        (WebInspector.updateDockingAvailability):
        (InspectorTest.EventDispatcher.prototype.dispatchEvent):
        (InspectorTest.EventDispatcher):
        (InspectorTest.log):
        (InspectorTest.assert):
        (InspectorTest.expectThat):
        (InspectorTest.debugLog):
        (InspectorTest.expectNoError):
        (InspectorTest.completeTest):
        (InspectorTest.evaluateInPage):
        (InspectorTest.addResult):
        (InspectorTest._resendResults):
        (InspectorTest.testPageDidLoad):
        (InspectorTest.reloadPage):
        (InspectorTest.reportUncaughtException):
        * UserInterface/Test/TestHarness.js: Added.
        (TestHarness):
        (TestHarness.prototype.completeTest):
        (TestHarness.prototype.addResult):
        (TestHarness.prototype.debugLog):
        (TestHarness.prototype.evaluateInPage):
        (TestHarness.prototype.createAsyncSuite):
        (TestHarness.prototype.createSyncSuite):
        (TestHarness.prototype.get logCount):
        (TestHarness.prototype.log):
        (TestHarness.prototype.assert):
        (TestHarness.prototype.expectThat):
        * UserInterface/Test/TestStub.js: Added.
        * UserInterface/Test/TestSuite.js: Added.
        (TestSuite):
        (TestSuite.prototype.runTestCasesAndFinish):
        (TestSuite.prototype.runTestCases):
        (TestSuite.prototype.get passCount):
        (TestSuite.prototype.get skipCount):
        (TestSuite.prototype.addTestCase):
        (AsyncTestSuite.prototype.runTestCasesAndFinish.finish):
        (AsyncTestSuite.prototype.runTestCasesAndFinish):
        (AsyncTestSuite.prototype.runTestCases):
        (AsyncTestSuite):
        (SyncTestSuite.prototype.runTestCasesAndFinish):
        (SyncTestSuite.prototype.runTestCases):
        (SyncTestSuite):
        * UserInterface/TestStub.html:

2015-08-17  Brian Burg  <bburg@apple.com>

        Web Inspector: load ProtocolTestStub from the WebInspectorUI bundle
        https://bugs.webkit.org/show_bug.cgi?id=147955

        Reviewed by Timothy Hatcher.

        Move ProtocolTestStub.{html,js} into the actual WebInspectorUI project.

        * UserInterface/Base/TestStub.js: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js.
        * UserInterface/TestStub.html: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.html.

2015-08-17  Simon Fraser  <simon.fraser@apple.com>

        will-change should sometimes trigger compositing
        https://bugs.webkit.org/show_bug.cgi?id=148072

        Reviewed by Tim Horton.
        
        Have the web inspector show a correct compositing reason for will-change.
        This could be improved to indicate which specific value in will-change triggered
        the compositing.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
        (WebInspector.LayerTreeDetailsSidebarPanel):

2015-08-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: NavigationBar.updateLayoutSoon should use requestAnimationFrame
        https://bugs.webkit.org/show_bug.cgi?id=148010

        Reviewed by Brian Burg.

        NavigationBar.updateLayoutSoon now uses requestAnimationFrame instead of setTimeout.

        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar):
        (WebInspector.NavigationBar.prototype.updateLayoutSoon.update):
        (WebInspector.NavigationBar.prototype.updateLayoutSoon):
        (WebInspector.NavigationBar.prototype.updateLayout):

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add VisualStyleDetailsPanel
        https://bugs.webkit.org/show_bug.cgi?id=147570

        Reviewed by Timothy Hatcher.

        Added VisualStyleDetailsPanel and inclusions to forthcoming classes
        that will be used in this visual sidebar panel.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        Added files for all new classes used in the VisualStyleDetailsPanel.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection):
        (WebInspector.DetailsSection.prototype.set collapsed):
        (WebInspector.DetailsSection.prototype.get expandedByUser):
        (WebInspector.DetailsSection.prototype._headerElementClicked):
        Track whether or not the expanded state was caused by the user.

        * UserInterface/Views/VisualStyleDetailsPanel.css: Added.
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section:not(.modified) > .header > .visual-style-section-clear):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > span):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section.modified > .header > span::after):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row:last-child):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row.visual-style-separated-row):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container > .visual-style-property-title):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container:not(.layout-reversed):last-child):
        (.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section)):
        (.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section) input):

        * UserInterface/Views/VisualStyleDetailsPanel.js: Added.
        (WebInspector.VisualStyleDetailsPanel):
        (WebInspector.VisualStyleDetailsPanel.prototype.refresh):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.replaceDashWithCapital):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._prepareForChange):
        (WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
        (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
        (WebInspector.VisualStyleDetailsPanel.prototype._updateAutocompleteCompatiblePropertyEditor):
        (WebInspector.VisualStyleDetailsPanel.prototype._sectionModified):
        (WebInspector.VisualStyleDetailsPanel.prototype._clearModifiedSection):
        (WebInspector.VisualStyleDetailsPanel.prototype.get _initialTextList):
        (WebInspector.VisualStyleDetailsPanel.prototype._initialPropertyTextModified):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):
        (WebInspector.VisualStyleDetailsPanel.prototype._populatePositionSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateFloatSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseover):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseout):
        (WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateDimensionsSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateMarginSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populatePaddingSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateFlexboxSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTextStyleSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateFontSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTextSpacingSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTextShadowSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateOutlineSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.noRemainingTreeItems):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.selectedBoxShadowItemValueChanged):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.boxShadowItemSelected):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.noRemainingTreeItems):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.selectedtransitionItemValueChanged):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.transitionItemSelected):
        (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Highlight DOM node attribute changes in parallel, not sequentially
        https://bugs.webkit.org/show_bug.cgi?id=148019

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._markNodeChanged):
        (WebInspector.DOMTreeElement.prototype._nodeChangedAnimationEnd):
        Now removes the animated element from the updated list once the animation ends.

2015-08-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Long delay when row selection changes in timeline data grids
        https://bugs.webkit.org/show_bug.cgi?id=148005

        Reviewed by Brian Burg.

        Selecting a tree element in the Timelines sidebar generates multiple
        WebInspector.ContentView.SelectionPathComponentsDidChange events, each of which
        causes NavigationBar to update its layout (which is extremely expensive).

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
        Call updateLayoutSoon instead of updateLayout to coalesce layout requests.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._recordSelected):
        When the selected record changes in the overview graph, make sure the record's tree element
        isn't already selected. Reselecting the tree element results in an extra NavigationBar layout.

2015-08-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r188396): Rendering Frames timeline ruler dividers are off by 1px
        https://bugs.webkit.org/show_bug.cgi?id=148040

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview.frames > .timeline-ruler > .markers > .divider):
        (.timeline-overview.frames > .timeline-ruler > .header > .divider): Deleted.
        All ruler dividers should be translated by the same amount.

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Style changes to Visual sidebar editors
        https://bugs.webkit.org/show_bug.cgi?id=148021

        Reviewed by Brian Burg.

        Various style fixes and feature enhancements in some of the Visual style property editors.

        * UserInterface/Views/VisualStyleColorPicker.css:
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):
        (.visual-style-property-container.input-color-picker.multiple > .visual-style-property-value-container > .visual-style-multiple-property-placeholder):

        * UserInterface/Views/VisualStyleKeywordCheckbox.css:
        (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input):
        (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::before):
        (.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > input): Deleted.
        (.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > div): Deleted.
        Replaced the SVG image before the checkbox with a :before pseudo-element with content.

        * UserInterface/Views/VisualStyleKeywordCheckbox.js:
        (WebInspector.VisualStyleKeywordCheckbox):
        Removed the SVG image before the checkbox.

        * UserInterface/Views/VisualStyleKeywordPicker.js:
        (WebInspector.VisualStyleKeywordPicker.prototype.get value):
        (WebInspector.VisualStyleKeywordPicker.prototype.set value):
        (WebInspector.VisualStyleKeywordPicker.prototype.set placeholder):
        (WebInspector.VisualStyleKeywordPicker.prototype.get synthesizedValue):
        (WebInspector.VisualStyleKeywordPicker.prototype._getValue):
        (WebInspector.VisualStyleKeywordPicker.prototype._setValue):
        (WebInspector.VisualStyleKeywordPicker.prototype._generateSynthesizedValue):
        (WebInspector.VisualStyleKeywordPicker.prototype._handleKeywordChanged):
        Due to a current bug (https://webkit.org/b/147064), you cannot extend ES6 getters/setters.  In order to work
        around this, a member function was added that performs the same action as the getter/setter, but can be extended.

        * UserInterface/Views/VisualStylePropertyEditorLink.css:
        (.visual-style-property-editor-link.linked > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon):

        * UserInterface/Views/VisualStyleRelativeNumberSlider.js:
        (WebInspector.VisualStyleRelativeNumberSlider):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype._resetSlider):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype._sliderChanged):

        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (.item.visual-style-selector-item > input[type="checkbox"]):
        (.item.visual-style-selector-item.selected > input[type="checkbox"]::before):
        (.item.visual-style-selector-item.modified > .icon):
        (.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title:focus):

        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
        Added another context menu item to show the source location for the selected rule.

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add visual editors for CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147576

        Added parent class for property editors in the Visual style
        details panel in the CSS sidebar.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/VisualStylePropertyCombiner.js: Added.
        (WebInspector.VisualStylePropertyCombiner):
        (WebInspector.VisualStylePropertyCombiner.prototype.get style):
        (WebInspector.VisualStylePropertyCombiner.prototype.get synthesizedValue):
        (WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):
        (WebInspector.VisualStylePropertyCombiner.prototype.update):
        (WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateCompatibleEditor):
        (WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText):
        (WebInspector.VisualStylePropertyCombiner.prototype.propertyMissing):
        (WebInspector.VisualStylePropertyCombiner.prototype.resetEditorValues):
        (WebInspector.VisualStylePropertyCombiner.prototype._markEditors):
        (WebInspector.VisualStylePropertyCombiner.prototype._handlePropertyEditorValueChanged):

        * UserInterface/Views/VisualStylePropertyEditor.css: Added.
        (.visual-style-property-container):
        (.visual-style-property-container > .visual-style-property-title):
        (.visual-style-property-container > .visual-style-property-title > .property-reference-info):
        (.visual-style-property-container.disabled > .visual-style-property-title > :not(.property-reference-info)):
        (.visual-style-property-container > .visual-style-property-value-container):
        (.visual-style-property-container.disabled > .visual-style-property-value-container):
        (.visual-style-property-container > .visual-style-property-value-container select):
        (.visual-style-property-container > .visual-style-property-value-container input):
        (.visual-style-property-container.disabled > .visual-style-property-value-container input):
        (.visual-style-property-container.layout-reversed > .visual-style-property-title):
        (.visual-style-property-container > .visual-style-property-value-container > .visual-style-special-property-placeholder):
        (.visual-style-property-info-popover):
        (.visual-style-property-info-popover > h3):

        * UserInterface/Views/VisualStylePropertyEditor.js: Added.
        (WebInspector.VisualStylePropertyEditor.canonicalizeValues):
        (WebInspector.VisualStylePropertyEditor):
        (WebInspector.VisualStylePropertyEditor.prototype.get element):
        (WebInspector.VisualStylePropertyEditor.prototype.get style):
        (WebInspector.VisualStylePropertyEditor.prototype.get value):
        (WebInspector.VisualStylePropertyEditor.prototype.set value):
        (WebInspector.VisualStylePropertyEditor.prototype.get units):
        (WebInspector.VisualStylePropertyEditor.prototype.set units):
        (WebInspector.VisualStylePropertyEditor.prototype.get placeholder):
        (WebInspector.VisualStylePropertyEditor.prototype.set placeholder):
        (WebInspector.VisualStylePropertyEditor.prototype.get synthesizedValue):
        (WebInspector.VisualStylePropertyEditor.prototype.set suppressStyleTextUpdate):
        (WebInspector.VisualStylePropertyEditor.prototype.set masterProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.get masterProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.set optionalProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.get optionalProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.set colorProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.get colorProperty):
        (WebInspector.VisualStylePropertyEditor.prototype.get propertyReferenceName):
        (WebInspector.VisualStylePropertyEditor.prototype.set propertyReferenceName):
        (WebInspector.VisualStylePropertyEditor.prototype.set disabled):
        (WebInspector.VisualStylePropertyEditor.prototype.get disabled):
        (WebInspector.VisualStylePropertyEditor.prototype.update):
        (WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
        (WebInspector.VisualStylePropertyEditor.prototype.resetEditorValues):
        (WebInspector.VisualStylePropertyEditor.prototype.modifyPropertyText):
        (WebInspector.VisualStylePropertyEditor.prototype.getValuesFromText):
        (WebInspector.VisualStylePropertyEditor.prototype.propertyMissing):
        (WebInspector.VisualStylePropertyEditor.prototype.valueIsCompatible):
        (WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedKeyword):
        (WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedUnit):
        (WebInspector.VisualStylePropertyEditor.prototype.get contentElement):
        (WebInspector.VisualStylePropertyEditor.prototype.get specialPropertyPlaceholderElement):
        (WebInspector.VisualStylePropertyEditor.prototype.parseValue):
        (WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedKeyword):
        (WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedUnit):
        (WebInspector.VisualStylePropertyEditor.prototype._canonicalizedKeywordForKey):
        (WebInspector.VisualStylePropertyEditor.prototype._keyForKeyword):
        (WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
        (WebInspector.VisualStylePropertyEditor.prototype._replaceShorthandPropertyWithLonghandProperties):
        (WebInspector.VisualStylePropertyEditor.prototype._titleElementPrepareForClick):
        (WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOver):
        (WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOut):
        (WebInspector.VisualStylePropertyEditor.prototype._titleElementClick):
        (WebInspector.VisualStylePropertyEditor.prototype._hasMultipleConflictingValues):
        (WebInspector.VisualStylePropertyEditor.prototype._showPropertyInfoPopover):
        (WebInspector.VisualStylePropertyEditor.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStyleTabbedPropertiesRow.css: Added.
        (.visual-style-tabbed-properties-row ~ :not(.visible)):
        (.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container):
        (.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button):
        (.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button.selected):
        (.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button:not(.selected):hover):

        * UserInterface/Views/VisualStyleTabbedPropertiesRow.js: Added.
        (WebInspector.VisualStyleTabbedPropertiesRow):
        (WebInspector.VisualStyleTabbedPropertiesRow.prototype._handleButtonClicked):

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add Visual editors for CSS properties with comma separated values
        https://bugs.webkit.org/show_bug.cgi?id=147578

        Reviewed by Timothy Hatcher.

        Displays comma separated CSS property values as a tree outline list.

        * UserInterface/Images/Minus.svg: Added.
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype.get selectedTreeElementIndex):
        (WebInspector.TreeOutline):

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css: Added.
        (.visual-style-property-container.comma-separated-keyword-editor):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:nth-child(odd)):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.selected):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > :matches(button, img)):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.selected:not(.editor-hidden) > .titles > *):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item > .visual-style-comma-separated-keyword-item-editor):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.editor-hidden > .visual-style-comma-separated-keyword-item-editor):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:not(.no-value) > .titles > .subtitle):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > div):
        (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > .visual-style-remove-comma-separated-keyword):

        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js: Added.
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set selectedTreeElementValue):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get value):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set value):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get synthesizedValue):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeElementSelected):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeItemIsEmpty):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addEmptyCommaSeparatedKeyword):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeSelectedCommaSeparatedKeyword):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeEmptyCommaSeparatedKeywords):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addCommaSeparatedKeyword):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeCommaSeparatedKeyword):
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._createNewTreeElement):

        * UserInterface/Views/VisualStyleFontFamilyListEditor.js: Added.
        (WebInspector.VisualStyleFontFamilyListEditor):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype.visualStyleCompletionsControllerCustomizeCompletionElement):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype.get hasCompletions):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype.set completions):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._modifyCommaSeparatedKeyword):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._addCommaSeparatedKeyword):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._addEmptyCommaSeparatedKeyword):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._completionClicked):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeyDown):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeywordChanged):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._hideCompletions):
        (WebInspector.VisualStyleFontFamilyListEditor.prototype._createNewTreeElement):

        * UserInterface/Views/VisualStyleFontFamilyTreeElement.js: Added.
        (WebInspector.VisualStyleFontFamilyTreeElement):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.editorBounds):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.showKeywordEditor):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.hideKeywordEditor):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.get keywordEditorHidden):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.onattach):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype.ondeselect):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyDown):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyUp):
        (WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorBlurred):

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add autocomplete controller for Visual property editors
        https://bugs.webkit.org/show_bug.cgi?id=147579

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/VisualStyleCompletionsController.js: Added.
        (WebInspector.VisualStyleCompletionsController):
        Takes in a CSSCompletions and displays a list of suggestions based on a given prefix in a popover.
        (WebInspector.VisualStyleCompletionsController.prototype.get visible):
        (WebInspector.VisualStyleCompletionsController.prototype.get hasCompletions):
        (WebInspector.VisualStyleCompletionsController.prototype.get currentCompletion):
        (WebInspector.VisualStyleCompletionsController.prototype.set completions):
        (WebInspector.VisualStyleCompletionsController.prototype.completionSuggestionsViewCustomizeCompletionElement):
        (WebInspector.VisualStyleCompletionsController.prototype.previous):
        (WebInspector.VisualStyleCompletionsController.prototype.next):
        (WebInspector.VisualStyleCompletionsController.prototype.update):
        (WebInspector.VisualStyleCompletionsController.prototype.show):
        (WebInspector.VisualStyleCompletionsController.prototype.hide):

        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.forProperty):
        Make sure that the cssNameCompletions exist before trying to add them.

        * UserInterface/Views/CompletionSuggestionsView.js:
        (WebInspector.CompletionSuggestionsView.prototype.update):
        Allow the delegate to modify the newly created completion suggestion item.

2015-08-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add a visual editor for timing functions
        https://bugs.webkit.org/show_bug.cgi?id=148022

        Reviewed by Timothy Hatcher.

        Uses the existing bezier editor and the Visual keyword picker to make an editor for timing functions.

        * UserInterface/Views/VisualStyleTimingEditor.css: Added.
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container):
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container > .keyword-picker-select):
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor):
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:hover):
        (.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:active):

        * UserInterface/Views/VisualStyleTimingEditor.js: Added.
        (WebInspector.VisualStyleTimingEditor):
        (WebInspector.VisualStyleTimingEditor.prototype.parseValue):
        (WebInspector.VisualStyleTimingEditor.prototype.get bezierValue):
        (WebInspector.VisualStyleTimingEditor.prototype.set bezierValue):
        (WebInspector.VisualStyleTimingEditor.prototype._getValue):
        (WebInspector.VisualStyleTimingEditor.prototype._setValue):
        (WebInspector.VisualStyleTimingEditor.prototype._generateSynthesizedValue):
        (WebInspector.VisualStyleTimingEditor.prototype._bezierMarkerClicked):
        (WebInspector.VisualStyleTimingEditor.prototype._handleKeywordChanged):

2015-08-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Can't resize split console when window is too narrow
        https://bugs.webkit.org/show_bug.cgi?id=147924

        Make some items inside of the navigation bar click-through to incsease
        the draggable area.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Main.css:
        (#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-search-bar, .log-scope-bar)):
        (#split-content-browser > .navigation-bar > :matches(.log-search-bar, .log-scope-bar) > :matches(li, input)):

2015-08-13  Devin Rousso  <drousso@apple.com>

        Web Inspector: Flash DOM node attribute on change
        https://bugs.webkit.org/show_bug.cgi?id=147973

        Reviewed by Timothy Hatcher.

        Whenever an attribute on a DOM node changes, flash the attribute value.
        If that value doesn't exist, flash the attribute name instead.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement):
        (WebInspector.DOMTreeElement.prototype.nodeChanged):
        (WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
        If the node has been marked with a general change, mark the attribute element for animation.
        (WebInspector.DOMTreeElement.prototype._markNodeChanged.animationEnd):
        (WebInspector.DOMTreeElement.prototype._markNodeChanged):
        Adds a class to the given element that applies a simple background flash animation.
        (WebInspector.DOMTreeElement.prototype._fireDidChange):
        Add the animation class once all building of the represented DOM object for that node is done.

        * UserInterface/Views/DOMTreeOutline.css:
        (@keyframes node-state-changed):
        Applies a semi-transparent background that fades to default.
        (.node-state-changed):

        * UserInterface/Views/DOMTreeUpdater.js:
        (WebInspector.DOMTreeUpdater.prototype._attributesUpdated):
        Now passes along the name of the modified attribute.
        (WebInspector.DOMTreeUpdater.prototype._updateModifiedNodes):
        If the modified node object has an attribute member, mark the node as being generally changed.

2015-08-13  Devin Rousso  <drousso@apple.com>

        REGRESSION (r184000): Web Inspector: Stripped whitespace after editing CSS in Styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=145679

        Reviewed by Timothy Hatcher.

        The formatter will now calculate the number of beginning spaces before the first line in a rule
        and duplicate them in front of every other line.  If there is no new line at the beginning or are
        no spaces, assume 4 spaces and a new line for each property.
        Also cleaned up the code for _resetContent a bit.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.set get this):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.get this):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent):

2015-08-13  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Skip rendering frame records without children
        https://bugs.webkit.org/show_bug.cgi?id=147993

        Reviewed by Reviewed by Joseph Pecoraro.

        This became an issue for frames which include an IndexedDB "success" event. This caused the
        payload to pass the "has children" test, but resulted in model objects with no child records.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.eventRecorded):
        Fixed record type check and moved rendering frame index assignment.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord):
        (WebInspector.RenderingFrameTimelineRecord.prototype.setupFrameIndex):
        Frame index is now set externally, and can only be set once.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype._renderingFrameTimelineRecordAdded):
        Added assertion.

2015-08-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Watch Expressions
        https://bugs.webkit.org/show_bug.cgi?id=147904

        Reviewed by Brian Burg.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        A RemoteObject's description string is optional, but we always
        assume it exists and is a string, so default to the empty string.

        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow.evalCallback):
        Include the object group in the DidEvaluate event.

        (WebInspector.RemoteObject.fakeRemoteObject):
        (WebInspector.RemoteObject.prototype.getDisplayablePropertyDescriptors):
        (WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties.get return):
        (WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties):
        (WebInspector.RemoteObject.prototype._isFakeObject):
        (WebInspector.RemoteObject.prototype._getPropertyDescriptors):
        (WebInspector.RemoteObject.prototype._deprecatedGetProperties):
        Support a fake RemoteObject. We use this fake RemoteObject to
        back a ObjectTreeView where we add custom Properties which are of the form
        "Expressions => RemoteObject" instead of "Object Property => RemoteObject".
        Ensure a fake remote object is not used in unexpected ways.

        * UserInterface/Views/Popover.js:
        (WebInspector.Popover.prototype.update):
        Default a popover update to animate, but allow not animating.

        (WebInspector.Popover.prototype.handleEvent):
        Vend a class that other content can use so that the Popover won't
        dismiss if content with that class is scrolled. For example, a
        completions list may be showing over a popover, if that scrolls
        it should not dismiss the popover.

        * UserInterface/Views/CompletionSuggestionsView.js:
        (WebInspector.CompletionSuggestionsView):
        Adopt the Popover ignore class so a popover won't dismiss if the
        completion suggestions view is scrolled.

        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement.get return):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
        Allow modifying the context menu on an ObjectTreeView by looking for a delegate
        on the TreeOutline.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.css: Added.
        (.details-section.watch-expressions .options > *):
        (.details-section.watch-expressions .options > *:active):
        (.details-section.watch-expressions .options > .watch-expression-add):
        (.details-section.watch-expressions .options > .watch-expression-clear):
        (.details-section.watch-expressions .options > .watch-expression-refresh):
        (.popover .watch-expression):
        (.watch-expression-editor):
        (.watch-expression-editor > .CodeMirror):
        (.watch-expression-editor > .CodeMirror-scroll):
        Styles for the new Watch Expressions section, buttons, popover, and editor.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype.inspect):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype.refresh):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
        Because we update the UI after a delay, to allow ObjectTreeView's to asynchronously
        expand and fetch their list of properties, we convert updating the watch expression
        and call frame sections asynchronously and return a promise. This lets us visually
        update the UI after both sections have updated.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpression):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._removeWatchExpression):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._clearAllWatchExpressions):
        Modify the saved list of watch expressions.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.presentPopoverOverTargetElement):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.this._codeMirror.addKeyMap):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype.willDismissPopover):
        Handle presenting and dismissing the add watch expression popover.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._refreshAllWatchExpressionsButtonClicked):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._clearAllWatchExpressionsButtonClicked):
        Other button handlers.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._mainResourceDidChange):
        Refresh the sidebar on navigation, as the watch expressions may change value (`location.href`).

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeElementAddContextMenuItems):
        Add our own context menu items to watch expression ObjectTreeView tree elements to
        allow removing a watch expression.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._propertyPathIdentifierForTreeElement):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeAddHandler):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeExpandHandler):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeCollapseHandler):
        Convert code to use `let`.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        Misc. changes.

2015-08-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: A {Map, WeakMap, Set, WeakSet} object contains itself will hang the console
        https://bugs.webkit.org/show_bug.cgi?id=147966

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        For empty overflow previews, don't show ", ..." if we didn't show any
        values; just show "..." in these cases.

2015-08-13  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Hide child rows for filtered tasks in the Rendering Frames data grid
        https://bugs.webkit.org/show_bug.cgi?id=147960

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord.taskTypeForTimelineRecord):
        New static method for mapping TimelineRecords to rendering frame tasks.
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask):
        Refactored to use taskTypeForTimelineRecord.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        Task filtering is applied to children of the frame record only. Parent frame
        record is hidden by default, and visible by virtue of having unfiltered children.

2015-08-13  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clearing frames timeline doesn't remove current time marker
        https://bugs.webkit.org/show_bug.cgi?id=147650

        Reviewed by Timothy Hatcher.

        The rendering frames timeline offsets all markers by 1px to align them on frame
        boundaries, which causes the current time marker to be visible even with left: 0px.
        We can exclude the current time marker without it being noticable during recording.

        * UserInterface/Views/TimelineOverview.css:

2015-08-13  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r188325): Web Inspector: Fix vertical spacing in CodeMirror
        https://bugs.webkit.org/show_bug.cgi?id=147971

        r188325 inceased line-height by 2px. Remove top and bottom 1px padding
        to compensate for line-height changes.

        In the feature we may highlight the backgroud of text tokens (e.g. for the
        heatmap profiler) so we would want to get rid of the gaps between the lines
        (caused by the paddind) regardless of this regression.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror pre):

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

        Web Inspector: Sometimes CSS resources don't update after editing via Styles panel
        https://bugs.webkit.org/show_bug.cgi?id=143244

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/SourceCode.js:
        (WebInspector.SourceCode.prototype._processContent):
        This code is brittle and we should move off of putting the
        possibly stale content in the Promise result.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype._contentAvailable):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._contentAvailable):
        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.requestScriptSyntaxTree):
        Use the current source code's content.

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

        Web Inspector: Fix Poor Class Names
        https://bugs.webkit.org/show_bug.cgi?id=147958

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ClusterContentView.js:
        * UserInterface/Views/ResourceContentView.js:

2015-08-12  Devin Rousso  <drousso@apple.com>

        Web Inspector: Opening the Elements tab without a selected sidebar panel causes a crash
        https://bugs.webkit.org/show_bug.cgi?id=147965

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        If the saved setting for the selectedPanel does not exist, default to the rules panel.

        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._switchPanels):
        Only save the new navigationItem info if the selectedPanel exists.

2015-08-12  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove clamp and adopt Number.constrain
        https://bugs.webkit.org/show_bug.cgi?id=147952

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js:
        Removed clamp function.

        * UserInterface/Views/BezierEditor.js:
        (WebInspector.BezierEditor.prototype._updateControlPointsForMouseEvent):
        * UserInterface/Views/ProfileNodeDataGridNode.js:
        (WebInspector.ProfileNodeDataGridNode.prototype.updateRangeTimes):
        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.updateRangeTimes):
        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._updateSelection):
        Replaced instances of clamp with Number.constrain.

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

        Web Inspector: DOM Node should have context menu to scroll it into view on the inspected page
        https://bugs.webkit.org/show_bug.cgi?id=147913

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._updateChildren.set continue):
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        Add a context menu item to scroll into view for element nodes.

        (WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode.scrollIntoView):
        (WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode):
        (WebInspector.DOMTreeElement.prototype._scrollIntoView):
        Call scrollIntoViewIfNeeded on the real Node.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.populateContextMenu):
        Remove unused parameter.

        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        Add context menu for Nodes in ObjectTrees.

2015-08-12  Dan Bernstein  <mitz@apple.com>

        Removed the executable bit from non-executable source.

        * UserInterface/External/CodeMirror/LICENSE: Removed property svn:executable.
        * UserInterface/External/CodeMirror/clojure.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/closebrackets.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/codemirror.css: Removed property svn:executable.
        * UserInterface/External/CodeMirror/codemirror.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/coffeescript.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/comment.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/css.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/htmlmixed.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/javascript.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/livescript.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/matchbrackets.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/overlay.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/placeholder.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/runmode.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/sass.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/searchcursor.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/sql.js: Removed property svn:executable.
        * UserInterface/External/CodeMirror/xml.js: Removed property svn:executable.

2015-08-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TimelineView data not cleared when recording is reset
        https://bugs.webkit.org/show_bug.cgi?id=147916

        Reviewed by Timothy Hatcher.

        Each derived timeline view maintains a separate array of timeline records. These weren't
        cleared on reset, so switching to a timeline view after clearing the recording caused
        the view to populate its tree outline.

        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.set columns):
        (WebInspector.LayoutTimelineView):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.set columns):
        (WebInspector.NetworkTimelineView):
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype.reset):
        (WebInspector.OverviewTimelineView.prototype._processPendingRepresentedObjects):
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.reset):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype.reset):

2015-08-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Dragging a timeline ruler handle when both handles clamped is broken
        https://bugs.webkit.org/show_bug.cgi?id=147912

        Reviewed by Timothy Hatcher.

        When clamped handles overlap, the handle nearest in time to the ruler's edge should be visible and
        clickable, and the other should be hidden. This change ensures that clicking and dragging a ruler
        handle to modify a selection outside the visible area works correctly.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
        Style adjustment for rendering frames, which offsets the right handle by 5px instead of 4px.
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):
        Style adjustment for rendering frames, which offsets the right shaded area by 1px.
        (.timeline-overview.frames > .timeline-ruler > .selection-handle.right): Deleted.
        (.timeline-overview.frames > .timeline-ruler > .shaded-area.right): Deleted.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler.both-handles-clamped > .selection-handle):
        Updated handle style when both are clamped.
        (.timeline-ruler > .selection-handle.clamped.hidden):
        Hide the clamped handle that is beneath the other clamped handle.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._updateSelection):


2015-08-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Disabling attribute styles should not be possible
        https://bugs.webkit.org/show_bug.cgi?id=147922

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        Increases the specificity of the if statement that adds rule disable state toggling to the icon.

2015-08-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Update to CodeMirror 5.5 or later
        https://bugs.webkit.org/show_bug.cgi?id=147109

        Reviewed by Timothy Hatcher.

        Updated CodeMirror to version 5.5, as well as the extension files for CodeMirror
        that are currently used in WebInspector.

        * Localizations/en.lproj/localizedStrings.js:
        * Tools/PrettyPrinting/FormatterDebug.js:
        Added WebInspector namespace for formatters.

        * Tools/PrettyPrinting/index.html:
        Added WebInspector namespace for formatters.

        * 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/sass.js:
        * UserInterface/External/CodeMirror/searchcursor.js:
        * UserInterface/External/CodeMirror/sql.js:
        * UserInterface/External/CodeMirror/xml.js:
        * UserInterface/Views/CodeMirrorFormatters.js:
        Now uses the new token in CodeMirror for media query parenthesis.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror pre):
        Removed the additional vertical padding.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
        Clicking on the end of a line in a style will now correctly insert a new line.

        * UserInterface/Views/ComputedStyleDetailsPanel.css:
        (.details-section > .content > .group > .row .CodeMirror-code pre .go-to-arrow):
        The go-to arrow now has the proper dimensions.

        * UserInterface/Views/HoverMenu.css:
        (.hover-menu > img):
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.hover-menu.color > img):

2015-08-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add the ability to filter out tasks in the Rendering Frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=147389

        Reviewed by Timothy Hatcher.

        Added filtering by task type to the Rendering Frames timeline view. Legend item checkboxes
        in the timeline sidebar toggle filtering for the corresponding task. The "Other" category
        cannot be filtered, since all rendering frame records include some "other" time in addition to
        child records from at least one additional task type.

        A row is filtered (hidden) from the data grid when the corresponding rendering frame has no
        unfiltered child records.

        * UserInterface/Base/Main.js:
        (WebInspector._windowFocused):
        (WebInspector._windowBlurred):
        Added inactive style for docked window.

        * UserInterface/Views/ChartDetailsSectionRow.css:
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > .color-key):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > input[type=checkbox]):
        (body.window-inactive .details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > input[type=checkbox]):
        (.details-section > .content > .group > .row.chart > .defs-only):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label > .color-swatch): Deleted.
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label): Deleted.
        Switched to label elements, added checkbox styles, and updated color swatch style for non-checkbox items.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow):
        Added svg filter container and style sheet element.
        (WebInspector.ChartDetailsSectionRow.prototype.set data):
        (WebInspector.ChartDetailsSectionRow.prototype._createLegend.createGammaPrimitive):
        (WebInspector.ChartDetailsSectionRow.prototype._createLegend.createCheckboxFilterElement):
        Helper function to create an svg:filter to blend legend key color over the native checkbox element.
        Filter assumes grayscale input, and each checkbox requires a separate filter.
        (WebInspector.ChartDetailsSectionRow.prototype._createLegend):
        Creates legend items, svg filters, and checkbox style sheet.
        (WebInspector.ChartDetailsSectionRow.prototype._legendItemCheckboxValueChanged):
        Repackage and forward checkbox changed event.
        (WebInspector.ChartDetailsSectionRow.prototype._createLegendItem): Deleted.
        Logic moved to WebInspector.ChartDetailsSectionRow.prototype._createLegend.

        * UserInterface/Views/TimelineSidebarPanel.js:
        Added set of rendering frame task types against which tree elements can be filtered.
        (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        If filter is not empty, check ancestor rendering frame record for unfiltered data.
        (WebInspector.TimelineSidebarPanel.prototype._frameSelectionLegendItemChecked):
        Update task filter in response when legend items are checked/unchecked.

2015-08-11  Brent Fulgham  <bfulgham@apple.com>

        [Win] Switch Windows build to Visual Studio 2015
        https://bugs.webkit.org/show_bug.cgi?id=147887
        <rdar://problem/22235098>

        Reviewed by Alex Christensen.

        Update Visual Studio project file settings to use the current Visual
        Studio and compiler. Continue targeting binaries to run on our minimum
        supported configuration of Windows 7.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:

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

        Web Inspector: Agent commands do not actually return a promise when expected
        https://bugs.webkit.org/show_bug.cgi?id=138665

        Reviewed by Timothy Hatcher.

        This patch unifies the handling of different invocation and dispatch modes in the
        InspectorBackend protocol system. Command responses are dispatched to a provided
        callback function; if no function was provided, then the command returns a promise.

        Rather than awkwardly converting between promises and callbacks at invocation and
        response dispatch time, the backend now stores the callback or promise thunks and
        knows how to invoke each when the response comes. This mirrors how response handling
        works in ProtocolTestStub.js. InspectorBackend includes more machinery to support Agent
        objects and various debug flags.

        Performanace impact is expected to be negligible, because there are relatively
        few commands issued by the inspector frontend and returned promises are short-lived.

        Remove all uses of Command.prototype.promise, since it is no longer necessary.

        * UserInterface/Base/Test.js:
        (InspectorTest.reloadPage):
        * UserInterface/Controllers/ReplayManager.js:
        (WebInspector.ReplayManager.prototype.getSession.get var):
        (WebInspector.ReplayManager.getSegment.get var):
        * UserInterface/Models/ReplaySession.js:
        (WebInspector.ReplaySession.prototype.segmentsChanged):
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.requestContentFromBackend):
        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.requestContentFromBackend):
        * UserInterface/Models/SourceMapResource.js:
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend):
        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass):
        (InspectorBackendClass.prototype.dispatch):
        (InspectorBackendClass.prototype.runAfterPendingDispatches):
        (InspectorBackendClass.prototype._sendCommandToBackendWithCallback.set this):
        (InspectorBackendClass.set this):
        (InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
        (InspectorBackendClass.prototype._dispatchResponseToCallback):
        (InspectorBackendClass.prototype._dispatchResponseToPromise):
        (InspectorBackendClass.prototype._flushPendingScripts):
        (InspectorBackend.Command.prototype.invoke):
        (InspectorBackend.Command.prototype._invokeWithArguments):
        (InspectorBackendClass.prototype._willSendMessageToBackend.set return): Deleted.
        (InspectorBackendClass._dispatchCallback.get if): Deleted.
        (InspectorBackendClass.prototype._willSendMessageToBackend): Deleted.
        (InspectorBackendClass.prototype._invokeCommand): Deleted.
        (.callable): Deleted.
        (InspectorBackend.Command.create): Deleted.
        (InspectorBackend.Command.prototype.promise): Deleted.

2015-08-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Hovering over an element in the Elements tab should highlight the whole line
        https://bugs.webkit.org/show_bug.cgi?id=147855

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.hovered:not(.selected) .selection):
        Removed the horizontal positioning and border radius.

2015-08-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add numerical input and slider based Visual editors for CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147712

        Reviewed by Brian Burg.

        Added editors for CSS properties with numerical values for use in the Visual style
        details panel in the CSS sidebar, in the form of a combined select and input or an
        input range.  Also added optional visual linkages to sync values between multiple
        editors of this type.

        * UserInterface/Images/VisualStylePropertyLinked.svg: Added.
        * UserInterface/Images/VisualStylePropertyUnlinked.svg: Added.

        * UserInterface/Views/VisualStyleNumberInputBox.css: Added.
        (.visual-style-property-container > .visual-style-property-value-container.focused > .focus-ring):
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-keyword-select):
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-container):
        (.visual-style-property-container > .visual-style-property-value-container:not(.number-input-editable) > .number-input-container):
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-container > .number-input-value):
        (.visual-style-property-container > .visual-style-property-value-container > .number-input-container > span):

        * UserInterface/Views/VisualStyleNumberInputBox.js: Added.
        (WebInspector.VisualStyleNumberInputBox):
        (WebInspector.VisualStyleNumberInputBox.prototype.get value):
        (WebInspector.VisualStyleNumberInputBox.prototype.set value):
        (WebInspector.VisualStyleNumberInputBox.prototype.get units):
        (WebInspector.VisualStyleNumberInputBox.prototype.set units):
        (WebInspector.VisualStyleNumberInputBox.prototype.get placeholder):
        (WebInspector.VisualStyleNumberInputBox.prototype.set placeholder):
        (WebInspector.VisualStyleNumberInputBox.prototype.get synthesizedValue):
        (WebInspector.VisualStyleNumberInputBox.prototype.get numberInputEditable):
        (WebInspector.VisualStyleNumberInputBox.prototype.updateValueFromText):
        (WebInspector.VisualStyleNumberInputBox.prototype.parseValue):
        (WebInspector.VisualStyleNumberInputBox.prototype._keywordChanged):
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown.shiftValue):
        (WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown):
        (WebInspector.VisualStyleNumberInputBox.prototype._numberInputChanged):
        (WebInspector.VisualStyleNumberInputBox.prototype._keywordSelectMouseDown):
        (WebInspector.VisualStyleNumberInputBox.prototype._createValueOptions):
        (WebInspector.VisualStyleNumberInputBox.prototype._createUnitOptions):
        (WebInspector.VisualStyleNumberInputBox.prototype._addAdvancedUnits):
        (WebInspector.VisualStyleNumberInputBox.prototype._removeAdvancedUnits):
        (WebInspector.VisualStyleNumberInputBox.prototype._focusContentElement):
        (WebInspector.VisualStyleNumberInputBox.prototype._blurContentElement):
        (WebInspector.VisualStyleNumberInputBox.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStylePropertyEditorLink.css: Added.
        (.visual-style-property-editor-link):
        (.visual-style-property-editor-link.disabled):
        (.visual-style-property-editor-link.link-all):
        (.visual-style-property-editor-link.link-all.linked):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-icon:hover + .visual-style-property-editor-link-border.right):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.left):
        (.visual-style-property-editor-link.link-all.linked > .visual-style-property-editor-link-border.right):
        (.visual-style-property-editor-link.linked > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-border.left):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-border.right):
        (.visual-style-property-editor-link:not(.link-all) > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link:not(.link-all).linked > .visual-style-property-editor-link-border):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon svg .filled):
        (.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon svg .stroked):
        (.visual-style-property-editor-link:not(.link-all) > .visual-style-property-editor-link-icon):
        (.visual-style-property-editor-link.link-all > .visual-style-property-editor-link-icon):

        * UserInterface/Views/VisualStylePropertyEditorLink.js: Added.
        (WebInspector.VisualStylePropertyEditorLink):
        (WebInspector.VisualStylePropertyEditorLink.prototype.get element):
        (WebInspector.VisualStylePropertyEditorLink.prototype.set disabled):
        (WebInspector.VisualStylePropertyEditorLink.prototype._linkedPropertyValueChanged):
        (WebInspector.VisualStylePropertyEditorLink.prototype._updateLinkedEditors):
        (WebInspector.VisualStylePropertyEditorLink.prototype._iconMouseover):
        (WebInspector.VisualStylePropertyEditorLink.prototype._iconMouseout):
        (WebInspector.VisualStylePropertyEditorLink.prototype._iconClicked):

        * UserInterface/Views/VisualStyleRelativeNumberSlider.css: Added.
        (.visual-style-property-container.number-input-box.relative-number-slider > .visual-style-property-title):
        (.visual-style-property-container.number-input-box.relative-number-slider > .visual-style-property-value-container):
        (.visual-style-property-container.number-input-box.relative-number-slider.disabled > .relative-slider):
        (.visual-style-property-container.number-input-box.relative-number-slider > .visual-style-property-value-container.no-values.no-units):
        (.visual-style-property-container.number-input-box.relative-number-slider > .relative-slider):

        * UserInterface/Views/VisualStyleRelativeNumberSlider.js: Added.
        (WebInspector.VisualStyleRelativeNumberSlider):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype.set scale):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype.updateEditorValues):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype._resetSlider):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype._sliderChanged):
        (WebInspector.VisualStyleRelativeNumberSlider.prototype._numberInputChanged):

2015-08-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add different types of non-numerical Visual editors for CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147711

        Added editors for keyword based CSS properties for use in the Visual style
        details panel in the CSS sidebar.  Also added images for keyword values that
        are simple enough to be conveyed in an image.

        Reviewed by Brian Burg.

        * UserInterface/Images/ClearBoth.svg: Added.
        * UserInterface/Images/ClearLeft.svg: Added.
        * UserInterface/Images/ClearRight.svg: Added.
        * UserInterface/Images/FloatLeft.svg: Added.
        * UserInterface/Images/FloatRight.svg: Added.
        * UserInterface/Images/FontStyleItalic.svg: Added.
        * UserInterface/Images/FontStyleNormal.svg: Added.
        * UserInterface/Images/FontVariantSmallCaps.svg: Added.
        * UserInterface/Images/TextAlignCenter.svg: Added.
        * UserInterface/Images/TextAlignJustify.svg: Added.
        * UserInterface/Images/TextAlignLeft.svg: Added.
        * UserInterface/Images/TextAlignRight.svg: Added.
        * UserInterface/Images/TextDecorationLineThrough.svg: Added.
        * UserInterface/Images/TextDecorationOverline.svg: Added.
        * UserInterface/Images/TextDecorationUnderline.svg: Added.
        * UserInterface/Images/TextTransformCapitalize.svg: Added.
        * UserInterface/Images/TextTransformLowercase.svg: Added.
        * UserInterface/Images/TextTransformUppercase.svg: Added.
        * UserInterface/Images/VisualStyleNone.svg: Added.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
        Changed color swatch title.

        * UserInterface/Views/Slider.js:
        (WebInspector.Slider):
        (WebInspector.Slider.prototype.set value):
        (WebInspector.Slider.prototype.set knobX):
        (WebInspector.Slider.prototype.get maxX):
        If the given value is below 0, reset it to 0.
        (WebInspector.Slider.prototype._handleMousedown):
        (WebInspector.Slider.prototype._handleMousemove):
        (WebInspector.Slider.prototype.get _maxX): Deleted.

        * UserInterface/Views/VisualStyleColorPicker.css: Added.
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .visual-style-special-property-placeholder):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch:hover):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch:active):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch > span):
        (.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):
        (.visual-style-property-container.input-color-picker.multiple > .visual-style-property-value-container > .visual-style-multiple-property-placeholder):

        * UserInterface/Views/VisualStyleColorPicker.js: Added.
        (WebInspector.VisualStyleColorPicker):
        (WebInspector.VisualStyleColorPicker.prototype.get value):
        (WebInspector.VisualStyleColorPicker.prototype.set value):
        (WebInspector.VisualStyleColorPicker.prototype.get placeholder):
        (WebInspector.VisualStyleColorPicker.prototype.set placeholder):
        (WebInspector.VisualStyleColorPicker.prototype.get synthesizedValue):
        (WebInspector.VisualStyleColorPicker.prototype.get hasCompletions):
        (WebInspector.VisualStyleColorPicker.prototype.set completions):
        (WebInspector.VisualStyleColorPicker.prototype._updateColorSwatch):
        (WebInspector.VisualStyleColorPicker.prototype._colorSwatchClicked):
        (WebInspector.VisualStyleColorPicker.prototype._colorPickerColorDidChange):
        (WebInspector.VisualStyleColorPicker.prototype._completionClicked):
        (WebInspector.VisualStyleColorPicker.prototype._textInputKeyDown):
        (WebInspector.VisualStyleColorPicker.prototype._textInputKeyUp):
        (WebInspector.VisualStyleColorPicker.prototype._showCompletionsIfAble):
        (WebInspector.VisualStyleColorPicker.prototype._hideCompletions):
        (WebInspector.VisualStyleColorPicker.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStyleKeywordCheckbox.css: Added.
        (.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container):
        (.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > input):
        (.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > div):

        * UserInterface/Views/VisualStyleKeywordCheckbox.js: Added.
        (WebInspector.VisualStyleKeywordCheckbox):
        (WebInspector.VisualStyleKeywordCheckbox.prototype.get value):
        (WebInspector.VisualStyleKeywordCheckbox.prototype.set value):
        (WebInspector.VisualStyleKeywordCheckbox.prototype.get synthesizedValue):
        (WebInspector.VisualStyleKeywordCheckbox.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStyleKeywordIconList.css: Added.
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:first-child):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:last-child):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:matches(.computed, .selected)):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected svg .stroked):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected svg .filled):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:matches(.computed, .selected) + .keyword-icon):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon > div):
        (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:not(.selected) > div):

        * UserInterface/Views/VisualStyleKeywordIconList.js: Added.
        (WebInspector.VisualStyleKeywordIconList.dashToCapital):
        (WebInspector.VisualStyleKeywordIconList.createListItem):
        (WebInspector.VisualStyleKeywordIconList):
        (WebInspector.VisualStyleKeywordIconList.prototype.get value):
        (WebInspector.VisualStyleKeywordIconList.prototype.set value):
        (WebInspector.VisualStyleKeywordIconList.prototype.get synthesizedValue):
        (WebInspector.VisualStyleKeywordIconList.prototype._handleKeywordChanged):

        * UserInterface/Views/VisualStyleKeywordPicker.js: Added.
        (WebInspector.VisualStyleKeywordPicker):
        (WebInspector.VisualStyleKeywordPicker.prototype.get value):
        (WebInspector.VisualStyleKeywordPicker.prototype.set value):
        (WebInspector.VisualStyleKeywordPicker.prototype.set placeholder):
        (WebInspector.VisualStyleKeywordPicker.prototype.get synthesizedValue):
        (WebInspector.VisualStyleKeywordPicker.prototype.updateEditorValues):
        (WebInspector.VisualStyleKeywordPicker.prototype._handleKeywordChanged):
        (WebInspector.VisualStyleKeywordPicker.prototype._keywordSelectMouseDown):
        (WebInspector.VisualStyleKeywordPicker.prototype._addValues):
        (WebInspector.VisualStyleKeywordPicker.prototype._addAdvancedValues):
        (WebInspector.VisualStyleKeywordPicker.prototype._removeAdvancedValues):
        (WebInspector.VisualStyleKeywordPicker.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStylePropertyNameInput.js: Added.
        (WebInspector.VisualStylePropertyNameInput):
        (WebInspector.VisualStylePropertyNameInput.prototype.get value):
        (WebInspector.VisualStylePropertyNameInput.prototype.set value):
        (WebInspector.VisualStylePropertyNameInput.prototype.get synthesizedValue):
        (WebInspector.VisualStylePropertyNameInput.prototype.get hasCompletions):
        (WebInspector.VisualStylePropertyNameInput.prototype.set completions):
        (WebInspector.VisualStylePropertyNameInput.prototype._completionClicked):
        (WebInspector.VisualStylePropertyNameInput.prototype._inputKeyDown):
        (WebInspector.VisualStylePropertyNameInput.prototype._inputKeyUp):
        (WebInspector.VisualStylePropertyNameInput.prototype._hideCompletions):
        (WebInspector.VisualStylePropertyNameInput.prototype._toggleTabbingOfSelectableElements):

        * UserInterface/Views/VisualStyleURLInput.js: Added.
        (WebInspector.VisualStyleURLInput):
        (WebInspector.VisualStyleURLInput.prototype.set get value):
        (WebInspector.VisualStyleURLInput.prototype.parseValue):

        * UserInterface/Views/VisualStyleUnitSlider.css: Added.
        (.visual-style-property-container.unit-slider > .visual-style-property-value-container > .slider):
        (.visual-style-property-container.unit-slider > .visual-style-property-value-container > .slider > img):
        (.visual-style-property-container.unit-slider.opacity > .visual-style-property-value-container > .slider):

        * UserInterface/Views/VisualStyleUnitSlider.js: Added.
        (WebInspector.VisualStyleUnitSlider):
        (WebInspector.VisualStyleUnitSlider.prototype.set value):
        (WebInspector.VisualStyleUnitSlider.prototype.get value):
        (WebInspector.VisualStyleUnitSlider.prototype.get synthesizedValue):
        (WebInspector.VisualStyleUnitSlider.prototype.sliderValueDidChange):

2015-08-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add VisualStyleSelectorSection
        https://bugs.webkit.org/show_bug.cgi?id=147572

        Reviewed by Brian Burg.

        Adds a section to the new Visual style sidebar panel that contains the list of
        styles for the currently selected node.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.get mediaText):
        Returns a string containing the list of media queries.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WebInspector.CSSStyleDeclaration):
        (WebInspector.CSSStyleDeclaration.prototype.set text):
        (WebInspector.CSSStyleDeclaration.prototype.get modified):
        (WebInspector.CSSStyleDeclaration.prototype.resetText):
        (WebInspector.CSSStyleDeclaration.prototype.generateCSSRuleString):
        Generates a formatted string of the style text.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._handleContextMenuEvent):
        (WebInspector.CSSStyleDeclarationSection.prototype._generateCSSRuleString): Deleted.

        * UserInterface/Views/VisualStyleSelectorSection.css: Added.
        (.details-section.visual-style-selector-section > .header):
        (.details-section.visual-style-selector-section:not(.collapsed) > .header):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (.details-section.visual-style-selector-section > .header > .current-selector):
        (.visual-style-selector-section.details-section:not(.collapsed) > .header > .current-selector):
        (.details-section.visual-style-selector-section > .header > .current-selector > .icon):
        (.details-section.visual-style-selector-section > .header > .current-selector > span):
        (.details-section.visual-style-selector-section > .header > .controls):
        (.details-section.visual-style-selector-section.collapsed > .header > .controls):
        (.details-section.visual-style-selector-section > .header > .controls > .visual-style-selector-section-add-rule):
        (.details-section.visual-style-selector-section > .content > .selectors):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .visual-style-selector-item:nth-child(odd)):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > .icon):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > :matches(.disclosure-button, .icon)):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > .titles > .title):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider ~ .visual-style-selector-item:nth-child(even)):
        (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider ~ .visual-style-selector-item:nth-child(odd)):

        * UserInterface/Views/VisualStyleSelectorSection.js: Added.
        (WebInspector.VisualStyleSelectorSection):
        (WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
        (WebInspector.VisualStyleSelectorSection.prototype.update.uniqueOrderedRules):
        (WebInspector.VisualStyleSelectorSection.prototype.update.insertAllMatchingPseudoRules):
        (WebInspector.VisualStyleSelectorSection.prototype.update):
        (WebInspector.VisualStyleSelectorSection.prototype.currentStyle):
        (WebInspector.VisualStyleSelectorSection.prototype._selectorChanged):
        (WebInspector.VisualStyleSelectorSection.prototype._styleTextReset):
        (WebInspector.VisualStyleSelectorSection.prototype._addNewRule):
        (WebInspector.VisualStyleSelectorSection.prototype._treeElementCheckboxToggled):
        (WebInspector.VisualStyleSelectorSection.prototype._handleMouseOver):
        (WebInspector.VisualStyleSelectorSection.prototype._handleMouseOut):

        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (.item.visual-style-selector-item):
        (.item.visual-style-selector-item.selected):
        (.item.visual-style-selector-item > .disclosure-button):
        (.item.visual-style-selector-item > input[type="checkbox"]):
        (.item.visual-style-selector-item > .icon):
        (.item.visual-style-selector-item.modified > .icon):
        (.item.visual-style-selector-item.selector-invalid > .icon):
        (.item.visual-style-selector-item.selector-invalid > .titles > .title):
        (.item.visual-style-selector-item.selector-invalid > .titles > .title::before):
        (.item.visual-style-selector-item > .titles):
        (.item.visual-style-selector-item:not(.dom-element-icon) > .titles > .title):
        (.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title):
        (.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title:focus):
        (.item.visual-style-selector-item > .titles > .subtitle::before):
        (.item.visual-style-selector-item > .titles > .subtitle):

        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem):
        (WebInspector.VisualStyleSelectorTreeItem.prototype.get iconClassName):
        (WebInspector.VisualStyleSelectorTreeItem.prototype.get selectorText):
        (WebInspector.VisualStyleSelectorTreeItem.prototype.onattach):
        (WebInspector.VisualStyleSelectorTreeItem.prototype.ondeselect):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._highlightNodesWithSelector):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._hideDOMNodeHighlight):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleCheckboxChanged):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._updateCheckboxTitle):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleKeyDown):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._styleTextModified):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._selectorChanged):

2015-08-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: TDZ in ProbeSetDataGrid construction
        https://bugs.webkit.org/show_bug.cgi?id=147834

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ProbeSetDataGrid.js:
        (WebInspector.ProbeSetDataGrid):
        Do not use "this" before calling super.

2015-08-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Timeline ruler handle tooltip shows wrong value when handles overlap
        https://bugs.webkit.org/show_bug.cgi?id=147652

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._updateSelection):
        Now changes the title depending on whether the selection start/end is clamped.

2015-08-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't show "No Filter Results" when timeline is empty
        https://bugs.webkit.org/show_bug.cgi?id=147662

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.reset):
        Now hides the empty content placeholder on timeline clear.

2015-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Decrease the padding of each rule in the Rules sidebar to allow more content to show
        https://bugs.webkit.org/show_bug.cgi?id=147360

        Reviewed by Timothy Hatcher.

        Generally tightened the padding around each section in the rules panel, as well as the
        content inside each section. Also moved the new rule button to be next to the filter bar.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section):
        (.style-declaration-section.last-in-group):
        (.style-declaration-section.last-in-group + .style-declaration-section): Deleted.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content > .pseudo-classes):
        (.sidebar > .panel.details.css-style > .content + .options-container):
        (.sidebar > .panel.details.css-style > .content:not(.supports-new-rule, .has-filter-bar) + .options-container):
        (.sidebar > .panel.details.css-style > .content + .options-container > .new-rule):
        (.sidebar > .panel.details.css-style > .content + .options-container > .filter-bar):
        (.sidebar > .panel.details.css-style > .content:not(.has-filter-bar) + .options-container > .filter-bar):
        (.sidebar > .panel.details.css-style > .content.has-filter-bar + .filter-bar): Deleted.
        (.sidebar > .panel.details.css-style > .content:not(.has-filter-bar) + .filter-bar): Deleted.
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._switchPanels):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._newRuleButtonClicked):
        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules .label):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        (WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonClicked):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.addNewRuleButton): Deleted.
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh): Deleted.
        (WebInspector.RulesStyleDetailsPanel.prototype._newRuleClicked): Deleted.

2015-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't include zero-width space into a copied text from the console
        https://bugs.webkit.org/show_bug.cgi?id=147767

        Reviewed by Timothy Hatcher.

        Now removes work break characters in generated javascript text when copying
        to the clipboard.  Also replaced var with let in the modified functions.

        * UserInterface/Views/ConsoleCommandView.js:
        (WebInspector.ConsoleCommandView.prototype.toClipboardString):
        (WebInspector.ConsoleCommandView):
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype.toClipboardString):

2015-08-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Simplify OS-specific CSS class names
        https://bugs.webkit.org/show_bug.cgi?id=147794

        Replace "body:not(.el-capitan)" with ".legacy-mac".
        Replace "body.el-capitan" with ".latest-mac".

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        * UserInterface/Views/Toolbar.css:
        (body.legacy-mac .toolbar .dashboard-container):
        (body.legacy-mac .toolbar .search-bar > input[type="search"]):
        (body.legacy-mac .toolbar .search-bar > input[type="search"]:focus):
        (body.legacy-mac .toolbar .item.button:active):
        (body.window-inactive.legacy-mac .toolbar .dashboard-container):
        (body.latest-mac .toolbar .dashboard-container):
        (body.latest-mac .toolbar .search-bar > input[type="search"]):
        (body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (body.latest-mac .toolbar .item.button:active):
        (body.latest-mac.window-inactive .toolbar .dashboard-container):
        (body:not(.el-capitan) .toolbar .dashboard-container): Deleted.
        (body:not(.el-capitan) .toolbar .search-bar > input[type="search"]): Deleted.
        (body:not(.el-capitan) .toolbar .search-bar > input[type="search"]:focus): Deleted.
        (body:not(.el-capitan) .toolbar .item.button:active): Deleted.
        (body.window-inactive:not(.el-capitan) .toolbar .dashboard-container): Deleted.
        (body.el-capitan .toolbar .dashboard-container): Deleted.
        (body.el-capitan .toolbar .search-bar > input[type="search"]): Deleted.
        (body.el-capitan .toolbar .search-bar > input[type="search"]:focus): Deleted.
        (body.el-capitan .toolbar .item.button:active): Deleted.
        (body.el-capitan.window-inactive .toolbar .dashboard-container): Deleted.

2015-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Option+Up/Down arrow keys should increment/decrement numbers in HTML and SVG attributes
        https://bugs.webkit.org/show_bug.cgi?id=147317

        Reviewed by Timothy Hatcher.

        If the value under the cursor in an HTML element attribute is a number, pressing alt and
        up/down will increment/decrement the number value and apply that change to the element.

        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow.prototype._alteredFloatNumber):
        (WebInspector.BoxModelDetailsSectionRow.prototype._handleKeyDown):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._startEditingAttribute):
        (WebInspector.DOMTreeElement.prototype._attributeEditingCommitted):
        (WebInspector.DOMTreeElement.prototype._attributeNumberEditingCommitted):
        * UserInterface/Views/EditingSupport.js:
        (WebInspector.EditingConfig.prototype.setNumberCommitHandler):
        (WebInspector.startEditing.defaultFinishHandler):
        (WebInspector.startEditing.handleEditingResult):

2015-08-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Move the Metrics style sidebar panel into Computed
        https://bugs.webkit.org/show_bug.cgi?id=147715

        Reviewed by Timothy Hatcher.

        Deleted the Metrics sidebar panel and moved its contents into the Computed sidebar panel.
        In addition, not hovering over the Metrics section will display the colors of each box.

        * UserInterface/Main.html:
        * UserInterface/Views/BoxModelDetailsSectionRow.css:
        (.details-section .row.box-model :matches(.position, .margin, .border, .padding, .content)):
        (.details-section .row.box-model .position):
        (.details-section .row.box-model .margin):
        (.details-section .row.box-model .border):
        (.details-section .row.box-model .padding):
        (.details-section .row.box-model :matches(.content span, .top, .right, .bottom, .left)):
        (.details-section .row.box-model :matches(.right, .left)):
        (.details-section .row.box-model .content): Deleted.
        (.details-section .row.box-model .content span): Deleted.
        (.details-section .row.box-model .left): Deleted.
        (.details-section .row.box-model .right): Deleted.
        (.details-section .row.box-model .top): Deleted.
        (.details-section .row.box-model .bottom): Deleted.

        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow.prototype._highlightDOMNode):
        If no metric box is hovered, apply a class to the entire section.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        Removed the usage of MetricsStyleDetailsPanel.

        * UserInterface/Views/ComputedStyleDetailsPanel.css:
        (.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
        Give the metrics section in the Computed panel a white background.

        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel):
        (WebInspector.ComputedStyleDetailsPanel.prototype.refresh):
        Don't refresh the content unless the change is significant (without this, you cannot edit
        metrics values using the arrow keys).

        * UserInterface/Views/MetricsStyleDetailsPanel.js: Removed.

2015-08-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Bezier curve visual editor
        https://bugs.webkit.org/show_bug.cgi?id=134501

        Reviewed by Timothy Hatcher.

        Added a visual Cubic Bezier curve editor that is usable in both
        the CSS sidebar and the resources panel.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/DOMUtilities.js:
        (createSVGElement):
        * UserInterface/Controllers/CodeMirrorBezierEditingController.js:
        (WebInspector.CodeMirrorBezierEditingController):
        (WebInspector.CodeMirrorBezierEditingController.prototype.get initialValue):
        (WebInspector.CodeMirrorBezierEditingController.prototype.get cssClassName):
        (WebInspector.CodeMirrorBezierEditingController.prototype.popoverWillPresent):
        (WebInspector.CodeMirrorBezierEditingController.prototype.popoverDidPresent):
        (WebInspector.CodeMirrorBezierEditingController.prototype._bezierEditorBezierChanged):
        * UserInterface/Images/CubicBezier.svg: Added.
        * UserInterface/Main.html:
        * UserInterface/Models/Geometry.js:
        (WebInspector.Point.prototype.distance):
        (WebInspector.Point):
        (WebInspector.CubicBezier):
        (WebInspector.CubicBezier.fromPoints):
        (WebInspector.CubicBezier.fromString):
        (WebInspector.CubicBezier.prototype.get inPoint):
        (WebInspector.CubicBezier.prototype.get outPoint):
        (WebInspector.CubicBezier.prototype.copy):
        (WebInspector.CubicBezier.prototype.toString):
        (WebInspector.CubicBezier.prototype.solve):
        (WebInspector.CubicBezier.prototype._sampleCurveX):
        (WebInspector.CubicBezier.prototype._sampleCurveY):
        (WebInspector.CubicBezier.prototype._sampleCurveDerivativeX):
        (WebInspector.CubicBezier.prototype._solveCurveX):
        * UserInterface/Models/TextMarker.js:
        * UserInterface/Models/UnitBezier.js: Removed.
        * UserInterface/Views/BezierEditor.css: Added.
        (.bezier-editor):
        (.bezier-editor > .bezier-preview):
        (.bezier-editor > .bezier-preview > div):
        (.bezier-editor > .bezier-preview-timing):
        (.bezier-editor > .bezier-preview-timing.animate):
        (.bezier-editor > .bezier-container):
        (@keyframes bezierPreview):
        (.bezier-editor > .bezier-container):
        (.bezier-editor > .bezier-container .linear-curve):
        (.bezier-editor > .bezier-container .bezier-curve):
        (.bezier-editor > .bezier-container .control-line):
        (.bezier-editor > .bezier-container .control-handle):
        * UserInterface/Views/BezierEditor.js: Added.
        (WebInspector.BezierEditor.createControl):
        (WebInspector.BezierEditor):
        (WebInspector.BezierEditor.prototype.get element):
        (WebInspector.BezierEditor.prototype.set bezier):
        (WebInspector.BezierEditor.prototype.get bezier):
        (WebInspector.BezierEditor.prototype.handleEvent):
        (WebInspector.BezierEditor.prototype._handleMousedown):
        (WebInspector.BezierEditor.prototype._handleMousemove):
        (WebInspector.BezierEditor.prototype._handleMouseup):
        (WebInspector.BezierEditor.prototype._updateControlPointsForMouseEvent):
        (WebInspector.BezierEditor.prototype._updateValue.round):
        (WebInspector.BezierEditor.prototype._updateValue):
        (WebInspector.BezierEditor.prototype._updateBezier):
        (WebInspector.BezierEditor.prototype._updateControl):
        (WebInspector.BezierEditor.prototype._triggerPreviewAnimation):
        (WebInspector.BezierEditor.prototype._resetPreviewAnimation):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .cubic-bezier-marker):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .cubic-bezier-marker:hover):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .cubic-bezier-marker:active):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.didDismissPopover):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._contentChanged):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createBezierEditors.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createBezierEditors):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._commentProperty.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._commentProperty):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._uncommentRange.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._uncommentRange):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._cubicBezierMarkerClicked.updateCodeMirror.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._cubicBezierMarkerClicked.updateCodeMirror):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._cubicBezierMarkerClicked):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent):
        * UserInterface/Views/CodeMirrorAdditions.js:
        * UserInterface/Views/CodeMirrorTextMarkers.js: Added.
        (createCodeMirrorTextMarkers):
        (createCodeMirrorColorTextMarkers):
        (createCodeMirrorGradientTextMarkers):
        (createCodeMirrorCubicBezierTextMarkers):
        * UserInterface/Views/Popover.js:
        (WebInspector.Popover.prototype._animateFrame):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
        (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.createColorMarkers):
        (WebInspector.TextEditor.prototype.createGradientMarkers):
        (WebInspector.TextEditor.prototype.createCubicBezierMarkers):
        (WebInspector.TextEditor.prototype.editingControllerForMarker):

2015-08-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Logging error objects should have a better UI
        https://bugs.webkit.org/show_bug.cgi?id=143853

        Previously, an error object looked like any other object, which wasn't very useful.
        Source links couldn't be clicked and stacktraces were unreadable.

        Unify console.trace, caught and uncaught exceptions. The following examples use
        the same StaceTraceView:
        - ({}).x.y
        - try { ({}).x.y } catch (e) { console.log(e); }
        - console.trace()

        Reviewed by Brian Burg.

        * UserInterface/Main.html:
        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame.fromPayload):
        (WebInspector.CallFrame):
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptorsAsObject):
        * UserInterface/Test.html:
        * UserInterface/Views/CallFrameView.css:
        (.call-frame .separator):
        (.call-frame .subtitle .source-link): Deleted.
        (.call-frame:focus .subtitle .source-link): Deleted.
        (.call-frame .subtitle:empty): Deleted.
        (.call-frame .subtitle): Deleted.
        * UserInterface/Views/CallFrameView.js:
        (WebInspector.CallFrameView):
        - Start usind CallFrameView in stacktraces.
        - Introduce showFunctionName optional argument. In stacktraces anonymous functions
        are shown as "(anonymous function)" but in console message location
        links (the ones on the right side of a console message) we omit them.
        - Dash was a pseudo-element and it couldn't be copied to the clipboard.
        Make it an actual HTML element.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message-location.call-frame):
        (.console-message-location.call-frame > .title):
        (.console-message-location.call-frame > .subtitle > .source-link):
        Since .call-frame rules are now used in stacktraces, move console message
        specific rules from CallFrameView.css to ConsoleMessageView.css.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        (WebInspector.ConsoleMessageView.prototype._appendStackTrace):
        (WebInspector.ConsoleMessageView.prototype._formatParameter):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsError): Added.
        Format errors differently from other objects.

        * UserInterface/Views/ErrorObjectView.css: Added.
        (.error-object::before):
        (.error-object.expanded::before):
        (.error-object-link-container):
        (.error-object.expanded > .formatted-error > .error-object-link-container):
        (.error-object:not(.expanded) .error-object-outline):
        (.error-object-outline):
        * UserInterface/Views/ErrorObjectView.js: Added.
        (WebInspector.ErrorObjectView):
        (WebInspector.ErrorObjectView.parseStackTrace):
        (WebInspector.ErrorObjectView.makeSourceLinkWithPrefix):
        (WebInspector.ErrorObjectView.prototype.get object):
        (WebInspector.ErrorObjectView.prototype.get element):
        (WebInspector.ErrorObjectView.prototype.get treeOutline):
        (WebInspector.ErrorObjectView.prototype.get expanded):
        (WebInspector.ErrorObjectView.prototype.update):
        (WebInspector.ErrorObjectView.prototype.expand):
        (WebInspector.ErrorObjectView.prototype.collapse):
        (WebInspector.ErrorObjectView.prototype._handlePreviewOrTitleElementClick):
        (WebInspector.ErrorObjectView.prototype._buildStackTrace):
        ErrorObjectView is used to log caught exceptions, e.g.:
        try { i.dont.exist++ } catch (e) { console.log(e) }

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForError): Added.
        Create error preview.

        (WebInspector.FormattedValue.createElementForTypesAndValue):
        Fix typo.

        (WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForRemoteObject):
        Format errors differently from other objects.

2015-08-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r187634): Script time is missing from the frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=147654

        Reviewed by Brian Burg.

        Use the current stack entry's parent record when pushing a new stack entry, if no
        TimelineRecord was generated from the parent record payload.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.eventRecorded):
        Don't create a stack entry when record payload children array is empty.

2015-08-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r187900): Breakpoint context menu is broken in Debugger tab
        https://bugs.webkit.org/show_bug.cgi?id=147699

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SourceCodeTextEditor.js:
        Skip only the separator and "Reveal in Debugger tab" menu items.

2015-08-05  Brian Burg  <bburg@apple.com>

        Web Inspector: use super calls in more places
        https://bugs.webkit.org/show_bug.cgi?id=147696

        Reviewed by Timothy Hatcher.

        A few opportunities for super calls were overlooked when converting to classes.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.onattach):
        (WebInspector.BreakpointTreeElement.prototype.ondetach):
        * UserInterface/Views/CallFrameTreeElement.js:
        (WebInspector.CallFrameTreeElement.prototype.onattach):
        (WebInspector.CallFrameTreeElement):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
        * UserInterface/Views/ProfileNodeTreeElement.js:
        (WebInspector.ProfileNodeTreeElement.prototype.onattach):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.shown):
        (WebInspector.SourceCodeTextEditor.prototype.hidden):
        (WebInspector.SourceCodeTextEditor.prototype.canBeFormatted):
        * UserInterface/Views/SourceCodeTreeElement.js:
        (WebInspector.SourceCodeTreeElement.prototype.onattach):
        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement.prototype.onattach):
        (WebInspector.TimelineRecordTreeElement):

2015-08-05  Brian Burg  <bburg@apple.com>

        Web Inspector: remove unused Object.deprecatedAddConstructorFunctions
        https://bugs.webkit.org/show_bug.cgi?id=147690

        Reviewed by Timothy Hatcher.

        This is no longer used following the conversion to ES6 classes.

        * UserInterface/Base/Object.js:
        (WebInspector.Object.deprecatedAddConstructorFunctions): Deleted.

2015-08-05  Brian Burg  <bburg@apple.com>

        Web Inspector: Convert miscellaneous view widgets to use ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=147658

        Reviewed by Joseph Pecoraro.

        Along the way, inline a few style class names.

        Elided mechanical changes from the Changelog.

        * UserInterface/Base/Test.js:
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        * UserInterface/Views/ConsolePrompt.js:
        * UserInterface/Views/ContentBrowser.js:
        * UserInterface/Views/ContentViewContainer.js:
        * UserInterface/Views/DOMTreeDataGridNode.js:
        * UserInterface/Views/IndeterminateProgressSpinner.js:
        * UserInterface/Views/NavigationBar.js:
        * UserInterface/Views/ProbeSetDataGridNode.js:
        * UserInterface/Views/QuickConsoleNavigationBar.js:
        * UserInterface/Views/Toolbar.js:

2015-08-05  Brian Burg  <bburg@apple.com>

        Web Inspector: Convert remaining ContentViews to use ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=147534

        Reviewed by Joseph Pecoraro.

        Along the way, inline a few style class names.

        Elided mechanical changes from the Changelog.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        * UserInterface/Views/ClusterContentView.js:
        * UserInterface/Views/ConsoleTabContentView.js:
        * UserInterface/Views/ContentBrowserTabContentView.js: Rearrange initialization
        of the tab's content browser to comply with TDZ rules for using `this`.
        * UserInterface/Views/ContentFlowDOMTreeContentView.js:
        * UserInterface/Views/ContentView.js:
        * UserInterface/Views/ContentViewContainer.js:
        * UserInterface/Views/CookieStorageContentView.js:
        * UserInterface/Views/DOMStorageContentView.js:
        * UserInterface/Views/DOMTreeContentView.js:
        * UserInterface/Views/DatabaseContentView.js:
        * UserInterface/Views/DatabaseTableContentView.js:
        * UserInterface/Views/DebuggerTabContentView.js:
        * UserInterface/Views/ElementsTabContentView.js:
        * UserInterface/Views/FontResourceContentView.js:
        * UserInterface/Views/FrameDOMTreeContentView.js:
        * UserInterface/Views/GenericResourceContentView.js:
        * UserInterface/Views/ImageResourceContentView.js:
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        * UserInterface/Views/LogContentView.js:
        * UserInterface/Views/NetworkGridContentView.js:
        * UserInterface/Views/NetworkTabContentView.js:
        * UserInterface/Views/NewTabContentView.js:
        * UserInterface/Views/ResourceClusterContentView.js:
        * UserInterface/Views/ResourceContentView.js:
        * UserInterface/Views/ResourcesTabContentView.js:
        * UserInterface/Views/ScriptContentView.js:
        * UserInterface/Views/SearchTabContentView.js:
        * UserInterface/Views/SettingsTabContentView.js:
        * UserInterface/Views/StorageTabContentView.js:
        * UserInterface/Views/TabContentView.js:
        * UserInterface/Views/TextContentView.js:
        * UserInterface/Views/TextResourceContentView.js:
        * UserInterface/Views/TimelineRecordingContentView.js:

2015-08-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Allow users to duplicate rules in the Rules sidebar panel
        https://bugs.webkit.org/show_bug.cgi?id=147361

        Reviewed by Timothy Hatcher.

        Adds context menu option to non-inherited rules that, when clicked, creates
        a new rule with the same selector and no properties, and then focuses it.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.addRuleWithSelector.addedRule):
        (WebInspector.DOMNodeStyles.prototype.addRuleWithSelector):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.get _currentSelectorText):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleContextMenuEvent):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionFocusNextNewInspectorRule):

2015-08-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Layout & Rendering timeline grid should show TimelineRecord parent/child relationships
        https://bugs.webkit.org/show_bug.cgi?id=147468

        Reviewed by Brian Burg.

        Layout timeline data grid now shows record nesting for Layout and Composite events.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.eventRecorded):
        * UserInterface/Models/TimelineRecord.js:
        (WebInspector.TimelineRecord.prototype.get parent):
        (WebInspector.TimelineRecord.prototype.set parent):
        Preserve timeline record parent/child relationship.

        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView):
        Style change for disclosure triangle support.
        (WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
        Only process immediate children of the rendering frame record.

2015-08-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: "No Filter Results" overlaps other UI elements when docked Inspector is small
        https://bugs.webkit.org/show_bug.cgi?id=147659

        Reviewed by Timothy Hatcher.

        Hide overflow of empty content label containers in navigation sidebars.

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

2015-08-04  Joseph Pecoraro  <pecoraro@apple.com>

        Improve some LayoutTests/inspector flakey output for tests with InspectorTest.reloadPage
        https://bugs.webkit.org/show_bug.cgi?id=147655

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Test.js:
        (InspectorTest.reloadPage):
        Immediately mark the page as reloading so that any logs that may happen
        before the callback for PageAgent.reload wait to be sent after the page
        load. What was happening in flakey results was that the logs were
        happening before this callback, and therefore getting logged and then
        resent after page load and getting relogged.

2015-08-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Existing text after completions do not have their completion style removed once hint is applied
        https://bugs.webkit.org/show_bug.cgi?id=147536

        Reviewed by Timothy Hatcher.

        No longer applies a class to the text after the completion hint.

        * UserInterface/Controllers/CodeMirrorCompletionController.css:
        (.CodeMirror .CodeMirror-lines .completion-hint):
        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):

2015-08-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Don't show 'Reveal In Debugger Tab' menu item if already in Debugger tab
        https://bugs.webkit.org/show_bug.cgi?id=147554

        Reviewed by Timothy Hatcher.

        Check current tab before appending context menu items.

        * UserInterface/Base/Main.js:
        (WebInspector.isShowingDebuggerTab):
        * UserInterface/Views/SourceCodeTextEditor.js:

2015-08-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: buttons in new tab screen lack hover styles
        https://bugs.webkit.org/show_bug.cgi?id=145355

        Reviewed by Timothy Hatcher.

        Added hover brightness filter to new tab buttons.

        * UserInterface/Views/NewTabContentView.css:
        (.new-tab.tab.content-view > .tab-item:not(.disabled):hover > .box):
        (.new-tab.tab.content-view > .tab-item:not(.disabled):active > .box):

2015-08-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Merge the styles sidebar navigation bar into a selectable item in the elements sidebar
        https://bugs.webkit.org/show_bug.cgi?id=146878

        Reviewed by Timothy Hatcher.

        Replaced the default navigationItem of the CSSStyleDetailsSidebarPanel with a
        ScopeRadioButtonNavigationItem that will open a select element containing the labels
        of each style sidebar when reselected.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._panelMatchingIdentifier):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._handleSelectedItemChanged):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.visibilityDidChange):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._navigationItemSelected): Deleted.
        * UserInterface/Views/DOMDetailsSidebarPanel.js:
        (WebInspector.DOMDetailsSidebarPanel):
        * UserInterface/Views/DetailsSidebarPanel.js:
        (WebInspector.DetailsSidebarPanel):
        * UserInterface/Views/MetricsStyleDetailsPanel.js:
        (WebInspector.MetricsStyleDetailsPanel):
        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype._mouseDown):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel):
        * UserInterface/Views/ScopeRadioButtonNavigationItem.css: Added.
        * UserInterface/Views/ScopeRadioButtonNavigationItem.js: Added.
        * UserInterface/Views/SidebarPanel.js:
        (WebInspector.SidebarPanel):
        * UserInterface/Views/StyleDetailsPanel.js:
        (WebInspector.StyleDetailsPanel):

2015-08-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: timeline overview should visually distinguish selection bounds outside the visible duration
        https://bugs.webkit.org/show_bug.cgi?id=132764

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .selection-handle.clamped):
        Added style for selection handle outside visible range.
        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._updateSelection):
        Toggle style class and add tool tip showing the handle's value when outside the visible range.

2015-08-04  Brian J. Burg  <bburg@apple.com>

        Web Inspector: Convert DataGrid and DataGridNode classes to ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=147439

        Reviewed by Joseph Pecoraro.

        Along the way, inline a few style class names.

        Elided mechanical changes from the Changelog.

        * UserInterface/Views/DOMTreeDataGrid.js:
        * UserInterface/Views/DataGrid.js:
        * UserInterface/Views/DatabaseTableContentView.js:
        * UserInterface/Views/IndexedDatabaseEntryDataGridNode.js:
        * UserInterface/Views/LayerTreeDataGridNode.js:
        * UserInterface/Views/LayoutTimelineDataGrid.js:
        * UserInterface/Views/LayoutTimelineDataGridNode.js:
        * UserInterface/Views/ProbeSetDataGrid.js:
        * UserInterface/Views/ProfileNodeDataGridNode.js:
        * UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        * UserInterface/Views/ScriptTimelineDataGrid.js:
        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        * UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
        * UserInterface/Views/TimelineDataGrid.js:
        * UserInterface/Views/TimelineDataGridNode.js: Move a function definition out
        of an else branch, since this is not allowed in ES6 strict mode.

2015-08-04  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: console error when clicking AppCache folder tree element
        https://bugs.webkit.org/show_bug.cgi?id=130042

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel._treeElementSelected): Don't try to
        create a content view for ApplicationCacheManifestTreeElement. We can
        only create a content view for AppCache frames.

2015-08-04  Andres Gomez  <agomez@igalia.com>

        [GTK] Add gtk icon to remove comma separated values from CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=147623

        Reviewed by Carlos Garcia Campos.

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

2015-08-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r187708): Breakpoint dialog script action editing broken
        https://bugs.webkit.org/show_bug.cgi?id=147553

        Reviewed by Joseph Pecoraro.

        Passing a widget to CodeMirror.setBookmark generates a viewportChange event, causing the
        BreakpointActionView to update the popup for the breakpoint. The spurious update dismisses
        the suggestion list, removes the CodeMirror completion hint, and causes other problems.

        Now we ignore viewportChange events unless the viewport size changes. We still want to update
        the popup when a carriage return or text wrap modifies the viewport.

        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._updateBody):
        Evaluate and Probe actions store the current viewport size.
        (WebInspector.BreakpointActionView.prototype._codeMirrorViewportChanged):
        Check if viewport size has changed since last event.

2015-08-03  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Application cache DataGrid has incorrect column heading styles
        https://bugs.webkit.org/show_bug.cgi?id=147531

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView): Remove erroneous
        "storage-view" class, which is intended for databases, not AppCache.

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

        Web Inspector: Unnamespaced Formatter classes break CSSStyleDeclarationTextEditor
        https://bugs.webkit.org/show_bug.cgi?id=147544

        Reviewed by Brian Burg.

        Added Formatter and FormatterContentBuilder to WebInspector namespace.

        * UserInterface/Controllers/Formatter.js:
        * UserInterface/Controllers/FormatterContentBuilder.js:
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._formattedContentFromEditor):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.prettyPrint.prettyPrintAndUpdateEditor):
        (WebInspector.TextEditor.prototype.prettyPrint):

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

        Web Inspector: REGRESSION (r187689): Timeline overview graph layout is broken
        https://bugs.webkit.org/show_bug.cgi?id=147539

        Reviewed by Brian Burg.

        Removed timeline argument being passed to TimelineOverviewGraph constructor.

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph):
        * UserInterface/Views/NetworkTimelineOverviewGraph.js:
        (WebInspector.NetworkTimelineOverviewGraph):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph):
        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph):

2015-08-01  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Replace "unknown-mac" CSS class with "el-capitan"
        https://bugs.webkit.org/show_bug.cgi?id=147524

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Platform.js:
        No need to repeat WebInspector.Platform.version.release for every possible case.

        * UserInterface/Views/Toolbar.css:
        (body:not(.el-capitan) .toolbar .dashboard-container):
        (body:not(.el-capitan) .toolbar .search-bar > input[type="search"]):
        (body:not(.el-capitan) .toolbar .search-bar > input[type="search"]:focus):
        (body:not(.el-capitan) .toolbar .item.button:active):
        (body.window-inactive:not(.el-capitan) .toolbar .dashboard-container):
        (body.el-capitan .toolbar .dashboard-container):
        (body.el-capitan .toolbar .search-bar > input[type="search"]):
        (body.el-capitan .toolbar .search-bar > input[type="search"]:focus):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (body.el-capitan .toolbar .item.button:active):
        (body.el-capitan.window-inactive .toolbar .dashboard-container):
        (body:not(.unknown-mac) .toolbar .dashboard-container): Deleted.
        (body:not(.unknown-mac) .toolbar .search-bar > input[type="search"]): Deleted.
        (body:not(.unknown-mac) .toolbar .search-bar > input[type="search"]:focus): Deleted.
        (body:not(.unknown-mac) .toolbar .item.button:active): Deleted.
        (body.window-inactive:not(.unknown-mac) .toolbar .dashboard-container): Deleted.
        (body.unknown-mac .toolbar .dashboard-container): Deleted.
        (body.unknown-mac .toolbar .search-bar > input[type="search"]): Deleted.
        (body.unknown-mac .toolbar .search-bar > input[type="search"]:focus): Deleted.
        (body.unknown-mac .toolbar .item.button:active): Deleted.
        (body.unknown-mac.window-inactive .toolbar .dashboard-container): Deleted.

2015-07-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: inherited CSS rules disappear from Styles sidebar while editing
        https://bugs.webkit.org/show_bug.cgi?id=147441

        Reviewed by Timothy Hatcher.

        If the user edits a style declaration such that it would dissapear mid-edit, prevent
        the rules panel from refreshing until that editor is blurred.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype.get editorActive):
        (WebInspector.CSSStyleDeclarationSection.prototype.get _hasInvalidSelector):
        (WebInspector.CSSStyleDeclarationSection.prototype._editorContentChanged):
        (WebInspector.CSSStyleDeclarationSection.prototype._editorBlurred):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._editorBlured):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._contentChanged):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel):
        (WebInspector.RulesStyleDetailsPanel.prototype._removeSectionWithActiveEditor):
        * UserInterface/Views/StyleDetailsPanel.js:
        (WebInspector.StyleDetailsPanel.prototype._refreshPreservingScrollPosition):

2015-07-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: Autocomplete: Undo (Cmd+Z) doesn't work as expected
        https://bugs.webkit.org/show_bug.cgi?id=147316

        Reviewed by Timothy Hatcher.

        Instead of replacing the text for a completion, which messes up the undo history, add
        a unique marker that contains the remaining text for the current completion.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):

2015-07-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: Scrolling "jumps" in console
        https://bugs.webkit.org/show_bug.cgi?id=147482

        Reviewed by Joseph Pecoraro.

        Removed focus call on messageElement.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._mousedown): Deleted.
        (WebInspector.LogContentView.prototype._didFocus): Deleted.
        (WebInspector.LogContentView.prototype._didBlur): Deleted.

2015-07-31  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Unskip / Unflake inspector tests after r187627
        https://bugs.webkit.org/show_bug.cgi?id=147503

        Reviewed by Brian Burg.

        * UserInterface/Base/Test.js:
        (InspectorTest.completeTest):
        (InspectorTest.completeTest.signalCompletionToTestPage): Deleted.
        (InspectorTest.testPageDidLoad):
        Instead of immediately resending results if completeTest was called
        during a reload before the load has completed, we just set a flag
        to complete the test when the load completes. This consistently
        resends the output to the new page for test output.
        
        (InspectorTest._resendResults):
        Delete clear results. If the page had logged anything directly on
        the page side (using InspectorTestProxy) this clearMessages would
        have deleted those messages and not been able to recreate them.
        Clearing messages wasn't really serving a purpose.

2015-07-31  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Convert timeline view classes to ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=147381

        Reviewed by Joseph Pecoraro.

        Along the way, inline a few style class names.

        Elided mechanical changes from the Changelog.

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        * UserInterface/Views/LayoutTimelineView.js:
        * UserInterface/Views/LinearTimelineOverview.js:
        * UserInterface/Views/NetworkTimelineOverviewGraph.js:
        * UserInterface/Views/NetworkTimelineView.js:
        * UserInterface/Views/OverviewTimelineView.js:
        * UserInterface/Views/RenderingFrameTimelineOverview.js:
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        * UserInterface/Views/RenderingFrameTimelineView.js:
        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        * UserInterface/Views/ScriptTimelineView.js:
        * UserInterface/Views/TimelineOverview.js:
        * UserInterface/Views/TimelineOverviewGraph.js:
        * UserInterface/Views/TimelineRecordBar.js:
        * UserInterface/Views/TimelineRecordFrame.js:
        * UserInterface/Views/TimelineRecordingContentView.js:
        * UserInterface/Views/TimelineRuler.js:
        * UserInterface/Views/TimelineTabContentView.js:
        * UserInterface/Views/TimelineView.js:

2015-07-30  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Better share objects generated from timeline events (Records)
        https://bugs.webkit.org/show_bug.cgi?id=147029

        Reviewed by Brian Burg.

        This patch changes the way TimelineManager processes events, preserving the event hierarchy after
        converting payloads to TimelineRecord objects by retaining parent-child relationships between records.
        This eliminates the need for RenderingFrameTimelineRecord objects to create a separate copy of their child
        records, and provides richer data for the Timelines UI.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.eventRecorded):
        Track the parent TimelineRecord as child record payloads are unpacked, and create
        a hierarchy of TimelineRecords that mirrors the original event payload hierarchy.
        (WebInspector.TimelineManager.prototype._processRecord):
        RenderingFrameTimelineRecord is now processed like any other event.
        (WebInspector.TimelineManager.prototype._processNestedRecords): Deleted.
        Reverted back to a single pass over the incoming timeline event payload.

        * UserInterface/Models/LayoutTimelineRecord.js:
        (WebInspector.LayoutTimelineRecord):
        (WebInspector.LayoutTimelineRecord.prototype.get duringComposite): Deleted.
        Removed duringComposite property and constructor parameter. No longer needed.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord.prototype.get children): Deleted.
        Removed children property. It now exists on the base class TimelineRecord.
        Also removed code that was needed to prevent paint time from being added twice.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
        (WebInspector.ScriptTimelineRecord):
        Removed workaround added in:
        <https://webkit.org/b/147025> Web Inspector: REGRESSION (r186218) ScriptTimelineRecord attempts to access null property

        * UserInterface/Models/TimelineRecord.js:
        (WebInspector.TimelineRecord):
        (WebInspector.TimelineRecord.prototype.get children):
        Added children property.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
        Now that we preserve the frame's child record hierarchy, we process the entire tree,
        yielding richer data grid output:

           Frame X
              Styles Recalculated
                 Layout Invalidated
              Composite
                 Paint
                 Paint

        Compared to the previous output:

           Frame X
              Styles Recalculated
              Layout Invalidated
              Composite
              Paint
              Paint

2015-07-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: Support smart-pasting in the Rules sidebar panel
        https://bugs.webkit.org/show_bug.cgi?id=147362

        Reviewed by Timothy Hatcher.

        When pasting over the selector, if the pasted text matches CSS rule
        formatting, replace the selected rule with the selector and text in
        the pasted data.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.changeRule.changeCompleted):
        (WebInspector.DOMNodeStyles.prototype.changeRule.styleChanged):
        (WebInspector.DOMNodeStyles.prototype.changeRule.changeText):
        (WebInspector.DOMNodeStyles.prototype.changeRule.ruleSelectorChanged):
        (WebInspector.DOMNodeStyles.prototype.changeRule):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste.parseTextForRule):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
        (WebInspector.CSSStyleDeclarationSection):

2015-07-30  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Fix typo in frame duration filtering console.assert message
        https://bugs.webkit.org/show_bug.cgi?id=147458

        Rubber-stamped by Joseph Pecoraro.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.displayNameForDurationFilter):

2015-07-30  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Regression: %c is broken for console.group
        https://bugs.webkit.org/show_bug.cgi?id=147436

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):

2015-07-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add special case for deleting the next character when editing rules in the CSS Sidebar
        https://bugs.webkit.org/show_bug.cgi?id=147442

        Reviewed by Timothy Hatcher.

        If the cursor is on the first position of the first line in a CSS Rule and that line
        has no content, delete the line instead of doing nothing.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleBeforeChange):

2015-07-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Improve styles of debugger popovers
        https://bugs.webkit.org/show_bug.cgi?id=147437

        Reviewed by Timothy Hatcher.

        Use non-monospace font and improve spacing.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.popover .debugger-popover-content > .title):
        (.popover .debugger-popover-content > .body):

2015-07-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Border line in the debug popover should be semi-transparent black, not dark yellow
        https://bugs.webkit.org/show_bug.cgi?id=147435

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.popover .debugger-popover-content > .body):
        (@media (-webkit-min-device-pixel-ratio: 2)): Use hairline borders on retina.

2015-07-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: " = $0" text in the Elements panel should anti-aliased
        https://bugs.webkit.org/show_bug.cgi?id=147432

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.selected > span::after):
        (.dom-tree-outline:focus li.selected > span::after):
        Decrease the opacity just slightly to make " = $0" more distinct from DOM nodes.

2015-07-29  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Allow record filtering by frame duration in Rendering Frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=147419

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New scope bar item labels.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        New scope bar for frame duration filtering.
        (WebInspector.RenderingFrameTimelineView.displayNameForDurationFilter):
        (WebInspector.RenderingFrameTimelineView.prototype.matchTreeElementAgainstCustomFilters):
        Overridden for view specific filtering. Filtering applies to RenderingFrameTimelineRecords only.
        (WebInspector.RenderingFrameTimelineView.prototype._scopeBarSelectionDidChange):
        Force sidebar filtering when duration filter changes.

2015-07-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.groupEnd causes negative indent when no group is active
        https://bugs.webkit.org/show_bug.cgi?id=147375

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):

2015-07-28  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Convert NavigationItem subclasses to ES6
        https://bugs.webkit.org/show_bug.cgi?id=147364

        Reviewed by Timothy Hatcher.

        Convert remaining NavigationItem subclasses to use ES6 class.

        Also promote the _additionalClassNames to be a protected getter,
        and inline the style class names that are only used in one place.

        Mechanical changes are elided from the changelog.

        * UserInterface/Views/ActivateButtonNavigationItem.js:
        (WebInspector.ActivateButtonNavigationItem):
        (WebInspector.ActivateButtonNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/ActivateButtonToolbarItem.js:
        (WebInspector.ActivateButtonToolbarItem):
        * UserInterface/Views/ButtonNavigationItem.js:
        (WebInspector.ButtonNavigationItem):
        (WebInspector.ButtonNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/ButtonToolbarItem.js:
        (WebInspector.ButtonToolbarItem):
        * UserInterface/Views/ControlToolbarItem.js:
        (WebInspector.ControlToolbarItem):
        (WebInspector.ControlToolbarItem.prototype.get additionalClassNames):
        * UserInterface/Views/DividerNavigationItem.js:
        (WebInspector.DividerNavigationItem):
        (WebInspector.DividerNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/FlexibleSpaceNavigationItem.js:
        (WebInspector.FlexibleSpaceNavigationItem):
        (WebInspector.FlexibleSpaceNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WebInspector.HierarchicalPathNavigationItem.prototype.get additionalClassNames):
        (WebInspector.HierarchicalPathNavigationItem.prototype.get _additionalClassNames): Deleted.
        * UserInterface/Views/NavigationItem.js:
        (WebInspector.NavigationItem):
        (WebInspector.NavigationItem.prototype.get _classNames):
        * UserInterface/Views/RadioButtonNavigationItem.js:
        (WebInspector.RadioButtonNavigationItem):
        (WebInspector.RadioButtonNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/ToggleButtonNavigationItem.js:
        (WebInspector.ToggleButtonNavigationItem):
        (WebInspector.ToggleButtonNavigationItem.prototype.get additionalClassNames):
        * UserInterface/Views/ToggleControlToolbarItem.js:
        (WebInspector.ToggleControlToolbarItem):
        (WebInspector.ToggleControlToolbarItem.prototype.get additionalClassNames):

2015-07-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include <template> node content in DOM Tree
        https://bugs.webkit.org/show_bug.cgi?id=147335

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._unbind):
        Cleanup templateContent when DOMNodes get removed.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode.prototype.templateContent):
        Create a DOMNode from the payload's templateContent.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._singleTextChild):
        (WebInspector.DOMTreeElement.prototype._hasVisibleChildren):
        (WebInspector.DOMTreeElement.prototype._visibleChildren):
        A DOMTreeElement has children if the DOMNode has template content.

2015-07-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: Invalid selectors can be applied to the stylesheet
        https://bugs.webkit.org/show_bug.cgi?id=147230

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.set selectorText):
        Fires an event with data stating if the newly applied selector was valid or not.
        (WebInspector.CSSRule.prototype._selectorRejected):
        (WebInspector.CSSRule.prototype._selectorResolved):
        (WebInspector.CSSRule):

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.changeRuleSelector.ruleSelectorChanged):
        (WebInspector.DOMNodeStyles.prototype.changeRuleSelector):
        Now returns a promise that will reject if CSSAgent.setRuleSelector has an
        error, such as if the selector is invalid, and resolve otherwise.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section:not(.invalid-selector) > .header > .icon.toggle-able:hover):
        (.style-declaration-section:not(.invalid-selector).rule-disabled > .header > .icon):
        (.style-declaration-section.invalid-selector > .header > .icon):
        (.style-declaration-section.invalid-selector > .header > .selector > *):
        (.style-declaration-section > .header > .icon.toggle-able:hover): Deleted.
        (.style-declaration-section.rule-disabled > .header > .icon): Deleted.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype._toggleRuleOnOff):
        Only allow rule toggling if the selector is valid.
        (WebInspector.CSSStyleDeclarationSection.prototype._markSelector):
        If the new selector is valid, refresh the section. Otherwise, apply a class
        to the section element that marks the selector as being invalid.
        (WebInspector.CSSStyleDeclarationSection.prototype.get _hasInvalidSelector):

2015-07-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show Pseudo Elements in DOM Tree
        https://bugs.webkit.org/show_bug.cgi?id=139612

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._pseudoElementAdded):
        Hook up the new pseudo element DOMNode to the parent.

        (WebInspector.DOMTreeManager.prototype._pseudoElementRemoved):
        Unhook the pseudo element from its parent.

        (WebInspector.DOMTreeManager.prototype._unbind):
        When unbinding, unbind any pseudo element children we may have had.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode.prototype.isPseudoElement):
        (WebInspector.DOMNode.prototype.pseudoType):
        (WebInspector.DOMNode.prototype.hasPseudoElements):
        (WebInspector.DOMNode.prototype.pseudoElements):
        New state of a DOMNode may include pseudo elements.

        (WebInspector.DOMNode.prototype.appropriateSelectorFor):
        A selector for this node includes the selector for the node above it.

        * UserInterface/Protocol/DOMObserver.js:
        (WebInspector.DOMObserver.prototype.pseudoElementAdded):
        (WebInspector.DOMObserver.prototype.pseudoElementRemoved):
        Pass the message on to DOMTreeManager.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.get editable):
        Pseudo element nodes are not editable.

        (WebInspector.DOMTreeElement.prototype.showChildNode):
        (WebInspector.DOMTreeElement.prototype.onpopulate):
        (WebInspector.DOMTreeElement.prototype.updateChildren):
        (WebInspector.DOMTreeElement.prototype._nodeTitleInfo):
        (WebInspector.DOMTreeElement.prototype._singleTextChild):
        (WebInspector.DOMTreeElement.prototype._hasVisibleChildren):
        (WebInspector.DOMTreeElement.prototype._visibleChildren):
        (WebInspector.DOMTreeElement.prototype._updateChildren):
        (WebInspector.DOMTreeElement.prototype.adjustCollapsedRange):
        (WebInspector.DOMTreeElement.prototype.handleLoadAllChildren):
        A DOMTreeElement's children are no longer 1-to-1 to DOMNode's children.
        Instead a DOMNode may have a before/after pseudo element child that
        are not included in the children list. Update parts of DOMTreeElement
        to respect this list of visible children.

        * UserInterface/Views/DOMTreeElementPathComponent.js:
        (WebInspector.DOMTreeElementPathComponent):
        * UserInterface/Views/PathComponentIcons.css:
        (.dom-pseudo-element-icon .icon):
        Styling for the path component when a pseudo element is selected.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline .html-pseudo-element):
        (.dom-tree-outline .html-fragment.shadow):
        (.webkit-html-fragment.shadow): Deleted.
        Styles for pseudo elements in the DOM tree.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype._hideElement):
        Make the hide element selector hide the host element.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.addEventListeners):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.removeEventListeners):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._forcedPseudoClassCheckboxChanged):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._updatePseudoClassCheckboxes):
        Pseudo class changes won't happen on pseudo elements, but will
        happen on their host element, so listen to and make pseudo class
        changes to the host element.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules > *:first-child:matches(.new-rule)):
        Since a pseudo element does not have a style attribute,
        give some margin in the style sidebar above the "New Rule"
        button so it looks better.

2015-07-27  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Record button in Timelines view is clipped on non-retina. Hovering over the dot draws it correctly.
        https://bugs.webkit.org/show_bug.cgi?id=147346

        Reviewed by Joseph Pecoraro.

        Since the hovered button isn't clipped (-webkit-filter is applied in that case), add a filter that
        doesn't alter the button's appearance to the non-hovered selector.

        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
        Added brightness 100% filter to non-hovered selector.

2015-07-27  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clicking a frame in the Rendering Frames timeline should select the corresponding grid row
        https://bugs.webkit.org/show_bug.cgi?id=147013

        Reviewed by Timothy Hatcher.

        Added ability to select (or highlight) a particular frame by clicking in the overview graph. A tick mark
        appears above the selected frame inside the ruler, and the frame element's background color changes to a light
        blue vertical highlight. Frame selection is synced across the timeline view's data grid, overview graph, and
        navigation bar path components.

        A few behaviors:
           - Clicking a frame outside the current ruler selection selects the frame.
           - Clicking the selected frame will deselect it.
           - Resizing the ruler selection to exclude the selected frame will deselect it.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGridNode.prototype.select):
        No need to generate two SelectedNodeChanged events when selecting a node causes
        the currently selected node to be deselected.

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph):
        * UserInterface/Views/NetworkTimelineOverviewGraph.js:
        (WebInspector.NetworkTimelineOverviewGraph):
        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph): Set TimelineOverview during construction.
        Set TimelineOverview during construction.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview-graph.rendering-frame > .frame-marker):
        (body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker):
        Added styles for selected frame marker.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph):
        Set TimelineOverview during construction.
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._mouseClicked):
        Added frame marker element and frame selection via mouse click.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.treeElementDeselected):
        Deselect grid node when frame is deselected from the overview graph.
        (WebInspector.RenderingFrameTimelineView.prototype.filterDidChange): Deleted.
        Removed unnecessary override.

        * UserInterface/Views/TimelineOverview.js:
        Added selectRecord method and RecordSelected event.
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype._timelineRulerMouseDown):
        (WebInspector.TimelineOverview.prototype._timelineRulerMouseClicked):
        Since timeline ruler specifies pointer-events: all, click events must be forwarded to the
        underlying overview graph. Click events following changes to the ruler's selection are ignored.

        (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineOverview.prototype._recordSelected):
        Forward RecordSelected events from child graphs to clients of the overview.

        * UserInterface/Views/TimelineOverviewGraph.js:
        Added RecordSelected event.
        (WebInspector.TimelineOverviewGraph):
        (WebInspector.TimelineOverviewGraph.prototype.get visible):
        (WebInspector.TimelineOverviewGraph.prototype.get selectedRecord):
        (WebInspector.TimelineOverviewGraph.prototype.set selectedRecord):
        Added property for selecting a record in the graph. Derived graph types can implement record selection
        and choose how to style the selected record.
        (WebInspector.TimelineOverviewGraph.prototype.updateLayout):
        (WebInspector.TimelineOverviewGraph.prototype.needsLayout):
        Update frame marker during an animation frame.
        (WebInspector.TimelineOverviewGraph.prototype.dispatchSelectedRecordChangedEvent):
        Dispatch wrapper to simplify things.
        (WebInspector.TimelineOverviewGraph.prototype.updateSelectedRecord):
        (WebInspector.TimelineOverviewGraph.prototype._needsSelectedRecordLayout.update):
        (WebInspector.TimelineOverviewGraph.prototype._needsSelectedRecordLayout):
        Inform derived overview graph to optionally style the selected record.
        (WebInspector.TimelineOverviewGraph.prototype.set timelineOverview): Deleted.
        No longer needed. TimelineOverview set during construction.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame):
        (.timeline-record-frame.tall):
        Limit the "fade out" effect to frames that are >= 95% of the graph height, otherwise the
        gradient mask is noticeable when selecting a shorter frame.
        (.timeline-record-frame.selected):
        (body.window-inactive .timeline-record-frame.selected):
        (.timeline-record-frame.selected > .frame):
        Added highlight (and dimmed inactive highlight) for selected frame element.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.prototype.get selected):
        (WebInspector.TimelineRecordFrame.prototype.set selected):
        Added property for setting selected style.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
        Select record in overview in response to changing navigation path.
        (WebInspector.TimelineRecordingContentView.prototype._recordSelected.get console):
        (WebInspector.TimelineRecordingContentView.prototype._recordSelected):
        Update selected tree element in response to changing record selection in the overview graph.

2015-07-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Revert change to DOMTreeElement.prototype.remove
        https://bugs.webkit.org/show_bug.cgi?id=147336

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.remove.removeNodeCallback):
        This change was accidental, and just resulted in the function calling
        itself again. It didn't infinite loops because another path would have
        removed the DOMTreeElement, but lets correct this code.

2015-07-27  Devin Rousso  <drousso@apple.com>

        Web Inspector: support live editing of rule selectors
        https://bugs.webkit.org/show_bug.cgi?id=139153

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.highlightSelector):
        Moved from CSSStyleDeclarationSection.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype.get _currentSelectorText):
        Returns the current selector text, either from the style ownerRule or the selector element text.
        (WebInspector.CSSStyleDeclarationSection.prototype._highlightNodesWithSelector):
        Now highlights all nodes matching the current selector instead of the ownerRule's selector.
        (WebInspector.CSSStyleDeclarationSection.prototype._hideDOMNodeHighlight):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleMouseOver):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleMouseOut):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleKeyDown):
        If the character is not a tab, highlight all nodes matching the current selector text.
        (WebInspector.CSSStyleDeclarationSection.prototype._handleKeyUp):
        (WebInspector.CSSStyleDeclarationSection.prototype._hideHighlightOnNodesWithSelector): Deleted.

2015-07-27  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: " = $0" in Elements panel can cause a jerk by pushing nodes below it
        https://bugs.webkit.org/show_bug.cgi?id=147318

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.selected > span::after):

2015-07-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Start using Node.prototype.remove
        https://bugs.webkit.org/show_bug.cgi?id=147304

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.elementDragStart):
        (WebInspector.elementDragEnd):
        (WebInspector.revertDomChanges):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._updateSearchHighlight.updateEntryHide):
        (WebInspector.DOMTreeElement.prototype._updateSearchHighlight):
        (WebInspector.DOMTreeElement.prototype.remove.removeNodeCallback):
        (WebInspector.DOMTreeElement.prototype.remove):
        * UserInterface/Views/Resizer.js:
        (WebInspector.Resizer.prototype._resizerMouseDown):
        (WebInspector.Resizer.prototype._resizerMouseUp):
        (WebInspector.Resizer):

2015-07-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Fix color declaration for not-executed comments
        https://bugs.webkit.org/show_bug.cgi?id=147305

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.cm-s-default .basic-block-has-not-executed.cm-comment):
        This was an RGB color mispelled as HSL. Replace "hsl" with "rgb"
        and convert it to HSL.

2015-07-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Start using Node.prototype.replaceWith
        https://bugs.webkit.org/show_bug.cgi?id=147303

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Popover.js:
        (WebInspector.Popover.prototype._update):

2015-07-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Start using Node.prototype.append
        https://bugs.webkit.org/show_bug.cgi?id=147301

        Convert all instances of element.appendChild(document.createTextNode(aString))
        to element.append(aString).

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/DOMUtilities.js:
        * UserInterface/Base/Main.js:
        (WebInspector.linkifyLocation):
        (WebInspector.linkifyStringAsFragmentWithCustomLinkifier):
        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):
        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow.prototype._createLegendItem):
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._insertInLastAttributePosition):
        (WebInspector.DOMTreeElement.prototype._buildAttributeDOM):
        (WebInspector.DOMTreeElement.prototype._buildTagDOM):
        (WebInspector.DOMTreeElement.prototype._nodeTitleInfo):
        defaultElement variable is unused, remove it.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGridNode.prototype.createCell.get if):
        (WebInspector.DataGridNode.prototype.createCell):
        * UserInterface/Views/DebuggerDashboardView.js:
        (WebInspector.DebuggerDashboardView.prototype._rebuildLocation):
        * UserInterface/Views/EventListenerSectionGroup.js:
        (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
        (WebInspector.EventListenerSectionGroup):
        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createLinkifiedElementString):
        (WebInspector.FormattedValue.createElementForNodePreview):
        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestDataSection):
        (WebInspector.ResourceDetailsSidebarPanel):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.addNewRuleButton):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        * UserInterface/Views/SearchResultTreeElement.js:
        (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
        * UserInterface/Views/SyntaxHighlightingSupport.js:
        (.appendText):
        (WebInspector.syntaxHighlightStringAsDocumentFragment):
        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.createCellContent):

2015-07-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add custom parameter lists for new DOM append/prepend/before/after/replaceWith methods
        https://bugs.webkit.org/show_bug.cgi?id=147257

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/NativeFunctionParameters.js:

2015-07-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: jittery cursor when adjusting time interval using timeline grabbers
        https://bugs.webkit.org/show_bug.cgi?id=147095

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler.resizing-selection > .selection-drag):
        Override selection-drag element's cursor when "resizing-selection" selector is applied.
        (.timeline-ruler.allows-time-range-selection.creating-selection): Deleted.
        Renamed "creating-selection" selector to "resizing-selection" to reflect its new role.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseUp):
        Toggle cursor styles.

2015-07-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add a function to CSSCompletions to get a list of supported system fonts
        https://bugs.webkit.org/show_bug.cgi?id=147009

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.activateExtraDomains):
        * UserInterface/Base/Test.js:
        (WebInspector.loaded):
        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions.requestCSSCompletions.fontFamilyNamesCallback):
        (WebInspector.CSSCompletions.requestCSSCompletions):
        Now also grabs the list of system font family names and adds that list to the existing completion
        list for both font and font-family in CSSKeywordCompletions.
        (WebInspector.CSSCompletions.requestCSSNameCompletions): Deleted.

2015-07-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: wrong cursor shown when selecting time interval from timeline overview
        https://bugs.webkit.org/show_bug.cgi?id=147094

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler.allows-time-range-selection.creating-selection):
        New cursor style for entire ruler element.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        Toggle cursor style when dragging to create a new selection in the overview.

2015-07-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline should immediately start moving play head when starting a new recording
        https://bugs.webkit.org/show_bug.cgi?id=147210

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/TimelineObserver.js:
        (WebInspector.TimelineObserver.prototype.recordingStarted):
        (WebInspector.TimelineObserver.prototype.recordingStopped):
        Pass on the new timestamps.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.capturingStarted):
        (WebInspector.TimelineManager.prototype.capturingStopped):
        Pass on the new timestamps in the events.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
        Pass on the new timestamp from the event as it can be used to update the currentTime.

        (WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
        If provided a startTime we can use that as the new currentTime. Otherwise fallback
        to determining a good currentTime from the next incoming record for legacy backends.

        (WebInspector.TimelineRecordingContentView.prototype._recordingTimesUpdated):
        Update the comment, as there is now a solution but this is required for legacy backends.

2015-07-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline's Current Time does not jump forward to new start time when starting a new recording, causes timeline to appear delayed and broken
        https://bugs.webkit.org/show_bug.cgi?id=147204

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._recordingTimesUpdated):
        We were skipping a timeline, but it might have a new event record with
        a new start time. This ensures we get an updated current time which makes
        sense, and we jump forward to that time in the main timeline.

2015-07-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TimelineRuler shouldn't dispatch selection changed event unless it actually changes
        https://bugs.webkit.org/show_bug.cgi?id=147219

        Reviewed by Timothy Hatcher.

        Moved to a "suppress next" model for suppressing dispatch of TimelineRuler's selection changed event. The
        ruler's _timeRangeSelectionChanged flag is now reset only when an event is finally dispatched.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler):
        (WebInspector.TimelineRuler.prototype._updateSelection):
        (WebInspector.TimelineRuler.prototype._dispatchTimeRangeSelectionChangedEvent):
        Check for this._timeRangeSelectionChanged moved into dispatch function.
        (WebInspector.TimelineRuler.prototype._handleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        We now suppress the next dispatch only, rather than a toggle.

2015-07-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION (Safari 7): Pseudo element rules are not labelled with media queries in Styles panel
        https://bugs.webkit.org/show_bug.cgi?id=147207

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertAllMatchingPseudoStyles):
        Now inserts pseudo-styles based on whether their selector specificity is greater than
        the previous style's selector specificity.
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):

2015-07-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Change syntax highlighting color for regular expressions to make them more readable
        https://bugs.webkit.org/show_bug.cgi?id=146956

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-regexp):
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.syntax-highlighted :matches(.css-string, .javascript-string, .html-attribute-value)):
        (.syntax-highlighted .javascript-regexp):
        (.syntax-highlighted :matches(.css-string, .javascript-string, .javascript-regexp, .html-attribute-value)): Deleted.

2015-07-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.log("%d", 0) or console.log("%d", "str") show nothing, expected Number or NaN
        https://bugs.webkit.org/show_bug.cgi?id=147163

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.append):
        When appending the result for a substitution formatter, don't check against a
        falsey value, check against undefined. This will allow falsely values like
        0 and NaN to be output as expected.

2015-07-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Total download size doesn't update soon after loading
        https://bugs.webkit.org/show_bug.cgi?id=147161

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._mainResourceDidChange):
        Previously autorecording would always have made us start capturing,
        however we only autorecord if users are on the Timeline tab. Just
        reset the time always, a navigation happened and start the timer.

        (WebInspector.DefaultDashboard.prototype._resourceSizeDidChange):
        Move to a better location within the file.

2015-07-21  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Convert all colors from RGB to HSL color scheme
        https://bugs.webkit.org/show_bug.cgi?id=147143

        HSL color scheme is more human friendly than RGB.

        RGB -> HSL
        RGB hex (e.g. #bada55 and #456) -> HSL
        RGBA -> HSLA
        Named colors (white, black, lightgoldenrodyellow) are unchanged        

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorGradientEditingController.css:
        (.gradient-editing-controller > label > input):
        * UserInterface/Views/BoxModelDetailsSectionRow.css:
        (.details-section .row.box-model .position):
        (.details-section .row.box-model .margin):
        (.details-section .row.box-model .margin.active):
        (.details-section .row.box-model .border):
        (.details-section .row.box-model .border.active):
        (.details-section .row.box-model .padding):
        (.details-section .row.box-model .padding.active):
        (.details-section .row.box-model .content):
        (.details-section .row.box-model .content.active):
        * UserInterface/Views/Breakpoint.css:
        (.popover .edit-breakpoint-popover-content > table > tr > th):
        * UserInterface/Views/BreakpointActionView.css:
        (.breakpoint-action-remove-button):
        (.breakpoint-action-append-button):
        (.breakpoint-action-block-body):
        (.breakpoint-action-eval-editor):
        * UserInterface/Views/BreakpointTreeElement.css:
        (.breakpoint-generic-line-icon .icon > span):
        (.data-updated.breakpoint-generic-line-icon .icon > span):
        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button.text-only):
        (.navigation-bar .item.button.suppress-emboss > .glyph):
        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button > .label):
        (.toolbar.label-only .item.activate.button.activated > .label):
        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section > .header > .selector):
        (.style-declaration-section > .header > .origin):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property:matches(.disabled, .invalid, .other-vendor, .not-inherited, .overridden)):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property.invalid):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .editing-line .css-style-declaration-property:matches(.disabled, .other-vendor, .not-inherited, .overridden)):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .color-swatch):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .color-swatch > span):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .color-swatch:hover > span):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .color-swatch:active > span):
        (.css-style-text-editor > .CodeMirror .cm-link):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content > .pseudo-classes):
        (.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
        (.sidebar > .panel.details.css-style > .content.has-filter-bar + .filter-bar):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .filter-matching):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .style-declaration-section:not(.filter-section-has-label)):
        * UserInterface/Views/ChartDetailsSectionRow.css:
        (.details-section > .content > .group > .row.chart > .title):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label > .color-swatch):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label):
        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror .CodeMirror-selected):
        (.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
        (.CodeMirror .CodeMirror-lines .CodeMirror-nonmatchingbracket):
        (.CodeMirror .CodeMirror-gutters):
        (.CodeMirror .CodeMirror-linenumber):
        * UserInterface/Views/CompletionSuggestionsView.css:
        (.completion-suggestions):
        (.completion-suggestions-container > .item:active):
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-user-command.special-user-log > .console-message-text):
        (.console-message .repeat-count):
        (.console-message-preview-divider):
        (.console-message-enclosed):
        (.console-user-command > .console-message-text):
        (.console-saved-variable):
        * UserInterface/Views/DOMStorageContentView.css:
        (.content-view.dom-storage > .data-grid tr.missing-value td.value-column):
        (.content-view.dom-storage > .data-grid:focus tr.selected.missing-value td.value-column):
        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline li.hovered:not(.selected) .selection):
        (.dom-tree-outline li.selected .selection):
        (.dom-tree-outline li.elements-drag-over .selection):
        (.dom-tree-outline:focus li.selected .selection):
        (.showing-find-banner .dom-tree-outline .search-highlight):
        * UserInterface/Views/DataGrid.css:
        (.data-grid .highlight):
        (.data-grid.inline):
        (.data-grid th):
        (body.window-inactive .data-grid th):
        (.data-grid :matches(th, td):not(:last-child)):
        (body.window-inactive .data-grid :matches(th, td):not(:last-child)):
        (.data-grid th.sortable:active):
        (.data-grid th:matches(.sort-ascending, .sort-descending)):
        (.data-grid table.data):
        (.data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
        (.data-grid tr.selected):
        (.data-grid:matches(:focus, .force-focus) tr.selected):
        (.data-grid td .subtitle):
        (.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
        (.data-grid td.error):
        * UserInterface/Views/DatabaseContentView.css:
        (.storage-view .storage-table-error):
        (.database-user-query):
        (.database-query-text):
        * UserInterface/Views/DebuggerDashboardView.css:
        (.toolbar .dashboard.debugger):
        (.dashboard.debugger .navigation-bar .item.button > .glyph):
        (.dashboard.debugger > .divider):
        (.dashboard.debugger > .location .function-name):
        (.dashboard.debugger > .location .go-to-link):
        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger.paused .details-section.scripts):
        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item.enabled:hover):
        (.toolbar .dashboard.default > .item.enabled:active):
        (.toolbar .dashboard.default > .item > div):
        (.toolbar .dashboard.default > .item.enabled > div):
        (.toolbar .dashboard.default > .item.enabled:hover > div):
        (.toolbar .dashboard.default > .errors.enabled > div):
        (.toolbar .dashboard.default > .errors.enabled:hover > div):
        (.toolbar .dashboard.default > .issues.enabled > div):
        (.toolbar .dashboard.default > .issues.enabled:hover > div):
        * UserInterface/Views/DetailsSection.css:
        (.details-section):
        (.details-section .details-section):
        (.details-section .details-section:first-child):
        (.details-section > .header):
        (.details-section .details-section > .header):
        (.details-section .details-section:not(.collapsed) > .header):
        (.details-section.computed-style-properties:not(.collapsed) > .header):
        (.details-section > .header > label):
        (.details-section > .content > .group):
        (.details-section > .content > .group:nth-child(even) > .row:matches(.simple:first-child > *, :not(.simple):first-child)):
        (.details-section > .content > .group > .row.simple > .label):
        (.details-section > .content .data-grid tr:nth-child(odd)):
        * UserInterface/Views/DividerNavigationItem.css:
        (.navigation-bar .item.divider):
        * UserInterface/Views/Editing.css:
        (.editing):
        * UserInterface/Views/FilterBar.css:
        (.filter-bar):
        (.filter-bar > input[type="search"]):
        (.filter-bar > input[type="search"]::-webkit-input-placeholder):
        * UserInterface/Views/FindBanner.css:
        (.find-banner):
        (body.window-inactive .find-banner):
        (.find-banner > input[type="search"]):
        (.find-banner > button):
        (.find-banner > button:active:not(:disabled)):
        (.find-banner > button:disabled):
        * UserInterface/Views/FormattedValue.css:
        (:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset) > .size):
        (.formatted-number):
        (.formatted-boolean):
        (.formatted-string):
        (.formatted-regexp):
        (.formatted-symbol):
        (.formatted-null, .formatted-undefined):
        * UserInterface/Views/GoToLineDialog.css:
        (.go-to-line-dialog):
        (.go-to-line-dialog > div):
        (.go-to-line-dialog > div > input):
        (.go-to-line-dialog > div > input::-webkit-input-placeholder):
        (.go-to-line-dialog > div > img):
        (.go-to-line-dialog > div > img:active):
        * UserInterface/Views/GradientSlider.css:
        (.gradient-slider):
        (.gradient-slider-knob > div):
        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component > .title):
        * UserInterface/Views/HoverMenu.css:
        (.hover-menu > svg > :matches(path, rect)):
        * UserInterface/Views/ImageResourceContentView.css:
        (.content-view.resource.image):
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
        (.content-view.indexed-database-object-store > .data-grid table.data tr:nth-child(odd)):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
        (.panel.details.layer-tree .name-column :matches(.pseudo-element, .reflection)):
        (.panel.details.layer-tree tr.selected .name-column :matches(.pseudo-element, .reflection)):
        (.panel.details.layer-tree .bottom-bar):
        * UserInterface/Views/LogContentView.css:
        (.console-item):
        (.console-session + .console-session):
        (.console-messages a):
        (.console-messages a:hover):
        (.search-bar.log-search-bar > input[type="search"]):
        (.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted):
        (.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
        * UserInterface/Views/Main.css:
        (body.docked.bottom):
        (body.docked.right):
        (body.window-inactive.docked.bottom):
        (body.window-inactive.docked.right):
        (#split-content-browser):
        (body.window-inactive #split-content-browser):
        (#split-content-browser > .navigation-bar):
        (#split-content-browser .hierarchical-path-component.log-icon .title):
        (.message-text-view):
        (.message-text-view.error):
        (.go-to-link):
        (.value-with-clarification .clarification):
        (.bouncy-highlight):
        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar):
        (body.window-inactive .navigation-bar):
        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .overflow-shadow):
        (body.window-inactive .sidebar > .panel.navigation > .overflow-shadow):
        (.sidebar > .panel.navigation > .empty-content-placeholder > .message):
        (.navigation-sidebar-panel-content-tree-outline .item.selected):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected):
        (body.window-inactive .navigation-sidebar-panel-content-tree-outline .item.selected):
        (.navigation-sidebar-panel-content-tree-outline .item .highlighted):
        (.navigation-sidebar-panel-content-tree-outline .item .subtitle):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected .subtitle):
        * UserInterface/Views/NetworkGridContentView.css:
        (.content-view.network-grid > .data-grid table.data):
        * UserInterface/Views/NetworkSidebarPanel.css:
        (.sidebar > .panel.navigation.network > .title-bar):
        (body.window-inactive .sidebar > .panel.navigation.network > .title-bar):
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline):
        * UserInterface/Views/NetworkTimelineOverviewGraph.css:
        (.timeline-overview-graph.network:nth-child(even) > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
        * UserInterface/Views/NewTabContentView.css:
        (.new-tab.tab.content-view):
        (.new-tab.tab.content-view > .tab-item > .box):
        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview .name):
        (.object-preview > .size):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree-outline li .empty-message):
        * UserInterface/Views/OverviewTimelineView.css:
        (.timeline-view.overview > .timeline-ruler > .header):
        (body.window-inactive .timeline-view.overview > .timeline-ruler > .header):
        (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.has-inactive-segment) > .segment):
        (.timeline-view.overview > .data-grid:focus tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.has-inactive-segment) > .segment):
        (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (.timeline-view.overview > .data-grid:focus tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        * UserInterface/Views/ProbeSetDataGrid.css:
        (.details-section.probe-set .data-grid tr.past-value td):
        (.details-section.probe-set .data-grid > td.unknown-value):
        (@-webkit-keyframes blink-frame-highlight):
        (100%):
        (.details-section.probe-set .data-grid tr.separator):
        (@-webkit-keyframes blink-probe-frame):
        * UserInterface/Views/QuickConsole.css:
        (.quick-console):
        (body.window-inactive .quick-console):
        (.quick-console.showing-log):
        * UserInterface/Views/RadioButtonNavigationItem.css:
        (.navigation-bar .item.radio.button.text-only:hover):
        (.navigation-bar .item.radio.button.text-only.selected):
        (.navigation-bar .item.radio.button.text-only:active):
        (.navigation-bar .item.radio.button.text-only.selected:active):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview-graph.rendering-frame > .divider):
        (.timeline-overview-graph.rendering-frame > .divider > .label):
        * UserInterface/Views/ReplayDashboardView.css:
        (.toolbar .dashboard.replay):
        * UserInterface/Views/ResourceTreeElement.css:
        (.item.resource.failed):
        (.item.resource.failed .subtitle):
        * 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):
        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li):
        (.scope-bar > li:hover):
        (.scope-bar > li.selected):
        (.scope-bar > li:active):
        (.scope-bar > li.selected:active):
        * UserInterface/Views/SearchBar.css:
        (.search-bar > input[type="search"]):
        (.search-bar > input[type="search"]::-webkit-input-placeholder):
        * UserInterface/Views/SearchSidebarPanel.css:
        (.sidebar > .panel.navigation.search > .search-bar):
        * UserInterface/Views/Sidebar.css:
        (.sidebar):
        (.sidebar.left):
        (.sidebar.right):
        (body.window-inactive .sidebar.left):
        (body.window-inactive .sidebar.right):
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor > .CodeMirror .warning):
        (.source-code.text-editor > .CodeMirror .error):
        (.source-code.text-editor > .CodeMirror .issue-widget.warning):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning > .arrow):
        (.source-code.text-editor > .CodeMirror .issue-widget.error):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.error):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.error > .arrow):
        (.popover .debugger-popover-content > .body):
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.syntax-highlighted :matches(.css-comment, .javascript-comment, .html-comment)):
        (.syntax-highlighted :matches(.css-keyword, .css-tag, .css-at-rule, .css-important, .javascript-keyword, .html-tag)):
        (.syntax-highlighted :matches(.css-number, .javascript-number)):
        (.syntax-highlighted :matches(.css-string, .javascript-string, .javascript-regexp, .html-attribute-value)):
        (.syntax-highlighted :matches(.html-doctype, .html-processing-instruction)):
        (.syntax-highlighted .html-attribute-name):
        (.syntax-highlighted a):
        (.supports-find-banner.showing-find-banner .syntax-highlighted .search-result):
        (.cm-s-default .basic-block-has-not-executed):
        (.cm-s-default .basic-block-has-not-executed.cm-m-css:matches(.cm-atom, .cm-meta, .cm-variable-3, .cm-property)):
        (.cm-s-default .basic-block-has-not-executed:matches(.cm-number, .cm-atom.cm-hex-color)):
        (.cm-s-default .basic-block-has-not-executed.cm-string):
        (.cm-s-default .basic-block-has-not-executed.cm-m-xml.cm-meta):
        * UserInterface/Views/TabBar.css:
        (.tab-bar):
        (body.window-inactive .tab-bar):
        (.tab-bar > .top-border):
        (body.window-inactive .tab-bar > .top-border):
        (.tab-bar > .item):
        (.tab-bar.dragging-tab > .item.selected):
        (.tab-bar > .item:not(.disabled).selected):
        (.tab-bar > .item.new-tab-button:not(.disabled):hover):
        (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover + .item):
        (body.window-inactive .tab-bar > .item):
        (body.window-inactive .tab-bar > .item.selected):
        (.tab-bar > .item > .close:hover):
        (.tab-bar > .item > .title):
        (.tab-bar:not(.animating) > .item:not(.selected):hover > .title):
        (.tab-bar > .item.selected > .title):
        (.tab-bar.animating.closing-tab > .item.selected):
        (body.window-inactive .tab-bar.animating.closing-tab > .item.selected):
        * UserInterface/Views/TextEditor.css:
        (.text-editor > .CodeMirror .execution-line):
        (.text-editor > .CodeMirror .hovered-expression-highlight):
        (to):
        * UserInterface/Views/TimelineDataGrid.css:
        (.data-grid.timeline th):
        (body.window-inactive .data-grid.timeline th):
        (.timeline-data-grid-tree-outline .item:hover):
        (.timeline-data-grid-tree-outline .item .subtitle):
        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview > .graphs-container > .timeline-overview-graph:nth-child(even)):
        (.timeline-overview > .graphs-container > .timeline-overview-graph:not(:first-child)):
        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar > .segment):
        (:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment.inactive):
        (:matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (.timeline-record-bar.timeline-record-type-network > .segment):
        (.timeline-record-bar.timeline-record-type-network > .segment.inactive):
        (.timeline-record-bar.timeline-record-type-layout > .segment):
        (.timeline-record-bar.timeline-record-type-layout.layout-timeline-record-composite > .segment):
        (.timeline-record-bar.timeline-record-type-script > .segment):
        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame):
        (.timeline-record-frame > .frame > .duration):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-script):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-layout):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-paint):
        * UserInterface/Views/TimelineRecordingContentView.css:
        (.content-view.timeline-recording > .content-view-container > .timeline-view > .data-grid table.data):
        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .header):
        (body.window-inactive .timeline-ruler > .header):
        (.timeline-ruler > .header > .divider):
        (body.window-inactive .timeline-ruler > .header > .divider):
        (.timeline-ruler > .header > .divider > .label):
        (.timeline-ruler > .markers > .divider):
        (.timeline-ruler > .markers > .marker):
        (.timeline-ruler > .markers > .marker.load-event):
        (.timeline-ruler > .markers > .marker.dom-content-event):
        (.timeline-ruler > .markers > .marker.timestamp):
        (.timeline-ruler > .selection-handle):
        (.timeline-ruler > .shaded-area):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .status-bar):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .status-bar):
        (.sidebar > .panel.navigation.timeline > .status-bar > .record-status):
        (.sidebar > .panel.navigation.timeline > .title-bar):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
        (.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):nth-child(even)):
        (.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):not(:first-child)):
        (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
        (.sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item):
        * UserInterface/Views/TimelineView.css:
        (.panel.navigation.timeline.timeline-recording-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline):
        * UserInterface/Views/Toolbar.css:
        (.toolbar):
        (body.window-inactive .toolbar):
        * UserInterface/Views/TreeElementStatusButton.css:
        (.item > .status > .status-button > svg .filled):
        (.item > .status > .status-button > svg .stroked):
        * UserInterface/Views/TypeTokenView.css:
        (.type-token-function, .type-token-boolean):
        (.type-token-number):
        (.type-token-string):
        (.type-token-symbol):
        (.type-token-default):
        (.type-token-empty):
        (.type-token-many):
        * UserInterface/Views/TypeTreeView.css:
        (.type-tree-outline li .empty-message):

2015-07-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.assert(false, "Message") message is not visible in console
        https://bugs.webkit.org/show_bug.cgi?id=147130

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
        We were forgetting to assign the result of args.concat back into args.
        In re-addressing this, improve the formatting of output if there is
        a string message or not as the second argument to console.assert(), as
        that is the common usage.

2015-07-18  Saam barati  <saambarati1@gmail.com>

        [ES6] Add support for block scope const
        https://bugs.webkit.org/show_bug.cgi?id=31813

        Reviewed by Filip Pizlo.

        "const" variables do not live on the global object and are only
        accessible within the "Program" they're defined in. Therefore,
        the WebInspector global must be defined as "var" and not "const".

        * UserInterface/Base/WebInspector.js:

2015-07-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: REGRESSION (r186218) ScriptTimelineRecord attempts to access null property
        https://bugs.webkit.org/show_bug.cgi?id=147025

        Reviewed by Timothy Hatcher.

        The issue here was two ScriptTimelineRecord's were created for the same
        profile payload. When the first ScriptTimelineRecord processed the
        payload to create a Profile we modified the payload, then when the
        second ScriptTimelineRecord tries to process the payload the data is
        in an unexpected state and it crashes.

        The solution here is to stash the result on the payload, so when the
        payload is shared we can just immediately jump to the resulting Profile.
        The longer term solution will be to share higher level objects and not
        attempt to process the payload multiple times. That is tracked by:
        <https://webkit.org/b/147029> Web Inspector: Better share objects generated from timeline events (Records)

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
        When processing the profile payload, store the Profile on the payload
        so if another ScriptTimelineRecord has that payload they can avoid
        re-processing it.

2015-07-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Total Size of Resources number in dashboard is wrong (does not update during load)
        https://bugs.webkit.org/show_bug.cgi?id=147027

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._resourceSizeDidChange):
        Restore implementation of callback from r183328 to update total resource
        size as resources are downloaded.

2015-07-16  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Further optimize the weight and time icons taken back to the toolbar dashboard for the GTK+ port
        https://bugs.webkit.org/show_bug.cgi?id=147010

        SVG images optimized with a combination of sed replacements, the
        usage of the scour tool (http://www.codedread.com/scour/) and a
        forked version of the svgo tool (https://github.com/tanty/svgo).

        Also, added the class attribute to the shape elements following
        the convention used in Apple's images.

        Reviewed by Martin Robinson.

        * UserInterface/Images/gtk/Time.svg: Optimized.
        * UserInterface/Images/gtk/Weight.svg: Optimized.

2015-07-16  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add new Network icon for the GTK+ port
        https://bugs.webkit.org/show_bug.cgi?id=147002

        Reviewed by Martin Robinson.

        * UserInterface/Images/gtk/Network.svg: Added.
        Icon for the new Network tab.

2015-07-16  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Add new composite record icon for the GTK+ port
        https://bugs.webkit.org/show_bug.cgi?id=146998

        Reviewed by Martin Robinson.

        * UserInterface/Images/gtk/TimelineRecordComposite.svg: Added.
        New composite record icon.

2015-07-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Resizing TimelineRuler selection on both sides doesn't work with snapping enabled
        https://bugs.webkit.org/show_bug.cgi?id=146970

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
        Use snapped current time value when setting selection bounds.

2015-07-14  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r186698): Web Inspector: Frame selector is monospace again
        https://bugs.webkit.org/show_bug.cgi?id=146954

        Reviewed by Joseph Pecoraro.

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

2015-07-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TimelineRuler minimum selection time range should be configurable
        https://bugs.webkit.org/show_bug.cgi?id=146944

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/RenderingFrameTimelineOverview.js:
        Set minimum selection to 1 frame.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype.set selectionDuration):
        Use ruler's minimum duration.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler):
        (WebInspector.TimelineRuler.prototype.get minimumSelectionDuration):
        (WebInspector.TimelineRuler.prototype.set minimumSelectionDuration):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
        Added property for setting minimum selection duration. Default minimum duration is 0.01, which is
        equal to the old hard-coded minimum selection time range.

2015-07-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception in inspector for some ConsoleMessages
        https://bugs.webkit.org/show_bug.cgi?id=146919

        Reviewed by Brian Burg.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        The parameters list may not exist, so null check it before use.

2015-07-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Use -apple-system-monospaced-numbers for line numbers
        https://bugs.webkit.org/show_bug.cgi?id=146898

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror .CodeMirror-linenumber): Decrease font-size by 1px to make 4 digit numbers fit.

2015-07-12  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add -apple-system-monospaced-numbers to font and font-family autocomplete
        https://bugs.webkit.org/show_bug.cgi?id=146865

        Reviewed by Daniel Bates.

        * UserInterface/Models/CSSKeywordCompletions.js:

2015-07-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Inspector should be able to be docked to the bottom of a narrow window
        https://bugs.webkit.org/show_bug.cgi?id=146871

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Toolbar.css:
        (@media (max-width: 539px)): Hide download button to fit search field into the screen.

2015-07-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Improve runtime of pseudo-element sidebar style ordering
        https://bugs.webkit.org/show_bug.cgi?id=146866

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.update): Determines the most specific selector and saves it to a variable.
        (WebInspector.CSSRule.prototype.get mostSpecificSelector): Returns the most specific selector.
        (WebInspector.CSSRule.prototype.selectorIsGreater): Compares the most specific selector to a given selector.
        (WebInspector.CSSRule.prototype._determineMostSpecificSelector):
        Searches through the selector list to find and return the selector that is the most specific.
        (WebInspector.CSSRule):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):

2015-07-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: Warning icon tooltip for numbers with no units could be improved
        https://bugs.webkit.org/show_bug.cgi?id=146859

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
        If the property's value is incorrect and is comprised of only numbers, that must mean that the value needs
        to have units (like "px") after the number.  Added another warning icon case to support this scenario.

2015-07-10  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Use -apple-system instead of -webkit-system-font
        https://bugs.webkit.org/show_bug.cgi?id=146860

        Remove explicit uses of font-family where inhertance from the body is enough.
        Change -webkit-system-font to -apple-system and use -apple-system-monospaced-numbers
        for DataGrid and the toolbar dashboard.

        Reviewed by Sam Weinig.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-placeholder):
        * UserInterface/Views/DataGrid.css:
        (.data-grid td):
        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item):
        (.toolbar .dashboard.default > :matches(.time, .resourcesSize)):
        (.toolbar .dashboard.default > .resourcesSize):
        * 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 .prototype-name):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree-outline li .empty-message):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview-graph.rendering-frame > .divider > .label):
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor > .CodeMirror .issue-widget > .text):
        * UserInterface/Views/TypeTreeView.css:
        (.type-tree):

2015-07-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add source links to functions logged in the console
        https://bugs.webkit.org/show_bug.cgi?id=146377

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
        Returns a promise that contains the sourceCodeLocation if the object represents a function and has an objectId.
        (WebInspector.RemoteObject.prototype._isFunction):
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message .console-message-location):
        Added specified values for font sizing and family to ensure that all location links have the same styling.
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        Now creates a link to the source code of the entered text if the message is of the type "result".
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        (WebInspector.ConsoleMessageView.prototype._createRemoteObjectIfNeeded):
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        (WebInspector.ConsoleMessageView.prototype._linkifyLocation):
        (WebInspector.ConsoleMessageView.prototype._linkifyCallFrameLocation):
        (WebInspector.ConsoleMessageView.prototype._linkifyCallFrame):

2015-07-10  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Storage tab should have a scope bar in the sidebar
        https://bugs.webkit.org/show_bug.cgi?id=146799

        Fix a couple typos found post review.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel):

2015-07-09  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Storage tab should have a scope bar in the sidebar
        https://bugs.webkit.org/show_bug.cgi?id=146799

        Reviewed by Mark Lam.

        * Localizations/en.lproj/localizedStrings.js: Updated.
        * UserInterface/Main.html: Added StorageSidebarPanel.css.
        * UserInterface/Views/StorageSidebarPanel.css: Added.
        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel):
        (WebInspector.StorageSidebarPanel.prototype.hasCustomFilters):
        (WebInspector.StorageSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.StorageSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.StorageSidebarPanel.prototype._scopeBarSelectionDidChange):

2015-07-09  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make the TabBar work better with AX
        https://bugs.webkit.org/show_bug.cgi?id=146806

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar): Set role to tablist and drop tabIndex.
        * UserInterface/Views/TabBarItem.js:
        (WebInspector.TabBarItem): Set role to tab and tabIndex.
        (WebInspector.TabBarItem.prototype.set selected): Toggle aria-selected.

2015-07-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't clear the console when navigating to a different page
        https://bugs.webkit.org/show_bug.cgi?id=142751

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager): No longer distinguishes from page refreshes and page navigations for console clearing.
        (WebInspector.LogManager.prototype._delayedMessagesCleared):
        (WebInspector.LogManager.prototype._mainResourceDidChange):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._sessionStarted):
        (WebInspector.LogContentView.prototype._handleContextMenuEvent): Changed context menu keep/clear log text.
        (WebInspector.LogContentView.prototype._toggleClearLogOnNavigateSetting):
        (WebInspector.LogContentView.prototype._toggleClearLogOnReloadSetting): Deleted.

2015-07-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pseudo-element style ordering is wrong for pseudo-styles on unique selectors
        https://bugs.webkit.org/show_bug.cgi?id=146804

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.selectorIsGreater):
        Loops through the selectors in a rule to check if their specificity is greater than a given selector's specificity.
        * UserInterface/Models/CSSSelector.js:
        (WebInspector.CSSSelector.prototype.isGreaterThan):
        Determines if the given selector's specificity is greater than this selector's specificity.
        (WebInspector.CSSSelector):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):
        If the pseudo-element selector's specificity is greater than the current selector's
        specificity, create the pseudo-element's section and add it before the current style.

2015-07-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: Special Logs to Console that do not have an expression should be styled differently, looks like code
        https://bugs.webkit.org/show_bug.cgi?id=143840

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.WebInspector.JavaScriptLogViewController.appendImmediateExecutionWithResult):
        Now applies a class to special logs initiated by the user (log element, log object, etc).
        * UserInterface/Views/ConsoleCommandView.js:
        (WebInspector.ConsoleCommandView): Added className parameter.
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-user-command.selected-element-log):
        (.console-user-command.special-user-log > .console-message-text):
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu):
        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._contextMenuHandler):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._logSymbolProperty):
        (WebInspector.ObjectTreeBaseTreeElement.prototype._logValue):

2015-07-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: Checkbox disappears when unchecking CSS background style
        https://bugs.webkit.org/show_bug.cgi?id=146776

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers): Now uses _createCommentedCheckboxMarker.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createCommentedCheckboxMarker):
        Scans the content of the given lineHandle for any commented text and adds an unselected checkbox to
        the beginning of that lineHandle's line.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent): Now adds commented checkbox markers.

2015-07-09  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Align slider knobs in the color picker
        https://bugs.webkit.org/show_bug.cgi?id=146778

        Also:
        - Use half pixel borders on retina
        - Remove one pixel white outline to match native OS X color picker more closely

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ColorPicker.css:
        (.color-picker > .slider > img):
        * UserInterface/Views/Slider.css:
        (.slider):
        (@media (-webkit-min-device-pixel-ratio: 2)):

2015-07-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frame segment colors should match those used in original Timelines graph
        https://bugs.webkit.org/show_bug.cgi?id=146777

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame > .frame > .duration):
        (.timeline-record-frame > .frame > .duration:last-child):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-script):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-layout):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-paint):
        Use same RGB values as TimelineRecordBar.

2015-07-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: New JavaScript/Probe breakpoint action disappears when clicking continue checkbox
        https://bugs.webkit.org/show_bug.cgi?id=146688

        Reviewed by Brian Burg.

        Delay removal of empty Evaluate and Probe actions until after the breakpoint popover has been dismissed. This
        will make the breakpoint editing experience less jarring, by preventing actions from disappearing when clicking
        other controls in the popover.

        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype.didDismissPopover):
        Clear empty Evaluate and Probe actions on popover dismissal.

        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._codeMirrorBlurred):
        Don't remove actions with empty data on CodeMirror blur.

2015-07-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: new breakpoint action dialog should reuse same action type
        https://bugs.webkit.org/show_bug.cgi?id=137255

        Reviewed by Brian Burg.

        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._appendActionButtonClicked):
        Use the view's action type instead of the default.

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Copy Rule in the context menu copies hidden properties in the rule
        https://bugs.webkit.org/show_bug.cgi?id=146775

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._generateCSSRuleString):
        Now only uses properties from the rule's visibleProperties list.

2015-07-08  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add page weight and time back to the toolbar dashboard
        https://bugs.webkit.org/show_bug.cgi?id=146755

        Revert r183328 which removed the page weight and load time from the dashboard. We have space
        in the dashboard, we can put these back since we didn't find a better home for them.

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js: Updated.
        * UserInterface/Base/Main.js:
        (WebInspector.showNetworkTab):
        * UserInterface/Images/Time.svg: Added.
        * UserInterface/Images/Weight.svg: Added.
        * UserInterface/Images/gtk/Time.svg: Added.
        * UserInterface/Images/gtk/Weight.svg: Added.
        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard):
        (WebInspector.DefaultDashboard.prototype.get resourcesSize):
        (WebInspector.DefaultDashboard.prototype.set resourcesSize):
        (WebInspector.DefaultDashboard.prototype.get time):
        (WebInspector.DefaultDashboard.prototype.set time):
        (WebInspector.DefaultDashboard.prototype._mainResourceDidChange):
        (WebInspector.DefaultDashboard.prototype._capturingStopped):
        (WebInspector.DefaultDashboard.prototype._startUpdatingTime):
        (WebInspector.DefaultDashboard.prototype._stopUpdatingTime):
        (WebInspector.DefaultDashboard.prototype._updateTime):
        * UserInterface/Views/DashboardContainerView.css:
        (body.web .toolbar .dashboard-container):
        (body.javascript .toolbar .dashboard-container):
        (.toolbar.collapsed .dashboard-container):
        (.toolbar .dashboard-container): Deleted.
        * UserInterface/Views/DefaultDashboardView.css:
        (body.web .toolbar.collapsed .dashboard.default > :matches(.resourcesSize, .time, .logs)):
        (body.javascript .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)):
        (.toolbar .dashboard.default > .resourcesSize):
        (.toolbar .dashboard.default > .time > img):
        (.toolbar .dashboard.default > .resourcesSize > img):
        (body.web .toolbar.collapsed .dashboard.default > .item.resourcesCount): Deleted.
        (body.javascript .toolbar .dashboard.default > .item.resourcesCount): Deleted.
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView):
        (WebInspector.DefaultDashboardView.prototype._updateDisplay):
        (WebInspector.DefaultDashboardView.prototype._networkItemWasClicked):
        (WebInspector.DefaultDashboardView.prototype._timelineItemWasClicked):

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Style sidebar is showing incorrect strikethroughs
        https://bugs.webkit.org/show_bug.cgi?id=146768

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._markOverriddenProperties):
        No longer sets the effective property as overridden if the overriding property is anonymous (not visible).

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Color swatches show up in color names in comments
        https://bugs.webkit.org/show_bug.cgi?id=146757

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CodeMirrorAdditions.js: Color markers now only appear if the color is in a keyword.

2015-07-08  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Only record a timeline when the Timelines tab is showing
        https://bugs.webkit.org/show_bug.cgi?id=146759

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.get autoCaptureOnPageLoad):
        (WebInspector.TimelineManager.prototype.set autoCaptureOnPageLoad):
        (WebInspector.TimelineManager.prototype._startAutoCapturing):
        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView.prototype.shown):
        (WebInspector.TimelineTabContentView.prototype.hidden):

2015-07-08  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Details sidebar doesn't activate on first selected resource in Network tab
        https://bugs.webkit.org/show_bug.cgi?id=146691

        Make sure the SelectionPathComponentsDidChange event is dispatched when the tree elements are selected.
        Selecting in the DataGrid selects the TreeElements, but onselect is not fired to avoid an inifinte loop.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView): Hook up _treeElementSelected.
        (WebInspector.NetworkGridContentView.prototype._treeElementSelected): Added. Moved from
        NetworkSidebarPanel and added dispatch of SelectionPathComponentsDidChange event.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel): Removed _treeElementSelected.
        (WebInspector.NetworkSidebarPanel.prototype.canShowDifferentContentView): Renamed from _canShowDifferentContentView.
        (WebInspector.NetworkSidebarPanel.prototype._canShowDifferentContentView): Deleted.
        (WebInspector.NetworkSidebarPanel.prototype._treeElementSelected): Moved to NetworkGridContentView.

        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.treeElementSelected): Dispatch SelectionPathComponentsDidChange event.

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Confusingly crossed out properties in .sidebar > .panel.navigation.timeline > .title-bar
        https://bugs.webkit.org/show_bug.cgi?id=146727

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
        The properties map used for refreshing each property now holds a list of properties for each line to ensure that
        if a duplicate property exists, it also gets refreshed.

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Can't select last row in the timeline because it's covered by filter selector
        https://bugs.webkit.org/show_bug.cgi?id=146603

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ScopeBar.js: Now adds a class to the scope bar if the default item is selected.
        * UserInterface/Views/LayoutTimelineView.js:
        * UserInterface/Views/NetworkTimelineView.js:
        * UserInterface/Views/TimelineDataGrid.css:
        (.data-grid.timeline > .navigation-bar-container): Deleted.
        (.data-grid.timeline.has-non-default-filter > .navigation-bar-container): Deleted.
        (.data-grid.timeline:hover > .navigation-bar-container): Deleted.
        (.data-grid.timeline > .navigation-bar-container > .navigation-bar): Deleted.
        (body.window-inactive .data-grid.timeline > .navigation-bar-container > .navigation-bar): Deleted.
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid):
        (WebInspector.TimelineDataGrid.createColumnScopeBar):
        (WebInspector.TimelineDataGrid.prototype.updateLayout): Deleted.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple path):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.set contentTreeOutlineScopeBar):
        Clears the title bar scope element and adds the given element as a child node.
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineScopeBar):
        Returns the scope bar element of the current object if it exists.

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Clicking style checkbox selects the property name while mouse down
        https://bugs.webkit.org/show_bug.cgi?id=146728

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown):
        Now returns if the click was not at the end of the line.

2015-07-08  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r185629): Web Inspector: Filtering doesn't display any items if folders are used to organize the web page resources
        https://bugs.webkit.org/show_bug.cgi?id=146675

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeElement.prototype.revealed): Added ignoreHidden parameter.
        (WebInspector.TreeElement.prototype.traverseNextTreeElement.shouldSkip): Pass true to ignore hidden elements.
        (WebInspector.TreeElement.prototype.traverseNextTreeElement): Populate up front like the old traverseNextTreeElement.
        This is needed to traverse into lazy populated tree elements. Don't call shouldSkip in the loop.
        (WebInspector.TreeElement.prototype.traversePreviousTreeElement.shouldSkip): Pass true to ignore hidden elements.
        (WebInspector.TreeElement.prototype.traversePreviousTreeElement): Add some newlines.

2015-07-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pressing delete in the styles sidebar with no text causes text to become misaligned
        https://bugs.webkit.org/show_bug.cgi?id=146715

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleBeforeChange):
        Now returns if the change was in the first character of the first line.

2015-07-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Use "hairline" borders on retina screen
        https://bugs.webkit.org/show_bug.cgi?id=146619

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section):
        (.style-declaration-section.locked):
        (.style-declaration-section:not(.locked)):
        (.style-declaration-section.last-in-group):
        (.style-declaration-section + .style-declaration-section):
        (.style-declaration-section.last-in-group + .style-declaration-section):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        * UserInterface/Views/DetailsSection.css:
        (.details-section .details-section):
        (.details-section > .content > .group:nth-child(even)):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        * UserInterface/Views/DividerNavigationItem.css:
        (@media (-webkit-min-device-pixel-ratio: 2)):
        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules .label + .style-declaration-section):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label.filter-matching-label):
        (.sidebar > .panel.details.css-style > .content:not(.filter-in-progress) > .rules > .new-rule + .style-declaration-section):
        (.sidebar > .panel.details.css-style > .content:not(.filter-in-progress) > .rules > .new-rule + .label):
        (@media (-webkit-min-device-pixel-ratio: 2)):

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pressing tab on a comment in the styles sidebar doesn't highlight the comment
        https://bugs.webkit.org/show_bug.cgi?id=146709

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.selectFirstProperty):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.selectLastProperty):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._textAtCursorIsComment):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleEnterKey):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._insertNewlineAfterCurrentLine):
        Determines if the text at the given cursor position in the given line is a comment.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey):

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: spacebar should pause/resume timeline recording when timelines are open
        https://bugs.webkit.org/show_bug.cgi?id=143267

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineSidebarPanel): Added two new keyboard shortcuts: space and shift-space.
        (WebInspector.TimelineSidebarPanel.prototype.shown): Enables the keyboard shortcuts.
        (WebInspector.TimelineSidebarPanel.prototype.hidden): Disables the keyboard shortcuts.
        (WebInspector.TimelineSidebarPanel.prototype._toggleRecordingOnSpacebar):
        (WebInspector.TimelineSidebarPanel.prototype._toggleNewRecordingOnSpacebar):
        (WebInspector.TimelineSidebarPanel.prototype._toggleRecording): Starts/stops recording.

2015-07-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve names for unprefixed animation events
        https://bugs.webkit.org/show_bug.cgi?id=146708

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ScriptTimelineRecord.js:

2015-07-07  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Timeline record bars are not white when the row is selected from the sidebar
        https://bugs.webkit.org/show_bug.cgi?id=146694

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TimelineRecordBar.css:
        (:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment):
        (:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment.inactive):
        (:matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Unnecessary space added after -webkit- prefixed property values
        https://bugs.webkit.org/show_bug.cgi?id=146671

        Reviewed by Joseph Pecoraro.

        * Tools/PrettyPrinting/css-rule-tests/do-not-add-whitespace-before-prefixed-property-value-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/do-not-add-whitespace-before-prefixed-property-value.css: Added.
        * Tools/PrettyPrinting/index.html:
        * UserInterface/Views/CodeMirrorFormatters.js: Now only adds a space if both the current and previous
        tokens are a property, value, or atom.

2015-07-07  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Pad ruler selection area by 1px in the Rendering Frames timeline overview
        https://bugs.webkit.org/show_bug.cgi?id=146248

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RenderingFrameTimelineOverview.js:
        Enable duration pixel alignment.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview.frames > .timeline-ruler > .header > .divider):
        (.timeline-overview.frames > .timeline-ruler > .selection-handle.right):
        (.timeline-overview.frames > .timeline-ruler > .shaded-area.right):
        Shift ruler elements 1 pixel to the right, so that selection boundaries and dividers are
        positioned inside the gap between frame elements.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
        (WebInspector.TimelineOverview.prototype.get pixelAlignDuration):
        (WebInspector.TimelineOverview.prototype.set pixelAlignDuration):
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        Added a property to force the overview graph to align duration units on the y-axis to pixel boundaries.
        When enabled, frame elements are displayed in integer widths while zooming, preventing subpixel blurring
        and maintaining a consistent 1 pixel gap between frames.

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Tabbing in the styles sidebar doesn't highlight the next section of text
        https://bugs.webkit.org/show_bug.cgi?id=146676

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue): Modified the logic to only search the
        remaining text after the current cursor position.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey): Now only searches for matches before the colon.

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Option+Click not jumping to resource
        https://bugs.webkit.org/show_bug.cgi?id=146498

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js: Always show the tab which contains the represented object.
        (WebInspector._domNodeWasInspected):
        (WebInspector._frameWasAdded):
        (WebInspector.showConsoleTab):
        (WebInspector.showRepresentedObject): Removed forceShowTab parameter.
        (WebInspector.showMainFrameDOMTree):
        (WebInspector.showContentFlowDOMTree):
        (WebInspector.showSourceCodeForFrame):
        (WebInspector.showSourceCode):
        (WebInspector.showSourceCodeLocation):
        (WebInspector.showOriginalUnformattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeTextRange):
        (WebInspector.showResourceRequest):
        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._mouseButtonWasReleasedOverEditor):
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showMainResourceForFrame):
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):
        (WebInspector.ComputedStyleDetailsPanel):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        (WebInspector.ObjectTreeBaseTreeElement):

2015-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Regression: CSS autocompletion suggestion applies on pressing delete
        https://bugs.webkit.org/show_bug.cgi?id=146672

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleBeforeChange): Now returns if completions are showing.

2015-07-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Properly align checkboxes in the styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=146673

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines input[type=checkbox]):

2015-07-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frame bars appear misaligned and contain gaps when displaying small task segments
        https://bugs.webkit.org/show_bug.cgi?id=146475

        Reviewed by Timothy Hatcher.

        Displaying all task segments within a frame in the Rendering Frames graph is impossible, as very short tasks
        would result in a bar with a height of less than 1 pixel. Consecutive small tasks, each less than a visible
        pixel, appear as gaps in the frame bar. This patch addresses these shortcomings by introducing a minimum
        displayable frame height (3 pixels), and setting the height of every frame to a multiple of the minimum height.

        * UserInterface/Base/Utilities.js:
        (.value):
        Added Math.roundTo to simplify rounding to arbitrary intervals.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame):
        (.timeline-record-frame > .frame > .duration):
        Enforce 3px min height for frames & segments. TimelineRenderingFrame's segment height calculator
        creates segments that are always at least 3px, this is just a precaution.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.prototype._calculateFrameDisplayData.updateDurationRemainder):
        (WebInspector.TimelineRecordFrame.prototype._calculateFrameDisplayData.pushCurrentSegment):
        (WebInspector.TimelineRecordFrame.prototype._calculateFrameDisplayData.invisibleSegments.forEach):
        (WebInspector.TimelineRecordFrame.prototype._updateChildElements.createDurationElement): Deleted.
        Added algorithm for calculating frame segment heights, rather than simply dividing each task's
        duration by the frame duration. Results are cached so the segment heights aren't needlessly
        recalculated on every scroll/zoom.

2015-07-06  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Force show Console tab when supportsSplitContentBrowser is false
        https://bugs.webkit.org/show_bug.cgi?id=146661

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.showConsoleTab):

2015-07-06  Devin Rousso  <drousso@apple.com>

        Web Inspector: Clearing the console does not remove the unread message icon
        https://bugs.webkit.org/show_bug.cgi?id=146649

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._clearLog): Removes the "unread" class from all scope bar items.

2015-07-02  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add a dedicated Network tab that is always live
        https://bugs.webkit.org/show_bug.cgi?id=146568

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js: Updated.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.isTabTypeAllowed):
        (WebInspector._tabContentViewForType):
        (WebInspector._updateNewTabButtonState):
        Add NetworkTabContentView to the right places.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager):
        (WebInspector.TimelineManager.prototype.get persistentNetworkTimeline):
        (WebInspector.TimelineManager.prototype._mainResourceDidChange):
        (WebInspector.TimelineManager.prototype._resourceWasAdded):
        Add a persistent network timeline that always has all resources.

        * UserInterface/Images/Network.svg: Added.

        * UserInterface/Main.html: Added new files.

        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .content):
        Drive-by fix. The bottom was off by one. This caused misalignment between sidebar and content view when
        scrolled all the way to the bottom of the content view.

        * UserInterface/Views/NetworkGridContentView.css: Added.
        (.content-view.network-grid > .data-grid):
        (.content-view.network-grid > .data-grid th):
        (.content-view.network-grid > .data-grid td):
        (.content-view.network-grid > .data-grid table.data):
        Mostly copied from TimelineView.css and NetworkTimelineView.css.

        * UserInterface/Views/NetworkGridContentView.js: Added.
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype.get navigationSidebarTreeOutline):
        (WebInspector.NetworkGridContentView.prototype.get selectionPathComponents):
        (WebInspector.NetworkGridContentView.prototype.get zeroTime):
        (WebInspector.NetworkGridContentView.prototype.shown):
        (WebInspector.NetworkGridContentView.prototype.hidden):
        (WebInspector.NetworkGridContentView.prototype.closed):
        (WebInspector.NetworkGridContentView.prototype.updateLayout):
        (WebInspector.NetworkGridContentView.prototype.needsLayout):
        (WebInspector.NetworkGridContentView.prototype.reset):
        (WebInspector.NetworkGridContentView.prototype._processPendingRecords):
        (WebInspector.NetworkGridContentView.prototype._networkTimelineReset):
        (WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
        (WebInspector.NetworkGridContentView.prototype._treeElementPathComponentSelected):
        (WebInspector.NetworkGridContentView.prototype._dataGridNodeSelected):
        Mostly copied from NetworkTimelineView.

        * UserInterface/Views/NetworkSidebarPanel.css: Added.
        (.sidebar > .panel.navigation.network > :matches(.content, .empty-content-placeholder)):
        (.sidebar > .panel.navigation.network > .navigation-bar):
        (.sidebar > .panel.navigation.network > .title-bar):
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content):
        (.sidebar > .panel.navigation.network .item:hover:not(.selected) .status .close.status-button):
        (.sidebar > .panel.navigation.network:not(.network-grid-content-view-showing) .status .go-to-arrow.status-button):
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing .status .close.status-button):
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing .navigation-sidebar-panel-content-tree-outline.network-grid .item .subtitle):
        (.sidebar > .panel.navigation.network > .content > .navigation-sidebar-panel-content-tree-outline):
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline):
        Mostly copied from TimelineSidebarPanel.css and NetworkTimelineView.css.

        * UserInterface/Views/NetworkSidebarPanel.js: Added.
        (WebInspector.NetworkSidebarPanel):
        (WebInspector.NetworkSidebarPanel.prototype.closed):
        (WebInspector.NetworkSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.NetworkSidebarPanel.prototype.saveStateToCookie):
        (WebInspector.NetworkSidebarPanel.prototype.restoreStateFromCookie):
        (WebInspector.NetworkSidebarPanel.prototype.hasCustomFilters):
        (WebInspector.NetworkSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.NetworkSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        (WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
        (WebInspector.NetworkSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
        (WebInspector.NetworkSidebarPanel.prototype._treeElementGoToArrowWasClicked):
        (WebInspector.NetworkSidebarPanel.prototype._treeElementCloseButtonClicked):
        (WebInspector.NetworkSidebarPanel.prototype._canShowDifferentContentView):
        (WebInspector.NetworkSidebarPanel.prototype._treeElementSelected):
        (WebInspector.NetworkSidebarPanel.prototype._scopeBarSelectionDidChange):
        A hybrid of ResourceSidebarPanel and TimelineSidebarPanel.

        * UserInterface/Views/NetworkTabContentView.js: Added.
        (WebInspector.NetworkTabContentView):
        (WebInspector.NetworkTabContentView.prototype.get type):
        (WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):

        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView): Add Network tab and sort the tabs by their localized name.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype._handleNewTabClick):
        Drive-by fix. Don't fire the click event if the new tab button is disabled.

2015-07-06  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Mark console filters that have unseen messages by colored dots
        https://bugs.webkit.org/show_bug.cgi?id=146616

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.log-scope-bar > li.unread::before):
        (.log-scope-bar > li.unread:hover::before):
        (.log-scope-bar > li.unread.errors::before):
        (.log-scope-bar > li.unread.warnings::before):
        (.log-scope-bar > li.unread.logs::before):
        (@keyframes unread-background-pulse):

2015-07-06  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Exceptions in Network timeline when resource updates and filters are applied
        https://bugs.webkit.org/show_bug.cgi?id=146609

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.insertChild):
        (WebInspector.DataGrid.prototype.removeChild):
        (WebInspector.DataGridNode.prototype.savePosition):
        Convert exceptions to asserts and early returns.

        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes): Add some asserts and checks.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype.appendChild):
        (WebInspector.TreeOutline.prototype.insertChild):
        (WebInspector.TreeOutline.prototype.removeChildAtIndex):
        (WebInspector.TreeOutline.prototype.removeChild):
        Convert exceptions to asserts and early returns.

2015-07-05  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Cached resources are missing startTime and size in Network timeline
        https://bugs.webkit.org/show_bug.cgi?id=146607

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache): Pass elapsedTime in the right argument order.
        Add missing calls to Resource.increaseSize and Resource.increaseTransferSize.
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse): Pass elapsedTime in the right argument order.

2015-07-05  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Dim more borders when the window is inactive
        https://bugs.webkit.org/show_bug.cgi?id=146608

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DataGrid.css:
        (body.window-inactive .data-grid th):
        (body.window-inactive .data-grid :matches(th, td):not(:last-child)):
        * UserInterface/Views/NavigationSidebarPanel.css:
        (body.window-inactive .sidebar > .panel.navigation > .overflow-shadow):
        * UserInterface/Views/OverviewTimelineView.css:
        (body.window-inactive .timeline-view.overview > .timeline-ruler > .header):
        * UserInterface/Views/TimelineDataGrid.css:
        (body.window-inactive .data-grid.timeline th):
        (body.window-inactive .data-grid.timeline > .navigation-bar-container > .navigation-bar):
        * UserInterface/Views/TimelineRuler.css:
        (body.window-inactive .timeline-ruler > .header):
        (body.window-inactive .timeline-ruler > .header > .divider):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (body.window-inactive .sidebar > .panel.navigation.timeline > .status-bar):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar):
        (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar.timeline-events):

2015-07-05  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Timeline row selection should have same background color in sidebar and data grid
        https://bugs.webkit.org/show_bug.cgi?id=146606

        Support a force-focus class name that TreeOutlineDataGridSynchronizer applies when one of the
        elements is focused, so the other can look focused too.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DataGrid.css:
        (.data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
        (.data-grid:matches(:focus, .force-focus) tr.parent.selected td.disclosure::before):
        (.data-grid:matches(:focus, .force-focus) tr.parent.expanded.selected td.disclosure::before):
        (.data-grid:matches(:focus, .force-focus) tr.selected):
        (.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):

        * UserInterface/Views/Main.css:
        (:matches(:focus, .force-focus) .selected .go-to-arrow):
        (:matches(:focus, .force-focus) .selected .go-to-arrow:active):

        * UserInterface/Views/NavigationSidebarPanel.css:
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected .disclosure-button):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected.expanded .disclosure-button):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected):
        (.navigation-sidebar-panel-content-tree-outline:matches(:focus, .force-focus) .item.selected .subtitle):

        * UserInterface/Views/TreeElementStatusButton.css:
        (:matches(:focus, .force-focus) .item.selected > .status > .status-button > svg .filled):
        (:matches(:focus, .force-focus) .item.selected > .status > .status-button > svg .stroked):

        * UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
        (WebInspector.TreeOutlineDataGridSynchronizer):
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridGainedFocus): Added.
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridLostFocus): Added.
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineGainedFocus): Added.
        (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineLostFocus): Added.

2015-07-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Deleting in the CSS sidebar causes the warning icon to appear mid-word
        https://bugs.webkit.org/show_bug.cgi?id=146617

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleBeforeChange): Now removes all marks whenever the user deletes.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded): The invalid marker now calculates
        it's position based off of where the semicolon is in the property text.

2015-07-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: CSS rule with 2 pseudo-selectors appears twice
        https://bugs.webkit.org/show_bug.cgi?id=146576

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):
        Only adds pseudo-elements if the previous pseudo-element has a different selector.

2015-07-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Wrong cursor position in styles panel when deleting a line break
        https://bugs.webkit.org/show_bug.cgi?id=146577

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleBeforeChange): If the change is a deletion at the beginning of a line,
        remove all markers on that line to ensure that there is no blank space on the previous line after deleting.

2015-07-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pressing tab on a newline in the console should insert a tab character
        https://bugs.webkit.org/show_bug.cgi?id=146612

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt.prototype._handleTabKey): Tabs can now be inserted at the beginning of newlines and before the first
        non-space character on any other line.

2015-07-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pressing enter on a newline in the styles sidebar inserts a semicolon
        https://bugs.webkit.org/show_bug.cgi?id=146611

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleEnterKey): Now returns if the line is empty.

2015-07-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Console should indicate if you have unseen messages in console due to filters
        https://bugs.webkit.org/show_bug.cgi?id=143166

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.updatePreviousMessageRepeatCount): Now returns true/false depending on if
        the message count was actually updated.
        * UserInterface/Views/LogContentView.css:
        (.log-scope-bar > li.unread): Applies the unread-border-pulse keyframe animation.
        (.log-scope-bar > li.unread.errors): The pulsing border is colored red.
        (.log-scope-bar > li.unread.warnings): The pulsing border is colored yellow(ish).
        (.log-scope-bar > li.unread.logs): The pulsing border is colored grey.
        (@keyframes unread-border-pulse): Changes the color of the border from transparent to whatever is specificed.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._determineMessageLevel):
        (WebInspector.LogContentView.prototype._pulseScopeBarItemBorder): Adds the class "unread" to the scope bar item whose panel
        the newest message belongs to, but only if that panel or the All panel is not visible.
        (WebInspector.LogContentView.prototype._messageAdded):
        (WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
        (WebInspector.LogContentView.prototype._scopeBarSelectionDidChange): Clears the "unread" class on the selected scope bar item.
        (WebInspector.LogContentView.prototype._filterMessageElements):
        * UserInterface/Views/ScopeBar.js:
        (WebInspector.ScopeBar.prototype.get items): Returns a list of all the items in the scope bar.
        * UserInterface/Views/ScopeBarItem.js:
        (WebInspector.ScopeBarItem): Added another parameter to allow for a custom class name.

2015-07-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pseudo Styles Ordering and Media Queries
        https://bugs.webkit.org/show_bug.cgi?id=145979

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label:not(.filter-section-non-matching) + .label.filter-matching-label:not(.filter-section-non-matching)):
        Fix filter label styling with pseudo selectors.
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh): Pseudo-selector rules will now order directly after the last style that
        matches the pseudo-selector without the pseudo-element.  If no rules match, place the pseudo-selector rules above the first
        inherited or UserAgent rule (whichever comes first).

2015-07-04  Devin Rousso  <drousso@apple.com>

        REGRESSION(r184000): Web Inspector: Multiline CSS in Styles Sidebar is marked as invalid
        https://bugs.webkit.org/show_bug.cgi?id=146178

        Reviewed by Timothy Hatcher.

        First changes made by Tobias Reiss  <tobi+webkit@basecode.de>

        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-between-values-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-between-values.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-between-rules-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-between-rules.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-newline-between-values-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-newline-between-values.css: Added.
        * Tools/PrettyPrinting/index.html:
        Add regression tests.
        * UserInterface/Views/CodeMirrorFormatters.js:
        Remove newlines before values that belong in one line and add whitespace between values. 

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

        Web Inspector: The arrow that appears for Web Inspector Layout & Rendering records overlaps the category switcher
        https://bugs.webkit.org/show_bug.cgi?id=146605

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineDataGrid.css:
        (.data-grid.timeline > .navigation-bar-container):

2015-07-03  Dan Bernstein  <mitz@apple.com>

        [Xcode] Update some build settings as recommended by Xcode 7
        https://bugs.webkit.org/show_bug.cgi?id=146597

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_UNREACHABLE_CODE and
        GCC_NO_COMMON_BLOCKS.
        * WebInspectorUI.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.

2015-07-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Show suggest popover on Tab press even if it wasn't showing before
        https://bugs.webkit.org/show_bug.cgi?id=146496

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey): Pressing tab will try to autocomplete before trying
        to add an ending colon/semicolon or highlight the next section of text.

2015-07-01  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Aggregate profile call information on the backend to drastically reduce profile sizes
        https://bugs.webkit.org/show_bug.cgi?id=146536

        Reviewed by Timothy Hatcher.

        Since we still support legacy backends, the frontend documents where
        it is handling legacy backends with compatibility comments.

        * UserInterface/Models/ProfileNode.js:
        (WebInspector.ProfileNode):
        (WebInspector.ProfileNode.prototype.get callInfo):
        Handle a ProfileNode created with callInfo or calls. They are mutually exclusive.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
        If the profile has per-call information, construct ProfileNodeCall objects, otherwise
        just construct the ProfileNode with the aggregate callInfo value.

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
        When we have aggregate call information we cannot easily partition a script,
        so we instead treat the entire script as one large atomic unit in the timeline.
        If the timeline range has any portion of the script, show the entire script.
        Users used to be able to select a portion of a script and view the relevant
        functions called in just that sliver, but this doesn't appear to be a well
        known feature or commonly used. In fact, given the small ranges of time it
        could be confusing for users.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.matchTreeElementAgainstCustomFilters):
        Treat as a discrete unit.

2015-07-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: When autocompleting, pressing tab twice shouldn't insert a tab character
        https://bugs.webkit.org/show_bug.cgi?id=145885

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController):
        (WebInspector.CodeMirrorCompletionController.prototype.updateCompletions): Resolves the promise as having completions.
        (WebInspector.CodeMirrorCompletionController.prototype.hideCompletions): Resolves the promise as not having completions.
        (WebInspector.CodeMirrorCompletionController.prototype.completeAtCurrentPositionIfNeeded): Returns a WrappedPromise that allows
        callers of this function to determine if the autocomplete had any values or was instead not shown.
        (WebInspector.CodeMirrorCompletionController.prototype._resolveUpdatePromise):
        * UserInterface/Main.html: Added WrappedPromise class.
        * UserInterface/Models/WrappedPromise.js: Added WrappedPromise object to expose resolve and reject functions.
        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt.prototype._handleTabKey): Attempts to find completions for current text.  If there are none, beep.

2015-07-01  Devin Rousso  <drousso@apple.com>

        Make the first click on a rule section create a newline for easy property addition
        https://bugs.webkit.org/show_bug.cgi?id=146490

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleEnterKey): Inserts a semicolon if the line is missing one.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown): If the user clicks on a property with the editor being
        unfocused, the name/value containing the cursor will be highlighted.  If instead the user clicks at the end of a line, the
        cursor's position is saved for mouseUp.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp): If the mouseDown cursor position was saved and is equal
        to the current cursor's position (the user did not drag), add a newline after the current line and place the cursor on that line.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey.highlightNextNameOrValue): Deleted.

2015-06-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: add " = $0" hint after selected element in main DOMTreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=145739

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.css: Adds a semi-opaque " = $0" to the selected element in the DOM tree.
        (.dom-tree-outline li.selected > span::after):
        (.dom-tree-outline:focus li.selected > span::after):

2015-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ProfileNode cleanup
        https://bugs.webkit.org/show_bug.cgi?id=146472

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ProfileNode.js:
        (WebInspector.ProfileNode):
        Use Array.prototype.every instead of reduce.
        Correct the name of a function to be what callers expect!

2015-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: iOS 8: Profile Nodes not showing in JavaScript Timeline
        https://bugs.webkit.org/show_bug.cgi?id=146471

        Reviewed by Brian Burg.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeCallFromPayload):
        For legacy backends, convert the startTime to the proper timestamp type.

2015-06-30  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Reduce rendering frames "Other" time by instrumenting compositing
        https://bugs.webkit.org/show_bug.cgi?id=146168

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._processRecord):
        Added handling for new Composite record type. Paint records with a parent Composite record
        are flagged to simplify processing after the event hierarchy is unpacked.

        * UserInterface/Images/TimelineRecordComposite.svg: Added.
        New composite record icon.

        * UserInterface/Models/LayoutTimelineRecord.js:
        (WebInspector.LayoutTimelineRecord):
        (WebInspector.LayoutTimelineRecord.displayNameForEventType):
        (WebInspector.LayoutTimelineRecord.prototype.get duringComposite): Added
        Composite record support.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask.get validRecordForTaskType):
        Add compositing time when bucketing runloop tasks, ignoring Paint events that are
        contained within a Composite event.

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded):
        Add Composite records to paint timeline row.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
        Small unrelated fix.

        * UserInterface/Views/TimelineIcons.css:
        (.composite-record .icon):
        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar.timeline-record-type-layout.layout-timeline-record-composite > .segment):
        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        New styles and tree element icon.

2015-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: iOS 8: Uncaught Exception expanding Object Prototype
        https://bugs.webkit.org/show_bug.cgi?id=146427

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateProperties):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype._updateProperties):
        We are supposed to receive value properties for __proto__ properties
        so that we can immediately start showing information about the property.
        When that is not the case, which appeared to only be on legacy
        backends for the top level prototype, just ignore it.

2015-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Misc. Timeline cleanup
        https://bugs.webkit.org/show_bug.cgi?id=146430

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Timeline.js:
        (WebInspector.Timeline.prototype.reset):
        Nobody listens for this event. Just remove it.

        * UserInterface/Models/TimelineRecording.js:
        Avoiding doing multiple lookups.

        * UserInterface/Views/TimelineDataGridNode.js:
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.updateLayout):
        Eliminate some unnecessary deletes.

2015-06-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Unable to select the text of an inline error message
        https://bugs.webkit.org/show_bug.cgi?id=145813

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror-linewidget):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.createWidgetForLine):

2015-06-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove harmless error for not getting named flows
        https://bugs.webkit.org/show_bug.cgi?id=146417

        Reviewed by Darin Adler.

        * UserInterface/Controllers/DOMTreeManager.js:

2015-06-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network errors (404) are missing location link in console messages
        https://bugs.webkit.org/show_bug.cgi?id=146442

        Reviewed by Darin Adler.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        Restore behavior of adding a location link for network messages with urls.

2015-06-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: iOS 8: Resources Timeline Data does not show up
        https://bugs.webkit.org/show_bug.cgi?id=146433

        Reviewed by Timothy Hatcher.

        There were a couple issues with initializing the legacy base timestamp
        for attempting to dynamically compute monotonically increasing timestamps
        for timeline events for legacy backends.

            * Sometimes legacy timestamps were in seconds since epochs,
              sometimes milliseconds. The frontend did not handle both.

            * On navigations, even while resetting the base timestamp for
              the first new record received, the main resource still had
              a will send request time computed from the previous page's
              time system. This patch re-uses the original timestamp for
              this main resource as the new base and all future records
              are computed relative to this.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
        (WebInspector.FrameResourceManager.prototype._addNewResourceToFrame):
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.prototype.get originalRequestWillBeSentTimestamp):
        For legacy timestamp calculations, save the original request will be sent
        timestamp on the Resource in case it is needed.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        When auto-starting a new recording for a navigation / reload, use the
        main resource's request will be sent timestamp as the new base.

        * UserInterface/Models/TimelineRecording.js:
        Address legacy timeline timestamps by handling both legacy timestamps
        that may be seconds / milliseconds.

2015-06-29  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION: Web Inspector: Jump to Definition is broken
        https://bugs.webkit.org/show_bug.cgi?id=146376

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        Allow changing tabs when jumping to function definition.

2015-06-28  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Wrong border color of console messages when filters are enabled
        https://bugs.webkit.org/show_bug.cgi?id=146392

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
        (.console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):

2015-06-25  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Wrong timeline selected after switching from Rendering Frames to Timelines
        https://bugs.webkit.org/show_bug.cgi?id=146331

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineSidebarPanel.js:
        Set previously selected timeline type to null if no tree element is selected when switching
        view mode to Rendering Frames.

2015-06-25  Joseph Pecoraro  <pecoraro@apple.com>

        [Mac] Web Inspector: Window dragging on toolbar should behave more like native window dragging
        https://bugs.webkit.org/show_bug.cgi?id=146324

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        On Mac 10.11 transition to using InspectorFrontendHost.startWindowDrag.
        For older Macs continue to use InspectorFrontendHost.moveWindowBy.
        
        * UserInterface/Protocol/InspectorFrontendHostStub.js:
        (WebInspector.InspectorFrontendHostStub.prototype.startWindowDrag):
        Add the stub for InspectorFrontendHostStub.

2015-06-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Pressing tab in the styles sidebar shouldn't insert a tab character
        https://bugs.webkit.org/show_bug.cgi?id=146189

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js: Added variable to control whether semicolons are added to the end of autocompleted css values.
        (WebInspector.CodeMirrorCompletionController):
        (WebInspector.CodeMirrorCompletionController.prototype.set noEndingSemicolon):
        (WebInspector.CodeMirrorCompletionController.prototype._generateCSSCompletions):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorSwitchRule):
        (WebInspector.CSSStyleDeclarationSection.prototype.focusRuleSelector):
        (WebInspector.CSSStyleDeclarationSection.prototype.selectLastProperty):
        (WebInspector.CSSStyleDeclarationSection.prototype.get selectorLocked):
        (WebInspector.CSSStyleDeclarationSection.prototype.get locked):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleKeyDown):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor): Added functions for "Tab", "Shift-Tab", and "Shift-Enter" keypresses to improve usability.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.selectFirstProperty): Highlights the first property.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.selectLastProperty): Highlights the last property.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._insertNewlineAfterCurrentLine): Inserts a newline after the currently selected line.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey.switchRule):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey): Pressing shift-tab will move the cursor to the previous non-word character that is immediately after a word character.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey.switchRule):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey.highlightNextNameOrValue):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleTabKey): Pressing tab will move the cursor to each space character until the end of the line is reached, at
        which point the cursor will move to the beginning of the next line.  Once the cursor is at the last line, pressing tab again will insert a newline.
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionEditorNextRule): Switches the focused rule to the next section.
        (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionEditorPrevRule): Switches the focused rule to the previous section.

2015-06-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.group looks poor in console
        https://bugs.webkit.org/show_bug.cgi?id=146295

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        String for the default group name if you use console.group() without a name parameter.

        * UserInterface/Views/LogContentView.css:
        (.console-group-title::before):
        Tweak the positioning and eliminate the log level ::before image.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        Reorder a bit to reduce a couple branches.

        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
        Take a very straightforward approach for group names.

2015-06-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Show warning icon for invalid CSS properties and/or values
        https://bugs.webkit.org/show_bug.cgi?id=145657

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions.prototype.getClosestPropertyName): Calculates the levenshtein distance between a given property and every existing property name.  Returns the property name with the smallest distance or, in the case of multiple properties having the same distance, the first property in alphabetical order.
        (WebInspector.CSSCompletions.prototype.propertyRequiresWebkitPrefix): Retruns if the property name exists only with a '-webkit-' prefix.
        (WebInspector.CSSCompletions):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .invalid-warning-marker):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .invalid-warning-marker.clickable:hover):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded.duplicatePropertyExistsBelow): Determines if there exists a property below (visually) the given property that has the same name.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded.generateInvalidMarker): Creates a warning icon marker at the given position with the given title.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded.instancesOfProperty): Returns the number of properties in the rule that have the same name.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded): A button with a warning icon is now added to the beginning of an invalid property.  If this button is clicked, the property is replaced with the closest matching property and the autocomplete menu is opened.

2015-06-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Background of Computed Styles is missing
        https://bugs.webkit.org/show_bug.cgi?id=146209

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ComputedStyleDetailsPanel.css:
        (.computed-style-properties.details-section): Added white background.

2015-06-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Right/Left arrow no longer works in console to expand/collapse ObjectTrees
        https://bugs.webkit.org/show_bug.cgi?id=141949

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype.get expandable):
        (WebInspector.ConsoleMessageView.prototype.set expandable): Deleted.
        (WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
        (WebInspector.ConsoleMessageView.prototype._appendStackTrace):
        (WebInspector.ConsoleMessageView.prototype._makeExpandable):
        Clarify what makes a ConsoleMessageView expandable or not.

        (WebInspector.ConsoleMessageView.prototype.expand):
        (WebInspector.ConsoleMessageView.prototype.collapse):
        Handle the expand/collapse cases which could apply to the
        ConsoleMessageView itself or an inner ObjectTreeView if that is all we contain.

        (WebInspector.ConsoleMessageView.prototype._formatParameterAsObject):
        Delete out of date comment. A console.log("message", obj) will want the
        object tree member variable to handle auto expanding/collapsing of the
        single object in the message.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._leftArrowWasPressed):
        (WebInspector.LogContentView.prototype._rightArrowWasPressed):
        Use the higher level ConsoleMessageView objects accessible from the element
        to call through to expand/collapse.

2015-06-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce QuickConsole DidResize events if it did not change
        https://bugs.webkit.org/show_bug.cgi?id=146258

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole.prototype.consoleLogVisibilityChanged):
        Do not trigger the event unless there was a change in visibility.

2015-06-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: TextEditor scroll position not correctly restored when switching tabs
        https://bugs.webkit.org/show_bug.cgi?id=146254

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.updateLayout):
        Workaround a larger issue with ContentView restoration so that
        TextEditors restore their scroll position as expected.

2015-06-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Some brief previews are incorrectly treated as lossless
        https://bugs.webkit.org/show_bug.cgi?id=146247

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        When we have a brief preview we may need to override lossless / overflow
        if the preview view itself shows less properties than were in the preview.

2015-06-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Layout & Rendering timeline should show paint and layout records in separate rows
        https://bugs.webkit.org/show_bug.cgi?id=146119

        Reviewed by Timothy Hatcher.

        This patch makes the original Layout & Rendering timeline visually consistent with the Rendering Frames
        timeline, which uses green to distinguish Paint from Layout. In order to support having record bars with
        different colors in the same overview graph, the timeline has been split into two rows.

        * UserInterface/Views/LayoutTimelineOverviewGraph.css:
        (.timeline-overview-graph.layout > .graph-row):
        (.timeline-overview-graph.layout > .graph-row > .timeline-record-bar):
        (.timeline-overview-graph.layout > .graph-row > .timeline-record-bar > .segment):
        New row styles.

        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph.prototype.reset.createRecordRow):
        (WebInspector.LayoutTimelineOverviewGraph.prototype.reset):
        (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
        (WebInspector.LayoutTimelineOverviewGraph.prototype._updateRowLayout.createBar):
        (WebInspector.LayoutTimelineOverviewGraph.prototype._updateRowLayout):
        (WebInspector.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded):
        (WebInspector.LayoutTimelineOverviewGraph): Deleted.
        Added bookkeeping objects for timeline row elements and their associated records.

        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar.timeline-record-type-layout.layout-timeline-record-paint > .segment):
        New style for layout record event types.

        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.prototype.set records):
        Add style class for eventType, if present.

2015-06-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: gaps between sections of the styles sidebar rules tab confusing, should say "Media: all"
        https://bugs.webkit.org/show_bug.cgi?id=142918

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label:not(.filter-section-non-matching) ~ .label):
        Now properly adds padding to filtered labels.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label ~ .label): Deleted.
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh): If a section of CSS rules has no media or inheritance, add
        a label that says "Media: all" above the section.

2015-06-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Consider making read-only style rules have a darker background
        https://bugs.webkit.org/show_bug.cgi?id=145983

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section:not(.locked)):
        (.style-declaration-section): Deleted.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor.read-only > .CodeMirror):

2015-06-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Unable to select text of user input messages in the console
        https://bugs.webkit.org/show_bug.cgi?id=145888

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-user-command > .console-message-text):

2015-06-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Unable to select parent element in the DOM tree path bar
        https://bugs.webkit.org/show_bug.cgi?id=145810

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.get selectionPathComponents):
        * UserInterface/Views/HierarchicalPathComponent.js:
        (WebInspector.HierarchicalPathComponent.prototype.get selectedPathComponent):
        (WebInspector.HierarchicalPathComponent.prototype._selectElementMouseUp):
        (WebInspector.HierarchicalPathComponent.prototype._selectElementSelectionChanged):
        (WebInspector.HierarchicalPathComponent):
        (WebInspector.HierarchicalPathComponent.prototype._selectElementMouseDown): Deleted.

2015-06-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Duplication of style attribute in rules panel for shadow content
        https://bugs.webkit.org/show_bug.cgi?id=146176

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        The styleText can be non-empty for a readonly editor if the editor is for
        the style attribute of a shadow dom node. Instead of assuming it is empty
        we can just clear the editor ourselves and regenerate from properties.

2015-06-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Highlight currently edited CSS selector
        https://bugs.webkit.org/show_bug.cgi?id=145658

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection): Added event listeners on the selector text for mouseover and mouseout.
        (WebInspector.CSSStyleDeclarationSection.prototype._highlightNodesWithSelector): Selector text mouseover action that highlights all nodes that match the selector string in the corresponding frame.
        (WebInspector.CSSStyleDeclarationSection.prototype._hideHighlightOnNodesWithSelector): Selector text mouseout action that clears all highlights on matching nodes.
        * UserInterface/Views/DOMNode.js:
        (WebInspector.DOMNode): If the payload contains a frameId, then save it.
        (WebInspector.DOMNode.frameIdentifier):

2015-06-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Overlapping dashboard views causing lots of layers in source view
        https://bugs.webkit.org/show_bug.cgi?id=146153

        Reviewed by Darin Adler.

        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard:not(.visible)):
        Hide non-visible dashboard views. The !important is used
        to override more specific toolbar .dashboard.foo styles.

2015-06-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Make rule icon toggle all properties for that selector on and off
        https://bugs.webkit.org/show_bug.cgi?id=146031

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section > .header > .icon.toggle-able:hover):
        (.style-declaration-section.rule-disabled > .header > .icon):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection): Added event listener to selector icon to toggle commenting of all properties for that rule.
        (WebInspector.CSSStyleDeclarationSection.prototype._toggleRuleOnOff): Adds or removes comments to all properties for that rule.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.uncommentAllProperties.uncommentProperties):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.uncommentAllProperties): Uncomments all properties.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.commentAllProperties): Comments out all properties.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._propertyCheckboxChanged): Moved comment logic to its own function.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._propertyCommentCheckboxChanged): Moved uncomment logic to its own function.

2015-06-19  Jon Lee  <jonlee@apple.com>

        Update font and font-family keyword completions
        https://bugs.webkit.org/show_bug.cgi?id=144558
        <rdar://problem/20795292>

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSKeywordCompletions.js: Replace -webkit-system-font and
        -apple-system-font with -apple-system, which is the recommended token for getting the
        system font. Also add -title{1,2,3} for font, as they were missing, but already exist
        in font-family.

2015-06-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Avoid getOwnPropertyNames/Symbols on very large lists
        https://bugs.webkit.org/show_bug.cgi?id=146141

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
        When building completions for a large array, instead of building a list of all the indices
        just send a single number back to the frontend and let it generate a list for completion.
        We should do even better and avoid building a lookup table here for completion of an index.

2015-06-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames timeline selection should snap to frame boundaries
        https://bugs.webkit.org/show_bug.cgi?id=146120

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RenderingFrameTimelineOverview.js:
        Enable snapping to frame boundaries.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._updateFrameSelection):
        Updated filtering to account for ruler snapping.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.get snapInterval):
        (WebInspector.TimelineRuler.prototype.set snapInterval):
        (WebInspector.TimelineRuler.prototype.set selectionStartTime):
        (WebInspector.TimelineRuler.prototype.set selectionEndTime):
        (WebInspector.TimelineRuler.prototype._snapValue):
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        Added support for snapping to a specified interval.

        * UserInterface/Views/TimelineSidebarPanel.js:
        Removed unnecessary code.

2015-06-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add a filter for CSS properties in the Styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=145536

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js: Added function to Strings that returns an array of all matching indexes of a given string.
        (.value):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh.appendSelector):
        (WebInspector.CSSStyleDeclarationSection.prototype.findMatchingPropertiesAndSelectors): Loops through the property list and selectors of each section to find matches to the filtered text.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.findMatchingProperties): Searches through the properties list to find and highlight all matching properties.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.removeNonMatchingProperties): Removes all properties that do not match and highlights the specific matched text in matching properties.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.resetFilteredProperties): Restores all properties to full visibility and removes any highlighting.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded): Classes are added to selections of the text editor of that partiular selection contains text which matches the filter (see CSSStyleDetailsSidebarPanel.css for different classes).
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._iterateOverProperties): If a filter is active, find properties matching the filter instead of all properties.
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content.has-filter-bar + .filter-bar):
        (.sidebar > .panel.details.css-style > .content:not(.has-filter-bar) + .filter-bar):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel): Added a filter bar to the CSS sidebar.
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._switchPanels): Switching panels preserves and applies filter bar text.
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._filterDidChange): Function called when the filter bar text changes that calls the current panel's filterDidChange function if it exists.
        * UserInterface/Views/FilterBar.js: Added function and variable to check if the text in the filter bar had changed.
        * UserInterface/Views/MetricsStyleDetailsPanel.js:
        (WebInspector.MetricsStyleDetailsPanel.prototype.refresh): Now calls superclass refresh.
        (WebInspector.MetricsStyleDetailsPanel): Added delegate variable to constructor.
        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label ~ .label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .label.filter-matching-label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .new-rule):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress .style-declaration-section:not(.filter-section-non-matching) ~ .label:not(.filter-section-non-matching)):
        (.sidebar > .panel.details.css-style > .content:not(.filter-in-progress) > .rules > .new-rule + .style-declaration-section):
        (.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .no-filter-results):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel): Added delegate variable to constructor.
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh): Now calls superclass refresh.
        (WebInspector.RulesStyleDetailsPanel.prototype.filterDidChange): Function to search through the computed styles list and highlight all matched properties and selectors of the filter bar text, turning all non matching properties slightly opaque (unless a selector for that property is a match).
        (WebInspector.StyleDetailsPanel): Added delegate variable to constructor.
        (WebInspector.StyleDetailsPanel.prototype.refresh): Added event dispatch for panel refresh.

2015-06-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Ability to Copy entire CSS Rule from Styles Sidebar
        https://bugs.webkit.org/show_bug.cgi?id=138812

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection): Right clicking on the header of a rule will replcae the default context menu to allow copying of the entire rule to the clipboard.
        (WebInspector.CSSStyleDeclarationSection.prototype._handleContextMenuEvent): Creates a new context menu to copy the entire CSS rule.
        (WebInspector.CSSStyleDeclarationSection.prototype._generateCSSRuleString): Generates a string representing the formatted CSS rule.

2015-06-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve a few more node preview types
        https://bugs.webkit.org/show_bug.cgi?id=146048

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNodePreview):

2015-06-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: New Rule button doesn't reveal the newly added rule if not visible upon creation
        https://bugs.webkit.org/show_bug.cgi?id=117600

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RulesStyleDetailsPanel.js: Made previousFocusedSection into a member variable of the RulesStyleDetailsPanel.  This way, when the nodeStyles is refreshed (when a new rule is added), the previousFocusedSection will be scrolled into view.
        (WebInspector.RulesStyleDetailsPanel):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.appendStyleSection):
        (WebInspector.RulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh): Deleted.

2015-06-18  Commit Queue  <commit-queue@webkit.org>

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

        Caused frequent flaky failures on profiler tests (Requested by
        ap on #webkit).

        Reverted changeset:

        "Web Inspector: Improve a few more node preview types"
        https://bugs.webkit.org/show_bug.cgi?id=146048
        http://trac.webkit.org/changeset/185671

2015-06-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve a few more node preview types
        https://bugs.webkit.org/show_bug.cgi?id=146048

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNodePreview):

2015-06-17  Diego Pino Garcia  <dpino@igalia.com>

        Web Inspector: Show/Hide sidebar buttons have inconsistent highlighted state
        https://bugs.webkit.org/show_bug.cgi?id=145073

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype._detailsSidebarPanelSelected):

2015-06-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inspector Scripts evaluated in the page should not be searchable
        https://bugs.webkit.org/show_bug.cgi?id=146040

        Reviewed by Darin Adler.

        Any script with a __WebInspector source URL will be hidden by the tools.
        There were a number of ways the inspector could evaluate script on the page
        without getting the sourceURL and therefore not getting hidden. Audit
        all cases of Runtime.evaluate, Runtime.callFunctionOn, and
        Debugger.evaluateOnCallFrame, to ensure we have an appropriate source URL.

        * UserInterface/Base/Utilities.js:
        (appendWebInspectorSourceURL):
        Helper to append a __WebInspectorInternal__ sourceURL to a string that may
        be evaluated directly on the inspected context.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.domNodeResolved):
        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted): Deleted.
        * UserInterface/Controllers/RuntimeManager.js:
        * UserInterface/Models/DOMTree.js:
        (WebInspector.DOMTree.prototype._requestRootDOMNode):
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
        Ensure all cases that evaluate directly on the inspected page / context
        have the intenral source URL.

2015-06-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r171645): up/down key navigation of timeline sidebar tree elements is broken when scope bar filters are applied
        https://bugs.webkit.org/show_bug.cgi?id=142315

        Reviewed by Timothy Hatcher.

        TreeOutline's element traversal algorithms have been rewritten to correctly skip over unrevealed tree elements.
        Previously traversal would halt after encountering a hidden element. We now use an iterative approach, with
        each iteration producing the next (or previous) element, with respect to the last candidate element. Iteration
        begins with the current node, and halts once a valid element is found or candidate elements are exhausted.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeElement.prototype.traverseNextTreeElement.shouldSkip):
        (WebInspector.TreeElement.prototype.traverseNextTreeElement):
        (WebInspector.TreeElement.prototype.traversePreviousTreeElement.shouldSkip):
        (WebInspector.TreeElement.prototype.traversePreviousTreeElement):

2015-06-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Stylize Node Previews
        https://bugs.webkit.org/show_bug.cgi?id=145990

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNodePreview):
        Style a node preview like a DOMNode. It is a simple small snippet.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        Use node previews in ObjectPreviewViews.

2015-06-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve some cases of "Object?" Type Annotations
        https://bugs.webkit.org/show_bug.cgi?id=145954

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TypeTokenView.js:
        (WebInspector.TypeTokenView.prototype._displayTypeName):
        The TypeSet inclusions cover all types, so we can use the leastCommonAncestor
        name as long as the type set is just object or object and null/undefined.
        If the typeset includes other primitives then it will gracefully go down
        below to become something like Object or (many). 

2015-06-14  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Update icon so Rendering Frames timeline distinguish between layout and painting
        https://bugs.webkit.org/show_bug.cgi?id=145956

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/TimelineRecordPaint.svg:
        Changed to use green color.

2015-06-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.table() with a list of objects no longer works
        https://bugs.webkit.org/show_bug.cgi?id=145952

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
        Don't allow expanding a cosole.table message, and don't output the total
        object even if the table preview was lossless, as the experience is poor.

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

        Web Inspector: CSS Regions not displaying DOM Trees in inspector
        https://bugs.webkit.org/show_bug.cgi?id=145903

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._updateContentFlowFromPayload):
        Fix function inside the assertion to actually return a value.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.update):
        For DOMTreeOutlines without a root node, don't clear the tree on updates,
        since that will clear the nodes that have already been added explicitly.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
        ResourceTab and sidebar can deal with ContentFlow related views.

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

        Web Inspector: IndexedDB data not showing for MDN example page
        https://bugs.webkit.org/show_bug.cgi?id=145851

        Reviewed by Anders Carlsson.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel.prototype._indexedDatabaseWasAdded):
        Fix typo in Storage tab refactoring that was causing an
        uncaught exception and not showing Indexed DBs.

2015-06-11  Devin Rousso  <drousso@apple.com>

        Web Inspector: font-family names interpreted as color
        https://bugs.webkit.org/show_bug.cgi?id=123468

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CodeMirrorAdditions.js: Added logic to prevent color picker buttons from appearing before colors that come after a quote character (both " and ').

2015-06-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Rendering Frames timeline should distinguish between layout and painting
        https://bugs.webkit.org/show_bug.cgi?id=145856

        Reviewed by Timothy Hatcher.

        This patch formalizes the runloop task concept in the frontend, adds new Paint task type to the Rendering
        Frames timeline, and reorders UI elements such as chart sections and frame "segments" to match the order in
        which tasks are executed within the runloop.

        We will need to make UI changes to the standard Timelines view in a follow up patch, since tree element icons
        for Paint records now use a different color that those of other Layout records.

        * UserInterface/Images/TimelineRecordPaint.svg:
        Changed to use green color.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord):
        (WebInspector.RenderingFrameTimelineRecord.displayNameForTaskType):
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask.get validRecordForTaskType):
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask.set return):
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForTask):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get durationRemainder): Deleted.
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForRecords.get var): Deleted.
        Added TaskType enum to decouple runloop task types from timeline record types, and removed duration remainder
        support now that "Other" has an associated task type.

        * UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get data):
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        Added new grid column for Paint task, reordered columns to be consistent with the rest of the UI.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-script):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-layout):
        (.timeline-record-frame > .frame > .duration.rendering-frame-timeline-record-paint):
        (.timeline-record-frame > .frame > .duration): Deleted.
        (.timeline-record-frame > .frame > .duration.timeline-record-type-network): Deleted.
        (.timeline-record-frame > .frame > .duration.timeline-record-type-layout): Deleted.
        (.timeline-record-frame > .frame > .duration.timeline-record-type-script): Deleted.
        Updated styles for Render Frame tasks.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.prototype._updateChildElements.createDurationElement):
        Updated to use Render Frame task types. Frame segment insertion order is now consistent with the rest of the UI.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart.chartData.Object.keys.map):
        (WebInspector.TimelineSidebarPanel.set this):
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart.get this):
        (WebInspector.TimelineSidebarPanel): Deleted.
        (WebInspector.TimelineSidebarPanel.prototype._refreshFrameSelectionChart.durationForRecordType): Deleted.
        (WebInspector.TimelineSidebarPanel.prototype._refreshFrameSelectionChart): Deleted.
        Updated to use Render Frame task types.

2015-06-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Wrong overview graph shown after switching from Frames to Timelines
        https://bugs.webkit.org/show_bug.cgi?id=145778

        Reviewed by Timothy Hatcher.

        TimelineSidebarPanel stores a reference to the selected timeline before switching to the Rendering Frames view,
        which is used to restore the tree selection, overview graph, and content views when switching back to the
        standard Timelines view. However if another recording is created before switching, the previously selected
        timeline tracked by the sidebar cannot be restored, since it doesn't belong to the active recording.

        This is addressed by storing the previously selected timeline type, rather than the timeline object itself.
        The type is also updated whenever the selected timeline in the tree outline changes, ensuring that the correct
        timeline will always be restored.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if.get if):
        (WebInspector.TimelineSidebarPanel.get else): Deleted.
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if): Deleted.
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject): Deleted.

2015-06-08  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clearing active Timeline recording should stop capturing
        https://bugs.webkit.org/show_bug.cgi?id=145767

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._clearTimeline):
        Stop capturing if necessary.

2015-06-07  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Add PrettyPrinter CSSRule tests
        https://bugs.webkit.org/show_bug.cgi?id=145740

        Reviewed by Brian Burg.

        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-after-colon-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-after-colon.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-after-comma-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/add-whitespace-after-comma.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/do-not-append-semicolon-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/do-not-append-semicolon.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/invalid-property-is-not-removed-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/invalid-property-is-not-removed.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/keep-prefixed-value-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/keep-prefixed-value.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-colon-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-colon.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-comment-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-comment.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-invalid-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-invalid-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-prefixed-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-prefixed-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-semicolon-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/remove-whitespace-before-semicolon.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-comment-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-comment.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-invalid-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-invalid-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-prefixed-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-prefixed-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-comment-followed-by-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-comment-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-comment.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-invalid-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-invalid-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-prefixed-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-prefixed-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-invalid-property-followed-by-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-comment-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-comment.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-invalid-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-invalid-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-prefixed-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-prefixed-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-followed-by-property.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-without-semicolon-followed-by-comment-and-property-expected.css: Added.
        * Tools/PrettyPrinting/css-rule-tests/split-property-without-semicolon-followed-by-comment-and-property.css: Added.

2015-06-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Fixing code style and adding more limitations for bug 141262
        https://bugs.webkit.org/show_bug.cgi?id=145668

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions.prototype.isValidPropertyName): Loops through the full property list and returns true only if a property exactly matches the given property name.
        (WebInspector.CSSCompletions): Added isValidPropertyName function.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded): Added logic to limit the invalid class marker to only the property value if the property name is an actual property and to prevent invalid style from being applied incorrectly.

2015-06-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Highlighting a CSS section does not deselect previously highlighted CSS sections
        https://bugs.webkit.org/show_bug.cgi?id=145399

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection): Added delegate variable to constructor.
        (WebInspector.CSSStyleDeclarationSection.prototype.clearSelection):
        (WebInspector.CSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor): Added event listener to codeMirror on "focus".
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.clearSelection): Sets the cursor of the codeMirror to character 0 on line 0.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._editorFocused): Function that calls the delegate function "editorFocused" when the codeMirror is focused
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.appendStyleSection):
        (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionEditorFocused): Loops through all sections except for the ignoredSection (parameter) and clears the selected text in each of them.

2015-06-05  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION (r185213): TypeError: undefined is not an object (evaluating 'WebInspector.clearLogOnReload.value')
        https://bugs.webkit.org/show_bug.cgi?id=145695

        Reviewed by Mark Lam.

        Move and rename the clear log on reload setting property from
        WebInspector (Main.js) to LogManager (shared with tests).

        * UserInterface/Base/Main.js:
        (WebInspector.loaded): Deleted.
        * 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._toggleClearLogOnReloadSetting):

2015-06-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [REGRESSION] Dashboard's resource count does not reset when main resource navigates
        https://bugs.webkit.org/show_bug.cgi?id=144553

        Add missing _mainResourceDidChange, which was removed after switching to the tabs UI.

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard):
        _waitingForFirstMainResourceToStartTrackingSize is not used anywhere, remove it.

        (WebInspector.DefaultDashboard.prototype._mainResourceDidChange): Added.

        (WebInspector.DefaultDashboard.prototype._resourceSizeDidChange): Removed.
        Unused.

2015-06-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Switch to doughnut chart and remove idle time in the Rendering Frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=145671

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        "Idle" string no longer used.

        * UserInterface/Views/TimelineRecordFrame.js:
        Reduced maximum frame width by 2px.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype._refreshFrameSelectionChart):
        Added inner radius to chart and removed "Idle" value.

2015-06-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Class constructor appearing as Object Tree property does not include parameters
        https://bugs.webkit.org/show_bug.cgi?id=145661

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.fromPrimitiveValue):
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.prototype.get functionDescription):
        Include the className as only use it for "class" types to override
        the normal description string. Stash the actual function description
        in a property we can access later.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
        Even if this property is a "class" we want to specifically parse it's
        function description string. So use functionDescription.

2015-06-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Close and open tabs on mouseup, not mousedown
        https://bugs.webkit.org/show_bug.cgi?id=145656

        Match Safari's behaviour.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar):
        (WebInspector.TabBar.prototype.set newTabItem):
        (WebInspector.TabBar.prototype._handleMouseDown):
        (WebInspector.TabBar.prototype._handleClick): Added.
        (WebInspector.TabBar.prototype._handleMouseUp):
        (WebInspector.TabBar.prototype._handleNewTabClick): Added.
        (WebInspector.TabBar.prototype._handleMouseMoved):

2015-06-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Decrease tabs height to match Safari's tabs height
        https://bugs.webkit.org/show_bug.cgi?id=145647

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBar.css:
        (.tab-bar):

2015-06-04  Tobias Reiss  <tobi+webkit@basecode.de>
        
        Web Inspector: Activity Viewer does not update on "Clear Log on reload"
        https://bugs.webkit.org/show_bug.cgi?id=145466
        
        Reviewed by Joseph Pecoraro.

        1. Isolate logic within LogManager and remove hacks/logic from all other files
        2. Within LogManager: Differentiate "messagesCleared" calls
         a) that happen as a result of a "requested clear" by Frontend (e.g. Button)
         b) that happen on page reload and install "clear/keep-on-page-reload" logic
         c) that happen on frame navigated, console.clear() or clear()
        3. Unify "ActiveLogCleared" and "Cleared" events to "Cleared"
        
        For step 2b and 2c it is important to delay the handling and wait until
        "_mainResourceDidChange" has determined whether a page reload happened or
        not.
        
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        Store "clear-log-on-reload" setting globally.
        
        * UserInterface/Controllers/IssueManager.js:
        (WebInspector.IssueManager):
        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard): Deleted.
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype._trackWeakEntries): Deleted.
        (WebInspector.ObjectTreeView.prototype._untrackWeakEntries): Deleted.
        (WebInspector.ObjectTreeView): Deleted.
        Remove deleted events.
        
        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype._handleClearShortcut):
        (WebInspector.JavaScriptLogViewController.prototype.clear): Deleted.
        Remove delegate function call and call LogManager directly.
        
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager):
        (WebInspector.LogManager.prototype.messagesCleared):
        (WebInspector.LogManager.prototype._delayedMessagesCleared):
        (WebInspector.LogManager.prototype.requestClearMessages):
        (WebInspector.LogManager.prototype._mainResourceDidChange):
        Isolate "clear log" logic, especially clear/keep-log-on-reload logic.
        
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._sessionStarted):
        (WebInspector.LogContentView.prototype._handleContextMenuEvent):
        (WebInspector.LogContentView.prototype._logCleared):
        (WebInspector.LogContentView.prototype._toggleClearLogOnReloadSetting):
        (WebInspector.LogContentView.prototype._clearLog):
        (WebInspector.LogContentView.prototype.didClearMessages): Deleted.
        (WebInspector.LogContentView.prototype._sessionsCleared): Deleted.
        (WebInspector.LogContentView.prototype._activeLogCleared): Deleted.
        (WebInspector.LogContentView.prototype._clearLogIgnoringClearMessages): Deleted.
        Make it a consumer of LogManager and remove special hacks. Simplify code.

2015-06-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: if a known CSS property has an unsupported value, only strikethrough the value
        https://bugs.webkit.org/show_bug.cgi?id=141262

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        (WebInspector.CSSCompletions.prototype.nameMatchesValidPropertyExactly): Loops through the full property list and returns true only if a property exactly matches the given property name.
        (WebInspector.CSSCompletions): Added nameMatchesValidPropertyExactly function.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded): Added logic to limit the invalid class marker to only the property value if the property name is an actual property.

2015-06-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Search field bottom border doesn't match the rest of the toolbar
        https://bugs.webkit.org/show_bug.cgi?id=145611

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Toolbar.css:
        (body:not(.unknown-mac) .toolbar .search-bar > input[type="search"]):

2015-06-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception starting a NavigationBar drag and mousing over a different NavigationBar
        https://bugs.webkit.org/show_bug.cgi?id=145589

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype._mouseDown):
        (WebInspector.NavigationBar.prototype._mouseUp):
        When mouse dragging for navigation bars, only match against navigation
        bar items inside this navigation bar. Also, fix horizontal detection
        of navigation bar items by scanning in the middle of the navigation
        bar instead of the top, which missed the items.

2015-06-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Debugger Popover for Node object should have go-to-arrow to show the node in DOM tree
        https://bugs.webkit.org/show_bug.cgi?id=145594

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.inspectElement):
        Previously we could get an exception later on if we tried to
        inspect an element that was not in the DOM. Bail if the node
        is not in the DOM or not.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.popover .debugger-popover-content > .title > .go-to-arrow):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject.data.pushNodeToFrontend):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject):
        For a node type, add a go-to-arrow in the popover if it is in the DOM or not.

2015-06-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove uses of delete in Sidebar related code
        https://bugs.webkit.org/show_bug.cgi?id=145592

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.refresh):
        Clear value instead of deleting.

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.performSearch):
        Just clear the search identifier. Also assert it (a required string) is always non-falsey.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.resizerDragEnded): Deleted.
        This entire callback is unnecessary because whenever we start
        a drag we save the value.

2015-06-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Sidebar and sometimes ContentView scroll position is lost when switching between tabs
        https://bugs.webkit.org/show_bug.cgi?id=145591

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.removeSidebarPanel):
        When removing a sidebar panel, ensure we call hidden if it was the visible panel.

        * UserInterface/Views/SidebarPanel.js:
        (WebInspector.SidebarPanel):
        (WebInspector.SidebarPanel.prototype.shown):
        (WebInspector.SidebarPanel.prototype.hidden):
        Save and restore content element scroll position when sidebar panels are shown / hidden.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.visibilityDidChange):
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.shown):
        * UserInterface/Views/DetailsSidebarPanel.js:
        (WebInspector.DetailsSidebarPanel.prototype.shown):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype.shown):
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype.hidden):
        Cleanup. Since sidebar panels are using ES6 classes, have super class calls use `super`!

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

        Web Inspector: Use non-monospace font for the frame selector
        https://bugs.webkit.org/show_bug.cgi?id=145586

        Reviewed by Timothy Hatcher.

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

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

        Web Inspector: Dashboard arrow icon on the right is overlapped by a long function/file name
        https://bugs.webkit.org/show_bug.cgi?id=145540

        Also, increase clickable area of the arrow icon.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DashboardContainerView.css:
        (.dashboard-container .advance-arrow):
        (.dashboard-container .advance-arrow.advance-forward):
        (.dashboard-container .advance-arrow.advance-backward):
        * UserInterface/Views/DebuggerDashboardView.css:
        (.dashboard.debugger > .location):
        (.toolbar .dashboard.debugger):
        Increase padding on the right so the content of the dashboard would be never be overlayed by the arrow.

2015-06-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Shift + Cmd + Left/Right shouldn't switch tabs while editing text
        https://bugs.webkit.org/show_bug.cgi?id=145562

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        Only these keyboard shortcuts should check if we are in an editable field.
        Remove the implicit prevent default so they can fall back to system behavior
        if necessary.

        (WebInspector.TabBrowser.prototype._showNextTabCheckingForEditableField):
        (WebInspector.TabBrowser.prototype._showPreviousTabCheckingForEditableField):
        Bail if we are in an editable field. Otherwise perform the action and prevent default.

2015-06-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ⌘F no longer brings up the find-in-page bar after typing in the quick console
        https://bugs.webkit.org/show_bug.cgi?id=145546

        Reviewed by Timothy Hatcher.

        Scope ContentBrowser keyboard events within the ContentBrowser instead
        of global, where they might conflict between ContentBrowsers. The scoped
        shortcuts now no longer need to be enabled/disabled.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        Scope the keyboard shortcuts.

        (WebInspector.ContentBrowser.prototype.shown):
        (WebInspector.ContentBrowser.prototype.hidden):
        No longer need to control enabling / disabling these non-global shortcuts.

2015-06-01  Jono Wells  <jonowells@apple.com>

        Web Inspector: Type token text descenders touch bottom of container
        https://bugs.webkit.org/show_bug.cgi?id=145544

        Reviewed by Timothy Hatcher.

        Move 1px padding from top to bottom of token.

        * UserInterface/Views/TypeTokenView.css:
        (.type-token):

2015-06-01  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Better handle keyboard events in the quick console prompt
        https://bugs.webkit.org/show_bug.cgi?id=145548

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.saveDataToFile):
        Move generic InspectorFrontendHost code here.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._save):
        (WebInspector.ContentBrowser.prototype._saveAs):
        (WebInspector.ContentBrowser.prototype._saveDataToFile): Deleted.
        Use the generic save code.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        (WebInspector.JavaScriptLogViewController.prototype._save):
        (WebInspector.JavaScriptLogViewController.prototype._saveAs):
        Handle save keyboard shortcuts while the prompt is focused.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.focusSearchBar):
        (WebInspector.LogContentView.prototype.save):
        (WebInspector.LogContentView.prototype.saveAs):
        Better handle keyboard shortcut cases in the console prompt for cases
        like a collapsed or split console view.

2015-06-01  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Pause/resume button in the debugger dashboard is vertically misaligned
        https://bugs.webkit.org/show_bug.cgi?id=145534

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button.suppress-emboss):
        Never show borders for the pause/resume button.

        * UserInterface/Views/DebuggerDashboardView.css:
        (.dashboard.debugger .navigation-bar .item.button):

2015-05-31  Yusuke Suzuki  <utatane.tea@gmail.com>

        Web Inspector: Drop forEach from WeakMap / WeakSet native member function maps
        https://bugs.webkit.org/show_bug.cgi?id=145497

        Reviewed by Sam Weinig.

        WeakMap / WeakSet don't have forEach method.
        This patch drops it from the native prototype function parameters map.

        * UserInterface/Models/NativeFunctionParameters.js:

2015-05-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Resources tab navigation sidebar should have a type filter header
        https://bugs.webkit.org/show_bug.cgi?id=145474

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js: Updated.

        * UserInterface/Images/UpDownArrows.svg: Make styleable.

        * UserInterface/Main.html: Added new files.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView): Drive-by fix. Mark All as exclusive.

        * UserInterface/Views/MultipleScopeBarItem.js: Added.
        (WebInspector.MultipleScopeBarItem):
        (WebInspector.MultipleScopeBarItem.prototype.get element):
        (WebInspector.MultipleScopeBarItem.prototype.get exclusive):
        (WebInspector.MultipleScopeBarItem.prototype.get scopeBarItems):
        (WebInspector.MultipleScopeBarItem.set scopeBarItems.createOption):
        (WebInspector.MultipleScopeBarItem.prototype.set scopeBarItems):
        (WebInspector.MultipleScopeBarItem.prototype.get selected):
        (WebInspector.MultipleScopeBarItem.prototype.set selected):
        (WebInspector.MultipleScopeBarItem.prototype.get selectedScopeBarItem):
        (WebInspector.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
        (WebInspector.MultipleScopeBarItem.prototype._clicked):
        (WebInspector.MultipleScopeBarItem.prototype._selectElementSelectionChanged):
        (WebInspector.MultipleScopeBarItem.prototype._itemSelectionDidChange):

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstFilterFunctions):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.makeVisible):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
        Improve filtering so non-text filters can choose to auto-expand the tree.

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

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.hasCustomFilters):
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.ResourceSidebarPanel.prototype._scopeBarSelectionDidChange):
        Make a ScopeBar and make it filter the TreeOutline when needed.

        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li.multiple):
        (.scope-bar > li.multiple > select):
        (.scope-bar > li.multiple.selected > select):
        (.scope-bar > li.multiple > .arrows):
        (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows svg .filled):
        (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows svg .stroked):

        * UserInterface/Views/ScopeBar.js:
        (WebInspector.ScopeBar): Support shouldGroupNonExclusiveItems which will use MultipleScopeBarItem.
        (WebInspector.ScopeBar.prototype._populate):
        (WebInspector.ScopeBar.prototype._itemSelectionDidChange):
        (WebInspector.ScopeBar.prototype.updateLayout): Deleted. Not needed for our current styles.

        * UserInterface/Views/ScopeBarItem.js:
        (WebInspector.ScopeBarItem):
        (WebInspector.ScopeBarItem.prototype.get id):
        (WebInspector.ScopeBarItem.prototype.get label):
        (WebInspector.ScopeBarItem.prototype.get exclusive):
        (WebInspector.ScopeBarItem.prototype.setSelected):
        (WebInspector.ScopeBarItem.prototype._clicked):
        (WebInspector.ScopeBarItem.prototype.get element): Deleted.
        (WebInspector.ScopeBarItem.prototype._markElementSelected): Deleted.
        Cleaned up and modernized a bit.

2015-05-29  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Activity Viewer does not update on "clear all console messages"
        https://bugs.webkit.org/show_bug.cgi?id=144681

        Reviewed by Joseph Pecoraro.

        Do not apply "ignoreDidClearMessages" hack on "Clear log" Button and Context menu.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._sessionStarted):
        (WebInspector.LogContentView.prototype._clearLogIgnoringClearMessages):
        (WebInspector.LogContentView.prototype._clearLog): Deleted.

2015-05-29  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove unused expandTreeElementsWhenArrowing property from TreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=145470

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype._treeKeyDown):
        Replaced uses of removed property with boolean literal.

2015-05-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Tabs should have Context Menus
        https://bugs.webkit.org/show_bug.cgi?id=144208

        Reviewed by Timothy Hatcher.

        Give non-pinned tabs "Close Tab" and "Close Other Tabs" context
        menu items to affect other non-pinned tabs.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/TabBarItem.js:
        (WebInspector.TabBarItem):
        (WebInspector.TabBarItem.prototype._handleContextMenuEvent.closeTab):
        (WebInspector.TabBarItem.prototype._handleContextMenuEvent.closeOtherTabs):
        (WebInspector.TabBarItem.prototype._handleContextMenuEvent):

2015-05-29  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Restoring the last selected DOM node fails on reload (DOMAgent: No node with given path found)
        https://bugs.webkit.org/show_bug.cgi?id=144231

        Reviewed by Timothy Hatcher.

        Removed _restoreSelectedNodeIsAllowed flag from DOMTreeContentView. The frontend receives two documentUpdated
        events from the DOM Agent during page reload, and the flag was preventing DOMTreeContentView from restoring
        the previous selection in response to the second event.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.selectLastSelectedNode):
        (WebInspector.DOMTreeContentView.prototype._restoreSelectedNodeAfterUpdate):

2015-05-28  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Update toolbar styles
        https://bugs.webkit.org/show_bug.cgi?id=145419

        Also, use hairline borders (1 phisical pixel) on retina (DPI >= 2).

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button): Deleted.
        (.toolbar.icon-and-label-vertical .item.button): Deleted.
        (.toolbar.icon-and-label-horizontal .item.button): Deleted.
        (.toolbar .item.button > .glyph): Deleted.
        (.toolbar.small-size .item.button > .glyph): Deleted.
        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard-container): Deleted.
        (.toolbar.collapsed .dashboard-container): Deleted.
        (.toolbar.small-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard-container): Deleted.
        (.toolbar .dashboard.slide-out-down): Deleted.
        (.toolbar .dashboard.slide-in-up): Deleted.
        * UserInterface/Views/Toolbar.css:
        (.toolbar .search-bar > input[type="search"]):
        (.toolbar .search-bar > input[type="search"]::-webkit-textfield-decoration-container):
        (body:not(.unknown-mac) .toolbar .dashboard-container):
        (body:not(.unknown-mac) .toolbar .search-bar > input[type="search"]):
        (body:not(.unknown-mac) .toolbar .search-bar > input[type="search"]:focus):
        (body:not(.unknown-mac) .toolbar .item.button:active):
        (body.window-inactive:not(.unknown-mac) .toolbar .dashboard-container):
        (body.unknown-mac .toolbar .dashboard-container):
        (body.unknown-mac .toolbar .search-bar > input[type="search"]):
        (body.unknown-mac .toolbar .search-bar > input[type="search"]:focus):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (body.unknown-mac .toolbar .item.button:active):
        (body.unknown-mac.window-inactive .toolbar .dashboard-container):

2015-05-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: Jump from a computed style to the rule it came from
        https://bugs.webkit.org/show_bug.cgi?id=120640

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
        If the delegate of CSSStyleDeclarationTextEditor has cssStyleDeclarationTextEditorShouldAddPropertyGoToArrows set to true, add a goToArrow to all CSS property entries.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.highlightProperty.propertiesMatch):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.highlightProperty.hasMatchingLonghandProperty):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.highlightProperty):
        Determines if a given CSS property is in the CSS style section and if so, select that CSS property, focus on the section containing that CSS property, and return true.
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.highlightProperty):
        Searches through the properties of the section for a given property and scrolls to it if found.
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
        Switches to the rulesStyleDetailsPanel and scrolls to and hightlights a given property in that panel.
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._navigationItemSelected):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._switchPanels):
        Moved this function out of _navigationItemSelected for better reusablity.
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
        Function that calls the delegate (which should be CSSStyleDetailsSidebarPanel) function computedStyleDetailsPanelShowProperty.
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel):
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):
        (WebInspector.RulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
        Searches through all the sections of the RulesStyleDetailsPanel for a given CSS property.
        (WebInspector.RulesStyleDetailsPanel.prototype.shown):
        (WebInspector.RulesStyleDetailsPanel.prototype.hidden):
        (WebInspector.RulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
        Added a flag to this function that will highlight and scroll to a given property (_propertyToSelectAndHighlight) if set on load.
        * UserInterface/Views/StyleDetailsPanel.js:
        (WebInspector.StyleDetailsPanel.prototype.markAsNeedsRefresh):
        (WebInspector.StyleDetailsPanel.prototype.nodeStylesRefreshed):
        Made into protected function to allow it to be overridden.
        (WebInspector.StyleDetailsPanel.prototype._nodeStylesRefreshed): Deleted.

2015-05-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should have a keyboard shortcut to switch between inspector tabs
        https://bugs.webkit.org/show_bug.cgi?id=144207

        Reviewed by Timothy Hatcher.

        These keyboard shortcuts work well in an undocked inspector window.
        Be careful that some keyboard shortcuts, when used inside a text
        editor / text field are just text actions. However, some keyboard
        shortcuts will work no matter where you trigger them.

        * UserInterface/Models/KeyboardShortcut.js:
        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype.selectPreviousTab):
        (WebInspector.TabBar.prototype.selectNextTab):
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype._showPreviousTab):
        (WebInspector.TabBrowser.prototype._showNextTab):

2015-05-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: NewTabContentView should update button disabled state as other tabs are added/removed
        https://bugs.webkit.org/show_bug.cgi?id=145448

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):
        Always add a click listener and add the type as a private property on the element.

        (WebInspector.NewTabContentView.prototype.shown):
        (WebInspector.NewTabContentView.prototype.hidden):
        Add / remove event listeners for tab changes. Also update the view when shown.
        
        (WebInspector.NewTabContentView.prototype._createNewTab):
        A disabled button an now be clicked. Do nothing if a new tab of this type is not allowed.

        (WebInspector.NewTabContentView.prototype._updateTabItems):
        Refresh the disabled state for each of the buttons.

2015-05-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show Page Source does not switch to Resources tab if inspector was closed
        https://bugs.webkit.org/show_bug.cgi?id=145423

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector._frameWasAdded.delayedWork):
        (WebInspector._frameWasAdded):
        In the special case where we are holding to show a frame's source code when
        the frame becomes available (_frameIdentifierToShowSourceCodeWhenAvailable)
        we should be forcing to show the tab.

2015-05-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Toggling an inherited property sometimes stops working
        https://bugs.webkit.org/show_bug.cgi?id=145416

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
        Ensure we update the existing model objects with the new state information
        before possibly bailing. This may produce changed events that update
        parts of the inspector appropriately.

2015-05-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: REGRESSION(r179286) Editing Style Metrics Values no longer works
        https://bugs.webkit.org/show_bug.cgi?id=143164

        Reviewed by Brian Burg.

        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement):
        (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty):
        (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.didToggle):
        (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode):
        (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput):
        Make it so editing in the metrics pane just evaluates elem.style.setProperty
        on the inspected page. Use "!important" to try and give the maximum priority
        possible, which is a change from older behavior. Finally, refresh the sidebar
        to update all values, and update the UI if bad input didn't change styles.

2015-05-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Function parameter string parsing improperly handles empty parameter list
        https://bugs.webkit.org/show_bug.cgi?id=145391

        Reviewed by Darin Adler.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):

2015-05-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Array.prototype.copyWithin parameter list
        https://bugs.webkit.org/show_bug.cgi?id=145388

        Reviewed by Darin Adler.

        * UserInterface/Models/NativeFunctionParameters.js:

2015-05-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: focus outline of a search field should have a radius
        https://bugs.webkit.org/show_bug.cgi?id=145383

        Add a focus outline animation to roughly mimic the default focus outline of OS X.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Toolbar.css:
        (.toolbar .search-bar > input[type="search"]):
        -webkit-focus-ring-color doesn't follow element's curvature (e.g. border-radius)
        and it cannot be animated. Replace it with box-shadow.

        (.toolbar .search-bar > input[type="search"]:focus):

2015-05-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: The bottom part "debugger" is clipped in the tab’s title
        https://bugs.webkit.org/show_bug.cgi?id=145381

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBar.css:
        (.tab-bar > .item):
        Set line-height to fit "debugger". Setting line-height to 16px, which is the
        size of the tabs icons, moves the text one pixel up, so set it to 15px.

2015-05-26  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/21104551> Update build settings

        Reviewed by Anders Carlsson.

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

2015-05-23  Dan Bernstein  <mitz@apple.com>

        Remove unused definitions of WEBKIT_VERSION_MIN_REQUIRED
        https://bugs.webkit.org/show_bug.cgi?id=145345

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2015-05-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove code related with unused style classes
        https://bugs.webkit.org/show_bug.cgi?id=145332

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.append):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString):
        The "type-string" class has no styles associated with it. So the entire span can be removed.

        * UserInterface/Views/DOMTreeElement.js:
        Both of these style classes have no styles associated with them. Remove the class names.

2015-05-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve native parameter lists a bit
        https://bugs.webkit.org/show_bug.cgi?id=145338

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/NativeFunctionParameters.js:
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):

2015-05-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update CSS Autocompletion properties and values
        https://bugs.webkit.org/show_bug.cgi?id=145341

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSKeywordCompletions.js:

2015-05-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt Object.setPrototypeOf
        https://bugs.webkit.org/show_bug.cgi?id=145335

        Reviewed by Timothy Hatcher.

        For a case that won't easily move to ES6 classes use Object.setPrototypeOf.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Command.create):

2015-05-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inline use once class names and remove some unused class names
        https://bugs.webkit.org/show_bug.cgi?id=145334

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView):
        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView):
        * UserInterface/Views/CompletionSuggestionsView.js:
        (WebInspector.CompletionSuggestionsView):
        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt):
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        * UserInterface/Views/ContentFlowTreeElement.js:
        (WebInspector.ContentFlowTreeElement):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer):
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView):
        * UserInterface/Views/CookieStorageTreeElement.js:
        (WebInspector.CookieStorageTreeElement):
        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        * UserInterface/Views/DashboardView.js:
        (WebInspector.DashboardView):
        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView):
        * UserInterface/Views/DebuggerDashboardView.js:
        (WebInspector.DebuggerDashboardView):
        (WebInspector.DebuggerDashboardView.prototype._rebuildLocation):
        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection):
        * UserInterface/Views/DetailsSectionSimpleRow.js:
        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView):
        (WebInspector.FontResourceContentView.prototype.createMetricElement):
        (WebInspector.FontResourceContentView.prototype.contentAvailable):
        * UserInterface/Views/HierarchicalPathComponent.js:
        (WebInspector.HierarchicalPathComponent):
        (WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        * UserInterface/Views/LayoutTimelineOverviewGraph.js:
        (WebInspector.LayoutTimelineOverviewGraph):
        * UserInterface/Views/NetworkTimelineOverviewGraph.js:
        (WebInspector.NetworkTimelineOverviewGraph):
        * UserInterface/Views/OverviewTimelineView.js:
        * UserInterface/Views/ProbeSetDetailsSection.js:
        * UserInterface/Views/QuickConsole.js:
        * UserInterface/Views/ReplayDashboardView.js:
        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView):
        * UserInterface/Views/ScriptTimelineOverviewGraph.js:
        (WebInspector.ScriptTimelineOverviewGraph):
        * UserInterface/Views/TextContentView.js:
        (WebInspector.TextContentView):
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        * UserInterface/Views/TimelineOverviewGraph.js:
        (WebInspector.TimelineOverviewGraph):
        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar):
        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler):
        (WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection):

2015-05-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: DOMTree Keyboard Shortcut 'H' to toggle element visibility is not working
        https://bugs.webkit.org/show_bug.cgi?id=145331

        Reviewed by Brian Burg.

        We no longer have CSSProperty.value setters. Instead of attempting
        to toggle and clobber inline style values on the element we:
        
          1. inject a <style> on the page like ".WebInspectorHide { visibility:hidden }"
          2. toggle the WebInspectorHide class on the selected element

        This approach is inspired by the original WebKit change in the
        old inspector frontend: <https://webkit.org/b/110641>.

        The old approach toggled a few properties (opacity and pointer events)
        while the new approach uses visibility, matching other browsers.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype._hideElement.resolvedNode.injectStyleAndToggleClass):
        (WebInspector.DOMTreeOutline.prototype._hideElement.resolvedNode):
        (WebInspector.DOMTreeOutline.prototype._hideElement):
        (WebInspector.DOMTreeOutline.prototype._hideElement.toggleProperties): Deleted.

2015-05-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Give Toolbar buttons an active style
        https://bugs.webkit.org/show_bug.cgi?id=145292

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button:active):

2015-05-21  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Dashboard debugger information can be clipped
        https://bugs.webkit.org/show_bug.cgi?id=144209

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard-container):
        Make dashboard flexible by using vw (viewport width units).

        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default):
        Center default dashboard icons in the middle, don't spread them along the dashboard.

2015-05-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve the UI of the type profiler popover
        https://bugs.webkit.org/show_bug.cgi?id=140737

        Reviewed by Timothy Hatcher.

        Display TypeDescriptions in a Tree similiar to ObjectTrees.
        Currently the only information we have in a TypeDescription
        is the property names, and not their types, so all we can
        display in the tree are names.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeToken):
        * UserInterface/Main.html:
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
        * UserInterface/Models/StructureDescription.js: Added.
        (WebInspector.StructureDescription):
        (WebInspector.StructureDescription.fromPayload):
        (WebInspector.StructureDescription.prototype.get fields):
        (WebInspector.StructureDescription.prototype.get optionalFields):
        (WebInspector.StructureDescription.prototype.get constructorName):
        (WebInspector.StructureDescription.prototype.get prototypeStructure):
        (WebInspector.StructureDescription.prototype.get imprecise):
        * UserInterface/Models/TypeDescription.js: Added.
        (WebInspector.TypeDescription):
        (WebInspector.TypeDescription.fromPayload):
        (WebInspector.TypeDescription.prototype.get leastCommonAncestor):
        (WebInspector.TypeDescription.prototype.get typeSet):
        (WebInspector.TypeDescription.prototype.get structures):
        (WebInspector.TypeDescription.prototype.get valid):
        (WebInspector.TypeDescription.prototype.get truncated):
        * UserInterface/Models/TypeSet.js:
        (WebInspector.TypeSet):
        (WebInspector.TypeSet.prototype.get primitiveTypeNames):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype._updateChildren):
        * UserInterface/Views/Section.css: Removed.
        * UserInterface/Views/Section.js: Removed.
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.popover .expandable):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype.showPopoverForTypes):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithScriptContent):
        (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation.handler):
        (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject):
        * UserInterface/Views/TypePropertiesSection.js: Removed.
        * UserInterface/Views/TypeTokenView.js:
        (WebInspector.TypeTokenView):
        (WebInspector.TypeTokenView.titleForPopover):
        (WebInspector.TypeTokenView.prototype.update):
        (WebInspector.TypeTokenView.prototype._setUpMouseoverHandlers):
        (WebInspector.TypeTokenView.prototype._shouldShowPopover):
        (WebInspector.TypeTokenView.prototype._displayTypeName):
        * UserInterface/Views/TypeTreeElement.css: Added.
        (.type-tree-element):
        (.type-tree-element > .titles):
        (.type-tree-element > .disclosure-button):
        (.type-tree-element.parent > .disclosure-button):
        (.type-tree-element.parent.expanded > .disclosure-button):
        (.type-tree-element > .icon):
        (.type-tree-element.prototype):
        (.type-tree-element.prototype:focus):
        (.type-tree-element.prototype + ol):
        * UserInterface/Views/TypeTreeElement.js: Added.
        (WebInspector.TypeTreeElement):
        (WebInspector.TypeTreeElement.prototype.get name):
        (WebInspector.TypeTreeElement.prototype.get isPrototype):
        (WebInspector.TypeTreeElement.prototype.onpopulate):
        (WebInspector.TypeTreeElement.prototype.onexpand):
        * UserInterface/Views/TypeTreeView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/PropertiesSection.js.
        (.type-tree):
        (.type-tree-outline):
        (.type-tree-outline li):
        (.type-tree-outline ol):
        (.type-tree-outline ol.expanded):
        (.type-tree-outline li .empty-message):
        * UserInterface/Views/TypeTreeView.js: Added.
        (WebInspector.TypeTreeView):
        (WebInspector.TypeTreeView.prototype.get typeDescription):
        (WebInspector.TypeTreeView.prototype.get element):
        (WebInspector.TypeTreeView.prototype.get treeOutline):
        (WebInspector.TypeTreeView.prototype._populate):

2015-05-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix WebInspector.StackTrace style
        https://bugs.webkit.org/show_bug.cgi?id=145240

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/StackTrace.js:
        Reorder and add our usual marker comments.

2015-05-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Preview for NodeList / array like collections
        https://bugs.webkit.org/show_bug.cgi?id=145177

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendPreview):
        Show the class name for a non-basic-Array, but still hide
        it for a basic Array.

2015-05-19  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Convert stackTrace from raw payload data to an array of CallFrames
        https://bugs.webkit.org/show_bug.cgi?id=144982

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/LogManager.js:
        * UserInterface/Main.html:
        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame.fromPayload):
        Consider an empty string url as a native code as it was in 
        WebInspector.ConsoleMessageView.prototype._firstNonNativeCallFrame

        * UserInterface/Models/ConsoleMessage.js:
        (WebInspector.ConsoleMessage):
        Convert _stackTrace from an array of payload objects to WebInspector.StackTrace model.

        * UserInterface/Models/StackTrace.js: Added.
        (WebInspector.StackTrace):
        (WebInspector.StackTrace.prototype.get callFrames):
        (WebInspector.StackTrace.prototype.get firstNonNativeCallFrame): Added.
        (WebInspector.StackTrace.fromPayload):
        * UserInterface/Test.html:
        * UserInterface/Views/CallFrameView.js:
        (WebInspector.CallFrameView):
        Don't show a URL when sourceCodeLocation is missing, fix webkit.org/b/145071.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype.toClipboardString):
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        (WebInspector.ConsoleMessageView.prototype._appendStackTrace):
        (WebInspector.ConsoleMessageView.prototype._shouldShowStackTrace):
        (WebInspector.ConsoleMessageView.prototype._linkifyCallFrame):
        (WebInspector.ConsoleMessageView.prototype._firstNonNativeCallFrame): Deleted.

2015-05-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Reliability of Closing and Reopening Elements Tab
        https://bugs.webkit.org/show_bug.cgi?id=145139

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.highlightSearchResults):
        (WebInspector.DOMTreeElement.prototype.hideSearchHighlights):
        (WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight.animationEnded):
        (WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight):
        (WebInspector.DOMTreeElement.prototype._updateChildren):
        (WebInspector.DOMTreeElement.prototype.adjustCollapsedRange):
        (WebInspector.DOMTreeElement.prototype._startEditingAsHTML.dispose):
        (WebInspector.DOMTreeElement.prototype._startEditingAsHTML):
        (WebInspector.DOMTreeElement.prototype.updateTitle):
        Stop using the `delete` operator.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.setVisible):
        Trigger an update when the outline is made visible.

        * UserInterface/Views/FrameDOMTreeContentView.js:
        (WebInspector.FrameDOMTreeContentView.prototype._rootDOMNodeAvailable):
        Provide a reasonable default selection if there is no body or document element.
        For example in an augmented DOM tree.

2015-05-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Tab Restoration incorrectly makes ContentViews "shown" in background tabs
        https://bugs.webkit.org/show_bug.cgi?id=145080

        Reviewed by Timothy Hatcher.

        Many tabs have their own content browser / navigation sidebar. During
        state restoration, each tab would immediately try to restore an
        appropriate ContentView after the load / navigation. However, in doing
        so, we weren't respecting whether or not the Tab the ContentBrowser
        was in was hidden or not, so ContentViews in background tags were
        still being treated as shown/visible.

        This patch changes state restoration to only affect the foreground
        tab, and be delayed on all background tabs until that tab is shown.
        This reduces the amount of work on load and navigation to just a
        single tab instead of all tabs. Most importantly, it avoids having
        performing work on ContentBrowsers that are non-visible, so state
        restoration only happens for visible ContentBrowsers.

        For simplicity, in the case of a delayed tab restoration triggered
        by the user switching tabs, we don't try twice (like we occasionally
        do on load/reload). We could add back some hueristic here if needed.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.activateExtraDomains):
        (WebInspector._mainResourceDidChange):
        (WebInspector._restoreCookieForOpenTabs):
        * UserInterface/Views/NavigationSidebarPanel.js:

        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView.prototype.shown):
        (WebInspector.TabContentView.prototype.restoreStateFromCookie):
        (WebInspector.TabContentView.prototype.saveStateToCookie):
        When asked to restore state, save that logic until the next time the tab is shown.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.get visible):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidStartEditing):
        (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState): Deleted.
        Although this didn't actually catch the issue, it could potentially
        catch other issues in the future. We don't want to enable the annotators
        in a non-visible text editor, as it could be a performance issue.

2015-05-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: empty timeline should not use previous timeline's zoom interval
        https://bugs.webkit.org/show_bug.cgi?id=132754

        Reviewed by Joseph Pecoraro.

        When a timeline recording is started in response to a provisional load, TimelineManager should check whether
        the main resource url is changing before loading a new timeline recording. If the main resource is changing,
        set the selection start, selection duration, and duration-per-pixel settings of the TimelineOverview to their
        default values.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager):
        (WebInspector.TimelineManager.prototype.isCapturingPageReload):
        (WebInspector.TimelineManager.prototype.capturingStopped):
        (WebInspector.TimelineManager.prototype.pageDidLoad):
        (WebInspector.TimelineManager.prototype._startAutoCapturing):
        Added a property for checking whether auto capture was triggered by a page reload.

        * UserInterface/Views/LinearTimelineOverview.js:
        (WebInspector.LinearTimelineOverview):
        Increase default selection time to 15 seconds.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        Reset selection and zoom if TimelineManager isn't capturing in response to a page reload.

        (WebInspector.TimelineOverview.prototype.reset):
        Reset selection and zoom.

        (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineOverview.prototype._resetSelection):
        Added a helper function for resetting selection and zoom to their default values.

2015-05-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Timeline data grid displays wrong records after switching between Timelines/Frames mode
        https://bugs.webkit.org/show_bug.cgi?id=145084

        Reviewed by Timothy Hatcher.

        Update timeline sidebar filter whenever the view mode changes.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if.get if):
        (WebInspector.TimelineSidebarPanel.get else):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):

2015-05-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Bump image format number to force image regeneration
        https://bugs.webkit.org/show_bug.cgi?id=145074

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/ImageUtilities.js:

2015-05-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce type annotation update frequency
        https://bugs.webkit.org/show_bug.cgi?id=145066

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        Reduce the frequency which could commonly be 16-24ms
        to a minimum of 100ms and maximum of 2000ms.

2015-05-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix some possible event listener leakers in content views
        https://bugs.webkit.org/show_bug.cgi?id=145068

        Reviewed by Timothy Hatcher.

        Now that some content views can be closed that weren't closable before, ensure
        we clean up after global event listeners that may strongly reference "this".

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.closed):
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.close):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype.closed):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.closed):
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.closed):
        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView.prototype.closed):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype.closed):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.close):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype.closed):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype.closed):
        (WebInspector.TimelineDataGrid.prototype.handleEvent):

2015-05-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Initiator Popovers no longer work in Layout Timeline
        https://bugs.webkit.org/show_bug.cgi?id=145067

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LayoutTimelineDataGrid.js:
        (WebInspector.LayoutTimelineDataGrid.prototype.callFramePopoverAnchorElement):
        Update the column name, which changed in r183134.

2015-05-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update the New Tab button disabled state after extra domains are activated
        https://bugs.webkit.org/show_bug.cgi?id=145028

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.activateExtraDomains):

2015-05-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Current time marker is always at zero in Rendering Frames ruler
        https://bugs.webkit.org/show_bug.cgi?id=144518

        Reviewed by Timothy Hatcher.

        The current and end time values for the rendering frame timeline overview should always be equal to the frame
        number of the last record in the rendering frames timeline.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype.updateLayout):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._recordingTimesUpdated):

2015-05-11  Brent Fulgham  <bfulgham@apple.com>

        [Win] Move Windows build target to Windows 7 (or newer)
        https://bugs.webkit.org/show_bug.cgi?id=144890
        <rdar://problem/20707307>

        Reviewed by Anders Carlsson.

        Update linked SDK and minimal Windows level to be compatible with
        Windows 7 or newer.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:

2015-05-11  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: REGRESSION (Tabs): Issues reloading a resource with breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=144650

        Fix a number of issues with Debugger tab and navigation/reloading:
        - Close old content views in the Debugger tab when main frame navigates.
        - Prune old resource tree elements before attempting to restore a cookie that might match an old resource.
        - Allow breakpoint selections to be restored from a saved cookie.
        - Fix an assert when closing a content view that isn't the current index, but is the current view.
        - Avoid calling closed() multiple times when a ContentView is in the back/forward list more than once.
        - Make restoreStateFromCookie properly set and use the causedByNavigation argument for a longer restore delay.
        - Create a new cookie object per tab instead of it being cumulative from the previous cookie.

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector._mainResourceDidChange): Delay calling _restoreCookieForOpenTabs to give time for sidebars
        and tabs to respond to the main resource change.
        (WebInspector._restoreCookieForOpenTabs): Rename causedByReload to causedByNavigation. Nothing special about
        reload since we restore on all navigation.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView): Support Breakpoint as a represented object, which happens during a cookie restore.
        (WebInspector.ContentView.isViewable): Ditto.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.closeAllContentViews): Disassociate if the view is current and not just
        the current entry index. This matches other close functions. This fixes an assert in _disassociateFromContentView.
        (WebInspector.ContentViewContainer.prototype._disassociateFromContentView): Don't disassociate multiple times. This
        avoids calling the closed() function on a view more than once.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
        (WebInspector.DebuggerSidebarPanel.prototype._mainResourceDidChange): Renamed from _mainResourceChanged.
        Close all content views if this is the main frame. Also prune all old resources. Doing this now avoids a flash
        of having old and new resources in the tree caused by the default delay in NavigationSidebarPanel's _checkForOldResources.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel): Set _autoPruneOldTopLevelResourceTreeElements for later.
        (WebInspector.NavigationSidebarPanel.prototype.get contentTreeOutlineToAutoPrune): Deleted.
        (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentView): Fix typo.
        (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement): Fix whitespace.
        (WebInspector.NavigationSidebarPanel.prototype.pruneOldResourceTreeElements): Added. Broken out from
        _checkForOldResources.delayedWork so it can be called manually. Also check all visible tree outlines.
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged): Pass treeElement in an array.
        (WebInspector.NavigationSidebarPanel.prototype._checkForOldResourcesIfNeeded): Added.
        (WebInspector.NavigationSidebarPanel.prototype._checkForOldResources): Call pruneOldResourceTreeElements on a delay.
        (WebInspector.NavigationSidebarPanel.prototype._checkForOldResources.delayedWork): Deleted.
        (WebInspector.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie): Call _checkForOldResourcesIfNeeded.
        (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie): Remove array folding code.

        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView.prototype.restoreStateFromCookie): Rename causedByReload to causedByNavigation.
        (WebInspector.TabContentView.prototype.saveStateToCookie): Don't allow the cookie to build on the old cookie.

2015-05-11  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: NavigationSidebarPanel leaks some event listeners
        https://bugs.webkit.org/show_bug.cgi?id=144523

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        (WebInspector.NavigationSidebarPanel.prototype.closed):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype.closed):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.closed):
        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel.prototype.closed):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.closed):

2015-05-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: In the console, show function name next to the source link
        https://bugs.webkit.org/show_bug.cgi?id=144372

        Introduce CallFrameView to display counsole message source links. It looks like this:

            [f] functionName - filename.js:42

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.createSourceCodeLocationLink):
        (WebInspector.linkifyLocation):
        (.showSourceCodeLocation):
        (WebInspector.linkifyElement):
        Abstract this out as it's used in WebInspector.CallFrameView and WebInspector.createSourceCodeLocationLink.

        (WebInspector.sourceCodeForURL):
        Move this code from Timeline to Main.js as it's used by Console too.

        (WebInspector.linkifyURLAsNode):
        Remove tooltipText argument as it is never used.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._callFramesFromPayload):
        * UserInterface/Main.html:
        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame.fromPayload):
        Abstract this out as it's used in WebInspector.TimelineManager.prototype._callFramesFromPayload and
        WebInspector.ConsoleMessageView._appendLocationLink.

        (WebInspector.CallFrame):
        * UserInterface/Views/CallFrameTreeElement.js:
        (WebInspector.CallFrameTreeElement):
        Move it to WebInspector.CallFrameView.iconForCallFrame.

        * UserInterface/Views/CallFrameView.css: Added.
        (.call-frame):
        (.call-frame .icon):
        (.call-frame .titles):
        (.call-frame .title):
        (.call-frame .source-link):
        (.call-frame .title + .subtitle > .source-link):
        (.call-frame .subtitle .source-link):
        (.call-frame:focus .subtitle .source-link):
        (.call-frame .subtitle:empty):
        (.call-frame .subtitle):
        (.call-frame .colon):
        (.call-frame .title + .subtitle::before):
        * UserInterface/Views/CallFrameView.js: Added.
        (WebInspector.CallFrameView):
        (WebInspector.CallFrameView.iconClassNameForCallFrame):
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message .console-message-location):
        (.console-message .call-frame):
        (.console-message .go-to-link):
        (.console-message .go-to-link:focus):
        (.console-message .console-message-url::before):
        (.console-saved-variable): Deleted.
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        * UserInterface/Views/DebuggerDashboardView.js:
        * UserInterface/Views/Main.css:
        (.hidden): Deleted.
        * UserInterface/Views/ProfileNodeTreeElement.js:
        (WebInspector.ProfileNodeTreeElement):
        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.createCellContent):

2015-05-08  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Styles sidebar editing with incomplete property looks poor in UI
        https://bugs.webkit.org/show_bug.cgi?id=141692

        Reviewed by Timothy Hatcher.

        Add "css-rule" Formatter that breaks CSS declarations into multiple lines,
        keeps comments and invalid styles and adds whitespace.

        * Tools/PrettyPrinting/css-rule-tests/*.css: Added.
        Add test cases.

        * Tools/PrettyPrinting/index.html:
        Enable Test setup to be able to run "css-rule" Formatter tests.

        * UserInterface/Controllers/Formatter.js:
        (Formatter.prototype._handleToken):
        * UserInterface/Controllers/FormatterContentBuilder.js:
        (FormatterContentBuilder.prototype.removeLastNewline):
        (FormatterContentBuilder.prototype.removeLastWhitespace):
        (FormatterContentBuilder.prototype._popFormattedContent):
        (FormatterContentBuilder.prototype._popNewLine): Deleted.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._formattedContentFromEditor):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.set this):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.get this):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.countNewLineCharacters): Deleted.
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update.else): Deleted.
        * UserInterface/Views/CodeMirrorFormatters.js:

2015-05-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Expanding Object with only __proto__ looks poor should have a label
        https://bugs.webkit.org/show_bug.cgi?id=144755

        Reviewed by Timothy Hatcher.

        Better handle cases where expanding an object has only a __proto__
        and no other properties.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.mode.prototype.this.children.length):
        (WebInspector.ObjectTreePropertyTreeElement):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree-outline li .empty-message):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.createEmptyMessageElement):
        (WebInspector.ObjectTreeView.comparePropertyDescriptors):
        (WebInspector.ObjectTreeView.prototype._updateProperties):

2015-05-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix querySelector in ResourceContentView.js, caught by assertion
        https://bugs.webkit.org/show_bug.cgi?id=144756

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype._hasContent):
        Ensure querySelector call is using the class name correctly.

2015-05-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Docking Toolbar Buttons do not respect Docking Availability
        https://bugs.webkit.org/show_bug.cgi?id=144714

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.updateDockingAvailability):
        (WebInspector._updateDockNavigationItems):
        Update the Toolbar UI based on docking availability.
        Assume docking is unavailable by default.

        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.setDockingUnavailable):
        Add back this API as the backend may be calling it when
        docking availability changes. This just calls out to
        global WebInspector functions to update the Toolbar UI.

        * UserInterface/Base/Test.js:
        (WebInspector.updateDockedState):
        (WebInspector.updateDockingAvailability):
        Do nothing in tests.

2015-05-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: The text in the left pane overlaps the "Filter Time Events" field in the Timeline after the Web Inspector is resized
        https://bugs.webkit.org/show_bug.cgi?id=144720

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar):
        (.filter-bar > .navigation-bar):
        (.filter-bar > input[type="search"]):
        (.filter-bar > .navigation-bar > .item): Deleted.
        Filter bar now has opaque background and height updated to the ubiquitous 29px.

2015-05-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: DOMStorage exception and issue with sessionStorage
        https://bugs.webkit.org/show_bug.cgi?id=144646

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView):
        (WebInspector.DOMStorageContentView.prototype._populate):
        (WebInspector.DOMStorageContentView.prototype.reset): Deleted.
        Always have the datagrid be available with a default sort.

        (WebInspector.DOMStorageContentView.prototype._sortDataGrid.comparator):
        (WebInspector.DOMStorageContentView.prototype._sortDataGrid):
        Simplify and correct the order.

        (WebInspector.DOMStorageContentView.prototype.cleanup):
        Cleanup some uses of delete.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.sortNodesImmediately):
        Provide a way to sort immediately without a visible delay.

        (WebInspector.DataGrid.prototype._sortNodesCallback):
        Cleanup some dead code to simplify sorting.

        (WebInspector.DataGridNode.prototype._attach):
        When sorting, the children list does not match the child node list,
        so ensure that placeholder nodes are added to the end.

        (WebInspector.PlaceholderDataGridNode.prototype.makeNormal):
        Cleanup some uses of delete.

2015-05-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: SourceCodeTextEditor shows "undefined" instead of resource content when pausing during resource load
        https://bugs.webkit.org/show_bug.cgi?id=144662

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Command.prototype.promise):
        Start standardizing on rejecting Promises with Error objects.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        (WebInspector.ResourceContentView.prototype._protocolError):
        When there is a protocol error, show a nice UI string for the error.

        (WebInspector.ResourceContentView.prototype._contentAvailable):
        (WebInspector.ResourceContentView.prototype._contentError):
        (WebInspector.ResourceContentView.prototype._hasContent):
        Whenever we hit an error case in ResourceContentView, check to make sure
        that a subclass hasn't already populated the content view with content.
        This can happen when a TextResourceContentView populates a Resource with
        Script content while paused, because the Resource content would be
        unavailable. We check that content has loaded by checking that the
        indeterminate spinner is no longer showing.

2015-05-05  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Further optimize SVG images
        https://bugs.webkit.org/show_bug.cgi?id=144441

        SVG images optimized with a combination of sed replacements, the
        usage of the scour tool (http://www.codedread.com/scour/) and a
        forked version of the svgo tool (https://github.com/tanty/svgo).

        Also, added the class attribute to the shape elements following
        the convention used in Apple's images.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/gtk/BackArrow.svg: Optimized.
        * UserInterface/Images/gtk/BreakpointActionAdd.svg: Optimized.
        * UserInterface/Images/gtk/BreakpointActionRemove.svg: Optimized.
        * UserInterface/Images/gtk/BreakpointButton.svg: Optimized.
        * UserInterface/Images/gtk/BreakpointInactiveButton.svg: Optimized.
        * UserInterface/Images/gtk/Breakpoints.svg: Optimized.
        * UserInterface/Images/gtk/Checkers.svg: Optimized.
        * UserInterface/Images/gtk/Circle.svg: Optimized.
        * UserInterface/Images/gtk/Close.svg: Optimized.
        * UserInterface/Images/gtk/CloseLarge.svg: Optimized.
        * UserInterface/Images/gtk/CloseWhite.svg: Optimized.
        * UserInterface/Images/gtk/ContentFlow.svg: Optimized.
        * UserInterface/Images/gtk/Crosshair.svg: Optimized.
        * UserInterface/Images/gtk/DOMCharacterData.svg: Optimized.
        * UserInterface/Images/gtk/DOMComment.svg: Optimized.
        * UserInterface/Images/gtk/DOMDocument.svg: Optimized.
        * UserInterface/Images/gtk/DOMDocumentType.svg: Optimized.
        * UserInterface/Images/gtk/DOMElement.svg: Optimized.
        * UserInterface/Images/gtk/DOMNode.svg: Optimized.
        * UserInterface/Images/gtk/DOMTextNode.svg: Optimized.
        * UserInterface/Images/gtk/DisclosureTriangleSmallClosed.svg: Optimized.
        * UserInterface/Images/gtk/DisclosureTriangleSmallOpen.svg: Optimized.
        * UserInterface/Images/gtk/DisclosureTriangleTinyClosed.svg: Optimized.
        * UserInterface/Images/gtk/DisclosureTriangleTinyOpen.svg: Optimized.
        * UserInterface/Images/gtk/DockBottom.svg: Optimized.
        * UserInterface/Images/gtk/DockRight.svg: Optimized.
        * UserInterface/Images/gtk/DownloadArrow.svg: Optimized.
        * UserInterface/Images/gtk/Error.svg: Optimized.
        * UserInterface/Images/gtk/Errors.svg: Optimized.
        * UserInterface/Images/gtk/ErrorsEnabled.svg: Optimized.
        * UserInterface/Images/gtk/EventListener.svg: Optimized.
        * UserInterface/Images/gtk/Exception.svg: Optimized.
        * UserInterface/Images/gtk/Eye.svg: Optimized.
        * UserInterface/Images/gtk/FilterFieldGlyph.svg: Optimized.
        * UserInterface/Images/gtk/ForwardArrow.svg: Optimized.
        * UserInterface/Images/gtk/Function.svg: Optimized.
        * UserInterface/Images/gtk/GoToArrow.svg: Optimized.
        * UserInterface/Images/gtk/HierarchicalNavigationItemChevron.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner1.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner10.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner11.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner12.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner2.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner3.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner4.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner5.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner6.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner7.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner8.svg: Optimized.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner9.svg: Optimized.
        * UserInterface/Images/gtk/Issues.svg: Optimized.
        * UserInterface/Images/gtk/IssuesEnabled.svg: Optimized.
        * UserInterface/Images/gtk/LayerBorders.svg: Optimized.
        * UserInterface/Images/gtk/Locked.svg: Optimized.
        * UserInterface/Images/gtk/Logs.svg: Optimized.
        * UserInterface/Images/gtk/Native.svg: Optimized.
        * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg: Optimized.
        * UserInterface/Images/gtk/NavigationItemTrash.svg: Optimized.
        * UserInterface/Images/gtk/NavigationItemTypes.svg: Optimized.
        * UserInterface/Images/gtk/PaintFlashing.svg: Optimized.
        * UserInterface/Images/gtk/Pause.svg: Optimized.
        * UserInterface/Images/gtk/PausedBreakpoint.svg: Optimized.
        * UserInterface/Images/gtk/Pencil.svg: Optimized.
        * UserInterface/Images/gtk/Plus.svg: Optimized. Text element
        converted into a shape.
        * UserInterface/Images/gtk/PseudoElement.svg: Optimized.
        * UserInterface/Images/gtk/Record.svg: Optimized.
        * UserInterface/Images/gtk/Reflection.svg: Optimized.
        * UserInterface/Images/gtk/ReloadFull.svg: Optimized.
        * UserInterface/Images/gtk/ReplayPauseButton.svg: Optimized.
        * UserInterface/Images/gtk/ReplayPlayButton.svg: Optimized.
        * UserInterface/Images/gtk/ReplayRecordingButton.svg: Optimized.
        * UserInterface/Images/gtk/Request.svg: Optimized.
        * UserInterface/Images/gtk/Resources.svg: Optimized.
        * UserInterface/Images/gtk/Response.svg: Optimized.
        * UserInterface/Images/gtk/ResultLine.svg: Optimized.
        * UserInterface/Images/gtk/Resume.svg: Optimized.
        * UserInterface/Images/gtk/ShadowDOM.svg: Optimized.
        * UserInterface/Images/gtk/SortIndicatorDownArrow.svg: Optimized.
        * UserInterface/Images/gtk/SortIndicatorUpArrow.svg: Optimized.
        * UserInterface/Images/gtk/SplitToggleUp.svg: Optimized.
        * UserInterface/Images/gtk/StepInto.svg: Optimized.
        * UserInterface/Images/gtk/StepOut.svg: Optimized.
        * UserInterface/Images/gtk/StepOver.svg: Optimized.
        * UserInterface/Images/gtk/Stop.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleAuthor.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleInherited.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleInheritedElement.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleInspector.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleUser.svg: Optimized.
        * UserInterface/Images/gtk/StyleRuleUserAgent.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordAnimation.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordConsoleProfile.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordEvent.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordLayout.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordPaint.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordProbeSampled.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordScriptEvaluated.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordStyle.svg: Optimized.
        * UserInterface/Images/gtk/TimelineRecordTimer.svg: Optimized.
        * UserInterface/Images/gtk/TypeBoolean.svg: Optimized.
        * UserInterface/Images/gtk/TypeNull.svg: Optimized.
        * UserInterface/Images/gtk/TypeNumber.svg: Optimized.
        * UserInterface/Images/gtk/TypeObject.svg: Optimized.
        * UserInterface/Images/gtk/TypeRegex.svg: Optimized. Removed
        mistaken extra shape.
        * UserInterface/Images/gtk/TypeString.svg: Optimized.
        * UserInterface/Images/gtk/TypeSymbol.svg: Optimized. Removed
        mistaken extra shape.
        * UserInterface/Images/gtk/TypeUndefined.svg: Optimized.
        * UserInterface/Images/gtk/Undock.svg: Optimized.
        * UserInterface/Images/gtk/UpDownArrows.svg: Optimized.
        * UserInterface/Images/gtk/UserInputPrompt.svg: Optimized.
        * UserInterface/Images/gtk/UserInputPromptPrevious.svg: Optimized.
        * UserInterface/Images/gtk/UserInputResult.svg: Optimized.
        * UserInterface/Images/gtk/Warning.svg: Optimized.

2015-05-05  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: Web Inspector: no way to navigate to a resource/source location from overview timeline view
        https://bugs.webkit.org/show_bug.cgi?id=144539

        Reviewed by Brian Burg.

        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.set status): Call didChange() so the onchange event fires. This allows
        TimelineSidebarPanel to update the status element when it goes from a spinner to empty for ResourceTreeElements.
        (WebInspector.GeneralTreeElement.prototype.onattach): Don't call _updateStatusElement, just append it if needed.
        Calling _updateStatusElement caused DOMNodeFragments as status elements to be appended a second time and fail.
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.treeElementAddedOrChanged):
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.canShowContentViewForTreeElement):
        (WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.NetworkTimelineView.prototype.treeElementSelected):
        (WebInspector.NetworkTimelineView.prototype._dataGridNodeSelected):
        (WebInspector.NetworkTimelineView.prototype._updateTreeElementWithCloseButton): Deleted.
        (WebInspector.NetworkTimelineView.prototype._closeStatusButtonClicked): Deleted.
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype.canShowContentViewForTreeElement):
        (WebInspector.OverviewTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.OverviewTimelineView.prototype._dataGridNodeSelected):
        (WebInspector.OverviewTimelineView.prototype._treeElementDeselected): Deleted.
        (WebInspector.OverviewTimelineView.prototype._treeElementSelected): Deleted.
        (WebInspector.OverviewTimelineView.prototype._updateTreeElementWithCloseButton): Deleted.
        (WebInspector.OverviewTimelineView.prototype._closeStatusButtonClicked): Deleted.
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.canShowContentViewForTreeElement):
        (WebInspector.RenderingFrameTimelineView.prototype.showContentViewForTreeElement):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent): Don't show a go-to arrow in the Domain column.
        (WebInspector.ResourceTimelineDataGridNode.prototype._goToResource): Deleted.
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype.canShowContentViewForTreeElement):
        (WebInspector.ScriptTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.ScriptTimelineView.prototype.treeElementSelected):
        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement.prototype.get sourceCodeLocation):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline .item:hover:not(.selected) .status .close.status-button):
        (.sidebar > .panel.navigation.timeline:not(.timeline-recording-content-view-showing) .status .go-to-arrow.status-button):
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .status .close.status-button):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.treeElementAddedOrChanged): Added.
        (WebInspector.TimelineSidebarPanel.prototype.canShowDifferentContentView):
        (WebInspector.TimelineSidebarPanel.prototype._treeElementGoToArrowWasClicked): Added.
        (WebInspector.TimelineSidebarPanel.prototype._treeElementCloseButtonClicked): Added.
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView):
        (WebInspector.TimelineView.prototype.canShowContentViewForTreeElement):
        (WebInspector.TimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.TimelineView.prototype.treeElementDeselected):
        (WebInspector.TimelineView.prototype.treeElementSelected):
        (WebInspector.TimelineView.prototype.needsLayout):
        (WebInspector.TimelineView.prototype._closeStatusButtonClicked): Deleted.
        (WebInspector.TimelineView.prototype._updateTreeElementWithCloseButton): Deleted.
        * UserInterface/Views/TreeElementStatusButton.css:
        (.item > .status > .status-button): Fix an alignment issue with close and go-to arrows being side-by-side.
        Does not happen in the final patch because they are mutually exclusive, but still good to fix.

2015-05-05  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Fix some issues with Search tabs
        https://bugs.webkit.org/show_bug.cgi?id=144531

        Reviewed by Darin Adler.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        (WebInspector.ContentView.isViewable):
        Support DOMSearchMatchObject and SourceCodeSearchMatchObject representedObjects. These are usually
        handled at a higher level, but cookie restoring requires ContentView to handle them.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        (WebInspector.DOMTreeContentView.prototype.selectAndRevealDOMNode):
        (WebInspector.DOMTreeContentView.prototype.selectLastSelectedNode):
        (WebInspector.DOMTreeContentView.prototype._restoreSelectedNodeAfterUpdate):
        Don't allow restoring the previous selected node when another not has already been selected.

        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
        Allow Script objects to be shown in the Search tab.

2015-05-05  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Source/WebInspectorUI/UserInterface/Images/Logs.svg has unknown attribute "fille"
        https://bugs.webkit.org/show_bug.cgi?id=144627

        Reviewed by Darin Adler.

        * UserInterface/Images/Logs.svg: Change "fille" to "fill".

2015-05-05  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: New Images added in r183339, r183338, r183332, r183323, r182660, and r182186
        https://bugs.webkit.org/show_bug.cgi?id=144329

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/gtk/Console.svg: Added.
        * UserInterface/Images/gtk/Debugger.svg: Added.
        * UserInterface/Images/gtk/Elements.svg: Added.
        * UserInterface/Images/gtk/Gear.svg: Added.
        * UserInterface/Images/gtk/NewTab.svg: Added.
        * UserInterface/Images/gtk/NewTabPlus.svg: Added.
        * UserInterface/Images/gtk/ReloadToolbar.svg: Added.
        * UserInterface/Images/gtk/SearchResults.svg: Added.
        * UserInterface/Images/gtk/Storage.svg: Added.
        * UserInterface/Images/gtk/Timeline.svg: Added.
        * UserInterface/Images/gtk/TimelineRecordRenderingFrame.svg: Added.
        * UserInterface/Images/gtk/ToggleLeftSidebar.svg: Added.
        * UserInterface/Images/gtk/ToggleRightSidebar.svg: Added.

2015-05-05  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: icons for console.info() messages
        https://bugs.webkit.org/show_bug.cgi?id=144461

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/gtk/Debug.svg: Added.
        * UserInterface/Images/gtk/Info.svg: Added.
        * UserInterface/Images/gtk/Log.svg: Added.

2015-05-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Always expand initial top level DOM tree nodes when not including the root (frame views)
        https://bugs.webkit.org/show_bug.cgi?id=144607

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.update):

2015-05-04  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Allow closing and reopening the Debugger tab
        https://bugs.webkit.org/show_bug.cgi?id=144536

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector._updateNewTabButtonState):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype.closed):
        (WebInspector.DebuggerSidebarPanel.prototype._addIssuesForSourceCode):
        (WebInspector.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
        (WebInspector.DebuggerSidebarPanel.prototype._resourceAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._addResource):
        (WebInspector.DebuggerSidebarPanel.prototype._mainResourceChanged):
        (WebInspector.DebuggerSidebarPanel.prototype._scriptAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._addScript):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView):
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):

2015-05-04  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: Web Inspector: FrameTreeElement does not folders properly when loading a page
        https://bugs.webkit.org/show_bug.cgi?id=144535

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/FolderizedTreeElement.js:
        (WebInspector.FolderizedTreeElement.prototype.addChildForRepresentedObject): Fix an exception if not in a tree.
        (WebInspector.FolderizedTreeElement.prototype.prepareToPopulate):
        (WebInspector.FolderizedTreeElement.prototype._populateFromNewChildQueue):

2015-05-04  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Allow closing and reopening the Timelines tab
        https://bugs.webkit.org/show_bug.cgi?id=144520

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector._updateNewTabButtonState):
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager): No need for a delay now. Call reset().
        (WebInspector.TimelineManager.prototype.reset):
        (WebInspector.TimelineManager.delayedWork): Deleted.
        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):
        (WebInspector.ContentBrowserTabContentView.prototype.closed):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype.closed): Added. Fixed leak.
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.closed): Added. Fixed leak.
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView): Added Timelines.
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype.closed): Added. Fixed leak.
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.closed): Added. Fixed leak.
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype.closed):
        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.closed): Deleted. Made generic
        in ContentBrowserTabContentView.prototype.closed.
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser.prototype._tabBarItemSelected): Fix a potential exception
        when selectedTabBarItem is null.
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.closed):
        (WebInspector.TimelineSidebarPanel._recordingCreated): Call _addRecording.
        (WebInspector.TimelineSidebarPanel._addRecording): Added.
        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView):

2015-05-04  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Switching recordings in the Timeline navigation bar is broken
        https://bugs.webkit.org/show_bug.cgi?id=144519

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._hierarchicalPathComponentWasSelected): Use revealAndSelect
        on the TreeElement instead of showing the representedObject directly. This fixes an exception in
        TimelineRecordingContentView where it wouldn't be initialized with the TimelineSidebarPanel extra argument.
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype.get visibleDuration): Fix an annoying assert. We show the view
        early in construction, before it is in the document. Future updateLayout calls work and fix this.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.shown): Call _currentContentViewDidChange
        to trigger the sidebar to update when this recording view is shown.
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype._recordingsTreeElementSelected): Moved code from here...
        (WebInspector.TimelineSidebarPanel.prototype._recordingSelected): ... to here. Take two different paths
        to state restoration here. If the view existed before, use its state. If now, use the current state that
        is captured by the cookie logic and explicitly restore it.

2015-05-03  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Exception under ContentViewContainer _disassociateFromContentView
        https://bugs.webkit.org/show_bug.cgi?id=144546

        Reviewed by Brian Burg.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.showContentView):
        Make sure to pass the ContentView to _disassociateFromContentView. Also negate the result
        of the _backForwardList.some(), since we don't want to dissociate if the content view is
        still in the back-forward list.

2015-05-02  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Relocate the selected range details in the Rendering Frames timeline UI
        https://bugs.webkit.org/show_bug.cgi?id=144346

        This patch removes the details sidebar used by the rendering frames view, and relocates the frame selection
        chart the Timelines navigation sidebar.

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        RenderingFramesDetailsSidebar is no longer used.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        Reordered timelines.

        * UserInterface/Main.html:
        Removed references to deleted files.

        * UserInterface/Views/ChartDetailsSectionLegendRow.js: Removed.
        No longer used. The legend is now a child element of the chart.

        * UserInterface/Views/ChartDetailsSectionRow.css:
        (.details-section > .content > .group > .row.chart > .title):
        (.details-section > .content > .group > .row.chart > .chart-content):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label > .color-swatch):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .label):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > .value):
        (.details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > *):
        New chart and legend styles.

        * UserInterface/Views/ChartDetailsSectionRow.js:
        (WebInspector.ChartDetailsSectionRow):
        (WebInspector.ChartDetailsSectionRow.prototype.set title):
        (WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
        (WebInspector.ChartDetailsSectionRow.prototype.set innerRadius):
        (WebInspector.ChartDetailsSectionRow.prototype.get total):
        (WebInspector.ChartDetailsSectionRow.set data):
        (WebInspector.ChartDetailsSectionRow.prototype.set data):
        (WebInspector.ChartDetailsSectionRow.prototype._createLegendItem):
        (WebInspector.ChartDetailsSectionRow.prototype._refresh):

        A few changes have been made to the appearance and behavior of the chart. A chart title can now be set,
        and the legend appears to the right of the chart rather than in a separate details group.

        The chart now has better support for adding empty data points, ensuring that a meaningful legend is shown even
        when no rendering frames are selected in the timeline overview graph. This ensures that the task associated
        with each colored frame segment is apparent, without having to make a selection or record a timeline.

        * UserInterface/Views/RenderingFrameDetailsSidebarPanel.js: Removed.
        No longer used.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        Reduced maximum timeline height to increase the height of short frames.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.shown):
        (WebInspector.RenderingFrameTimelineView.prototype.hidden):
        RenderingFramesDetailsSidebar is no longer used.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
        (WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineRecordingContentView.prototype._updateFrameSelection):
        Improved logic for updating the frame selection.

        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > div.header):
        (.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > .content > .group > .row.chart):
        (.sidebar > .panel.navigation.timeline > .timelines-content > .details-section > .content > .group > .row.chart > .chart-content > .chart):
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing > .content): Deleted.
        New chart styles.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.shown):
        (WebInspector.TimelineSidebarPanel._timelineAdded.set this):
        (WebInspector.TimelineSidebarPanel.this._timelineTreeElementMap.get select):
        (WebInspector.TimelineSidebarPanel.get else):
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart.getSelectedRecords.get var):
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart.getSelectedRecords):
        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline.this._timelineTreeElementMap.get select):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if.get if):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if):
        (WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart.durationForRecordType):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
        (WebInspector.TimelineSidebarPanel.set contentTreeOutlineLabel): Deleted.
        (WebInspector.TimelineSidebarPanel._recordingCreated.set this): Deleted.
        (WebInspector.TimelineSidebarPanel.get this): Deleted.
        Moved the selected frames chart to the navigation sidebar.

        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView):
        RenderingFramesDetailsSidebar is no longer used.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        Removed references to deleted files.

2015-05-02  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Allow closing and reopening the Resources tab
        https://bugs.webkit.org/show_bug.cgi?id=144513

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector._updateNewTabButtonState):
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.closed):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView):

2015-05-02  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: REGRESSION: Resources section doesn't update after changes are made to a local file
        https://bugs.webkit.org/show_bug.cgi?id=144512

        The content view was being associated with the wrong represented object. This caused the code to use
        the old main resource when showing the frame again.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector._frameWasAdded.delayedWork):
        (WebInspector._frameWasAdded):
        With the changes in ResourceSidebarPanel, we need to delay showing the frame.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype.showRepresentedObject):
        Avoid restoring state by calling cancelRestoringState(). Not fully related to this bug,
        but it was preventing testing the cases.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.contentViewForRepresentedObject):
        This fixes the bug. Don't associate the content view with the Frame, associate it with
        the Resource that we actually show.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.cancelRestoringState): Added.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel): Remove unused _waitingForInitialMainFrame.
        (WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
        (WebInspector.ResourceSidebarPanel.prototype._mainResourceDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
        Clean up how we show the main frame in the sidebar. This was a two step mess before.

2015-04-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove FrameContentView.js
        https://bugs.webkit.org/show_bug.cgi?id=144415

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/DOMTree.svg: Removed.
        * UserInterface/Images/SourceCode.svg: Removed.
        * UserInterface/Main.html: Removed FrameContentView.js.
        * UserInterface/Views/FrameContentView.js: Removed.
        * UserInterface/Views/PathComponentIcons.css:
        (.source-code-icon .icon): Deleted.
        (.dom-tree-icon .icon): Deleted.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
        Simplify the code here. We don't need these checks now with tabs and the Storage tab.

2015-04-30  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION: Web Inspector: Console message repeat count overlapped by icon
        https://bugs.webkit.org/show_bug.cgi?id=144344

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message .repeat-count):

2015-04-30  Jon Davis  <jond@apple.com>

        Web Inspector: console should show an icon for console.info() messages
        https://bugs.webkit.org/show_bug.cgi?id=18530

        Reviewed by Timothy Hatcher.

        Added icons for console.log, console.info and console.debug messages.

        Separated console.info from console.log.

        * UserInterface/Images/Debug.svg: Added.
        * UserInterface/Images/Info.svg: Added.
        * UserInterface/Images/Log.svg: Added.
        New icon files.

        * UserInterface/Models/ConsoleMessage.js:
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-log-level::before):
        (.console-info-level::before):
        (.console-debug-level::before):
        (:matches(.console-warning-level, .console-error-level, .console-log-level, .console-info-level, .console-debug-level).console-message):
        (:matches(.console-warning-level, .console-error-level, .console-log-level, .console-info-level, .console-debug-level)::before):
        (:matches(.console-warning-level, .console-error-level, .console-log-level).console-message): Deleted.
        (:matches(.console-warning-level, .console-error-level, .console-log-level)::before): Deleted.
        Include console.info messages in layout adjustments.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype._levelString):

2015-04-30  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Scope Chain sidebar should be selected immediately when paused
        https://bugs.webkit.org/show_bug.cgi?id=144352

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.showDebuggerTab): Added showScopeChainDetailsSidebarPanel argument.
        (WebInspector._debuggerDidPause): Pass true for showScopeChainDetailsSidebarPanel.
        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView): Wire the event to showDetailsSidebarPanels instead of
        _contentBrowserRepresentedObjectsDidChange, allowing subclasses to do work during the event.
        (WebInspector.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels): Moved content of
        _contentBrowserRepresentedObjectsDidChange here.
        (WebInspector.ContentBrowserTabContentView.prototype._contentBrowserRepresentedObjectsDidChange): Deleted.
        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView.prototype.showDetailsSidebarPanels): Added. Show the scope sidebar panel
        if it is available and it was requested by showScopeChainDetailsSidebarPanel().
        (WebInspector.DebuggerTabContentView.prototype.showScopeChainDetailsSidebarPanel): Added.

2015-04-30  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: New Images for ObjectTreeView - Setter
        https://bugs.webkit.org/show_bug.cgi?id=143173

        Reviewed by Martin Robinson.

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

2015-04-30  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Remove some unused Images
        https://bugs.webkit.org/show_bug.cgi?id=144445

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/BottomUpTree.svg: Removed.
        * UserInterface/Images/gtk/Log.png: Removed.
        * UserInterface/Images/gtk/Log@2x.png: Removed.
        * UserInterface/Images/gtk/NavigationItemAngleBrackets.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemBrushAndRuler.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemBug.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemFile.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemLayers.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemLog.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemProbes.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemStopwatch.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemStorage.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemVariable.svg: Removed.
        * UserInterface/Images/gtk/Percent.svg: Removed.
        * UserInterface/Images/gtk/Reload.svg: Removed.
        * UserInterface/Images/gtk/SplitToggleDown.svg: Removed.
        * UserInterface/Images/gtk/Time.svg: Removed.
        * UserInterface/Images/gtk/Weight.svg: Removed.

2015-04-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Copy not working in Console
        https://bugs.webkit.org/show_bug.cgi?id=144354

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector._focusedContentView):
        Select the inner most content view to check if handleCopyEvent exists.
        Previously we were stopping at the top level TabContentView.

2015-04-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove some unused Images
        https://bugs.webkit.org/show_bug.cgi?id=144412

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/BottomUpTree.svg: Removed.
        * UserInterface/Images/Log.png: Removed.
        * UserInterface/Images/Log@2x.png: Removed.
        * UserInterface/Images/NavigationItemAngleBrackets.svg: Removed.
        * UserInterface/Images/NavigationItemBrushAndRuler.svg: Removed.
        * UserInterface/Images/NavigationItemBug.svg: Removed.
        * UserInterface/Images/NavigationItemDoughnutChart.svg: Removed.
        * UserInterface/Images/NavigationItemFile.svg: Removed.
        * UserInterface/Images/NavigationItemLayers.svg: Removed.
        * UserInterface/Images/NavigationItemLog.svg: Removed.
        * UserInterface/Images/NavigationItemProbes.svg: Removed.
        * UserInterface/Images/NavigationItemStopwatch.svg: Removed.
        * UserInterface/Images/NavigationItemStorage.svg: Removed.
        * UserInterface/Images/NavigationItemVariable.svg: Removed.
        * UserInterface/Images/NetworkBarLabelCalloutLeft.svg: Removed.
        * UserInterface/Images/NetworkBarLabelCalloutRight.svg: Removed.
        * UserInterface/Images/NetworkBarLabelCalloutWhiteLeft.svg: Removed.
        * UserInterface/Images/NetworkBarLabelCalloutWhiteRight.svg: Removed.
        * UserInterface/Images/Percent.svg: Removed.
        * UserInterface/Images/Reload.svg: Removed.
        * UserInterface/Images/SplitToggleDown.svg: Removed.
        * UserInterface/Images/Time.svg: Removed.
        * UserInterface/Images/Weight.svg: Removed.

2015-04-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Split Storage from Resources tab
        https://bugs.webkit.org/show_bug.cgi?id=144404

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.isTabTypeAllowed):
        (WebInspector._tabContentViewForType):
        (WebInspector._updateNewTabButtonState):
        (WebInspector.showStorageTab):
        (WebInspector._storageWasInspected):
        * UserInterface/Controllers/ApplicationCacheManager.js:
        (WebInspector.ApplicationCacheManager.prototype.initialize):
        (WebInspector.ApplicationCacheManager.prototype.get applicationCacheObjects):
        * UserInterface/Controllers/StorageManager.js:
        (WebInspector.StorageManager.prototype.get domStorageObjects):
        (WebInspector.StorageManager.prototype.get databases):
        (WebInspector.StorageManager.prototype.get indexedDatabases):
        (WebInspector.StorageManager.prototype.get cookieStorageObjects):
        * UserInterface/Images/Storage.svg: Added.
        * UserInterface/Main.html:
        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView.prototype._queryFinished): Clear _dataGrid,
        since it might have been allocated but still be empty. This avoids an exception in
        updateLayout next time layout is updated.
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
        (WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasAdded): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasInspected): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._databaseWasAdded): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._databaseWasInspected): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._indexedDatabaseWasAdded): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._cookieStorageObjectWasAdded): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._frameManifestAdded): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._frameManifestRemoved): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._addStorageChild): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._storageCleared): Deleted.
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView):
        (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
        * UserInterface/Views/StorageSidebarPanel.js: Added.
        (WebInspector.StorageSidebarPanel):
        (WebInspector.StorageSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.StorageSidebarPanel.prototype.closed):
        (WebInspector.StorageSidebarPanel.prototype._treeElementSelected):
        (WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasAdded):
        (WebInspector.StorageSidebarPanel.prototype._addDOMStorageObject):
        (WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasInspected):
        (WebInspector.StorageSidebarPanel.prototype._databaseWasAdded):
        (WebInspector.StorageSidebarPanel.prototype._addDatabase):
        (WebInspector.StorageSidebarPanel.prototype._databaseWasInspected):
        (WebInspector.StorageSidebarPanel.prototype._indexedDatabaseWasAdded):
        (WebInspector.StorageSidebarPanel.prototype._addIndexedDatabase):
        (WebInspector.StorageSidebarPanel.prototype._cookieStorageObjectWasAdded):
        (WebInspector.StorageSidebarPanel.prototype._addCookieStorageObject):
        (WebInspector.StorageSidebarPanel.prototype._frameManifestAdded):
        (WebInspector.StorageSidebarPanel.prototype._addFrameManifest):
        (WebInspector.StorageSidebarPanel.prototype._frameManifestRemoved):
        (WebInspector.StorageSidebarPanel.prototype._compareTreeElements):
        (WebInspector.StorageSidebarPanel.prototype._addStorageChild):
        (WebInspector.StorageSidebarPanel.prototype._storageCleared):
        * UserInterface/Views/StorageTabContentView.js: Copied from Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js.
        (WebInspector.StorageTabContentView):
        (WebInspector.StorageTabContentView.prototype.get type):
        (WebInspector.StorageTabContentView.prototype.canShowRepresentedObject):

2015-04-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove Legacy images and styles
        https://bugs.webkit.org/show_bug.cgi?id=144390

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/ImageUtilities.js:
        (.generateImage):
        (.generateImage.generateLegacyImage): Deleted.
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._updateToolbarHeight):
        * UserInterface/Base/Platform.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        * UserInterface/Images/Legacy/BackArrow.svg: Removed.
        * UserInterface/Images/Legacy/Breakpoints.svg: Removed.
        * UserInterface/Images/Legacy/Close.svg: Removed.
        * UserInterface/Images/Legacy/CloseLarge.svg: Removed.
        * UserInterface/Images/Legacy/Colors.png: Removed.
        * UserInterface/Images/Legacy/Colors@2x.png: Removed.
        * UserInterface/Images/Legacy/ColorsLarge.png: Removed.
        * UserInterface/Images/Legacy/ColorsLarge@2x.png: Removed.
        * UserInterface/Images/Legacy/DockBottom.svg: Removed.
        * UserInterface/Images/Legacy/DockRight.svg: Removed.
        * UserInterface/Images/Legacy/DownloadArrow.svg: Removed.
        * UserInterface/Images/Legacy/Errors.svg: Removed.
        * UserInterface/Images/Legacy/ErrorsEnabled.svg: Removed.
        * UserInterface/Images/Legacy/FilterFieldGlyph.svg: Removed.
        * UserInterface/Images/Legacy/FolderGeneric.png: Removed.
        * UserInterface/Images/Legacy/FolderGeneric@2x.png: Removed.
        * UserInterface/Images/Legacy/ForwardArrow.svg: Removed.
        * UserInterface/Images/Legacy/Issues.svg: Removed.
        * UserInterface/Images/Legacy/IssuesEnabled.svg: Removed.
        * UserInterface/Images/Legacy/LayerBorders.svg: Removed.
        * UserInterface/Images/Legacy/Logs.svg: Removed.
        * UserInterface/Images/Legacy/NavigationItemCurleyBraces.svg: Removed.
        * UserInterface/Images/Legacy/NavigationItemTrash.svg: Removed.
        * UserInterface/Images/Legacy/Network.png: Removed.
        * UserInterface/Images/Legacy/Network@2x.png: Removed.
        * UserInterface/Images/Legacy/NetworkLarge.png: Removed.
        * UserInterface/Images/Legacy/NetworkLarge@2x.png: Removed.
        * UserInterface/Images/Legacy/Pause.svg: Removed.
        * UserInterface/Images/Legacy/Plus.svg: Removed.
        * UserInterface/Images/Legacy/Recording.png: Removed.
        * UserInterface/Images/Legacy/Recording@2x.png: Removed.
        * UserInterface/Images/Legacy/RecordingHovered.png: Removed.
        * UserInterface/Images/Legacy/RecordingHovered@2x.png: Removed.
        * UserInterface/Images/Legacy/RecordingStopped.png: Removed.
        * UserInterface/Images/Legacy/RecordingStopped@2x.png: Removed.
        * UserInterface/Images/Legacy/Reload.svg: Removed.
        * UserInterface/Images/Legacy/Resources.svg: Removed.
        * UserInterface/Images/Legacy/Resume.svg: Removed.
        * UserInterface/Images/Legacy/ShadowDOM.svg: Removed.
        * UserInterface/Images/Legacy/SortIndicatorDownArrow.svg: Removed.
        * UserInterface/Images/Legacy/SortIndicatorUpArrow.svg: Removed.
        * UserInterface/Images/Legacy/SplitToggleDown.svg: Removed.
        * UserInterface/Images/Legacy/SplitToggleUp.svg: Removed.
        * UserInterface/Images/Legacy/StepInto.svg: Removed.
        * UserInterface/Images/Legacy/StepOut.svg: Removed.
        * UserInterface/Images/Legacy/StepOver.svg: Removed.
        * UserInterface/Images/Legacy/Time.svg: Removed.
        * UserInterface/Images/Legacy/Undock.svg: Removed.
        * UserInterface/Images/Legacy/UpDownArrows.svg: Removed.
        * UserInterface/Images/Legacy/Weight.svg: Removed.
        * UserInterface/Views/ButtonNavigationItem.css:
        (body.mac-platform.legacy .navigation-bar .item.button.text-only): Deleted.
        * UserInterface/Views/ButtonToolbarItem.css:
        (body.mac-platform.legacy .toolbar .item.button > .label): Deleted.
        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (body.mac-platform.legacy .style-declaration-section): Deleted.
        (body.mac-platform.legacy .style-declaration-section + .style-declaration-section): Deleted.
        (body.mac-platform.legacy .style-declaration-section.last-in-group): Deleted.
        (body.mac-platform.legacy .style-declaration-section.last-in-group + .style-declaration-section): Deleted.
        (body.mac-platform.legacy .style-declaration-section.last-in-group + .style-declaration-section:matches(.last-in-group, :last-child)): Deleted.
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.details.css-style > .content): Deleted.
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        * UserInterface/Views/ControlToolbarItem.css:
        (body.mac-platform.legacy .toolbar .item.control): Deleted.
        (body.mac-platform.legacy .toolbar .item.control:hover): Deleted.
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        * UserInterface/Views/DOMTreeOutline.css:
        (body.mac-platform.legacy .dom-tree-outline li.hovered:not(.selected) .selection): Deleted.
        (body.mac-platform.legacy .dom-tree-outline li.elements-drag-over .selection): Deleted.
        (body.mac-platform.legacy .dom-tree-outline:focus li.selected .selection): Deleted.
        * UserInterface/Views/DashboardContainerView.css:
        (body.mac-platform.legacy .toolbar .dashboard-container): Deleted.
        (body.mac-platform.legacy.window-inactive .toolbar .dashboard-container): Deleted.
        (body.mac-platform.legacy.window-inactive .toolbar .dashboard): Deleted.
        (body.mac-platform.legacy .dashboard-container .advance-arrow): Deleted.
        * UserInterface/Views/DataGrid.css:
        (body.mac-platform.legacy .data-grid:focus tr.selected td:not(:last-child)): Deleted.
        (body.mac-platform.legacy .data-grid:focus tr.selected): Deleted.
        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.get _generateSortIndicatorImagesIfNeeded):
        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView):
        * UserInterface/Views/DebuggerDashboardView.js:
        (WebInspector.DebuggerDashboardView):
        * UserInterface/Views/DebuggerSidebarPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.navigation.debugger > .content): Deleted.
        * UserInterface/Views/DebuggerSidebarPanel.js:
        * UserInterface/Views/DefaultDashboardView.css:
        (body.mac-platform.legacy .toolbar .dashboard.default > .item): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .resourcesCount > img): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .logs > img): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .errors > img): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .errors.enabled > img): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .issues > img): Deleted.
        (body.mac-platform.legacy .toolbar .dashboard.default > .issues.enabled > img): Deleted.
        * UserInterface/Views/DetailsSection.css:
        (body.mac-platform.legacy .details-section): Deleted.
        (body.mac-platform.legacy .details-section .details-section): Deleted.
        (body.mac-platform.legacy .details-section .details-section:first-child): Deleted.
        (body.mac-platform.legacy .details-section > .header): Deleted.
        (body.mac-platform.legacy .details-section .details-section > .header): Deleted.
        (body.mac-platform.legacy .details-section .details-section.collapsed > .header): Deleted.
        (body.mac-platform.legacy .details-section:not(.collapsed) .data-grid.inline): Deleted.
        (body.mac-platform.legacy .details-section.computed-style-properties:not(.collapsed) > .header): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group:nth-child(even)): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group:matches(:nth-child(even), :last-child) > .row.simple:last-child > *): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group > .row:matches(.empty, .text)): Deleted.
        * UserInterface/Views/DividerNavigationItem.css:
        (.navigation-bar .item.divider):
        (body.mac-platform.legacy .navigation-bar .item.divider): Deleted.
        * UserInterface/Views/FilterBar.css:
        (.filter-bar > input[type="search"]::-webkit-search-decoration):
        (body.mac-platform.legacy .filter-bar): Deleted.
        (body.mac-platform.legacy .filter-bar > input[type="search"]): Deleted.
        (body.mac-platform.legacy .filter-bar > input[type="search"]::-webkit-search-decoration): Deleted.
        * UserInterface/Views/FindBanner.css:
        (body.mac-platform.legacy .find-banner > input[type="search"]): Deleted.
        (body.mac-platform.legacy .find-banner > button > .glyph): Deleted.
        (body.mac-platform.legacy .find-banner > button.segmented.left > .glyph): Deleted.
        (body.mac-platform.legacy .find-banner > button.segmented.right > .glyph): Deleted.
        (body.mac-platform.legacy .find-banner > button.segmented): Deleted.
        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner.prototype._generateButtonsGlyphsIfNeeded):
        (WebInspector.FindBanner):
        * UserInterface/Views/FolderIcon.css:
        (.folder-icon .icon):
        (body.mac-platform.legacy .folder-icon .icon): Deleted.
        * UserInterface/Views/HierarchicalPathComponent.css:
        (body.mac-platform.legacy .hierarchical-path-component > .selector-arrows): Deleted.
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        (WebInspector.IndexedDatabaseObjectStoreContentView):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.details.layer-tree > .content): Deleted.
        (body.mac-platform.legacy .panel.details.layer-tree .bottom-bar): Deleted.
        (body.mac-platform.legacy .panel.details.layer-tree .bottom-bar > div): Deleted.
        (body.mac-platform.legacy .layer-tree-popover): Deleted.
        * UserInterface/Views/LogContentView.css:
        (body.mac-platform.legacy .search-bar.log-search-bar > input[type="search"]): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        * UserInterface/Views/Main.css:
        (body.mac-platform.legacy:not(.docked)): Deleted.
        (body.docked.bottom.mac-platform.legacy): Deleted.
        (body.docked.right.mac-platform.legacy): Deleted.
        (body.mac-platform.legacy #split-content-browser > .navigation-bar): Deleted.
        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar .item):
        (body.mac-platform.legacy .navigation-bar): Deleted.
        (body.mac-platform.legacy .navigation-bar .item): Deleted.
        * UserInterface/Views/NavigationSidebarPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.navigation > .content): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation > .overflow-shadow): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation > .overflow-shadow.top): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation > .empty-content-placeholder): Deleted.
        (body.mac-platform.legacy .navigation-sidebar-panel-content-tree-outline .item.selected): Deleted.
        (body.mac-platform.legacy .navigation-sidebar-panel-content-tree-outline:focus .item.selected): Deleted.
        (body.mac-platform.legacy.window-inactive .navigation-sidebar-panel-content-tree-outline .item.selected): Deleted.
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
        (WebInspector.NavigationSidebarPanel.prototype._generateDisclosureTrianglesIfNeeded):
        * UserInterface/Views/Popover.js:
        * UserInterface/Views/ProbeDetailsSidebarPanel.css:
        (body.mac-platform.legacy .details-section.probe-set .options > .probe-clear-samples): Deleted.
        (body.mac-platform.legacy .details-section.probe-set .options > .probe-remove): Deleted.
        (body.mac-platform.legacy .details-section.probe-set .options > .probe-add): Deleted.
        * UserInterface/Views/QuickConsole.css:
        (body.mac-platform.legacy .quick-console): Deleted.
        * UserInterface/Views/RadioButtonNavigationItem.css:
        (.navigation-bar .item.radio.button.text-only.selected:active):
        (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only:hover): Deleted.
        (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only.selected): Deleted.
        (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only.selected:active): Deleted.
        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.details.css-style .rules .label + .style-declaration-section): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.details.css-style .rules .new-rule): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.details.css-style .rules .new-rule + .style-declaration-section): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.details.css-style .rules .new-rule img): Deleted.
        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li.selected:active):
        (body.mac-platform.legacy .scope-bar > li): Deleted.
        (body.mac-platform.legacy .scope-bar > li:hover): Deleted.
        (body.mac-platform.legacy .scope-bar > li.selected): Deleted.
        (body.mac-platform.legacy .scope-bar > li:active): Deleted.
        (body.mac-platform.legacy .scope-bar > li.selected:active): Deleted.
        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView):
        * UserInterface/Views/SearchBar.css:
        (body.mac-platform.legacy .search-bar > input[type="search"]): Deleted.
        * UserInterface/Views/SearchSidebarPanel.css:
        (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > :matches(.content, .empty-content-placeholder)): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > .search-bar): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > .search-bar > input[type="search"]): Deleted.
        * UserInterface/Views/Sidebar.css:
        (body.window-inactive .sidebar.right):
        (body.mac-platform.legacy .sidebar): Deleted.
        (body.mac-platform.legacy.window-inactive .sidebar): Deleted.
        (body.mac-platform.legacy .sidebar.right): Deleted.
        * UserInterface/Views/TextContentView.js:
        (WebInspector.TextContentView):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView):
        * UserInterface/Views/TimelineDataGrid.css:
        (body.mac-platform.legacy .data-grid.timeline > .navigation-bar-container > .navigation-bar): Deleted.
        * UserInterface/Views/TimelineIcons.css:
        (body.mac-platform.legacy .network-icon .icon): Deleted.
        (body.mac-platform.legacy .network-icon.large .icon): Deleted.
        (body.mac-platform.legacy .colors-icon .icon): Deleted.
        (body.mac-platform.legacy .colors-icon.large .icon): Deleted.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        * UserInterface/Views/TimelineRuler.css:
        (body.mac-platform.legacy .timeline-ruler > .header): Deleted.
        (body.mac-platform.legacy .timeline-ruler > .selection-drag): Deleted.
        (body.mac-platform.legacy .timeline-ruler > .selection-handle): Deleted.
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing > .content):
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:hover): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording:hover): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.forced): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording.forced): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-status): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar.timelines): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar.timeline-events): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content .close-button): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > :matches(.content, .empty-content-placeholder)): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .content .item > .status > .status-button): Deleted.
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        * UserInterface/Views/Toolbar.css:
        (body.mac-platform:not(.docked) .toolbar):
        (body.mac-platform:not(.legacy, .docked) .toolbar): Deleted.
        (body.mac-platform.legacy .toolbar): Deleted.
        (body.mac-platform.legacy.docked .toolbar): Deleted.
        (body.mac-platform.legacy:not(.docked) .toolbar .item.button > .label): Deleted.
        (body.mac-platform.legacy.window-inactive .toolbar): Deleted.
        * UserInterface/Views/TreeElementStatusButton.css:
        (body.mac-platform.legacy .item > .status > .status-button > svg .filled): Deleted.
        (body.mac-platform.legacy .item > .status > .status-button > svg .stroked): Deleted.

2015-04-29  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: Optimize SVG images
        https://bugs.webkit.org/show_bug.cgi?id=143476

        SVG images optimized with a combination of sed replacements and
        the usage of the scour tool (http://www.codedread.com/scour/).

        Also, modified the spelling of the license word to use the US one
        in the copyright files.

        Reviewed by Martin Robinson.

        * UserInterface/Images/gtk/BackArrow.svg:
        * UserInterface/Images/gtk/BottomUpTree.svg:
        * UserInterface/Images/gtk/BreakpointActionAdd.svg:
        * UserInterface/Images/gtk/BreakpointActionRemove.svg:
        * UserInterface/Images/gtk/BreakpointButton.svg:
        * UserInterface/Images/gtk/BreakpointInactiveButton.svg:
        * UserInterface/Images/gtk/Breakpoints.svg:
        * UserInterface/Images/gtk/COPYING:
        * UserInterface/Images/gtk/COPYING_CCBYSA3:
        * UserInterface/Images/gtk/Checkers.svg:
        * UserInterface/Images/gtk/Circle.svg:
        * UserInterface/Images/gtk/Close.svg:
        * UserInterface/Images/gtk/CloseLarge.svg:
        * UserInterface/Images/gtk/CloseWhite.svg:
        * UserInterface/Images/gtk/ContentFlow.svg:
        * UserInterface/Images/gtk/Crosshair.svg:
        * UserInterface/Images/gtk/DOMCharacterData.svg:
        * UserInterface/Images/gtk/DOMComment.svg:
        * UserInterface/Images/gtk/DOMDocument.svg:
        * UserInterface/Images/gtk/DOMDocumentType.svg:
        * UserInterface/Images/gtk/DOMElement.svg:
        * UserInterface/Images/gtk/DOMNode.svg:
        * UserInterface/Images/gtk/DOMTextNode.svg:
        * UserInterface/Images/gtk/DOMTree.svg:
        * UserInterface/Images/gtk/DisclosureTriangleSmallClosed.svg:
        * UserInterface/Images/gtk/DisclosureTriangleSmallOpen.svg:
        * UserInterface/Images/gtk/DisclosureTriangleTinyClosed.svg:
        * UserInterface/Images/gtk/DisclosureTriangleTinyOpen.svg:
        * UserInterface/Images/gtk/DockBottom.svg:
        * UserInterface/Images/gtk/DockRight.svg:
        * UserInterface/Images/gtk/DownloadArrow.svg:
        * UserInterface/Images/gtk/Error.svg:
        * UserInterface/Images/gtk/Errors.svg:
        * UserInterface/Images/gtk/ErrorsEnabled.svg:
        * UserInterface/Images/gtk/EventListener.svg:
        * UserInterface/Images/gtk/Exception.svg:
        * UserInterface/Images/gtk/Eye.svg:
        * UserInterface/Images/gtk/FilterFieldGlyph.svg:
        * UserInterface/Images/gtk/ForwardArrow.svg:
        * UserInterface/Images/gtk/Function.svg:
        * UserInterface/Images/gtk/GoToArrow.svg:
        * UserInterface/Images/gtk/HierarchicalNavigationItemChevron.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner1.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner10.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner11.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner12.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner2.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner3.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner4.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner5.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner6.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner7.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner8.svg:
        * UserInterface/Images/gtk/IndeterminateProgressSpinner9.svg:
        * UserInterface/Images/gtk/Issues.svg:
        * UserInterface/Images/gtk/IssuesEnabled.svg:
        * UserInterface/Images/gtk/LayerBorders.svg:
        * UserInterface/Images/gtk/Locked.svg:
        * UserInterface/Images/gtk/Logs.svg:
        * UserInterface/Images/gtk/Native.svg:
        * UserInterface/Images/gtk/NavigationItemAngleBrackets.svg:
        * UserInterface/Images/gtk/NavigationItemBrushAndRuler.svg:
        * UserInterface/Images/gtk/NavigationItemBug.svg:
        * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
        * UserInterface/Images/gtk/NavigationItemFile.svg:
        * UserInterface/Images/gtk/NavigationItemLayers.svg:
        * UserInterface/Images/gtk/NavigationItemLog.svg:
        * UserInterface/Images/gtk/NavigationItemProbes.svg:
        * UserInterface/Images/gtk/NavigationItemStopwatch.svg:
        * UserInterface/Images/gtk/NavigationItemStorage.svg:
        * UserInterface/Images/gtk/NavigationItemTrash.svg:
        * UserInterface/Images/gtk/NavigationItemTypes.svg:
        * UserInterface/Images/gtk/NavigationItemVariable.svg:
        * UserInterface/Images/gtk/PaintFlashing.svg:
        * UserInterface/Images/gtk/Pause.svg:
        * UserInterface/Images/gtk/PausedBreakpoint.svg:
        * UserInterface/Images/gtk/Percent.svg:
        * UserInterface/Images/gtk/Plus.svg:
        * UserInterface/Images/gtk/PseudoElement.svg:
        * UserInterface/Images/gtk/Record.svg:
        * UserInterface/Images/gtk/Reflection.svg:
        * UserInterface/Images/gtk/Reload.svg:
        * UserInterface/Images/gtk/ReloadFull.svg:
        * UserInterface/Images/gtk/ReplayPauseButton.svg:
        * UserInterface/Images/gtk/ReplayPlayButton.svg:
        * UserInterface/Images/gtk/ReplayRecordingButton.svg:
        * UserInterface/Images/gtk/Request.svg:
        * UserInterface/Images/gtk/Resources.svg:
        * UserInterface/Images/gtk/Response.svg:
        * UserInterface/Images/gtk/ResultLine.svg:
        * UserInterface/Images/gtk/Resume.svg:
        * UserInterface/Images/gtk/ShadowDOM.svg:
        * UserInterface/Images/gtk/SortIndicatorDownArrow.svg:
        * UserInterface/Images/gtk/SortIndicatorUpArrow.svg:
        * UserInterface/Images/gtk/SourceCode.svg:
        * UserInterface/Images/gtk/SplitToggleDown.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/StyleRuleAuthor.svg:
        * UserInterface/Images/gtk/StyleRuleInherited.svg:
        * UserInterface/Images/gtk/StyleRuleInheritedElement.svg:
        * UserInterface/Images/gtk/StyleRuleInspector.svg:
        * UserInterface/Images/gtk/StyleRuleUser.svg:
        * UserInterface/Images/gtk/StyleRuleUserAgent.svg:
        * UserInterface/Images/gtk/Time.svg:
        * UserInterface/Images/gtk/TimelineRecordAnimation.svg:
        * UserInterface/Images/gtk/TimelineRecordConsoleProfile.svg:
        * UserInterface/Images/gtk/TimelineRecordEvent.svg:
        * UserInterface/Images/gtk/TimelineRecordLayout.svg:
        * UserInterface/Images/gtk/TimelineRecordPaint.svg:
        * UserInterface/Images/gtk/TimelineRecordProbeSampled.svg:
        * UserInterface/Images/gtk/TimelineRecordScriptEvaluated.svg:
        * UserInterface/Images/gtk/TimelineRecordStyle.svg:
        * UserInterface/Images/gtk/TimelineRecordTimer.svg:
        * UserInterface/Images/gtk/TypeBoolean.svg:
        * UserInterface/Images/gtk/TypeNull.svg:
        * UserInterface/Images/gtk/TypeNumber.svg:
        * UserInterface/Images/gtk/TypeObject.svg:
        * UserInterface/Images/gtk/TypeRegex.svg:
        * UserInterface/Images/gtk/TypeString.svg:
        * UserInterface/Images/gtk/TypeSymbol.svg:
        * UserInterface/Images/gtk/TypeUndefined.svg:
        * UserInterface/Images/gtk/Undock.svg:
        * UserInterface/Images/gtk/UpDownArrows.svg:
        * UserInterface/Images/gtk/UserInputPrompt.svg:
        * UserInterface/Images/gtk/UserInputPromptPrevious.svg:
        * UserInterface/Images/gtk/UserInputResult.svg:
        * UserInterface/Images/gtk/Warning.svg:
        * UserInterface/Images/gtk/Weight.svg:

2015-04-29  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Navigation bar often looses last button when full
        https://bugs.webkit.org/show_bug.cgi?id=144385

        Added helpers to get the subpixel width and height of an element.
        Adopt them in the NavigationBar layout methods to get precise widths
        that don't accumulate rounding errors which lead to items overflowing.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Utilities.js:
        (Element.prototype.realOffsetWidth): Added.
        (Element.prototype.realOffsetHeight): Added.
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WebInspector.HierarchicalPathNavigationItem.prototype.updateLayout):
        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype.updateLayout):
        (WebInspector.NavigationBar.prototype._calculateMinimumWidth):
        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype._handleMouseMoved):
        * UserInterface/Views/Toolbar.js:
        (WebInspector.Toolbar.prototype.customUpdateLayout.isOverflowingToolbar):
        (WebInspector.Toolbar.prototype.customUpdateLayout):

2015-04-28  Matt Baker  <mattbaker@apple.com>

        Web Inspector: add a separate overview for the Rendering Frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=144245

        Reviewed by Timothy Hatcher.

        The Timelines tab now supports two view modes, labeled "Timelines" and "Rendering Frames", with each mode
        having a seperate timeline overview and selected range. The Timelines mode displays the original time-based
        graphs (Network, Layout, and Script), and switching to the Rendering Frames mode displays a frames graph
        with a timeline ruler which shows frame indices.

        If the rendering frames timeline is supported by the backend, a navigation bar is added to the timelines
        sidebar with controls for switching between view modes. In addition to user-triggered view mode changes, the
        timelines sidebar will automatically change the current view mode in response to content view changes that
        are triggered elsewhere in the UI (for example, when a timeline that does not belong to the current view
        mode is selected via the navigation path).

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.get activeRecording): Deleted.
        (WebInspector.TimelineManager.prototype.get recordings): Deleted.
        Removed unused code.

        * UserInterface/Main.html:
        New files.

        * UserInterface/Models/RenderingFrameTimelineRecord.js:
        (WebInspector.RenderingFrameTimelineRecord):
        (WebInspector.RenderingFrameTimelineRecord.resetFrameIndex):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get frameIndex):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get frameNumber):
        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording.prototype.reset):
        Frame number is now derived from frame index.

        * UserInterface/Views/LinearTimelineOverview.js:
        (WebInspector.LinearTimelineOverview):
        (WebInspector.LinearTimelineOverview.prototype.canShowTimeline):
        New overview class for time-based timeline graphs.

        * UserInterface/Views/RenderingFrameDetailsSidebarPanel.js:
        (WebInspector.RenderingFrameDetailsSidebarPanel):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.updateRangeSelection):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype._getSelectedRecords):
        Changed type of selected range from time to frame indices.

        * UserInterface/Views/RenderingFrameTimelineOverview.js:
        (WebInspector.RenderingFrameTimelineOverview.this.timelineRuler.formatLabelCallback):
        (WebInspector.RenderingFrameTimelineOverview):
        (WebInspector.RenderingFrameTimelineOverview.prototype.canShowTimeline):
        New overview class for frame-based timeline graphs.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview > .graphs-container > .timeline-overview-graph.rendering-frame):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition.get if):
        Updated to use frame index ruler and removed frame combining logic.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        Increased column widths.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview > .graphs-container):
        (body.mac-platform.legacy .timeline-overview > .graphs-container):
        Updated for new ruler height.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
        (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
        (WebInspector.TimelineOverview.prototype.get visibleDuration):
        (WebInspector.TimelineOverview.prototype.set selectionDuration):
        (WebInspector.TimelineOverview.prototype.updateLayout):
        (WebInspector.TimelineOverview.prototype.get timelineRuler):
        (WebInspector.TimelineOverview.prototype.canShowTimeline):
        (WebInspector.TimelineOverview.prototype._handleScrollEvent):
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        (WebInspector.TimelineOverview.prototype._timelineRemoved):
        (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineOverview.prototype.set currentTime): Deleted.
        (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded): Deleted.
        (WebInspector.TimelineOverview.prototype._needsLayout): Deleted.
        Converted to base class. Derived classes provide settings and permitted timeline types.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame):
        (.timeline-record-frame > .frame):
        (.timeline-record-frame > .frame > .duration):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-network):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-layout):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-script):
        (.timeline-record-frame > .frame > .duration:last-child): Deleted.
        New graph frames styles.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame):
        (WebInspector.TimelineRecordFrame.prototype.get record):
        (WebInspector.TimelineRecordFrame.prototype.set record):
        (WebInspector.TimelineRecordFrame.prototype._updateChildElements.createDurationElement):
        (WebInspector.TimelineRecordFrame.prototype.get element): Deleted.
        Updated to use frame index ruler.
        Removed dropped frames and frame combining logic.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype.shown):
        (WebInspector.TimelineRecordingContentView.prototype.hidden):
        (WebInspector.TimelineRecordingContentView.prototype.updateLayout):
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
        (WebInspector.TimelineRecordingContentView.prototype._getRenderingFrameTimeline):
        (WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
        (WebInspector.TimelineRecordingContentView.prototype._timelineCountChanged):
        (WebInspector.TimelineRecordingContentView.prototype._recordingReset):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineRecordingContentView.prototype.get currentTimelineView): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype.goForward): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._contentViewSupplementalRepresentedObjectsDidChange): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._update): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._debuggerPaused): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._debuggerResumed): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._recordingTimesUpdated): Deleted.
        Maintains two timeline overviews, switching between them based on the current content view.
        Updated tree element filtering to support both overview rulers.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .header):
        (body.mac-platform.legacy .timeline-ruler > .header):
        (.timeline-ruler > .header > .divider > .label):
        (.timeline-ruler > .selection-drag):
        (body.mac-platform.legacy .timeline-ruler > .selection-drag):
        (.timeline-ruler > .selection-handle):
        (body.mac-platform.legacy .timeline-ruler > .selection-handle):
        (.timeline-ruler > .header > .divider): Deleted.
        (.timeline-ruler > .selection-drag:active): Deleted.
        Updated for new ruler height.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler):
        (WebInspector.TimelineRuler.prototype.set formatLabelCallback):
        (WebInspector.TimelineRuler.prototype.updateLayout):
        (WebInspector.TimelineRuler.prototype._formatDividerLabelText):
        (WebInspector.TimelineRuler.prototype.set allowsClippedLabels): Deleted.
        (WebInspector.TimelineRuler.prototype._updateSelection): Deleted.
        Added ability to customize label formatting.

        * UserInterface/Views/TimelineSidebarPanel.css:
        (.panel.timeline .navigation-bar.timelines-view):
        (.sidebar > .panel.navigation.timeline > .title-bar):
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar):
        (.sidebar > .panel.navigation.timeline > .title-bar.timelines):
        (.sidebar > .panel.navigation.timeline > .navigation-bar-container):
        (.sidebar > .panel.navigation.timeline > .navigation-bar-container > .navigation-bar):
        (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
        (.sidebar > .panel.navigation.timeline > .timelines-content):
        (.sidebar > .panel.navigation.timeline > .empty-content-placeholder):
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > :matches(.content, .empty-content-placeholder)):
        (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item): Deleted.
        (body.window-inactive .sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item): Deleted.
        Updated for new navigation bar and ruler height.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.get viewMode):
        (WebInspector.TimelineSidebarPanel.prototype.canShowTimeline):
        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline.this._timelineTreeElementMap.get select):
        (WebInspector.TimelineSidebarPanel.get this):
        (WebInspector.TimelineSidebarPanel._timelineAdded.set this):
        Added support for two view modes: Timelines and Rendering Frames.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        New files.

2015-04-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add new tab button to make it easy to bring a closed tab back
        https://bugs.webkit.org/show_bug.cgi?id=144297

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.isTabTypeAllowed):
        (WebInspector._tabContentViewForType):
        (WebInspector._rememberOpenTabs):
        (WebInspector._updateNewTabButtonState):
        (WebInspector._newTabItemClicked):
        (WebInspector.isNewTabWithTypeAllowed):
        (WebInspector.createNewTab):
        (WebInspector.activateExtraDomains):
        (WebInspector._restoreCookieForOpenTabs):
        (WebInspector._saveCookieForOpenTabs):
        (WebInspector._isTabTypeAllowed): Deleted.
        * UserInterface/Images/NewTab.svg: Added.
        * UserInterface/Images/NewTabPlus.svg:
        * UserInterface/Main.html:
        * UserInterface/Views/NewTabContentView.css: Added.
        (.new-tab.tab.content-view):
        (.new-tab.tab.content-view > .tab-item):
        (.new-tab.tab.content-view > .tab-item.disabled):
        (.new-tab.tab.content-view > .tab-item > .box):
        (.new-tab.tab.content-view > .tab-item:not(.disabled):active > .box):
        (.new-tab.tab.content-view > .tab-item > .box > img):
        (.new-tab.tab.content-view > .tab-item > label):
        * UserInterface/Views/NewTabContentView.js: Added.
        (WebInspector.NewTabContentView):
        (WebInspector.NewTabContentView.prototype.get type):
        (WebInspector.NewTabContentView.prototype._createNewTab):
        * UserInterface/Views/TabBar.css:
        (.tab-bar > .item:not(.disabled).selected):
        (.tab-bar > .item.new-tab-button:not(.disabled):hover):
        (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover + .item):
        (.tab-bar > .item.disabled > .icon):
        (.tab-bar > .item.new-tab-button:not(.disabled):hover > .icon):
        (.tab-bar > .item.selected): Deleted.
        (.tab-bar > .item.new-tab-button:hover): Deleted.
        (.tab-bar:not(.animating) > .item:not(.selected):hover + .item): Deleted.
        (.tab-bar > .item.new-tab-button:hover > .icon): Deleted.
        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype.set selectedTabBarItem):
        (WebInspector.TabBar.prototype._handleMouseDown):
        * UserInterface/Views/TabBarItem.js:
        (WebInspector.TabBarItem.prototype.get disabled):
        (WebInspector.TabBarItem.prototype.set disabled):
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype.addTabForContentView):
        (WebInspector.TabBrowser.prototype.showTabForContentView):
        (WebInspector.TabBrowser.prototype.closeTabForContentView):

2015-04-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Cannot scroll Timeline Overview horizontally, scrollbar cannot be interacted with
        https://bugs.webkit.org/show_bug.cgi?id=144302

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineOverview.css:
        (.timeline-overview > .scroll-container):
        Increase the z-index of the scroll container over anything in the
        overview so that it can be interacted with.

2015-04-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Attempt to workaround exception in TimelineRuler
        https://bugs.webkit.org/show_bug.cgi?id=144228

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.updateLayout):
        Use firstChild instead of a custom _labelElement property on the dividerElement.

2015-04-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Elements tab details sidebar becomes non-expandable after using Console tab
        https://bugs.webkit.org/show_bug.cgi?id=144212

        Show the DOM tree content view again on main resource change. This better matches what we did
        in the pre tab user interface with the DOM being off the main resource tree element.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView): Listen for main resource change. Call _showDOMTreeContentView.
        (WebInspector.ElementsTabContentView.prototype.closed): Fix a leak and exception.
        The removeEventListener was wrong. Add a new removeEventListener for WebInspector.Frame.
        (WebInspector.ElementsTabContentView.prototype._showDOMTreeContentView): Added.
        (WebInspector.ElementsTabContentView.prototype._mainFrameDidChange): Call _showDOMTreeContentView.
        (WebInspector.ElementsTabContentView.prototype._mainResourceDidChange): Added.

2015-04-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: TabContentView closed() isn't being called when a tab is closed / removed
        https://bugs.webkit.org/show_bug.cgi?id=144229

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype._disassociateFromContentView):
        TabContentViews don't have a representedObject, so returning early and not
        calling closed() was not correct.

2015-04-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cannot make Timeline time range selection clicking inside Frames Overview
        https://bugs.webkit.org/show_bug.cgi?id=143744

        Reviewed by Timothy Hatcher.

        Fixed frame rate divider element style so that it is no longer a mouse event target.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview-graph.rendering-frame > .divider):

2015-04-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Allow Timeline tab to show resource when a go-to arrow is clicked in a recording
        https://bugs.webkit.org/show_bug.cgi?id=144240

        Only support showing a resource or script if we have that represented object in the Timeline sidebar.

        Reviewed by Darin Adler.

        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView.prototype.canShowRepresentedObject):

2015-04-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Don't use treeElement.revealAndSelect when showing a default content view
        https://bugs.webkit.org/show_bug.cgi?id=144239

        Using revealAndSelect will end up calling WebInspector.showRepresentedObject. That is not bad
        is most cases, but if the select tab supports the same represented object, it can end up showing
        the content view in the wrong tab.

        Reviewed by Darin Adler.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObjectInNavigationSidebar):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
        (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
        (WebInspector.NavigationSidebarPanel):
        (WebInspector.NavigationSidebarPanel.prototype.showContentViewForCurrentSelection): Deleted.
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):

2015-04-26  Jono Wells  <jonowells@apple.com>

        Web Inspector: Vertically misaligned text in Object Trees
        https://bugs.webkit.org/show_bug.cgi?id=144029

        Reviewed by Timothy Hatcher.

        Remove top offset for object tree property titles to fix alignment issue since applying -webkit-system-font
        font family to these (http://trac.webkit.org/changeset/182982).

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property > .titles):

2015-04-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception ReferenceError: Can't find variable: message LogContentView.js
        https://bugs.webkit.org/show_bug.cgi?id=144210

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
        With recent refactorings this change was missed.

2015-04-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception using WebInspector.contentBrowser
        https://bugs.webkit.org/show_bug.cgi?id=144206

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline.this._timelineTreeElementMap.get select):
        Use the current tab's content browser since a global one no longer exists.

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Update localized strings.

        * Localizations/en.lproj/localizedStrings.js: Updated.

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make JSContext debugging work with Tabs UI
        https://bugs.webkit.org/show_bug.cgi?id=144203

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._isTabTypeAllowed):
        (WebInspector.activateExtraDomains):
        (WebInspector._updateReloadToolbarButton):
        (WebInspector._updateDownloadToolbarButton):

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Save and restore tab state on reload and between sessions
        https://bugs.webkit.org/show_bug.cgi?id=144202

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._mainResourceDidChange):
        (WebInspector._provisionalLoadStarted):
        (WebInspector._restoreCookieForOpenTabs):
        (WebInspector._saveCookieForOpenTabs):
        (WebInspector._pageHidden):
        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView):
        (WebInspector.TabContentView.prototype.restoreStateFromCookie):
        (WebInspector.TabContentView.prototype.saveStateToCookie):

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Split search from ResourceSidebarPanel into a Search tab and sidebar
        https://bugs.webkit.org/show_bug.cgi?id=144197

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._tabContentViewForType):
        (WebInspector._searchTextDidChange):
        (WebInspector._focusSearchField):
        (WebInspector._domNodeWasInspected):
        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
        * UserInterface/Images/SearchResults.svg: Added.
        * UserInterface/Main.html:
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
        (WebInspector.ResourceSidebarPanel.prototype._addStorageChild):
        (WebInspector.ResourceSidebarPanel.prototype._extraDomainsActivated):
        (WebInspector.ResourceSidebarPanel.prototype.get contentTreeOutlineToAutoPrune): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholderSoon): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholder): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.forEachMatch): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.resourceCallback): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.resourcesCallback): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.searchScripts.scriptCallback): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.searchScripts): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.domSearchResults): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.domCallback): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype.performSearch): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._showResourcesContentTreeOutline): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._showSearchContentTreeOutline): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._searchFieldChanged): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._searchFieldInput): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._searchTreeElementForResource): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._searchTreeElementForScript): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._focusSearchField): Deleted.
        (WebInspector.ResourceSidebarPanel.prototype._scriptsToSearch): Deleted.
        * UserInterface/Views/SearchBar.js:
        (WebInspector.SearchBar):
        * UserInterface/Views/SearchSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.css.
        (.sidebar > .panel.navigation.search > :matches(.content, .empty-content-placeholder)):
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > :matches(.content, .empty-content-placeholder)):
        (.sidebar > .panel.navigation.search > .search-bar):
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > .search-bar):
        (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
        (body.mac-platform.legacy .sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
        * UserInterface/Views/SearchSidebarPanel.js: Added.
        (WebInspector.SearchSidebarPanel):
        (WebInspector.SearchSidebarPanel.prototype.closed):
        (WebInspector.SearchSidebarPanel.prototype.focusSearchField):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholderSoon):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholder):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.forEachMatch):
        (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._searchFieldChanged):
        (WebInspector.SearchSidebarPanel.prototype._searchFieldInput):
        (WebInspector.SearchSidebarPanel.prototype._searchTreeElementForResource):
        (WebInspector.SearchSidebarPanel.prototype._searchTreeElementForScript):
        (WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange.delayedWork):
        (WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange):
        (WebInspector.SearchSidebarPanel.prototype._treeElementSelected):
        * UserInterface/Views/SearchTabContentView.js: Added.
        (WebInspector.SearchTabContentView):
        (WebInspector.SearchTabContentView.prototype.get type):
        (WebInspector.SearchTabContentView.prototype.shown):
        (WebInspector.SearchTabContentView.prototype.closed):
        (WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
        (WebInspector.SearchTabContentView.prototype.focusSearchField):
        (WebInspector.SearchTabContentView.prototype.performSearch):
        * UserInterface/Views/Toolbar.css:
        (.toolbar .item-section.center-right):
        (.toolbar .item-section.right):
        (.toolbar .search-bar):
        (.toolbar .search-bar > input[type="search"]):
        (.toolbar .search-bar > input[type="search"]::-webkit-textfield-decoration-container):
        (body.window-inactive .toolbar .search-bar > input[type="search"]):
        (.toolbar .item): Deleted.

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: New Toolbar UI for tabs
        https://bugs.webkit.org/show_bug.cgi?id=144185

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/ImageUtilities.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.contentLoaded):
        (WebInspector.updateDockedState):
        (WebInspector._captureDidStart):
        (WebInspector._debuggerDidPause):
        (WebInspector._debuggerDidResume):
        (WebInspector._mainFrameDidChange):
        (WebInspector._mainResourceDidChange):
        (WebInspector._windowKeyDown):
        (WebInspector._windowKeyUp):
        (WebInspector._pageHidden):
        (WebInspector._undock):
        (WebInspector._dockBottom):
        (WebInspector._dockRight):
        (WebInspector._updateDockNavigationItems):
        (WebInspector._domNodeWasInspected):
        (WebInspector._inspectModeStateChanged):
        (WebInspector._toggleInspectMode):
        (WebInspector._downloadWebArchive):
        (WebInspector._reloadPageClicked):
        (WebInspector._updateDownloadToolbarButton):
        (WebInspector.archiveMainFrame):
        (WebInspector.canArchiveMainFrame):
        * UserInterface/Images/Crosshair.svg:
        * UserInterface/Images/DockBottom.svg:
        * UserInterface/Images/DockRight.svg:
        * UserInterface/Images/DownloadArrow.svg:
        * UserInterface/Images/ReloadToolbar.svg: Added.
        * UserInterface/Images/Undock.svg:
        * UserInterface/Views/ActivateButtonToolbarItem.js:
        (WebInspector.ActivateButtonToolbarItem):
        (WebInspector.ActivateButtonToolbarItem.prototype.set label):
        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button):
        (body.window-inactive .toolbar .item.button):
        (.toolbar.small-size .item.button > .glyph):
        * UserInterface/Views/ButtonToolbarItem.js:
        (WebInspector.ButtonToolbarItem):
        (WebInspector.ButtonToolbarItem.prototype.set label):
        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard-container):
        * UserInterface/Views/Main.css:
        (body.docked.bottom):
        * UserInterface/Views/Toolbar.css:
        (.toolbar):
        (body.mac-platform:not(.legacy, .docked) .toolbar):
        (.toolbar .control-section):
        (.toolbar .item-section):
        (.toolbar .item-section.left):
        (.toolbar .item-section.center-left):
        (.toolbar .item-section.center-right):
        (.toolbar .item-section.right):
        * UserInterface/Views/Toolbar.js:
        (WebInspector.Toolbar):
        (WebInspector.Toolbar.prototype.customUpdateLayout.isOverflowingToolbar):
        (WebInspector.Toolbar.prototype.customUpdateLayout):
        (WebInspector.Toolbar.prototype.addToolbarItem):

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add NavigationBar to the details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=144191

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):

        * UserInterface/Views/DetailsSidebarPanel.js:
        (WebInspector.DetailsSidebarPanel):
        (WebInspector.DetailsSidebarPanel.prototype.get navigationItem):

        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype.removeNavigationItem):
        Remove unused index argument.

        * UserInterface/Views/Sidebar.css:
        (.sidebar > .navigation-bar):
        (.sidebar.has-navigation-bar > .panel):

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar):
        (WebInspector.Sidebar.prototype.addSidebarPanel):
        (WebInspector.Sidebar.prototype.removeSidebarPanel):
        (WebInspector.Sidebar.prototype.set selectedSidebarPanel):
        (WebInspector.Sidebar.prototype.get minimumWidth):
        (WebInspector.Sidebar.prototype.set width):
        (WebInspector.Sidebar.prototype.set collapsed):

2015-04-24  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Switch over to a tab based UI
        https://bugs.webkit.org/show_bug.cgi?id=144154

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.contentLoaded):
        (WebInspector._tabContentViewForType):
        (WebInspector._rememberOpenTabs):
        (WebInspector._windowResized):
        (WebInspector._tabBrowserSizeDidChange):
        (WebInspector._quickConsoleDidResize):
        (WebInspector._sidebarWidthDidChange):
        (WebInspector._tabBrowserSelectedTabContentViewDidChange):
        (WebInspector._inspectModeStateChanged):
        (WebInspector._focusedContentView):
        * UserInterface/Main.html:
        * UserInterface/Views/Main.css:
        (#tab-browser):

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove Main.js code we don't need for Tabs
        https://bugs.webkit.org/show_bug.cgi?id=144126

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.contentLoaded):

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Change more places that changed WebInspector.navigationSidebar.selectedSidebarPanel to tabs
        https://bugs.webkit.org/show_bug.cgi?id=144125

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.toggleDetailsSidebar):
        (WebInspector.tabContentViewClassForRepresentedObject):
        (WebInspector._updateModifierKeys):
        (WebInspector._consoleResizerMouseDown.dockedResizerDragEnd):
        (WebInspector._consoleResizerMouseDown):
        (WebInspector.linkifyURLAsNode):
        (WebInspector.linkifyStringAsFragmentWithCustomLinkifier):
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.setTimelineProfilingEnabled):
        (InspectorFrontendAPI.showConsole):
        (InspectorFrontendAPI.showResources):
        * UserInterface/Protocol/InspectorObserver.js:
        (WebInspector.InspectorObserver.prototype.inspect):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView.prototype.canShowRepresentedObject):
        (WebInspector.DebuggerTabContentView.prototype.revealAndSelectBreakpoint):
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView):
        (WebInspector.DefaultDashboardView.prototype._resourcesWasClicked):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu.revealInSidebar):
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser.bestTabContentViewForClass):

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make Console work in a tab world
        https://bugs.webkit.org/show_bug.cgi?id=144112

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.isShowingConsoleTab):
        (WebInspector.UIString):
        (WebInspector.toggleNavigationSidebar):
        (WebInspector.toggleDetailsSidebar):
        (WebInspector.tabContentViewClassForRepresentedObject):
        (WebInspector.linkifyStringAsFragment):
        * UserInterface/Images/Console.svg: Added.
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showConsole):
        * UserInterface/Views/ConsoleTabContentView.js: Added.
        (WebInspector.ConsoleTabContentView):
        (WebInspector.ConsoleTabContentView.prototype.shown):
        (WebInspector.ConsoleTabContentView.prototype.showRepresentedObject):
        (WebInspector.ConsoleTabContentView.prototype.canShowRepresentedObject):
        (WebInspector.ConsoleTabContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView.prototype._consoleItemWasClicked):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype.get navigationItems):
        (WebInspector.LogContentView.prototype.shown):
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
        (WebInspector.LogContentView.prototype._showConsoleTab):
        * UserInterface/Views/LogIcon.css:
        (.log-icon .icon):
        * UserInterface/Views/Main.css:
        (#split-content-browser .hierarchical-path-component.log-icon .icon):
        (#split-content-browser .hierarchical-path-component.log-icon .title):
        (#split-content-browser .hierarchical-path-component.log-icon select):

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make showing a content view work in the tab world
        https://bugs.webkit.org/show_bug.cgi?id=144110

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.hideSplitConsole):
        (WebInspector.showSourceCodeLocation):
        (WebInspector.showOriginalUnformattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeTextRange):
        (WebInspector.showResourceRequest):
        (WebInspector.debuggerToggleBreakpoints):
        (WebInspector.debuggerPauseResumeToggle):
        (WebInspector.debuggerStepOver):
        (WebInspector.debuggerStepInto):
        (WebInspector.debuggerStepOut):
        (WebInspector._focusChanged):
        (WebInspector._mouseWasClicked):
        (WebInspector._dragOver):
        (WebInspector._captureDidStart):
        (WebInspector._debuggerDidPause):
        (WebInspector._debuggerDidResume):
        (WebInspector._frameWasAdded):
        (WebInspector._undock):
        (WebInspector._updateDockNavigationItems):
        * UserInterface/Models/Breakpoint.js:
        (WebInspector.Breakpoint.prototype.appendContextMenuItems.revealOriginalSourceCodeLocation):
        (WebInspector.Breakpoint.prototype.appendContextMenuItems):
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showMainResourceForFrame):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked):
        (WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):
        (WebInspector.ComputedStyleDetailsPanel):
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype.updateHierarchicalPathForCurrentContentView):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.restoreFromCookie):
        * UserInterface/Views/DOMTreeDataGridNode.js:
        (WebInspector.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline):
        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
        (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
        (WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
        * UserInterface/Views/LayerTreeDataGridNode.js:
        (WebInspector.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.get contentBrowser):
        (WebInspector.NavigationSidebarPanel.prototype.set contentBrowser):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        (WebInspector.ObjectTreeBaseTreeElement):
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
        (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
        (WebInspector.ResourceSidebarPanel.prototype._storageCleared):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeElementSelected):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.shown):
        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline):

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make debugger keyboard shortcuts global
        https://bugs.webkit.org/show_bug.cgi?id=144068

        We wont always have a DebuggerSidebarPanel to listen for the shortcuts.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.showSourceCodeForFrame):
        (WebInspector.showSourceCode):
        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.pause):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
        (WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._handleIssuesCleared):
        (WebInspector.DebuggerSidebarPanel):

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove Reload and Download Web Archive buttons from FrameTreeElement
        https://bugs.webkit.org/show_bug.cgi?id=144064

        The will be global toolbar items soon.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/FrameTreeElement.js:
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype._updateStatus):

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove time and weight from the dashboard
        https://bugs.webkit.org/show_bug.cgi?id=144063

        These two items were the odd ones out since they are only available
        when recording a timeline. We will need the toolbar space soon, so make
        this lets us make the dashboard skinnier.

        This also removes the exception catching in DashboardContainerView. It doesn't really
        help us and it makes debugging an exception harder.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard-container):
        * UserInterface/Views/DashboardContainerView.js:
        (WebInspector.DashboardContainerView.prototype._dashboardViewForRepresentedObject):
        * UserInterface/Views/DefaultDashboardView.css:
        (body.web .toolbar.collapsed .dashboard.default > .item.resourcesCount):
        (body.javascript .toolbar .dashboard.default > .item.resourcesCount):
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView):
        (WebInspector.DefaultDashboardView.prototype._updateDisplay):

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove sidebar panel shortcut and image
        https://bugs.webkit.org/show_bug.cgi?id=144061

        Sidebar panels no longer need a keyboard shortcut or a toolbar image.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
        (WebInspector.ApplicationCacheDetailsSidebarPanel):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/DOMDetailsSidebarPanel.js:
        (WebInspector.DOMDetailsSidebarPanel):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        * UserInterface/Views/DetailsSidebarPanel.js:
        (WebInspector.DetailsSidebarPanel):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        (WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie):
        (WebInspector.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
        (WebInspector.NavigationSidebarPanel.prototype.show):
        (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        (WebInspector.ProbeDetailsSidebarPanel):
        * UserInterface/Views/RenderingFrameDetailsSidebarPanel.js:
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):
        * UserInterface/Views/SidebarPanel.js:
        (WebInspector.SidebarPanel):
        (WebInspector.SidebarPanel.prototype.added):
        (WebInspector.SidebarPanel.prototype.removed):
        (WebInspector.SidebarPanel.prototype.visibilityDidChange):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.showTimelineViewForTimeline):

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove allowedNavigationSidebarPanels, it isn't needed
        https://bugs.webkit.org/show_bug.cgi?id=144056

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        * UserInterface/Views/ContentView.js:
        * UserInterface/Views/CookieStorageContentView.js:
        * UserInterface/Views/DOMStorageContentView.js:
        * UserInterface/Views/DOMTreeContentView.js:
        * UserInterface/Views/DatabaseContentView.js:
        * UserInterface/Views/DatabaseTableContentView.js:
        * UserInterface/Views/FontResourceContentView.js:
        * UserInterface/Views/FrameDOMTreeContentView.js:
        * UserInterface/Views/LogContentView.js:
        * UserInterface/Views/ResourceClusterContentView.js:
        * UserInterface/Views/TimelineRecordingContentView.js:

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Support passing extra arguments to ContentViews during construction
        https://bugs.webkit.org/show_bug.cgi?id=144055

        This allows us to pass the TimelineSidebarPanel to Timeline views since in the future
        there could be multiple timeline sidebars, one per tab. So the global instance will
        be going away.

        This also removes the exception catching in ContentViewContainer. It doesn't really
        help us and it makes debugging an exception harder.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype.showContentViewForRepresentedObject):
        (WebInspector.ContentBrowser.prototype.contentViewForRepresentedObject):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.contentViewForRepresentedObject):
        (WebInspector.ContentViewContainer.prototype.showContentViewForRepresentedObject):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange):
        (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
        (WebInspector.LayoutTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
        (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
        (WebInspector.NetworkTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
        (WebInspector.OverviewTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView):
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView):
        (WebInspector.ScriptTimelineView.prototype._dataGridFiltersDidChange):
        (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
        (WebInspector.ScriptTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        * UserInterface/Views/TimelineSidebarPanel.js:
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView):
        (WebInspector.TimelineView.prototype.get timelineSidebarPanel):

2015-04-18  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Disable global keyboard shortcuts for background tabs
        https://bugs.webkit.org/show_bug.cgi?id=143918

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        (WebInspector.ContentBrowser.prototype.shown): Added.
        (WebInspector.ContentBrowser.prototype.hidden): Added.
        Disable shortcuts on the browser and find banner.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype.shown): Added.
        (WebInspector.ContentBrowserTabContentView.prototype.hidden): Added.
        Tell the content browser we were shown or hidden.

        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner):
        (WebInspector.FindBanner.prototype.show):
        (WebInspector.FindBanner.prototype.enableKeyboardShortcuts): Added.
        (WebInspector.FindBanner.prototype.disableKeyboardShortcuts): Added.
        Support disabling or enabling the keyboard shortcuts.

2015-04-17  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add TabBrowser and TabContentView
        https://bugs.webkit.org/show_bug.cgi?id=143886

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/Debugger.svg: Added.
        * UserInterface/Images/Elements.svg: Added.
        * UserInterface/Images/Gear.svg: Added.
        * UserInterface/Images/NewTabPlus.svg: Added.
        * UserInterface/Images/Resources.svg:
        * UserInterface/Images/Timeline.svg: Added.
        * UserInterface/Images/ToggleLeftSidebar.svg: Added.
        * UserInterface/Images/ToggleRightSidebar.svg: Added.

        * UserInterface/Views/ContentBrowserTabContentView.css: Added.
        (.content-browser.tab.content-view > .content-browser):

        * UserInterface/Views/ContentBrowserTabContentView.js: Added.
        (WebInspector.ContentBrowserTabContentView):
        (WebInspector.ContentBrowserTabContentView.prototype.get contentBrowser):
        (WebInspector.ContentBrowserTabContentView.prototype.shown):
        (WebInspector.ContentBrowserTabContentView.prototype.hidden):
        (WebInspector.ContentBrowserTabContentView.prototype.closed):
        (WebInspector.ContentBrowserTabContentView.prototype.updateLayout):
        (WebInspector.ContentBrowserTabContentView.prototype.get managesDetailsSidebarPanels):
        (WebInspector.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
        (WebInspector.ContentBrowserTabContentView.prototype.contentBrowserTreeElementForRepresentedObject):
        (WebInspector.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
        (WebInspector.ContentBrowserTabContentView.prototype._detailsSidebarCollapsedStateDidChange):
        (WebInspector.ContentBrowserTabContentView.prototype._detailsSidebarPanelSelected):
        (WebInspector.ContentBrowserTabContentView.prototype._contentBrowserRepresentedObjectsDidChange):
        (WebInspector.ContentBrowserTabContentView.prototype._contentBrowserCurrentContentViewDidChange):
        (WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObjectInNavigationSidebar):

        * UserInterface/Views/DebuggerTabContentView.js: Added.
        (WebInspector.DebuggerTabContentView):

        * UserInterface/Views/ElementsTabContentView.js: Added.
        (WebInspector.ElementsTabContentView):
        (WebInspector.ElementsTabContentView.prototype._mainFrameDidChange):

        * UserInterface/Views/ResourcesTabContentView.js: Added.
        (WebInspector.ResourcesTabContentView):

        * UserInterface/Views/SettingsTabContentView.js: Added.
        (WebInspector.SettingsTabContentView):

        * UserInterface/Views/TabBrowser.css: Added.
        (.tab-browser):
        (.tab-browser > .tab-bar):
        (.tab-browser > .content-view-container):
        (.tab-browser > .tab-bar + .content-view-container):

        * UserInterface/Views/TabBrowser.js: Added.
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype.get tabBar):
        (WebInspector.TabBrowser.prototype.get navigationSidebar):
        (WebInspector.TabBrowser.prototype.get detailsSidebar):
        (WebInspector.TabBrowser.prototype.get selectedTabContentView):
        (WebInspector.TabBrowser.prototype.updateLayout):
        (WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        (WebInspector.TabBrowser.prototype.addTabForContentView):
        (WebInspector.TabBrowser.prototype.showTabForContentView):
        (WebInspector.TabBrowser.prototype.closeTabForContentView):
        (WebInspector.TabBrowser.prototype._tabBarItemSelected):
        (WebInspector.TabBrowser.prototype._sidebarPanelSelected):
        (WebInspector.TabBrowser.prototype._sidebarCollapsedStateDidChange):
        (WebInspector.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
        (WebInspector.TabBrowser.prototype._showDetailsSidebarPanelsForTabContentView):

        * UserInterface/Views/TabContentView.js: Added.
        (WebInspector.TabContentView):
        (WebInspector.TabContentView.prototype.get parentTabBrowser):
        (WebInspector.TabContentView.prototype.set parentTabBrowser):
        (WebInspector.TabContentView.prototype.get tabBarItem):
        (WebInspector.TabContentView.prototype.get managesDetailsSidebarPanels):
        (WebInspector.TabContentView.prototype.showDetailsSidebarPanels):
        (WebInspector.TabContentView.prototype.canShowRepresentedObject):
        (WebInspector.TabContentView.prototype.get navigationSidebarPanel):
        (WebInspector.TabContentView.prototype.get navigationSidebarCollapsedSetting):
        (WebInspector.TabContentView.prototype.get detailsSidebarPanels):
        (WebInspector.TabContentView.prototype.get detailsSidebarCollapsedSetting):
        (WebInspector.TabContentView.prototype.get detailsSidebarSelectedPanelSetting):

        * UserInterface/Views/TimelineTabContentView.js: Added.
        (WebInspector.TimelineTabContentView):

2015-04-06  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Add a WebInspector.TabBar class
        https://bugs.webkit.org/show_bug.cgi?id=143442

        Reviewed by Joseph Pecoraro.

        * UserInterface/Main.html:
        Added new files.

        * UserInterface/Protocol/InspectorFrontendHostStub.js:
        (window.Symbol):
        (WebInspector.InspectorFrontendHostStub.prototype.showContextMenu):
        Added some stubs needed to work standalone.

        * UserInterface/Views/TabBar.css: Added.
        (.tab-bar):
        (body.window-inactive .tab-bar):
        (.tab-bar > .top-border):
        (body.window-inactive .tab-bar > .top-border):
        (.tab-bar > .item):
        (.tab-bar > :nth-child(n + 2 of .item)):
        (.tab-bar > .item.pinned):
        (.tab-bar > .item.selected):
        (.tab-bar > .item.new-tab-button:hover):
        (.tab-bar:not(.animating) > .item:not(.selected):hover + .item):
        (body.window-inactive .tab-bar > .item):
        (body.window-inactive .tab-bar > .item.selected):
        (.tab-bar > .item > .close):
        (body:not(.window-inactive) .tab-bar:not(.single-tab) > .item:hover > .close):
        (.tab-bar.single-tab > .item > .close):
        (.tab-bar > .item > .close:hover):
        (.tab-bar > .item > .close:active):
        (.tab-bar > .item > .flex-space):
        (.tab-bar > .item > .flex-space:last-child):
        (.tab-bar > .item > .icon):
        (.tab-bar > .item.selected > .icon):
        (.tab-bar > .item.new-tab-button:hover > .icon):
        (.tab-bar > .item > .title):
        (.tab-bar > .item > .title > .content):
        (.tab-bar:not(.animating) > .item:not(.selected):hover > .title):
        (.tab-bar > .item.selected > .title):
        (.tab-bar.collapsed > .item):
        (.tab-bar.collapsed > .item > .flex-space):
        (.tab-bar.collapsed > .item > .close):
        (.tab-bar.hide-titles > .item > .title):
        (.tab-bar.hide-titles > .item.selected:hover > .icon):
        (.tab-bar.hide-titles > .item.selected:hover > .close):
        (.tab-bar.static-layout):
        (.tab-bar.static-layout > .item):
        (.tab-bar.animating.closing-tab > .item):
        (.tab-bar.animating:matches(.expanding-tabs, .inserting-tab) > .item):
        (.tab-bar.animating.inserting-tab > .item.being-inserted):
        (.tab-bar.animating.closing-tab > .item.selected):
        (body.window-inactive .tab-bar.animating.closing-tab > .item.selected):
        (.tab-bar.dragging-tab > .item.selected):

        * UserInterface/Views/TabBar.js: Added.
        (WebInspector.TabBar):
        (WebInspector.TabBar.prototype.get newTabItem):
        (WebInspector.TabBar.prototype.set newTabItem):
        (WebInspector.TabBar.prototype.addTabBarItem):
        (WebInspector.TabBar.prototype.insertTabBarItem.animateTabs):
        (WebInspector.TabBar.prototype.insertTabBarItem.removeStyles):
        (WebInspector.TabBar.prototype.insertTabBarItem):
        (WebInspector.TabBar.prototype.insertTabBarItem.set else):
        (WebInspector.TabBar.prototype.insertTabBarItem.set this):
        (WebInspector.TabBar.animateTabs.get if):
        (WebInspector.TabBar.animateTabs):
        (WebInspector.TabBar.removeStyles):
        (WebInspector.TabBar.prototype.insertTabBarItem):
        (WebInspector.TabBar.prototype.updateLayoutSoon.update):
        (WebInspector.TabBar.prototype.updateLayoutSoon):
        (WebInspector.TabBar.prototype.updateLayout):
        (WebInspector.TabBar.prototype.get selectedTabBarItem):
        (WebInspector.TabBar.prototype.set selectedTabBarItem):
        (WebInspector.TabBar.prototype.get tabBarItems):
        (WebInspector.TabBar.prototype.get element):
        (WebInspector.TabBar.prototype._findTabBarItem):
        (WebInspector.TabBar.prototype._hasMoreThanOneNormalTab):
        (WebInspector.TabBar.prototype._recordTabBarItemSizesAndPositions):
        (WebInspector.TabBar.prototype._clearTabBarItemSizesAndPositions):
        (WebInspector.TabBar.prototype._finishExpandingTabsAfterClose.):
        (WebInspector.TabBar.prototype._finishExpandingTabsAfterClose):
        (WebInspector.TabBar.prototype._handleMouseDown):
        (WebInspector.TabBar.prototype._handleMouseMoved):
        (WebInspector.TabBar.prototype._handleMouseUp):
        (WebInspector.TabBar.prototype._handleMouseLeave):
        (WebInspector.TabBar.prototype._handleNewTabMouseEnter):

        * UserInterface/Views/TabBarItem.js: Added.
        (WebInspector.TabBarItem):
        (WebInspector.TabBarItem.prototype.get identifier):
        (WebInspector.TabBarItem.prototype.get element):
        (WebInspector.TabBarItem.prototype.get parentTabBar):
        (WebInspector.TabBarItem.prototype.set parentTabBar):
        (WebInspector.TabBarItem.prototype.get selected):
        (WebInspector.TabBarItem.prototype.set selected):
        (WebInspector.TabBarItem.prototype.get pinned):
        (WebInspector.TabBarItem.prototype.get image):
        (WebInspector.TabBarItem.prototype.set image):
        (WebInspector.TabBarItem.prototype.get title):
        (WebInspector.TabBarItem.prototype.set title):
        (WebInspector.TabBarItem.prototype.updateLayout):

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make closing ContentViews more leak proof
        https://bugs.webkit.org/show_bug.cgi?id=144200

        Remove all listeners on the target objects in close that match the this object.
        This makes things more foolproof when something changes or a new listener is
        added to the same object. TimelineRecordingContentView also had a leak where
        TimelineManager and DebuggerManager listeners were not being removed.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype.closed):
        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView.prototype.closed):
        * UserInterface/Views/ContentFlowDOMTreeContentView.js:
        (WebInspector.ContentFlowDOMTreeContentView.prototype.closed):
        * UserInterface/Views/FrameDOMTreeContentView.js:
        (WebInspector.FrameDOMTreeContentView.prototype.closed):
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype.closed):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype.closed):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.closed):

2015-04-25  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Make closing ContentViews more leak proof
        https://bugs.webkit.org/show_bug.cgi?id=144200

        Remove all listeners on the target objects in close that match the this object.
        This makes things more foolproof when something changes or a new listener is
        added to the same object. TimelineRecordingContentView also had a leak where
        TimelineManager and DebuggerManager listeners were not being removed.

        Reviewed by Darin Adler.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype.closed):
        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView.prototype.closed):
        * UserInterface/Views/ContentFlowDOMTreeContentView.js:
        (WebInspector.ContentFlowDOMTreeContentView.prototype.closed):
        * UserInterface/Views/FrameDOMTreeContentView.js:
        (WebInspector.FrameDOMTreeContentView.prototype.closed):
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype.closed):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype.closed):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype.closed):

2015-04-25  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: assertion failure when editing inline styles
        https://bugs.webkit.org/show_bug.cgi?id=143939

        Reviewed by Timothy Hatcher.

        Prevent "_updateResourceContent" from being called on inline style changes.
        Introduce a flag that marks a CSSStyleSheet as a representation of an
        "ElementCSSInlineStyle" (DOM Level 2 spec) and return early.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype.styleSheetChanged):
        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet):
        (WebInspector.CSSStyleSheet.isInlineStyle):
        (WebInspector.CSSStyleSheet.prototype.markAsInlineStyle):
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):

2015-04-24  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: Web Inspector: Start Timeline Recording in Develop menu broken
        https://bugs.webkit.org/show_bug.cgi?id=144150

        Reviewed by Brian Burg.

        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.setTimelineProfilingEnabled): Change !== to === when
        checking enabled to isCapturing().

2015-04-23  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: run a customizable bootstrap function after the UI has fully loaded
        https://bugs.webkit.org/show_bug.cgi?id=144124

        Reviewed by Joseph Pecoraro.

        It can be really annoying to click through the Inspector UI dozens of times to debug one
        interaction or iterate on a specific widget.

        This patch adds a blank "bootstrap" function that can be used to hard-wire commands to
        automate repetitive UI state setup. The function is run immediately after the inspector loads.
        Setup commands can be shared as bug report reproduction steps.

        * UserInterface/Base/Bootstrap.js: Added.
        (WebInspector.runBootstrapOperations): Added.
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded): Bootstrap after setting up everything and restoring view state from cookie.
        * UserInterface/Main.html:

2015-04-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt Object.assign and improve its display in Console
        https://bugs.webkit.org/show_bug.cgi?id=144135

        Reviewed by Darin Adler.

        * UserInterface/Models/NativeFunctionParameters.js:

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: DebuggerSidebarPanel's _callStackContentTreeOutline should suppress filtering
        https://bugs.webkit.org/show_bug.cgi?id=144114

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):

2015-04-23  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Fix layering issues with ApplicationCacheFrameTreeElement
        https://bugs.webkit.org/show_bug.cgi?id=144113

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
        (WebInspector.ApplicationCacheFrameTreeElement.prototype.updateTitles):
        (WebInspector.ApplicationCacheFrameTreeElement):

2015-04-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: clicking Timelines tree view nodes should not change the current content view
        https://bugs.webkit.org/show_bug.cgi?id=132202

        Reviewed by Brian Burg.

        TimelineSidebarPanel now prevents timeline views from switching to another content view while the content
        browser is showing the TimelineRecordingContentView. Code responsible for creating and updating the tree
        element close button, which was duplicated in multiple derived TimelineView classes, has been moved to the
        TimelineView base class.

        * UserInterface/Views/LayoutTimelineView.js:
        Updated name of location column, which was broken in a recent patch.
        (WebInspector.LayoutTimelineView.prototype.treeElementDeselected):
        (WebInspector.LayoutTimelineView.prototype.treeElementSelected):
        Added overrides of new base class methods to handle view-specific highlight logic.
        (WebInspector.LayoutTimelineView.prototype._treeElementDeselected): Deleted.
        (WebInspector.LayoutTimelineView.prototype._treeElementSelected): Deleted.
        (WebInspector.LayoutTimelineView.prototype._updateTreeElementWithCloseButton): Deleted.
        (WebInspector.LayoutTimelineView.prototype._closeStatusButtonClicked): Deleted.
        Removed tree element close button logic.

        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.NetworkTimelineView.prototype.treeElementSelected):
        Added overrides of new base class methods.
        (WebInspector.NetworkTimelineView.prototype._treeElementDeselected): Deleted.
        (WebInspector.NetworkTimelineView.prototype._treeElementSelected): Deleted.
        Removed tree element close button logic.

        * UserInterface/Views/RenderingFrameTimelineView.js:
        (WebInspector.RenderingFrameTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.RenderingFrameTimelineView.prototype.treeElementSelected):
        Added overrides of new base class methods.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        Removed unused Name column and added "go to" button to the Domain column to show the selected resource.

        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView):
        (WebInspector.ScriptTimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.ScriptTimelineView.prototype.treeElementSelected):
        Added overrides of new base class methods.
        (WebInspector.ScriptTimelineView.prototype._dataGridNodeSelected):
        (WebInspector.ScriptTimelineView.prototype._treeElementDeselected): Deleted.
        (WebInspector.ScriptTimelineView.prototype._treeElementSelected): Deleted.
        (WebInspector.ScriptTimelineView.prototype._updateTreeElementWithCloseButton): Deleted.
        (WebInspector.ScriptTimelineView.prototype._closeStatusButtonClicked): Deleted.
        Removed tree element close button logic.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.showTimelineViewForTimeline.this._timelineTreeElementMap.get select):
        Prevent navigating to a different content view when showing the TimelineRecordingContentView.

        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView):
        (WebInspector.TimelineView.prototype.showContentViewForTreeElement):
        (WebInspector.TimelineView.prototype.treeElementDeselected):
        (WebInspector.TimelineView.prototype.treeElementSelected):
        Tree element selection handlers are now protected methods, which derived classes may override as needed.
        (WebInspector.TimelineView.prototype.needsLayout):
        (WebInspector.TimelineView.prototype._closeStatusButtonClicked):
        (WebInspector.TimelineView.prototype._updateTreeElementWithCloseButton):
        Encapsulated logic related to close button creation and behavior.

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove an unused index argument from Sidebar.removeSidebarPanel
        https://bugs.webkit.org/show_bug.cgi?id=144054

        Reviewed by Darin Adler.

        * UserInterface/Views/Sidebar.js:

2015-04-22  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Fix an exception preventing switching timelines
        https://bugs.webkit.org/show_bug.cgi?id=144053

        Reviewed by Darin Adler.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeElement.prototype.select): Store treeOutline in a local so
        we have a reference to it when we go to reset processingSelectionChange.
        The calls to onselect was removing the tree element from the outline, causing
        "delete this.treeOutline.processingSelectionChange" to throw an exception.
        This patch changes the delete to a set to false for good measure too.

2015-04-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use String.prototype.startsWith in more places
        https://bugs.webkit.org/show_bug.cgi?id=144025

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Gradient.js:
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._scriptAdded):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):

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

        Web Inspector: Make formatted nodes more consistent with formatted objects
        https://bugs.webkit.org/show_bug.cgi?id=142159

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline ol):
        Keep indentation exactly two spaces of Menlo.

        (.dom-tree-outline li):
        (.dom-tree-outline li.parent):
        (.dom-tree-outline li .html-tag.close):
        (.dom-tree-outline li.parent::before):
        (.dom-tree-outline:focus li.parent.selected::before):
        (.dom-tree-outline li.parent.expanded::before):
        (.dom-tree-outline:focus li.parent.expanded.selected::before):
        * UserInterface/Views/FormattedValue.css:
        (.formatted-node > .dom-tree-outline ol):
        Keep indentation exactly two spaces of Menlo.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property > .disclosure-button):
        Disclosure triangle is 13 by 13 pixels. Having it in the middle of 16 by 16
        pixels block makes it look bloory on non-retina screen, because:
        (16 - 13) / 2 = 1.5px. Replacing 16 with 15 fixes the problem.

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree:not(.lossless-preview) > :matches(.title, .object-preview)):

2015-04-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Unify PrettyPrinting Tool and UserInterface resources
        https://bugs.webkit.org/show_bug.cgi?id=143969

        Reviewed by Timothy Hatcher.

        Have the PrettyPrinting tool just use the CodeMirror and WebInspector
        resources from the relative UserInterface directory. This avoids
        having duplicate resources in the tree which offered few advantages.

        * Scripts/update-pretty-printer.rb: Removed.
        * Tools/PrettyPrinting/CodeMirrorFormatters.js: Removed.
        * Tools/PrettyPrinting/Formatter.js: Removed.
        * Tools/PrettyPrinting/FormatterContentBuilder.js: Removed.
        * Tools/PrettyPrinting/codemirror.css: Removed.
        * Tools/PrettyPrinting/codemirror.js: Removed.
        * Tools/PrettyPrinting/css.js: Removed.
        * Tools/PrettyPrinting/index.html:
        * Tools/PrettyPrinting/javascript.js: Removed.

        * UserInterface/Views/CodeMirrorFormatters.js:
        Fix style issues.

2015-04-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Support for WeakSet in Console
        https://bugs.webkit.org/show_bug.cgi?id=143951

        Reviewed by Darin Adler.

        * UserInterface/Models/NativeFunctionParameters.js:
        WeakSet has the same APIs and parameters as Set for the functions it implements.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.isCollectionType):
        (WebInspector.RemoteObject.prototype.isWeakCollection):
        (WebInspector.RemoteObject.prototype.getCollectionEntries):
        (WebInspector.RemoteObject.prototype._weakCollectionObjectGroup):
        WeakSet is a weak collection.

        * UserInterface/Models/ObjectPreview.js:
        (WebInspector.ObjectPreview.prototype.hasSize):
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._formatParameter):
        * UserInterface/Views/FormattedValue.css:
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset):
        (:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap, .formatted-weakset) > .size):
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap): Deleted.
        (:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap) > .size): Deleted.
        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):
        Treat a WeakSet like a set in more places.

2015-04-18  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Pass multiple arguments to classList.add and classList.remove
        https://bugs.webkit.org/show_bug.cgi?id=143914

        classList.add and classList.remove can accept multiple arguments, use that.

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.updateDockedState):
        * UserInterface/Views/DOMTreeDataGrid.js:
        (WebInspector.DOMTreeDataGrid):
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGridNode.prototype.set hasChildren):
        * UserInterface/Views/DatabaseContentView.js:
        (WebInspector.DatabaseContentView):
        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection):
        * UserInterface/Views/DetailsSectionPropertiesRow.js:
        (WebInspector.DetailsSectionPropertiesRow):
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.set classNames):
        * UserInterface/Views/NavigationItem.js:
        (WebInspector.NavigationItem):
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar):
        * UserInterface/Views/SidebarPanel.js:
        (WebInspector.SidebarPanel):
        * UserInterface/Views/SourceCodeTextEditor.js:
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):
        * UserInterface/Views/TimelineRuler.js:

2015-04-18  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Make prototype pill’s background semi-transparent
        https://bugs.webkit.org/show_bug.cgi?id=143928

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property.prototype-property):

        (.object-tree-property.prototype-property:hover, .object-tree-property.prototype-property:focus):
        Slightly highlight the prototype pill when hovering over.

2015-04-17  Jono Wells  <jonowells@apple.com>

        Web Inspector: All sans-serif font family rules should be set the same way.
        https://bugs.webkit.org/show_bug.cgi?id=143909

        Reviewed by Timothy Hatcher.

        Update styles so that all uses of sans-serif font use -webkit-system-font consistently.

        * UserInterface/Views/DefaultDashboardView.css:
        (body.mac-platform.legacy .toolbar .dashboard.default > .item):
        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property .prototype-name):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree-outline li .empty-message):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
        (.timeline-overview-graph.rendering-frame > .divider > .label):

2015-04-17  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Have better inactive window color for pixel borders
        https://bugs.webkit.org/show_bug.cgi?id=143888

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/FindBanner.css:
        (body.window-inactive .find-banner):
        * UserInterface/Views/Main.css:
        (body.window-inactive.docked.bottom):
        (body.window-inactive.docked.right):
        (body.window-inactive #split-content-browser):
        * UserInterface/Views/NavigationBar.css:
        (body.window-inactive .navigation-bar):
        * UserInterface/Views/QuickConsole.css:
        (body.window-inactive .quick-console):
        (.quick-console.showing-log):
        * UserInterface/Views/Sidebar.css:
        (body.window-inactive .sidebar.left):
        (body.window-inactive .sidebar.right):

2015-04-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Unexpected background at top of console when rubber-banding with selection
        https://bugs.webkit.org/show_bug.cgi?id=140710

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-messages):
        Remove the focus ring on the console's log view, only visible when rubber-banding.

2015-04-16  Jono Wells  <jonowells@apple.com>

        Web Inspector: Breakpoint icons should not get pushed off of debugger sidebar due to long resource names
        https://bugs.webkit.org/show_bug.cgi?id=142714

        Reviewed by Timothy Hatcher.

        Modify the styles for content and group containers inside the debugger sidebar panel's detail sections
        such that the rules "display: table" and "display: table-row-group" no longer apply. This will make
        the file names which use the rule "text-overflow: ellipsis" truncate as expected.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section > .content):
        (.sidebar > .panel.navigation.debugger .details-section.collapsed > .content):
        (.sidebar > .panel.navigation.debugger .details-section > .content > .group):
        (.sidebar > .panel.navigation.debugger .details-section.scripts):
        (.sidebar > .panel.navigation.debugger .details-section.scripts .header):
        (.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content):

2015-04-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should include "Log Value" context menu item in Preview and Collapsed ObjectTree
        https://bugs.webkit.org/show_bug.cgi?id=143845

        Reviewed by Timothy Hatcher.

        Give previews the same "Log Value" context menu so that if you just log
        a bunch of objects to the console you can quickly turn that entire object
        into a $n reference in the console to interact with.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype.setOriginatingObjectInfo):
        (WebInspector.ObjectPreviewView.prototype._contextMenuHandler):
        Provide API to refer to a RemoteObject and optional PropertyPath
        that can be used to give the preview a "Log Value" context menu.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        Include the RemoteObject without a path for a preview context menu.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        Include the RemoteObject with a path if we knew it for a preview context menu.

        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
        The context menu can never be empty, since we always added at least one item above.


2015-04-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Log Value" of a value inside of an array, does not log the innermost value
        https://bugs.webkit.org/show_bug.cgi?id=143793

        Reviewed by Brian Burg.

        Context menu handlers were being handled in the capturing event phase, so
        the outer most handler, instead of the inner most handler, was getting
        first access. Change this so the events happen in the bubbling phase.

        DOM Nodes may appear inside of Object Trees, for instance when shown
        in a collection like an array or set. In an effort to standardize on
        "inner most" behavior, change the DOMTreeOutline context handler
        to also be in bubbling.

        In the rare instances where a node object is in the console but
        not displayed in an outline (console.dir(node)), then include a
        Copy as HTML context menu like you would expect in a DOM tree.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.onattach):
        (WebInspector.GeneralTreeElement.prototype.ondetach):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        (WebInspector.ObjectTreeBaseTreeElement):

2015-04-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Allow toggling the edibility of a DOMTreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=143814

        Reviewed by Brian Burg.

        By default a DOMTreeOutline will not be editable, but it will
        provide a setter to enable editability for DOMTreeContentViews.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        Content Views always have editable DOM trees.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.get editable):
        (WebInspector.DOMTreeElement.prototype.onattach):
        (WebInspector.DOMTreeElement.prototype.ondelete):
        (WebInspector.DOMTreeElement.prototype.onenter):
        (WebInspector.DOMTreeElement.prototype.ondblclick):
        (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
        (WebInspector.DOMTreeElement.prototype._populateTextContextMenu):
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        (WebInspector.DOMTreeElement.prototype._startEditing):
        Do not provide editability options for shadow DOM or non-editable DOM tree.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        (WebInspector.DOMTreeOutline.prototype.get editable):
        (WebInspector.DOMTreeOutline.prototype.set editable):
        New state.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-node > .dom-tree-outline li):
        Nodes inside object trees were showing text selection when you right
        clicked them. Normal selection is not possible. So force no selection.

2015-04-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Give DOM Nodes a Context Menu to Log Element to the console
        https://bugs.webkit.org/show_bug.cgi?id=143813

        Reviewed by Brian Burg.

        Always give DOM Nodes a "Log Element" context menu to log it to the console.
        This will give a $n reference, and is a convenient alternative to $0 or
        the now removed $1-$9.

        * Localizations/en.lproj/localizedStrings.js:
        New "Log Element" and "Selected Element" strings.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        (WebInspector.DOMTreeOutline.prototype._contextMenuEventFired):
        (WebInspector.DOMTreeOutline.prototype._updateModifiedNodes):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu):
        Always include the "Log Element" context menu/

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNode):
        This uses all the defaults.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        This enables all the extra behavior.

2015-04-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unnecessary intermediate object from DOMTreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=143811

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        (WebInspector.DOMTreeOutline.prototype._selectedNodeChanged):
        (WebInspector.DOMTreeOutline.prototype.addEventListener): Deleted.
        (WebInspector.DOMTreeOutline.prototype.removeEventListener): Deleted.
        This object used to be used to handle event dispatching, but
        TreeOutlines themselves are now WebInspector.Objects so we
        can remove the intermediary.

2015-04-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: InspectorTest frontend console methods redirected to the frontend are wrong
        https://bugs.webkit.org/show_bug.cgi?id=143801

        Reviewed by Brian Burg.

        * UserInterface/Base/Test.js:
        (InspectorTest.evaluateInPage):
        Properly if check for the existence of an agent.

        (global):
        Properly hook up console redirect handlers so they
        will output the right type and arguments strings.

2015-04-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Handle all possible Console message Source types in IssueMessage
        https://bugs.webkit.org/show_bug.cgi?id=143803

        Reviewed by Brian Burg.

        * UserInterface/Models/IssueMessage.js:
        (WebInspector.IssueMessage):
        Update the switch to handle all possible console message sources.
        "wml" was legacy and no longer supported.

2015-04-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception in JSContext inspector when opening
        https://bugs.webkit.org/show_bug.cgi?id=143741

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.shouldShowViewForTimeline):
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        Before using TimelineAgent, check for its existence first. It may
        not exist in JSContext inspection.

2015-04-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Align array's indices and set's bullet points under the property icon
        https://bugs.webkit.org/show_bug.cgi?id=143698

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.css:
        (.object-tree-array-index.object-tree-map-entry > .titles > .title > .index-name):
        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-name):
        Right align array's and set's indices.

        (.object-tree-map-entry):
        Overwrite left property from .object-tree-array-index.

        (.object-tree-property + ol .object-tree-map-entry):
        Overwrite left property from .object-tree-property + ol .object-tree-array-index.

2015-04-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Expanding window.navigator.mimeTypes in ObjectTree shows no native properties
        https://bugs.webkit.org/show_bug.cgi?id=143690

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement):
        Fix a typo that resulted in hiding properties of native objects
        in the Properties section of an Object Tree.

2015-04-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unnecessary 3 second delay when archiving page
        https://bugs.webkit.org/show_bug.cgi?id=143688

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.archiveMainFrame):
        The delay is unnecessary and was probably just debugging code.

2015-04-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Hide Frames Timeline if the backend doesn't support it
        https://bugs.webkit.org/show_bug.cgi?id=142800

        Reviewed by Timothy Hatcher.

        Fallback to showing the layout timeline if the backend doesn't support the rendering frames timeline.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.shouldShowViewForTimeline):
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        Added iOS 8 compatibility check for RenderingFrame timeline record type.

        * UserInterface/Views/LayoutTimelineDataGridNode.js:
        (WebInspector.LayoutTimelineDataGridNode.prototype.get data):
        Restored fields used by Layout timeline view.

        * UserInterface/Views/LayoutTimelineView.js:
        Updated to be compatible with both RenderingFrame and Layout timeline views.

2015-04-11  Jono Wells  <jonowells@apple.com>

        Web Inspector: Debugger sidebar should show errors underneath scripts
        https://bugs.webkit.org/show_bug.cgi?id=143464

        Reviewed by Timothy Hatcher.

        Add a new tree element called IssueTreeElement. This shows warnings and errors in the debugger sidebar. These
        can be clicked to jump to the line of source code for which the error was thrown. BreakpointTreeElement and
        IssueTreeElement now inherit from DebuggerTreeElement to support any needed commonalities among the interfaces
        of elements in the debugger sidebar panel.

        * Localizations/en.lproj/localizedStrings.js: Updated.
        * UserInterface/Main.html: Add new files.

        * UserInterface/Models/IssueMessage.js:
        (WebInspector.IssueMessage):
        (WebInspector.IssueMessage.prototype.get source):
        (WebInspector.IssueMessage.prototype.get lineNumber):
        (WebInspector.IssueMessage.prototype.get columnNumber):
        (WebInspector.IssueMessage.prototype.get displayLineNumber):
        (WebInspector.IssueMessage.prototype.get displayColumnNumber):
        (WebInspector.IssueMessage.prototype.get sourceCodeLocation):
        (WebInspector.IssueMessage.prototype.saveIdentityToCookie):
        (WebInspector.IssueMessage.prototype._sourceCodeLocationDisplayLocationChanged):
        Convert to use a backing SourceCodeLocation. Expand API.

        * UserInterface/Views/BreakpointTreeElement.js: Inherits now from DebuggerTreeElement.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.showResourcesWithBreakpointsOnlyFilterFunction):
        (WebInspector.DebuggerSidebarPanel.showResourcesWithIssuesOnlyFilterFunction):
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
        (WebInspector.DebuggerSidebarPanel.prototype._breakpointRemoved):
        (WebInspector.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
        (WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
        (WebInspector.DebuggerSidebarPanel.prototype._compareDebuggerTreeElements):
        (WebInspector.DebuggerSidebarPanel.prototype._addDebuggerObject):
        (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
        (WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._handleIssuesCleared):
        (WebInspector.DebuggerSidebarPanel.prototype._breakpointDisplayLocationDidChange): Deleted.
        (WebInspector.DebuggerSidebarPanel.prototype._removeBreakpointTreeElement): Deleted.
        (WebInspector.DebuggerSidebarPanel.prototype._compareBreakpointTreeElements): Deleted.
        Add IssueTreeElements to the sidebar whenever a warning or error corresponding to a line of code is found.
        Add a filter function and button to filter down to just these. Ensure issue and breakpoint elements can be
        properly compared.

        * UserInterface/Views/DebuggerTreeElement.js: Added.
        (WebInspector.DebuggerTreeElement):
        (WebInspector.DebuggerTreeElement.prototype.get debuggerObject):

        * UserInterface/Views/IssueTreeElement.css: Added.
        (.issue .icon):
        (.issue.error .icon):
        (.navigation-sidebar-panel-content-tree-outline .item.small.issue .icon):

        * UserInterface/Views/IssueTreeElement.js: Added.
        (WebInspector.IssueTreeElement):
        (WebInspector.IssueTreeElement.prototype.get issueMessage):
        (WebInspector.IssueTreeElement.prototype._updateTitles):

2015-04-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: create content view and details sidebar for Frames timeline
        https://bugs.webkit.org/show_bug.cgi?id=143533

        Reviewed by Timothy Hatcher.

        Added new Rendering Frames timeline content view and details sidebar, and added minor visual tweeks to the
        timeline graph such as ensuring 60 FPS budget line is always visible, and large combined frames are split
        up once they reach a maximum pixel width.

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

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Support for new details sidebar panel.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.shouldShowViewForTimeline):
        (WebInspector.TimelineManager.prototype._processRecord):
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        Layout timeline is no longer added to timeline graphs, skip Rendering Frame records that have no child events.

        * UserInterface/Images/NavigationItemDoughnutChart.svg: Added.
        * UserInterface/Images/TimelineRecordRenderingFrame.svg: Added.
        New artwork.

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

        * UserInterface/Models/RenderingFrameTimelineRecord.js: Renamed from Source/WebInspectorUI/UserInterface/Models/RunLoopTimelineRecord.js.
        (WebInspector.RenderingFrameTimelineRecord):
        (WebInspector.RenderingFrameTimelineRecord.resetFrameNumber):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get frameNumber):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get children):
        (WebInspector.RenderingFrameTimelineRecord.prototype.get durationRemainder):
        (WebInspector.RenderingFrameTimelineRecord.prototype.durationForRecords.get var):
        Added frame numbering and improved the accuracy of sub-frame duratation calculation.
        Refactoring: RunLoop prefix changed to RenderingFrame.

        * UserInterface/Models/Timeline.js:
        (WebInspector.Timeline):
        (WebInspector.Timeline.create):
        (WebInspector.Timeline.prototype.get recording):
        (WebInspector.Timeline.prototype.get displayName):
        (WebInspector.Timeline.prototype.get iconClassName):
        Added up-pointer to parent recording.

        * UserInterface/Models/TimelineRecord.js:
        Refactoring: RunLoop prefix changed to RenderingFrame.
        
        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording.prototype.reset):
        Support for new timeline type.

        * UserInterface/Views/ChartDetailsSectionLegendRow.js: Added.
        (WebInspector.ChartDetailsSectionLegendRow):
        New details section row type for chart legend items.

        * UserInterface/Views/ChartDetailsSectionRow.css: Added.
        (.details-section .row.chart):
        (.details-section .row.chart canvas):
        (.details-section .row.chart.empty canvas):
        (.details-section > .content > .group > .row.legend-item > .label > .color-swatch):
        * UserInterface/Views/ChartDetailsSectionRow.js: Added.
        (WebInspector.ChartDetailsSectionRow):
        (WebInspector.ChartDetailsSectionRow.prototype.get legendGroup):
        (WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
        (WebInspector.ChartDetailsSectionRow.prototype.addChartValue):
        (WebInspector.ChartDetailsSectionRow.prototype.clearChart):
        (WebInspector.ChartDetailsSectionRow.prototype._refresh.drawSlice):
        (WebInspector.ChartDetailsSectionRow.prototype._refresh):
        New details section row type for pie/doughnut charts.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        Support for new timeline view type.

        * UserInterface/Views/LayoutTimelineDataGridNode.js:
        (WebInspector.LayoutTimelineDataGridNode.prototype.get data):
        (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
        Updated for use in rendering frame timeline view.

        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
        Removed references to old RunLoop objects.

        * UserInterface/Views/RenderingFrameDetailsSidebarPanel.js: Added.
        (WebInspector.RenderingFrameDetailsSidebarPanel.formatChartValue):
        (WebInspector.RenderingFrameDetailsSidebarPanel):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.inspect):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.updateRangeSelection):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.get renderingFrameTimeline):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.set renderingFrameTimeline):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.refresh.durationForRecordType):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype.refresh):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype._resetAll):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype._recordAdded):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype._timelineReset):
        (WebInspector.RenderingFrameDetailsSidebarPanel.prototype._getSelectedRecords):
        New sidebar panel for showing time breakdown for current frame selection.

        * UserInterface/Views/RenderingFrameTimelineDataGridNode.js: Added.
        (WebInspector.RenderingFrameTimelineDataGridNode):
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get record):
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get records):
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get data):
        (WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
        New data grid row type.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.css.
        (.timeline-overview-graph.rendering-frame > .divider):
        (.timeline-overview-graph.rendering-frame > .divider > .label):
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.js.
        (WebInspector.RenderingFrameTimelineOverviewGraph):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.get graphHeightSeconds):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.updateLayout.createFrame):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition.get if):
        * UserInterface/Views/RenderingFrameTimelineView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.css.
        (.timeline-view.rendering-frame > .data-grid):
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.rendering-frame .item .subtitle):
        Visual tweeks.
        Refactoring: RunLoop prefix changed to RenderingFrame.

        * UserInterface/Views/RenderingFrameTimelineView.js: Added.
        (WebInspector.RenderingFrameTimelineView):
        (WebInspector.RenderingFrameTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
        (WebInspector.RenderingFrameTimelineView.prototype.shown):
        (WebInspector.RenderingFrameTimelineView.prototype.hidden):
        (WebInspector.RenderingFrameTimelineView.prototype.updateLayout):
        (WebInspector.RenderingFrameTimelineView.prototype.get selectionPathComponents):
        (WebInspector.RenderingFrameTimelineView.prototype.filterDidChange):
        (WebInspector.RenderingFrameTimelineView.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.RenderingFrameTimelineView.prototype.reset):
        (WebInspector.RenderingFrameTimelineView.prototype.treeElementPathComponentSelected):
        (WebInspector.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement):
        (WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
        (WebInspector.RenderingFrameTimelineView.prototype._renderingFrameTimelineRecordAdded):
        (WebInspector.RenderingFrameTimelineView.prototype._dataGridNodeSelected):
        New content view type.

        * UserInterface/Views/TimelineIcons.css:
        (.rendering-frame-icon .icon):
        (.rendering-frame-icon.large .icon):
        (.rendering-frame-record .icon):
        (.runloop-record .icon):
        (.runloop-icon .icon): Deleted.
        (.runloop-icon.large .icon): Deleted.
        Refactoring: runloop prefix changed to rendering-frame.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype._timelineRemoved):
        Support for timelines without associated views.

        * UserInterface/Views/TimelineOverviewGraph.js:
        (WebInspector.TimelineOverviewGraph):
        Refactoring: RunLoop prefix changed to RenderingFrame.

        * UserInterface/Views/TimelineRecordFrame.css:
        (.timeline-record-frame):
        (.timeline-record-frame > .frame):
        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.createCombinedFrames):
        Visual tweeks, splitting up large combined frames.

        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        Refactoring: runloop prefix changed to rendering-frame.

        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
        (WebInspector.TimelineRecordingContentView.prototype._timelineCountChanged):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        Added support for new details sidebar and timelines without associated views.

        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel._timelineAdded.set this):
        Support for timelines without associated views.
        Refactoring: runloop prefix changed to rendering-frame.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        New files.

2015-04-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Use semi-transparent map item dividers
        https://bugs.webkit.org/show_bug.cgi?id=143630

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.css:
        (.object-tree-map-entry.key:not(:first-child)):
        (.object-tree-map-entry.key): Deleted.
        (.object-tree-map-entry.key:first-of-type): Deleted.
        Use one selector instead of two.

2015-04-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Objects are vertically misaligned by 1px
        https://bugs.webkit.org/show_bug.cgi?id=143629

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap):

2015-04-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix Console Message Toggle

        Unreviewed. Correct a post-review comment fix that went too far.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype.set expandable):
        The handler needed to be bound to the object.

2015-04-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix Console Filter Search, Uncaught Exception

        Rubber-stamped by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._performSearch):
        This regressed with recent refactoring. Fix up the property and class names.

2015-04-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Console Message Formatting
        https://bugs.webkit.org/show_bug.cgi?id=143623

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        Misc.

        * UserInterface/Views/ConsoleMessageView.css: Added.
        (.console-message.expandable .console-top-level-message::before):
        (.console-message.expandable.expanded .console-top-level-message::before):
        (.console-message.expandable.expanded :matches(.console-message-preview, .console-message-preview-divider)):
        (.console-message-preview-divider):
        (.console-message-enclosed):
        (.console-message .console-message-stack-trace-container):
        (.console-message.expandable.expanded .console-message-stack-trace-container):
        (.console-message .console-message-stack-trace-container > li):
        (.console-message .console-message-extra-parameters-container > li::before):
        New styles for the new ConsoleMessageView children.
        Handle console message expansion, a list of extra parameters
        and a potential list of stack frames.

        (.console-message, .console-user-command):
        (.console-message .repeat-count):
        (.console-message-text):
        (.console-message-text > span):
        (.console-error-level):
        (.console-error-level .console-message-text):
        (.console-debug-level .console-message-text):
        (.console-warning-level):
        (.console-warning-level .console-message-text):
        (.console-user-command .console-message):
        (.console-error-level::before):
        (.console-warning-level::before):
        (.console-user-command::before):
        (.console-debug-level::before):
        (:matches(.console-warning-level, .console-error-level, .console-log-level).console-message):
        (:matches(.console-warning-level, .console-error-level, .console-log-level)::before):
        (.console-user-command > .console-message-text):
        (.console-message-url):
        (.console-saved-variable):
        (.console-user-command-result):
        (.console-user-command-result.console-log-level::before):
        Moved from LogContentView.css to here where it is more appropriate
        since ConsoleMessageView added them.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype.get expandable):
        (WebInspector.ConsoleMessageView.set expandable.this._boundExpandClickHandler):
        (WebInspector.ConsoleMessageView.prototype.set expandable):
        (WebInspector.ConsoleMessageView.prototype.expand):
        (WebInspector.ConsoleMessageView.prototype.collapse):
        (WebInspector.ConsoleMessageView.prototype.toggle):
        Provide high level constructs for making a ConsoleMessageView
        expandable, and APIs to expand/collapse.

        (WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
        Add and style the new list of extra parameters.

        (WebInspector.ConsoleMessageView.prototype._appendStackTrace):
        Add and style the new list stack frames.

        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        (WebInspector.ConsoleMessageView.prototype._shouldConsiderObjectLossless):
        Handling the top level message text line for all the different cases.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._startEditingTarget):
        (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline .add-attribute): Deleted.
        CSS class .add-attribute was not used. Remove all references.
        
        (.webkit-html-fragment.shadow):
        Moved from LogContentView.css to a more appropriate place.
        
        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForRemoteObject):
        Helper to create a preview or a formatted value for a given object.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._updateMessagesSelection):
        (WebInspector.LogContentView.prototype._leftArrowWasPressed):
        (WebInspector.LogContentView.prototype._rightArrowWasPressed):
        (WebInspector.LogContentView.prototype._rightArrowWasPressed.else.outlineTitle.treeElement.onexpand): Deleted.
        (WebInspector.LogContentView.prototype._propertiesSectionDidUpdateContent): Deleted.
        Lots of this code no longer makes sense. Delete some and put FIXMEs
        where it makes sense to re-add back useful features.

        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview > .size):
        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-value .object-tree): Deleted.
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree):
        Tweak styles. Opacity instead of a specific gray to better work
        with other colors. Always make objects be inline-block.

        * UserInterface/Views/LogContentView.css:
        (.console-error-level + .console-item):
        (.console-warning-level + .console-item):
        (.console-item::before):
        (.console-user-command-result): Deleted.
        (.console-user-command-result.console-log-level::before): Deleted.
        (.console-message, .console-user-command): Deleted.
        (.console-message .repeat-count): Deleted.
        (.console-message-text): Deleted.
        (.console-message-text > span): Deleted.
        (.console-error-level): Deleted.
        (.console-error-level .section .header .title): Deleted.
        (.console-debug-level .console-message-text): Deleted.
        (.console-debug-level::before): Deleted.
        (.console-error-level::before): Deleted.
        (.console-warning-level): Deleted.
        (.console-warning-level .console-message-text): Deleted.
        (.console-warning-level::before): Deleted.
        (.console-user-command .console-message): Deleted.
        (.console-user-command::before): Deleted.
        (:matches(.console-warning-level, .console-error-level, .console-log-level).console-message): Deleted.
        (:matches(.console-warning-level, .console-error-level, .console-log-level)::before): Deleted.
        (.console-user-command > .console-message-text): Deleted.
        (.console-saved-variable): Deleted.
        (.console-message-url): Deleted.
        (.console-group-messages .section): Deleted.
        (.console-group-messages .section .header): Deleted.
        (.console-group-messages .section .header::before): Deleted.
        (.console-group-messages .section .header .title): Deleted.
        (.console-group-messages .section .properties li .info): Deleted.
        (.console-group-messages .outline-disclosure): Deleted.
        (.console-group-messages .outline-disclosure > ol): Deleted.
        (.console-group-messages .outline-disclosure li .selection): Deleted.
        (.console-group-messages .add-attribute): Deleted.
        (.error-message): Deleted.
        (.auto-complete-text, .editing .auto-complete-text): Deleted.
        (.outline-disclosure li.hovered:not(.selected) .selection): Deleted.
        (.outline-disclosure li.highlighted .highlight): Deleted.
        (.outline-disclosure li.selected.highlighted .highlight): Deleted.
        (.outline-disclosure li .selection): Deleted.
        (.outline-disclosure li.selected .selection): Deleted.
        (.outline-disclosure li.elements-drag-over .selection): Deleted.
        (.outline-disclosure ol:focus li.selected .selection): Deleted.
        (.outline-disclosure ol.search-match-not-found li.selected .selection): Deleted.
        (.outline-disclosure > ol): Deleted.
        (.outline-disclosure, .outline-disclosure ol): Deleted.
        (.outline-disclosure li): Deleted.
        (.outline-disclosure .expanded li): Deleted.
        (.outline-disclosure > li.parent): Deleted.
        (.outline-disclosure li .webkit-html-tag.close): Deleted.
        (.outline-disclosure > li.parent::before): Deleted.
        (.outline-disclosure li.parent.expanded::before): Deleted.
        (.outline-disclosure ol.children): Deleted.
        (.outline-disclosure ol.children.expanded): Deleted.
        (.webkit-html-fragment.shadow): Deleted.
        Delete now unused styles and move other styles to more appropriate places.

2015-04-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception using console.table with filter argument
        https://bugs.webkit.org/show_bug.cgi?id=143579

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._userProvidedColumnNames):
        Reordering in the refactoring would have already converted this argument
        to a RemoteObject. Assert that here instead of trying to convert.

2015-04-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ObjectTree Property Path tooltip has a few issues
        https://bugs.webkit.org/show_bug.cgi?id=143587

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/PropertyPath.js:
        (WebInspector.PropertyPath.prototype.appendSymbolProperty):
        (WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
        Handle Symbol properties. They are treated as an impossible path
        because we cannot guarentee a reference to the Symbol right now.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._rootPropertyPathForObject):
        The savedResultIndex is on message.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        (WebInspector.ObjectTreeMapEntryTreeElement):
        (WebInspector.ObjectTreeMapKeyTreeElement):
        (WebInspector.ObjectTreeMapValueTreeElement):
        In order for "key" to be available setup the mainTitle after
        the call to the base's constructor.

2015-04-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Simplify Legacy Tips support
        https://bugs.webkit.org/show_bug.cgi?id=143551

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ConsoleMessage.js:
        * UserInterface/Protocol/ConsoleObserver.js:
        (WebInspector.ConsoleObserver.prototype.messageAdded):
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype._levelString):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._filterMessageElements):

2015-04-08  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed Test Fix after r182579. Add missing include.

        * UserInterface/Test.html:
        Missing file was causing inspector/page/main-frame-resource.html to fail.

2015-04-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Split ConsoleMessageImpl into the View and the Model
        https://bugs.webkit.org/show_bug.cgi?id=142599

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ConsoleMessage.js: Added.
        (WebInspector.ConsoleMessage):
        (WebInspector.ConsoleMessage.prototype.get source):
        (WebInspector.ConsoleMessage.prototype.get level):
        (WebInspector.ConsoleMessage.prototype.get messageText):
        (WebInspector.ConsoleMessage.prototype.get type):
        (WebInspector.ConsoleMessage.prototype.get url):
        (WebInspector.ConsoleMessage.prototype.get line):
        (WebInspector.ConsoleMessage.prototype.get column):
        (WebInspector.ConsoleMessage.prototype.get repeatCount):
        (WebInspector.ConsoleMessage.prototype.get parameters):
        (WebInspector.ConsoleMessage.prototype.get stackTrace):
        (WebInspector.ConsoleMessage.prototype.get request):
        New readonly model object for console messages.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        * UserInterface/Base/Test.js:
        (WebInspector.loaded):
        Load the new files in the main / test page.

        * UserInterface/Views/LegacyConsoleMessage.js: Removed.
        * UserInterface/Views/LegacyConsoleMessageImpl.js: Removed.
        Remove Legacy versions.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        (WebInspector.JavaScriptLogViewController.prototype.startNewSession):
        (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult.saveResultCallback):
        (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
        (WebInspector.JavaScriptLogViewController.prototype.appendConsoleMessage):
        (WebInspector.JavaScriptLogViewController.prototype.updatePreviousMessageRepeatCount):
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted.printResult):
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessage): Deleted.
        Update LogViewController to create ConsoleMessageViews from ConsoleMessages when applicable.
        Also clarify when we have a view versus model object.

        * UserInterface/Protocol/ConsoleObserver.js:
        (WebInspector.ConsoleObserver.prototype.messageAdded):
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager.prototype.messageWasAdded):
        (WebInspector.LogManager.prototype.messagesCleared):
        (WebInspector.LogManager.prototype._mainResourceDidChange):
        Create model objects and issue events for the model objects.

        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._consoleMessageAdded):
        (WebInspector.DefaultDashboard.prototype._incrementConsoleMessageType):
        Update now that the event gives us a model object.

        * UserInterface/Views/ConsoleMessageView.js: Added.
        (WebInspector.ConsoleMessageView):
        (WebInspector.ConsoleMessageView.prototype.get element):
        (WebInspector.ConsoleMessageView.prototype.get message):
        (WebInspector.ConsoleMessageView.prototype.get repeatCount):
        (WebInspector.ConsoleMessageView.prototype.set repeatCount):
        (WebInspector.ConsoleMessageView.prototype.toClipboardString):
        (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
        (WebInspector.ConsoleMessageView.prototype._appendSavedResultIndex):
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        (WebInspector.ConsoleMessageView.prototype._appendParameters):
        (WebInspector.ConsoleMessageView.prototype._appendStackTrace):
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        (WebInspector.ConsoleMessageView.prototype._formatParameter):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsValue):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsNode):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsObject):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsArray):
        (WebInspector.ConsoleMessageView.prototype._rootPropertyPathForObject):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.parameterFormatter):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.stringFormatter):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.floatFormatter):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.integerFormatter):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.append):
        (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString):
        (WebInspector.ConsoleMessageView.prototype._shouldShowStackTrace):
        (WebInspector.ConsoleMessageView.prototype._shouldHideURL):
        (WebInspector.ConsoleMessageView.prototype._firstNonNativeCallFrame):
        (WebInspector.ConsoleMessageView.prototype._linkifyLocation):
        (WebInspector.ConsoleMessageView.prototype._linkifyCallFrame):
        (WebInspector.ConsoleMessageView.prototype._userProvidedColumnNames):
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
        (WebInspector.ConsoleMessageView.prototype._levelString):
        (WebInspector.ConsoleMessageView.prototype._enforcesClipboardPrefixString):
        (WebInspector.ConsoleMessageView.prototype._clipboardPrefixString):
        New View class for a ConsoleMessage. This is a near direct port of the old code
        to a view class that has a root element.

        * UserInterface/Models/ConsoleCommandResultMessage.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleCommandResult.js.
        (WebInspector.ConsoleCommandResultMessage):
        (WebInspector.ConsoleCommandResultMessage.clearMaximumSavedResultIndex):
        (WebInspector.ConsoleCommandResultMessage.prototype.get savedResultIndex):
        Rename, as this is a ConsoleMessage subclass with a specific type for console evaluation results.

        * UserInterface/Views/ConsoleCommandView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleCommand.js.
        (WebInspector.ConsoleCommandView):
        (WebInspector.ConsoleCommandView.prototype.get element):
        (WebInspector.ConsoleCommandView.prototype.get commandText):
        (WebInspector.ConsoleCommandView.prototype.get message):
        (WebInspector.ConsoleCommandView.prototype.toClipboardString):
        * UserInterface/Views/ConsoleGroup.js:
        (WebInspector.ConsoleGroup):
        (WebInspector.ConsoleGroup.prototype.get parentGroup):
        (WebInspector.ConsoleGroup.prototype.render):
        (WebInspector.ConsoleGroup.prototype.addMessageView):
        (WebInspector.ConsoleGroup.prototype.append):
        (WebInspector.ConsoleGroup.prototype._titleMouseDown):
        (WebInspector.ConsoleGroup.prototype.addMessage): Deleted.
        (WebInspector.ConsoleGroup.prototype._titleClicked): Deleted.
        * UserInterface/Views/ConsoleSession.js:
        (WebInspector.ConsoleSession):
        (WebInspector.ConsoleSession.prototype.addMessageView):
        (WebInspector.ConsoleSession.prototype.append):
        (WebInspector.ConsoleSession.prototype.addMessage): Deleted.
        (WebInspector.ConsoleSession.prototype.hasMessages): Deleted.
        Convert to classes, and clarify these deal with View objects.

        * UserInterface/Views/LogContentView.css:
        (.console-message .repeat-count):
        (.console-message .bubble): Deleted.
        Better class name for the repeat count element.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
        (WebInspector.LogContentView.prototype._formatMessagesAsData):
        (WebInspector.LogContentView.prototype._messageAdded):
        (WebInspector.LogContentView.prototype._updateMessagesSelection):
        (WebInspector.LogContentView.prototype._selectAllMessages):
        (WebInspector.LogContentView.prototype._allMessageElements):
        (WebInspector.LogContentView.prototype._unfilteredMessageElements):
        (WebInspector.LogContentView.prototype._visibleMessageElements):
        (WebInspector.LogContentView.prototype._scopeBarSelectionDidChange):
        (WebInspector.LogContentView.prototype._filterMessageElements):
        (WebInspector.LogContentView.prototype._upArrowWasPressed):
        (WebInspector.LogContentView.prototype._downArrowWasPressed):
        (WebInspector.LogContentView.prototype._previousMessage):
        (WebInspector.LogContentView.prototype._nextMessage):
        (WebInspector.LogContentView.prototype._performSearch):
        (WebInspector.LogContentView.prototype._highlightRanges):
        (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
        (WebInspector.LogContentView.prototype.didAppendConsoleMessage): Deleted.
        (WebInspector.LogContentView.prototype._allMessages): Deleted.
        (WebInspector.LogContentView.prototype._unfilteredMessages): Deleted.
        (WebInspector.LogContentView.prototype._visibleMessages): Deleted.
        (WebInspector.LogContentView.prototype._filterMessages): Deleted.
        Rename lots of things to make it clear when we are dealing with
        elements, model objects, or view objects. This class is still heavily
        dealing with elements, and needs to be cleaned up later.

2015-04-08  Joseph Pecoraro  <pecoraro@apple.com>

        Fix uncaught exception seen in Inspector.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype.removeChild):
        Add a null check. Everywhere else null checks this member variable
        which may not exist yet, this case was missing the check.

2015-04-08  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Regression: Showing of color swatches no longer works in Details Sidebar
        https://bugs.webkit.org/show_bug.cgi?id=143539

        Reviewed by Timothy Hatcher.

        Fix a regression where due to an ESLint error the whole line instead of just
        the variable declaration was removed.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):

2015-04-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Show Symbol properties on Objects
        https://bugs.webkit.org/show_bug.cgi?id=141279

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/PropertyDescriptor.js:
        (WebInspector.PropertyDescriptor.get symbol):

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.wrappedCallback):
        Update new PropertyDescriptor call site.

        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement._logSymbolProperty):
        Provide a context menu for rows with Symbol properties to log
        the Symbol property, and therefore get a reference to it.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.comparePropertyDescriptors):
        Better handle symbol properties in sorting.

        * UserInterface/Views/TypePropertiesSection.js:
        (WebInspector.TypePropertiesSection.PropertyComparator):
        Return better value when values are equal.

2015-04-07  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: HierarchicalPathNavigationItem's additionalClassNames should be _additionalClassNames
        https://bugs.webkit.org/show_bug.cgi?id=143487

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WebInspector.HierarchicalPathNavigationItem.prototype.get _additionalClassNames):

2015-04-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add String/Array "includes" parameter display string
        https://bugs.webkit.org/show_bug.cgi?id=143434

        Reviewed by Darin Adler.

        * UserInterface/Models/NativeFunctionParameters.js:

2015-04-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Regression: Map instances don't expand
        https://bugs.webkit.org/show_bug.cgi?id=143428

        Reviewed by Brian Burg.

        Fix uses of "this" in super() calls. Also fix a style name
        that no longer exists and was intended to be inlined.

        * UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
        (WebInspector.IndexedDatabaseObjectStoreTreeElement):
        * UserInterface/Views/IndexedDatabaseTreeElement.js:
        (WebInspector.IndexedDatabaseTreeElement):
        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        (WebInspector.ObjectTreeMapEntryTreeElement):

2015-04-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: ObjectTree array index hints are clipped when shown in popover
        https://bugs.webkit.org/show_bug.cgi?id=143309

        Reviewed by Brian Burg.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-name):
        Add left margin that equals the width of the expand/collapse icon.

2015-03-31  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: console.error(object) has double disclosure triangles
        https://bugs.webkit.org/show_bug.cgi?id=142069

        Use inline-block instead of "float: left" or "position: absolute" to
        make layout more predictable and easier to understand.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.outline-disclosure, .outline-disclosure ol):
        (.outline-disclosure > li.parent):
        (.outline-disclosure > li.parent::before):
        (.outline-disclosure li.parent): Deleted.
        (.outline-disclosure li.parent::before): Deleted.
        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property > .titles):
        (.object-tree-property > .disclosure-button):
        (.object-tree-property > .icon):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree > :matches(.title, .object-preview)::before):
        (.object-tree:not(.lossless-preview) > :matches(.title, .object-preview)):

2015-03-31  Jono Wells  <jonowells@apple.com>

        Web Inspector: REGRESSION: Filtering no longer works
        https://bugs.webkit.org/show_bug.cgi?id=143099

        Reviewed by Brian Burg.

        Add a check for an empty array of filter functions and return true in this case to ensure text
        and timeline filters work correctly.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstFilterFunctions):

2015-03-31  Commit Queue  <commit-queue@webkit.org>

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

        it crashes all the WebGL tests on the Debug bots (Requested by
        dino on #webkit).

        Reverted changeset:

        "Web Inspector: add 2D/WebGL canvas instrumentation
        infrastructure"
        https://bugs.webkit.org/show_bug.cgi?id=137278
        http://trac.webkit.org/changeset/182186

2015-03-31  Matt Baker  <mattbaker@apple.com>

        Web Inspector: add 2D/WebGL canvas instrumentation infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=137278

        Reviewed by Timothy Hatcher.

        Added models, views, and controller classes for 2D and WebGL canvas inspection. Each canvas is shown in the
        Resources navigation sidebar under its parent frame. Shader programs are displayed as child nodes of
        their respective canvas. Canvases will get an associated content view and details sidebar in a later patch
        (see https://bugs.webkit.org/show_bug.cgi?id=138941).

        Shader programs will get an associated content view for editing shader source in a later patch (see
        https://bugs.webkit.org/show_bug.cgi?id=138593). Individual shaders are not shown in the Resource navigation
        sidebar, and at this time there are no plans to instrument shaders that aren't attached to a program.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector.sidebarPanelForRepresentedObject):
        * UserInterface/Base/Test.js:
        (WebInspector.loaded):
        * UserInterface/Main.html:
        * UserInterface/Test.html:
        Updated for new canvas/shader program types.

        * UserInterface/Controllers/CanvasManager.js: Added.
        (WebInspector.CanvasManager):
        (WebInspector.CanvasManager.prototype.canvasesForFrame):
        (WebInspector.CanvasManager.prototype.canvasAdded.set this):
        (WebInspector.CanvasManager.prototype.canvasAdded):
        (WebInspector.CanvasManager.prototype.canvasRemoved):
        (WebInspector.CanvasManager.programDeleted.get console):
        (WebInspector.CanvasManager.prototype.programCreated.get console):
        (WebInspector.CanvasManager.prototype.programCreated):
        (WebInspector.CanvasManager.prototype._mainResourceDidChange):
        Frontend controller for canvases and their shader programs.

        * UserInterface/Images/Canvas.svg: Added.
        * UserInterface/Images/DocumentGL.png: Added.
        * UserInterface/Images/DocumentGL@2x.png: Added.
        New art for canvas and shader program tree elements.

        * UserInterface/Models/Canvas.js: Added.
        (WebInspector.Canvas):
        (WebInspector.Canvas.prototype.set fromPayload):
        (WebInspector.Canvas.displayNameForContextType):
        (WebInspector.Canvas.resetUniqueDisplayNameNumbers):
        (WebInspector.Canvas.prototype.get id):
        (WebInspector.Canvas.prototype.get parentFrame):
        (WebInspector.Canvas.prototype.get name):
        (WebInspector.Canvas.prototype.get cssCanvas):
        (WebInspector.Canvas.prototype.get contextType):
        (WebInspector.Canvas.prototype.get contextAttributes):
        (WebInspector.Canvas.prototype.get programs):
        (WebInspector.Canvas.prototype.get displayName):
        (WebInspector.Canvas.programForId):
        (WebInspector.Canvas.get programWasCreated.set this):
        (WebInspector.Canvas.prototype.get programWasCreated):
        (WebInspector.Canvas.prototype.programWasDeleted):
        (WebInspector.Canvas.prototype.saveIdentityToCookie):
        Model for DOM or CSS canvas (2D or WebGL).

        * UserInterface/Models/ShaderProgram.js: Added.
        (WebInspector.ShaderProgram):
        (WebInspector.ShaderProgram.prototype.get id):
        (WebInspector.ShaderProgram.prototype.get canvas):
        (WebInspector.ShaderProgram.prototype.get displayName):
        (WebInspector.ShaderProgram.prototype.saveIdentityToCookie):
        (WebInspector.ShaderProgram.prototype.updateCanvas):
        * UserInterface/Models/WebGLContextAttributes.js: Added.
        (WebInspector.WebGLContextAttributes):
        (WebInspector.WebGLContextAttributes.fromPayload):
        (WebInspector.WebGLContextAttributes.prototype.get alpha):
        (WebInspector.WebGLContextAttributes.prototype.get depth):
        (WebInspector.WebGLContextAttributes.prototype.get stencil):
        (WebInspector.WebGLContextAttributes.prototype.get antialias):
        (WebInspector.WebGLContextAttributes.prototype.get premultipliedAlpha):
        (WebInspector.WebGLContextAttributes.prototype.get preserveDrawingBuffer):
        Model for WebGL canvas context attributes.

        * UserInterface/Protocol/CanvasObserver.js: Added.
        (WebInspector.CanvasObserver.prototype.canvasAdded):
        (WebInspector.CanvasObserver.prototype.canvasRemoved):
        (WebInspector.CanvasObserver.prototype.programCreated):
        (WebInspector.CanvasObserver.prototype.programDeleted):
        (WebInspector.CanvasObserver):
        Model for WebGL canvas shader program.

        * UserInterface/Views/CanvasTreeElement.js: Added.
        (WebInspector.CanvasTreeElement.validateRepresentedObject):
        (WebInspector.CanvasTreeElement.countChildren):
        (WebInspector.CanvasTreeElement):
        (WebInspector.CanvasTreeElement.prototype.onexpand):
        (WebInspector.CanvasTreeElement.prototype.oncollapse):
        (WebInspector.CanvasTreeElement.prototype.onpopulate):
        (WebInspector.CanvasTreeElement.prototype._programWasCreated):
        (WebInspector.CanvasTreeElement.prototype._programWasDeleted):
        Folderized tree element for canvases and their child objects (shader programs).

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.prototype.onattach):
        (WebInspector.FrameTreeElement.prototype.ondetach):
        (WebInspector.FrameTreeElement.prototype.onpopulate):
        (WebInspector.FrameTreeElement.prototype._canvasesAvailable):
        (WebInspector.FrameTreeElement.prototype._canvasWasAdded):
        (WebInspector.FrameTreeElement.prototype._canvasWasRemoved):
        Updated to support canvas tree elements.

        * UserInterface/Views/ResourceIcons.css:
        (.canvas-icon .icon):
        (.shader-program-icon .icon):
        Styles for new canvas and shader program icons.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
        Updated for new tree element types.

        * UserInterface/Views/ShaderProgramTreeElement.js: Added.
        (WebInspector.ShaderProgramTreeElement):
        Tree element for shader programs. Shown as children of CanvasTreeElement.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

2015-03-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Regression: null shouldn't be expandable in object outline
        https://bugs.webkit.org/show_bug.cgi?id=143209

        Reviewed by Mark Lam.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
        When creating an object tree or formatted value, choose just a formatted value
        for "null", since it does not have properties.

2015-03-30  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Add more ESLint rules that reflect the current state of the code base
        https://bugs.webkit.org/show_bug.cgi?id=143212

        Reviewed by Timothy Hatcher.

        * .eslintrc:
        Define some utilities as globals.
        Replace "no-comma-dangle" with "comma-dangle". "no-comma-dangle" is deprecated and does not trigger in ESLint v.0.17.1
        Set "new-cap" to 0 due to the usage of "WebInspector.UIString".
        Disable "no-redeclare" for now and enable it back as soon as block scoped `let` is used.
        Disable "dot-notation", "no-shadow" and "no-use-before-define" due to a lot of hits.
        Disable "no-inner-declarations" as this is a common pattern to save memory.
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        * UserInterface/Models/SourceCodeLocation.js:
        It's not necessary to initialize x to undefined.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        * UserInterface/Views/TextEditor.js:
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        Remove unused variable x.
        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        * UserInterface/Models/PropertyPath.js:
        * UserInterface/Views/RadioButtonNavigationItem.js:
        * UserInterface/Views/ReplayDashboardView.js:
        * UserInterface/Models/ScriptSyntaxTree.js:
        * UserInterface/Views/SourceCodeTextEditor.js:
        * UserInterface/Views/SourceCodeTreeElement.js:
        Remove trailing and unexpected whitespace.
        * UserInterface/Views/ProbeSetDataGrid.js:
        * UserInterface/Views/TimelineRuler.js:
        Add missing semicolon.
        * UserInterface/Views/TimelineDataGrid.js:
        * UserInterface/Views/TimelineRecordFrame.js:
        Add missing var statement.
        * UserInterface/Views/TypeTokenView.js:
        Remove unnecessary `bind`.

2015-03-28  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: ES6: Better support for Symbol types in Type Profiler
        https://bugs.webkit.org/show_bug.cgi?id=141257

        Reviewed by Joseph Pecoraro.

        The Web Inspector's visualization of JSC's type profiler
        should have support for the Symbol type.

        * UserInterface/Models/TypeSet.js:
        (WebInspector.TypeSet):
        (WebInspector.TypeSet.prototype.get primitiveTypeNames):
        * UserInterface/Views/TypeTokenView.css:
        TypeTokenView will display Symbol type tokens using the same color that 
        Symbol values are displayed as formatted values.

        (.type-token-symbol):
        * UserInterface/Views/TypeTokenView.js:
        (WebInspector.TypeTokenView.prototype._displayTypeName):
        (WebInspector.TypeTokenView):

2015-03-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt Array.prototype.includes and String.prototype.includes
        https://bugs.webkit.org/show_bug.cgi?id=143176

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js:
        Remove our custom implementations of Array/String contains functions.

        * UserInterface/Base/Main.js:
        (WebInspector._updateContentViewForCurrentNavigationSidebar):
        (WebInspector._contentBrowserCurrentContentViewDidChange):
        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions.):
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype._extraDomainsActivated):
        (WebInspector.FrameResourceManager):
        * UserInterface/Controllers/LayerTreeManager.js:
        (WebInspector.LayerTreeManager.prototype.layerTreeMutations):
        * UserInterface/Controllers/StorageManager.js:
        (WebInspector.StorageManager.prototype._extraDomainsActivated):
        (WebInspector.StorageManager):
        * UserInterface/Models/Branch.js:
        (WebInspector.Branch.prototype.addRevision):
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.forProperty):
        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.get matchedSelectors):
        * UserInterface/Models/CSSStyleDeclaration.js:
        * UserInterface/Models/Color.js:
        (WebInspector.Color.fromString):
        * UserInterface/Models/DOMNode.js:
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._updatePseudoClassCheckboxes):
        (WebInspector.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._updateContentViewSelectionPathNavigationItem):
        * UserInterface/Views/DOMTreeElement.js:
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._resourceAdded):
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.addClassName):
        (WebInspector.GeneralTreeElement.prototype.removeClassName):
        * UserInterface/Views/LegacyConsoleMessageImpl.js:
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._updateMessagesSelection):
        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype._findNavigationItem):
        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.findSidebarPanel):
        Replace contains with includes where appropriate.

2015-03-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Tweak node styles in ObjectTreeView
        https://bugs.webkit.org/show_bug.cgi?id=143179

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-group-messages .outline-disclosure.single-node li):
        * UserInterface/Views/DOMTreeOutline.css:
        (.dom-tree-outline.single-node li):
        This style makes sense as a generic DOMTreeOutline style.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-node > .dom-tree-outline):
        (.formatted-node > .dom-tree-outline ol):
        (.formatted-node > .dom-tree-outline li.hovered:not(.selected) .selection):
        Style for nodes in ObjectTreeView.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-value .formatted-node .dom-tree-outline):
        Styles for node in Array value.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNode):
        Address the FIXME.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: TypeProfiler doesn't work on files with ES6 Class Syntax
        https://bugs.webkit.org/show_bug.cgi?id=143169

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):
        Add basic support for Esprima's ES6 Class/Method/Spread nodes.
        There are more ES6 features that should be covered, but this
        covers all the features we use in Web Inspector source, so
        Type Profiling can work with our own source.

        Treat Methods like getters / setters right now because their
        syntax is very similiar to getters/setters. There is a bug
        handling generic ES6 cleanup to better name things.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught TDZ Exception with Type Profiler
        https://bugs.webkit.org/show_bug.cgi?id=143167

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TypePropertiesSection.js:
        (WebInspector.TypePropertyTreeElement):
        Avoid TDZ issue by not using "this" before "super".

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):
        Better handle unsupported node types by returning null and avoiding an exception.

        * UserInterface/Views/SourceCodeTextEditor.js:
        Fix an issue I saw once where the sourceCode was a Script itself.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception while debugging, after performSearch callback line does not exists
        https://bugs.webkit.org/show_bug.cgi?id=143172

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
        (WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
        Gracefully handle if the line does not exist.

2015-03-27  Ryosuke Niwa  <rniwa@webkit.org>

        ES6 Classes: Runtime error in JIT'd class calling super() with arguments and superclass has default constructor
        https://bugs.webkit.org/show_bug.cgi?id=142862

        Reviewed by Benjamin Poulain.

        Removed the workaround for the bug since it has been fixed by r181993.

        * UserInterface/Base/Object.js:
        * UserInterface/Models/DebuggerDashboard.js:
        * UserInterface/Models/NetworkTimeline.js:
        * UserInterface/Models/ReplayDashboard.js:
        * UserInterface/Models/Revision.js:

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Setter Icon for ObjectTreeView
        https://bugs.webkit.org/show_bug.cgi?id=143129

        Reviewed by Timothy Hatcher.

        * UserInterface/Images/Pencil.svg: Added.
        New icon used to indicate setter properties.

        * Localizations/en.lproj/localizedStrings.js:
        Remove "Read only" and replace with "Setter".

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeArrayIndexTreeElement):
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
        Update cases that created setter / getter elements.
        
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createInteractiveGetterElement): Deleted.
        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property :matches(.getter, .setter)):
        (.object-tree-property .spacer):
        (.object-tree-property .getter):
        (.object-tree-property .setter):
        (.object-tree-property .getter + .setter):
        New setter element and styles. Setters are always non-interactable right now.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exceptions with Context Menus
        https://bugs.webkit.org/show_bug.cgi?id=143162

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.contextMenuCleared):

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Disable editing in Metrics section while it is not working
        https://bugs.webkit.org/show_bug.cgi?id=143165

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement):
        (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput):
        Disable double click to edit while it is not working. The value setter
        and add methods no longer exist.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exceptions evaluating code while paused
        https://bugs.webkit.org/show_bug.cgi?id=143163

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame.prototype.collectScopeChainVariableNames):
        We define a property named "valueForCaseInsensitiveKey" on Object.prototype
        that is readonly. So we should avoid Object.prototype when building our
        result list. This should probably move to a Map object eventually.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused testing properties
        https://bugs.webkit.org/show_bug.cgi?id=143156

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LegacyConsoleMessageImpl.js:
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatMessage):
        * UserInterface/Views/Section.js:
        (WebInspector.Section.prototype.get subtitleAsTextForTest): Deleted.

2015-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exception: TypeError: Attempted to assign to readonly - DOMNodeDetailsSidebarPanel.js
        https://bugs.webkit.org/show_bug.cgi?id=143139

        Reviewed by Timothy Hatcher.

        DataGridNodes do not have a selectable setter. TreeElements do.
        DataGridNodes are always selectable. Match current behavior by
        removing all instances of attempting to set the selectability
        which would, under strict mode, result in an error.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype._populateDataGrid):
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype._rebuildTable):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._createAttributesDataGrid):
        (WebInspector.DOMNodeDetailsSidebarPanel):
        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView.prototype.reset):
        * UserInterface/Views/DataGrid.js:

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert more misc View classes to ES6
        https://bugs.webkit.org/show_bug.cgi?id=143128

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CompletionSuggestionsView.js:
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        * UserInterface/Views/DashboardContainerView.js:
        * UserInterface/Views/DashboardView.js:
        * UserInterface/Views/DebuggerDashboardView.js:
        * UserInterface/Views/DefaultDashboardView.js:
        * UserInterface/Views/FilterBarButton.js:
        * UserInterface/Views/MetricsStyleDetailsPanel.js:
        * UserInterface/Views/ObjectPreviewView.js:
        * UserInterface/Views/ObjectTreeView.js:
        * UserInterface/Views/QuickConsole.js:
        * UserInterface/Views/ReplayDashboardView.js:
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        * UserInterface/Views/StyleDetailsPanel.js:
        Converted to ES6 classes.

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert TextEditor classes to ES6
        https://bugs.webkit.org/show_bug.cgi?id=143127

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        Removed a comment about const, we can't use it in strict mode / classes.

        * UserInterface/Views/SourceCodeTextEditor.js:
        * UserInterface/Views/TextEditor.js:
        Converted to ES6 classes.

2015-03-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: clicking on console record while REPL is focused does not select a new record
        https://bugs.webkit.org/show_bug.cgi?id=142171

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._mousedown):

2015-03-26  Andres Gomez  <agomez@igalia.com>

        [GTK] Web Inspector: New Images for Console Types
        https://bugs.webkit.org/show_bug.cgi?id=142301

        Reviewed by Joseph Pecoraro.

        Add more free icons and for the Web Inspector in GTK+.

        * UserInterface/Images/gtk/Eye.svg: Added.
        * UserInterface/Images/gtk/Frames.png: Added.
        * UserInterface/Images/gtk/Frames@2x.png: Added.
        * UserInterface/Images/gtk/FramesLarge.png: Added.
        * UserInterface/Images/gtk/FramesLarge@2x.png: Added.
        * UserInterface/Images/gtk/Reload.svg:
        * UserInterface/Images/gtk/ReloadFull.svg: Added.
        * UserInterface/Images/gtk/TypeBoolean.svg: Added.
        * UserInterface/Images/gtk/TypeNull.svg: Added.
        * UserInterface/Images/gtk/TypeNumber.svg: Added.
        * UserInterface/Images/gtk/TypeObject.svg: Added.
        * UserInterface/Images/gtk/TypeRegex.svg: Added.
        * UserInterface/Images/gtk/TypeString.svg: Added.
        * UserInterface/Images/gtk/TypeSymbol.svg: Added.
        * UserInterface/Images/gtk/TypeUndefined.svg: Added.

2015-03-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Provide a better view for Classes in the console
        https://bugs.webkit.org/show_bug.cgi?id=142999

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.fromPrimitiveValue):
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.prototype.get classPrototype):
        (WebInspector.RemoteObject.prototype.isClass):
        Update our RemoteObject model object for the new subtype
        and its unique properties.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):
        (WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
        Better handle "class", as it is a new function subtype.

        * UserInterface/Views/LegacyConsoleMessageImpl.js:
        (WebInspector.LegacyConsoleMessageImpl):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsObject):
        Format a "class" with ObjectTreeView.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property .getter.disabled):
        (.object-tree-property .getter:not(.disabled):hover):
        (.object-tree-property .getter:hover): Deleted.
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        In ClassAPI mode, you cannot invoke a getter since we don't have
        an instance to invoke it on. So disable interactivity with getters.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        Update the modes to include an API mode for instances and classes.

        (WebInspector.ObjectTreeView.defaultModeForObject):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject):
        Simplify ObjectTree construction to automatically determine mode based
        on the RemoteObject that was provided.

        * Localizations/en.lproj/localizedStrings.js:
        "Getter" tooltip.

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert TreeElement classes to ES6
        https://bugs.webkit.org/show_bug.cgi?id=143111

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
        * UserInterface/Views/ApplicationCacheManifestTreeElement.js:
        * UserInterface/Views/BreakpointTreeElement.js:
        * UserInterface/Views/CallFrameTreeElement.js:
        * UserInterface/Views/ContentFlowTreeElement.js:
        * UserInterface/Views/CookieStorageTreeElement.js:
        * UserInterface/Views/DOMStorageTreeElement.js:
        * UserInterface/Views/DOMTreeElement.js:
        * UserInterface/Views/DOMTreeOutline.js:
        * UserInterface/Views/DatabaseHostTreeElement.js:
        * UserInterface/Views/DatabaseTableTreeElement.js:
        * UserInterface/Views/DatabaseTreeElement.js:
        * UserInterface/Views/FolderTreeElement.js:
        * UserInterface/Views/FolderizedTreeElement.js:
        * UserInterface/Views/FrameTreeElement.js:
        * UserInterface/Views/GeneralTreeElement.js:
        * UserInterface/Views/IndexedDatabaseHostTreeElement.js:
        * UserInterface/Views/IndexedDatabaseObjectStoreIndexTreeElement.js:
        * UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
        * UserInterface/Views/IndexedDatabaseTreeElement.js:
        * UserInterface/Views/LegacyConsoleMessageImpl.js:
        * UserInterface/Views/LogTreeElement.js:
        * UserInterface/Views/NavigationSidebarPanel.js:
        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        * UserInterface/Views/ObjectTreeSetIndexTreeElement.js:
        * UserInterface/Views/ObjectTreeView.js:
        * UserInterface/Views/ProfileNodeTreeElement.js:
        * UserInterface/Views/PropertiesSection.js:
        * UserInterface/Views/ResourceTreeElement.js:
        * UserInterface/Views/ScriptTreeElement.js:
        * UserInterface/Views/SearchResultTreeElement.js:
        * UserInterface/Views/SourceCodeTimelineTreeElement.js:
        * UserInterface/Views/SourceCodeTreeElement.js:
        * UserInterface/Views/SourceMapResourceTreeElement.js:
        * UserInterface/Views/StorageTreeElement.js:
        * UserInterface/Views/TimelineDataGrid.js:
        * UserInterface/Views/TimelineRecordTreeElement.js:
        * UserInterface/Views/TreeElementStatusButton.js:
        * UserInterface/Views/TreeOutline.js:
        * UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
        * UserInterface/Views/TypePropertiesSection.js:
        Converted to ES6 classes where possible.

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert sidebar classes to ES6
        https://bugs.webkit.org/show_bug.cgi?id=143108

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/KeyboardShortcut.js:
        (WebInspector.KeyboardShortcut._handleKeyDown): Continue if callback is null.
        (WebInspector.KeyboardShortcut.prototype.set callback): Added.

        * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        * UserInterface/Views/DOMDetailsSidebarPanel.js:
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        * UserInterface/Views/DebuggerSidebarPanel.js:
        * UserInterface/Views/DetailsSidebarPanel.js:
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        * UserInterface/Views/NavigationSidebarPanel.js:
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        * UserInterface/Views/ResourceSidebarPanel.js:
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        * UserInterface/Views/Sidebar.js:
        * UserInterface/Views/SidebarPanel.js:
        * UserInterface/Views/TimelineSidebarPanel.js:
        Converted to ES6 classes.

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert some View classes to ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=143107

        Reviewed by Joseph Pecoraro.

        * UserInterface/Protocol/InspectorBackend.js:
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.contextMenuItemSelected): Updated to the right function path.
        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        * UserInterface/Views/BreakpointActionView.js:
        * UserInterface/Views/CodeMirrorAdditions.js:
        * UserInterface/Views/ColorPicker.js:
        * UserInterface/Views/ColorWheel.js:
        * UserInterface/Views/ContextMenu.js:
        * UserInterface/Views/DOMTreeElementPathComponent.js:
        * UserInterface/Views/DetailsSection.js:
        * UserInterface/Views/DetailsSectionDataGridRow.js:
        * UserInterface/Views/DetailsSectionGroup.js:
        * UserInterface/Views/DetailsSectionPropertiesRow.js:
        * UserInterface/Views/DetailsSectionRow.js:
        * UserInterface/Views/DetailsSectionSimpleRow.js:
        * UserInterface/Views/DetailsSectionTextRow.js:
        * UserInterface/Views/EditingSupport.js:
        * UserInterface/Views/EventListenerSection.js:
        * UserInterface/Views/EventListenerSectionGroup.js:
        * UserInterface/Views/FilterBar.js:
        * UserInterface/Views/FindBanner.js:
        * UserInterface/Views/GeneralTreeElementPathComponent.js:
        * UserInterface/Views/GoToLineDialog.js:
        * UserInterface/Views/GradientSlider.js:
        * UserInterface/Views/HierarchicalPathComponent.js:
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        * UserInterface/Views/HoverMenu.js:
        * UserInterface/Views/Popover.js:
        * UserInterface/Views/ProbeSetDetailsSection.js:
        * UserInterface/Views/ResourceTimelineDataGridNodePathComponent.js:
        * UserInterface/Views/SearchBar.js:
        * UserInterface/Views/Slider.js:
        Converted to ES6 classes.

2015-03-26  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Convert Base and Protocol files to ES6 classes
        https://bugs.webkit.org/show_bug.cgi?id=143106

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/EventListener.js:
        * UserInterface/Base/EventListenerSet.js:
        * UserInterface/Protocol/ApplicationCacheObserver.js:
        * UserInterface/Protocol/CSSObserver.js:
        * UserInterface/Protocol/ConsoleObserver.js:
        * UserInterface/Protocol/DOMObserver.js:
        * UserInterface/Protocol/DOMStorageObserver.js:
        * UserInterface/Protocol/DatabaseObserver.js:
        * UserInterface/Protocol/DebuggerObserver.js:
        * UserInterface/Protocol/InspectorBackend.js:
        * UserInterface/Protocol/InspectorObserver.js:
        * UserInterface/Protocol/LayerTreeObserver.js:
        * UserInterface/Protocol/MessageDispatcher.js:
        * UserInterface/Protocol/NetworkObserver.js:
        * UserInterface/Protocol/PageObserver.js:
        * UserInterface/Protocol/RemoteObject.js:
        * UserInterface/Protocol/ReplayObserver.js:
        * UserInterface/Protocol/RuntimeObserver.js:
        * UserInterface/Protocol/TimelineObserver.js:
        Converted to ES6 classes where possible.

2015-03-25  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Add ESLint "Disallow Undeclared Variables" rule and enable ES6 env
        https://bugs.webkit.org/show_bug.cgi?id=143062

        Reviewed by Joseph Pecoraro.

        ESLint: Add support for es6 environment and "no-undef" rule which disallows
        use of undeclared variables unless mentioned in a /*global */ block.

        * .eslintrc:

2015-03-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: console.table with source code location look poor
        https://bugs.webkit.org/show_bug.cgi?id=142068

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LegacyConsoleMessageImpl.js:
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):
        Remove dataGridContainer as it is an unnecessary span element.
        * UserInterface/Views/LogContentView.css:
        (.console-messages .data-grid):

2015-03-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: IndexedDB / Databases ContentViews should have refresh button
        https://bugs.webkit.org/show_bug.cgi?id=142996

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        Remove unused strings.

        * UserInterface/Images/ReloadFull.svg: Added.
        This is the same as Reload.svg but adjusted to fill the viewbox edge to edge.
        The only change is to the viewbox.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.release):
        Some clients would call release not knowing if this was an object or not.
        Act gracefully in the case that this was not an object that needs a
        remote release.

        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView):
        (WebInspector.DatabaseTableContentView.prototype.get navigationItems):
        (WebInspector.DatabaseTableContentView.prototype._queryError):
        (WebInspector.DatabaseTableContentView.prototype._refreshButtonClicked):
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        (WebInspector.IndexedDatabaseObjectStoreContentView):
        (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.get navigationItems):
        (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._fetchMoreData):
        (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._refreshButtonClicked):
        Give the storage content views a refresh button to reload the content.

2015-03-24  Joseph Pecoraro  <pecoraro@apple.com>

        Setter should have a single formal parameter, Getter no parameters
        https://bugs.webkit.org/show_bug.cgi?id=142903

        Reviewed by Geoffrey Garen.

        * UserInterface/Views/GradientSlider.js:
        (WebInspector.GradientSliderKnob.prototype.get wellColor):
        Fix a getter that was incorrectly taking a parameter.

2015-03-24  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: REGRESSION (r179286): ReferenceError: Can't find variable: selector
        https://bugs.webkit.org/show_bug.cgi?id=143022

        Reviewed by Timothy Hatcher.

        Fix a regression where a missing variable statement causes a ReferenceError.

        * UserInterface/Models/DOMNodeStyles.js:

2015-03-24  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Adopt ES6 Class Syntax for CSSStyleDeclarationTextEditor
        https://bugs.webkit.org/show_bug.cgi?id=143019

        Reviewed by Timothy Hatcher.

        - Convert CSSStyleDeclarationTextEditor to use class syntax
        - Convert constructor functions to constructor methods
        - Convert "constructor.method" to class static methods where possible
        - Convert all methods to method syntax, eliminate commas between methods
        - Convert all superclass calls in classes to use "super"
        - Removed FIXME from WebInspector.Object subclasses, added calls to super.
        - Fixed strict mode issues now that classes enforce strict mode (see below).

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        Many function declarations modified.

2015-03-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Workaround issue causing uncaught exception in Inspector
        https://bugs.webkit.org/show_bug.cgi?id=143015

        Reviewed by Timothy Hatcher.

        Workaround <https://webkit.org/b/143012> and avoid early returning in constructors.

        * UserInterface/Controllers/ReplayManager.js:
        (WebInspector.ReplayManager.class.ReplayManager):

2015-03-06  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: unify resizer implementations used by DataGrid and Sidebar
        https://bugs.webkit.org/show_bug.cgi?id=142407

        Reviewed by Timothy Hatcher.

        Both of these implementations do the same thing slightly differently. Unify the code
        and use the "glass pane" technique to preserve cursor while dragging over links or text.

        This patch implements vertical and horizontal rule orientations. Further refactorings
        to use this class may need to add "Indeterminate" orientation to support moving the inspector
        window by its fake toolbar element.

        * UserInterface/Main.html:
        * UserInterface/Views/DataGrid.css:
        (.data-grid .resizer):
        (.data-grid-resizer): Deleted.
        * UserInterface/Views/DataGrid.js: Store Resizer instances rather than resizer elements.
        Use symbols to secretly store neighbor column ids on the resizer objects. Stop using
        WebInspector.elementDragStart, as I would like to deprecate it in favor of Resizer instances.

        (WebInspector.DataGrid):
        (WebInspector.DataGrid.prototype._positionResizerElements):
        (WebInspector.DataGrid.prototype.resizerDragStarted):
        (WebInspector.DataGrid.prototype.resizerDragging):
        (WebInspector.DataGrid.prototype.resizerDragEnded):
        (WebInspector.DataGrid.prototype._startResizerDragging): Deleted.
        (WebInspector.DataGrid.prototype._resizerDragging): Deleted.
        (WebInspector.DataGrid.prototype._endResizerDragging): Deleted.
        * UserInterface/Views/Resizer.css:
        (.resizer):
        (.resizer.vertical-rule):
        (.resizer.horizontal-rule):
        (.glass-pane-for-drag):
        * UserInterface/Views/Resizer.js: Added.
        (WebInspector.Resizer):
        (WebInspector.Resizer.prototype.get element):
        (WebInspector.Resizer.prototype.get orientation):
        (WebInspector.Resizer.prototype.get initialPosition):
        (WebInspector.Resizer.prototype._currentPosition):
        (WebInspector.Resizer.prototype._resizerMouseDown):
        (WebInspector.Resizer.prototype._resizerMouseMoved):
        (WebInspector.Resizer.prototype._resizerMouseUp):
        * UserInterface/Views/Sidebar.css:
        (.sidebar > .resizer): Deleted.
        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar):
        (WebInspector.Sidebar.prototype.resizerDragStarted):
        (WebInspector.Sidebar.prototype.resizerDragging):
        (WebInspector.Sidebar.prototype.resizerDragEnded):
        (WebInspector.Sidebar.prototype._navigationItemSelected):
        (WebInspector.Sidebar.prototype._resizerMouseDown): Deleted.
        (WebInspector.Sidebar.prototype._resizerMouseMoved): Deleted.
        (WebInspector.Sidebar.prototype._resizerMouseUp): Deleted.

2015-03-17  Jono Wells  <jonowells@apple.com>

        Web Inspector: Debugger sidebar should have a filter button for breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=142779

        Reviewed by Timothy Hatcher.

        Add the infrastructure for activation filter buttons that can appear next to the text filters at the bottom
        of any navigation sidebar panel. These filter bar buttons have defined within them a function that returns
        a boolean value that indicates whether the input, typically a tree element, should be filtered or not.

        This infrastructure is then used to create a filter for the debugger sidebar that, when applied, only shows
        scripts that have breakpoints set on them.

        * Localizations/en.lproj/localizedStrings.js: Updated.
        * UserInterface/Main.html: Files added.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.showResourcesWithChildrenOnlyFilterFunction):
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint): Drive-by fix.
        Add filter button to filter bar.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar > .navigation-bar > .item):
        Style filter button.

        * UserInterface/Views/FilterBar.js:
        (WebInspector.FilterBar):
        (WebInspector.FilterBar.prototype.get filters):
        (WebInspector.FilterBar.prototype.set filters):
        (WebInspector.FilterBar.prototype.hasActiveFilters):
        (WebInspector.FilterBar.prototype._handleFilterChanged):
        (WebInspector.FilterBar.prototype._inputFieldChanged): Deleted.
        Create space for filter bar buttons and set up event handlers to deal with them.

        * UserInterface/Views/FilterBarButton.js: Copied from Source/WebInspectorUI/UserInterface/Views/FilterBar.css.
        (WebInspector.FilterBarButton):
        (WebInspector.FilterBarButton.prototype.get filterFunction):
        (WebInspector.FilterBarButton.prototype.toggle):
        Create class for a filter bar button that stores a filter function.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        (WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstFilterFunctions):
        (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
        (WebInspector.NavigationSidebarPanel.prototype._filterDidChange):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        (WebInspector.NavigationSidebarPanel.prototype._textFilterDidChange): Deleted.
        Add functionality to support button filters and process their corresponding functions correctly when filtering.

2015-03-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Adopt ES6 Class Syntax for all Controller Objects
        https://bugs.webkit.org/show_bug.cgi?id=142890

        Reviewed by Joseph Pecoraro.

        - Convert all UserInterface/Controllers objects to classes
        - Convert constructor functions to constructor methods
        - Convert "constructor.method" to class static methods where possible
        - Convert all methods to method syntax, eliminate commas between methods
        - Convert all superclass calls in classes to use "super"
        - Removed FIXME from WebInspector.Object subclasses, added calls to super.
        - Fixed strict mode issues now that classes enforce strict mode (see below).

        * Tools/PrettyPrinting/Formatter.js:
        * Tools/PrettyPrinting/FormatterContentBuilder.js:
        Updated to match corresponding files in UserInterface/Controllers.

        * UserInterface/Controllers/*.js:
        Many files modified mostly mechanically (regex find-replace).

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        * UserInterface/Controllers/FormatterContentBuilder.js:
        Replaced const usage with var. Use of const is prohibited in strict mode, which is implicit within a class.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        * UserInterface/Controllers/DOMTreeManager.js:
        Moved function declarations out of if statements. Strict mode does not allow function declarations in a lexically nested statement.

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

        Web Inspector: Fast typing lags in the Styles sidebar or Console
        https://bugs.webkit.org/show_bug.cgi?id=142919

        Asynchronous autocomplete causes a race condition in CodeMirror,
        which results in skipped characters in while typing. Completing immediately
        fixes the issues.

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
        (WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
        (WebInspector.CodeMirrorCompletionController.prototype.):

2015-03-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt ES6 Class Syntax for all Model Objects
        https://bugs.webkit.org/show_bug.cgi?id=142858

        Reviewed by Timothy Hatcher.

          - Convert WebInspector.Object to a class
          - Convert all UserInterface/Models objects to classes
          - Convert constructor functions to constructor methods
          - Convert "constructor.method" to class static methods where possible
          - Convert all methods to method syntax, eliminate commas between methods
          - Convert all superclass calls in classes to use "super"
          - Workaround <https://webkit.org/b/142862> and add empty constructors
          - Added "deprecated" prefix to addConstructorFunctions, since it is not needed with classes
          - Added many missing calls to super in constructors
          - Added FIXME to WebInspector.Object subclasses not yet moved to classes.
          - Cleaned up SourceMap global properties, moved to constructor instead of prototype
          - Cleaned up Timeline factory constructor to static "create" factory method
          - Fixed any style issues noticed in the mass edit
          - Fixed strict mode issues now that classes enforce strict mode
              - RunLoopTimelineRecord.js was missing a `var` for a local variable
              - "const" is not allowed, converted to "var"
              - "arguments.callee" is not allowed in strict mode

        * UserInterface/**/*.js:
        Many files modified mostly mechanically.

2015-03-19  Jono Wells  <jonowells@apple.com>

        Web Inspector: Debugger sidebar header should say "Scripts" instead of "Breakpoints", appear only on pause
        https://bugs.webkit.org/show_bug.cgi?id=142847

        Reviewed by Timothy Hatcher.

        Add a `paused` class on the debugger sidebar panel. Use that class to adjust the sidebar styles so that, when
        the debugger is not paused: there is no header for the scripts section, there is no border beneath the scripts
        section, and the scripts section cannot be collapsed (which could be done while the debugger is paused). The
        header has changed to say "Scripts" instead of "Breakpoints" when it is showing.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section.scripts):
        (.sidebar > .panel.navigation.debugger .details-section.scripts .header):
        (.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content):
        (.sidebar > .panel.navigation.debugger.paused .details-section.scripts):
        (.sidebar > .panel.navigation.debugger.paused .details-section.scripts .header):
        (.sidebar > .panel.navigation.debugger.paused .details-section.scripts.collapsed > .content):
        Adjust styles to hide header and border.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
        Add a `paused` class to the debugger sidebar when it is paused.

2015-03-19  Jono Wells  <jonowells@apple.com>

        Web Inspector: FilterBar for debugger sidebar hides breakpoints for displayed resources
        https://bugs.webkit.org/show_bug.cgi?id=142777

        Reviewed by Brian Burg.

        Typing into the text input on the filter bar for the debugger sidebar no longer incorrectly hides the
        breakpoints for scripts that match the text input.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.get filterableData): Added.

2015-03-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Replace last use of ObjectPropertiesSection with ObjectTreeView
        https://bugs.webkit.org/show_bug.cgi?id=142834

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties):
        Use properties only ObjectTreeView instead of ObjectPropertiesSection.
        This doesn't fix the functionality issues, but fixes the appearance.

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .content > .group:first-child > .row.simple:first-child > *): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group:first-child > .row.simple:first-child > *): Deleted.
        (.details-section > .content > .group > .row.properties:not(.empty)): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group > .row.properties:not(.empty)): Deleted.
        Re-add back the small padding at the top of sections. This actually
        broke padding in a few sections (Event Listeners) at the expense
        of eliminating a few pixels of whitespace at the top of other sections.
        We should focus on addressing the extra whitespace separately.

        * UserInterface/Main.html:
        * UserInterface/Views/ObjectPropertiesSection.js: Removed.
        * UserInterface/Views/TypePropertiesSection.js:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        Remove new unused class.

2015-03-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Debugger Popovers and Probes should use FormattedValue/ObjectTreeView instead of Custom/ObjectPropertiesSection
        https://bugs.webkit.org/show_bug.cgi?id=142830

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ProbeSetDataGrid.css:
        (.details-section.probe-set .data-grid .object-tree > :matches(.title, .object-preview)::before):
        Another line-height fix for object tree disclosure triangles.

        * UserInterface/Views/ProbeSetDataGridNode.js:
        (WebInspector.ProbeSetDataGridNode.prototype.createCellContent):
        Create an ObjectTree / FormattedValue for the RemoteObject.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.popover .debugger-popover-content > .title):
        (.popover .debugger-popover-content > .body):
        (.popover .debugger-popover-content.function > .body):
        Be more specific and don't accidentally style ".title" within the body.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject):
        Show a properties only ObjectTree instead of an ObjectPropertiesSection.

        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForString): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForRegExp): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForNumber): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForBoolean): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForNull): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForUndefined): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverWithFormattedValue):
        Reduce most of these to a single popover for formatted values.

2015-03-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Scopes sidebar should use new ObjectTreeView and not ObjectPropertiesSection
        https://bugs.webkit.org/show_bug.cgi?id=142808

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/PropertyPath.js:
        (WebInspector.PropertyPath):
        (WebInspector.PropertyPath.emptyPropertyPathForScope):
        Allow a special property empty path for "Scopes". This way for a
        "<scopeObject>.property" we can show just the tooltip "property".

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree.properties-only > :matches(.title, .object-preview)):
        (.object-tree.properties-only .object-tree-outline):
        (.object-tree.properties-only .object-tree-property .property-name):
        Tweak styles for only properties view, which won't have a top-level
        preview and doesn't fade out enumerable properties.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype.get treeOutline):
        Access the TreeOutline.

        (WebInspector.ObjectTreeView.prototype.showOnlyProperties):
        Properties only view modifies the display slightly.

        (WebInspector.ObjectTreeView.prototype.appendExtraPropertyDescriptor):
        (WebInspector.ObjectTreeView.prototype._updateProperties):
        Allow the client to add its own property descriptors to display
        as a property in this ObjectTreeView.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype.refresh):
        Switch to using an ObjectTreeView.

        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._propertyPathIdentifierForTreeElement):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeAddHandler):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeExpandHandler):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeCollapseHandler):
        Keep track of what properties were expanded so we can auto-expand
        them again when the sidebar refreshes.

        * UserInterface/Main.html:
        * UserInterface/Views/ScopeVariableTreeElement.js: Removed.
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        Remove the now unused ScopeVariableTreeElement.js.

2015-03-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Debugger Sidebar Icons Misaligned
        https://bugs.webkit.org/show_bug.cgi?id=142654

        Reviewed by Timothy Hatcher.

        The debugger sidebar content was accidentally 1px too small. The
        TreeOutline being inside of a .detail-section was getting a smaller
        font-size. We should just have the normal font-size for the
        debugger navigation sidebar. This matches the Resources sidebar
        in the TreeOutline, and icons line up better.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section):

2015-03-17  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: Removal of multiline completion hint broken in Details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=142796

        Reviewed by Joseph Pecoraro.

        Prioritize CodeMirrorCompletionController over CSSStyleDeclarationTextEditor.
        Both classes control the current CodeMirror instance of the Details Sidebar.
        This change prevents possible race conditions during complete or delete-complete phases,
        especially during operations on multiple styles in one line.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):

2015-03-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Show rendering frames (and FPS) in Layout and Rendering timeline
        https://bugs.webkit.org/show_bug.cgi?id=142029

        Reviewed by Timothy Hatcher.

        Add UI for showing runloop records and their child records as a frame histogram,
        with the recording time on the x-axis and the frame duration on the y-axis. Each frame
        is comprised of colored regions representing the time spent in various activities (script,
        layout, etc).

        Eventually the Frames timeline will replace the Layout & Rendering timeline. Until the views
        for the new timeline are finalized the Layout & Rendering timeline will remain in place.

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

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype.eventRecorded):
        (WebInspector.TimelineManager.prototype.pageDidLoad):
        (WebInspector.TimelineManager.prototype._processNestedRecords):
        (WebInspector.TimelineManager.prototype._processRecord):
        (WebInspector.TimelineManager.prototype._processEvent):
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        (WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Deleted.
        Added support for new runloop record type and nested record handling.

        * UserInterface/Images/Frames.png: Added.
        * UserInterface/Images/Frames@2x.png: Added.
        * UserInterface/Images/FramesLarge.png: Added.
        * UserInterface/Images/FramesLarge@2x.png: Added.
        New images for runloop timeline overview graph and runloop tree records.

        * UserInterface/Models/RunLoopTimelineRecord.js: Added.
        (WebInspector.RunLoopTimelineRecord):
        (WebInspector.RunLoopTimelineRecord.prototype.get children):
        (WebInspector.RunLoopTimelineRecord.prototype.get durationRemainder):
        (WebInspector.RunLoopTimelineRecord.prototype.durationForRecords.get var):
        Extends TimelineRecord to add child records and subframe duration details.

        * UserInterface/Models/Timeline.js:
        (WebInspector.Timeline.prototype.get displayName):
        (WebInspector.Timeline.prototype.get iconClassName):
        New UI strings and icons.

        * UserInterface/Models/TimelineRecord.js:
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
        * UserInterface/Views/TimelineRecordTreeElement.js:
        (WebInspector.TimelineRecordTreeElement):
        Added support for new runloop record type.

        * UserInterface/Views/RunLoopTimelineOverviewGraph.css: Added.
        (.timeline-overview-graph.runloop > .divider):
        (.timeline-overview-graph.runloop > .divider > span):
        New styles for runloop timeline graph.

        * UserInterface/Views/RunLoopTimelineOverviewGraph.js: Added.
        (WebInspector.RunLoopTimelineOverviewGraph):
        (WebInspector.RunLoopTimelineOverviewGraph.prototype.updateLayout.createFrame):
        (WebInspector.RunLoopTimelineOverviewGraph.prototype.get graphHeightSeconds.this):
        (WebInspector.RunLoopTimelineOverviewGraph.prototype.get graphHeightSeconds):
        (WebInspector.RunLoopTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition.get if):
        New overview graph for displaying TimelineRecordFrames and horizontal frame budget dividers.

        * UserInterface/Views/TimelineIcons.css:
        (.runloop-icon .icon):
        (.runloop-icon.large .icon):
        (.runloop-record .icon):
        * UserInterface/Views/TimelineSidebarPanel.js:
        New runloop icon styles.

        * UserInterface/Views/TimelineOverviewGraph.js:
        (WebInspector.TimelineOverviewGraph):
        Updated factory to support creation of the new overview graph.

        * UserInterface/Views/TimelineRecordFrame.css: Added.
        (.timeline-record-frame):
        (.timeline-record-frame > .frame):
        (.timeline-record-frame > .dropped):
        (.timeline-record-frame > .frame > .duration):
        (.timeline-record-frame > .frame > .duration:first-child):
        (.timeline-record-frame > .frame > .duration:last-child):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-network):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-layout):
        (.timeline-record-frame > .frame > .duration.timeline-record-type-script):
        New styles for frame bars in the runloop timeline graph.

        * UserInterface/Views/TimelineRecordFrame.js: Added.
        (WebInspector.TimelineRecordFrame):
        (WebInspector.TimelineRecordFrame.createCombinedFrames):
        (WebInspector.TimelineRecordFrame.prototype.get element):
        (WebInspector.TimelineRecordFrame.prototype.get duration):
        (WebInspector.TimelineRecordFrame.prototype.get records):
        (WebInspector.TimelineRecordFrame.prototype.set records):
        (WebInspector.TimelineRecordFrame.prototype._updateChildElements.createDurationElement):
        New view representing a single frame within the runloop overview graph.

        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        New files.

2015-03-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add more DOM Native Function parameter strings
        https://bugs.webkit.org/show_bug.cgi?id=142760

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/NativeFunctionParameters.js:
        Add native parameter strings generated and hand modified
        for DOM built-in classes.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        For native constructors "FooConstructor" the description is just
        the name of the Constructor not the function string.

2015-03-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Object Previews in Indexed DB tables
        https://bugs.webkit.org/show_bug.cgi?id=140813

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
        Add a boolean param for ObjectTree construction if it should force allowing object expansion.

        * UserInterface/Views/IndexedDatabaseEntryDataGridNode.js:
        (WebInspector.IndexedDatabaseEntryDataGridNode.prototype.createCellContent):
        Switch to creating an ObjectTree or FormattedValue.

        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
        (.content-view.indexed-database-object-store > .data-grid tr.selected):
        Change row selection color to match the console's lighter blue instead of dark blue.

        (.content-view.indexed-database-object-store > .data-grid .object-tree > :matches(.title, .object-preview)::before):
        Adjust object tree disclosure triangle placement for larger line heights.

        (.content-view.indexed-database-object-store > .data-grid td .section .header): Deleted.
        (.content-view.indexed-database-object-store > .data-grid td .section .header::before): Deleted.
        (.content-view.indexed-database-object-store > .data-grid td .section .header .title): Deleted.
        (.content-view.indexed-database-object-store > .data-grid:focus tr.selected td .section .header::before): Deleted.
        (.content-view.indexed-database-object-store > .data-grid:focus tr.selected td .section.expanded .header::before): Deleted.
        (.content-view.indexed-database-object-store > .data-grid:focus tr.selected td .properties-tree li.parent::before): Deleted.
        (.content-view.indexed-database-object-store > .data-grid:focus tr.selected td .properties-tree li.parent.expanded::before): Deleted.
        (.content-view.indexed-database-object-store > .data-grid:focus tr.selected td .properties-tree li *): Deleted.
        Remove now unnecessary styles.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree .object-tree-array-index > .icon):
        Increase the specificity to override ".data-grid td .icon" styles.

2015-03-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Better Console Previews for Arrays / Small Objects
        https://bugs.webkit.org/show_bug.cgi?id=142322

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        If there is a sub-preview, show the sub-preview.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        For an ObjectTree that is not a root (e.g. one inside of
        an array/set/map property tree element) allow it to be
        expanded even if the preview is lossless.

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

        Web Inspector: Rename ConsoleMessage and ConsoleMessageImpl to LegacyConsoleMessage and LegacyConsoleMessageImpl respectively
        https://bugs.webkit.org/show_bug.cgi?id=142712

        As a first step of ConsoleMessage refactoring (https://bugs.webkit.org/show_bug.cgi?id=142599):

          - Rename WebInspector.ConsoleMessage class to WebInspector.LegacyConsoleMessage
          - Rename WebInspector.ConsoleMessageImpl class to WebInspector.LegacyConsoleMessageImpl
          - Rename ConsoleMessage.js file to LegacyConsoleMessage.js
          - Rename ConsoleMessageImpl file to LegacyConsoleMessageImpl.js

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessage):
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager.prototype.messageWasAdded):
        * UserInterface/Main.html:
        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._incrementConsoleMessageType):
        * UserInterface/Views/ConsoleCommandResult.js:
        (WebInspector.ConsoleCommandResult):
        (WebInspector.ConsoleCommandResult.prototype.toMessageElement):
        * UserInterface/Views/ConsoleGroup.js:
        (WebInspector.ConsoleGroup.prototype.render):
        * UserInterface/Views/LegacyConsoleMessage.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleMessage.js.
        (WebInspector.LegacyConsoleMessage):
        (WebInspector.LegacyConsoleMessage.prototype.isErrorOrWarning):
        (WebInspector.LegacyConsoleMessage.prototype.updateRepeatCount):
        (WebInspector.LegacyConsoleMessage.prototype.clone):
        (WebInspector.LegacyConsoleMessage.create):
        * UserInterface/Views/LegacyConsoleMessageImpl.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleMessageImpl.js.
        (WebInspector.LegacyConsoleMessageImpl):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatMessage):
        (WebInspector.LegacyConsoleMessageImpl.prototype._shouldDumpStackTrace):
        (WebInspector.LegacyConsoleMessageImpl.prototype._shouldHideURL):
        (WebInspector.LegacyConsoleMessageImpl.prototype._firstNonNativeCallFrame):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get message):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get formattedMessage):
        (WebInspector.LegacyConsoleMessageImpl.prototype._linkifyLocation):
        (WebInspector.LegacyConsoleMessageImpl.prototype._linkifyCallFrame):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isErrorOrWarning):
        (WebInspector.LegacyConsoleMessageImpl.prototype._format):
        (WebInspector.LegacyConsoleMessageImpl.prototype._isExpandable):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsValue):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsObject):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsString):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsNode):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsArray):
        (WebInspector.LegacyConsoleMessageImpl.prototype._rootPropertyPathForObject):
        (WebInspector.LegacyConsoleMessageImpl.prototype._userProvidedColumnNames):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):
        (WebInspector.LegacyConsoleMessageImpl.prototype.):
        (WebInspector.LegacyConsoleMessageImpl.prototype.stringFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.floatFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.integerFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.styleFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isWhitelistedProperty):
        (WebInspector.LegacyConsoleMessageImpl.prototype.append):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatWithSubstitutionString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.decorateMessageElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toMessageElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype._populateStackTraceTreeElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype.updateRepeatCount):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get text):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isEqual):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get stackTrace):
        (WebInspector.LegacyConsoleMessageImpl.prototype.clone):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get levelString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get clipboardPrefixString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toClipboardString):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessage):
        (WebInspector.LogContentView.prototype._messageAdded):
        (WebInspector.LogContentView.prototype._filterMessages):
        (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

2015-03-16  Commit Queue  <commit-queue@webkit.org>

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

        This patch broke GTK+ build (Requested by NVI on #webkit).

        Reverted changeset:

        "Web Inspector: Rename ConsoleMessage and ConsoleMessageImpl
        to LegacyConsoleMessage and LegacyConsoleMessageImpl
        respectively"
        https://bugs.webkit.org/show_bug.cgi?id=142712
        http://trac.webkit.org/changeset/181517

2015-03-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Console Scrolls Unexpectedly when Clicking inside un-selected Expanding Object
        https://bugs.webkit.org/show_bug.cgi?id=142655

        Don't scroll when selection change is triggered by clicking, e.g.
        only scroll on arrow up and down key press events.

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._mousemove):
        (WebInspector.LogContentView.prototype._updateMessagesSelection):
        (WebInspector.LogContentView.prototype._upArrowWasPressed):
        (WebInspector.LogContentView.prototype._downArrowWasPressed):

2015-03-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Rename ConsoleMessage and ConsoleMessageImpl to LegacyConsoleMessage and LegacyConsoleMessageImpl respectively
        https://bugs.webkit.org/show_bug.cgi?id=142712

        As a first step of ConsoleMessage refactoring (https://bugs.webkit.org/show_bug.cgi?id=142599):

          - Rename WebInspector.ConsoleMessage class to WebInspector.LegacyConsoleMessage
          - Rename WebInspector.ConsoleMessageImpl class to WebInspector.LegacyConsoleMessageImpl
          - Rename ConsoleMessage.js file to LegacyConsoleMessage.js
          - Rename ConsoleMessageImpl file to LegacyConsoleMessageImpl.js

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessage):
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager.prototype.messageWasAdded):
        * UserInterface/Main.html:
        * UserInterface/Models/DefaultDashboard.js:
        (WebInspector.DefaultDashboard.prototype._incrementConsoleMessageType):
        * UserInterface/Views/ConsoleCommandResult.js:
        (WebInspector.ConsoleCommandResult):
        (WebInspector.ConsoleCommandResult.prototype.toMessageElement):
        * UserInterface/Views/ConsoleGroup.js:
        (WebInspector.ConsoleGroup.prototype.render):
        * UserInterface/Views/LegacyConsoleMessage.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleMessage.js.
        (WebInspector.LegacyConsoleMessage):
        (WebInspector.LegacyConsoleMessage.prototype.isErrorOrWarning):
        (WebInspector.LegacyConsoleMessage.prototype.updateRepeatCount):
        (WebInspector.LegacyConsoleMessage.prototype.clone):
        (WebInspector.LegacyConsoleMessage.create):
        * UserInterface/Views/LegacyConsoleMessageImpl.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleMessageImpl.js.
        (WebInspector.LegacyConsoleMessageImpl):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatMessage):
        (WebInspector.LegacyConsoleMessageImpl.prototype._shouldDumpStackTrace):
        (WebInspector.LegacyConsoleMessageImpl.prototype._shouldHideURL):
        (WebInspector.LegacyConsoleMessageImpl.prototype._firstNonNativeCallFrame):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get message):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get formattedMessage):
        (WebInspector.LegacyConsoleMessageImpl.prototype._linkifyLocation):
        (WebInspector.LegacyConsoleMessageImpl.prototype._linkifyCallFrame):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isErrorOrWarning):
        (WebInspector.LegacyConsoleMessageImpl.prototype._format):
        (WebInspector.LegacyConsoleMessageImpl.prototype._isExpandable):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsValue):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsObject):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsString):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsNode):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsArray):
        (WebInspector.LegacyConsoleMessageImpl.prototype._rootPropertyPathForObject):
        (WebInspector.LegacyConsoleMessageImpl.prototype._userProvidedColumnNames):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):
        (WebInspector.LegacyConsoleMessageImpl.prototype.):
        (WebInspector.LegacyConsoleMessageImpl.prototype.stringFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.floatFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.integerFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.styleFormatter):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isWhitelistedProperty):
        (WebInspector.LegacyConsoleMessageImpl.prototype.append):
        (WebInspector.LegacyConsoleMessageImpl.prototype._formatWithSubstitutionString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.decorateMessageElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toMessageElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype._populateStackTraceTreeElement):
        (WebInspector.LegacyConsoleMessageImpl.prototype.updateRepeatCount):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get text):
        (WebInspector.LegacyConsoleMessageImpl.prototype.isEqual):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get stackTrace):
        (WebInspector.LegacyConsoleMessageImpl.prototype.clone):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get levelString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.get clipboardPrefixString):
        (WebInspector.LegacyConsoleMessageImpl.prototype.toClipboardString):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessage):
        (WebInspector.LogContentView.prototype._messageAdded):
        (WebInspector.LogContentView.prototype._filterMessages):
        (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

2015-03-12  Jono Wells  <jonowells@apple.com>

        Web Inspector: Debugger sidebar should group global breakpoints together
        https://bugs.webkit.org/show_bug.cgi?id=142607

        Reviewed by Timothy Hatcher.

        Update the DebuggerSidebarPanel class to hold global breakpoints such as "All Exceptions" in one container. This
        will be the place future such breakpoints are added.

        * Localizations/en.lproj/localizedStrings.js: Added string.
        * UserInterface/Main.html: Small rearrangement.

        * UserInterface/Views/DebuggerSidebarPanel.js: Change how exception breaking options are displayed.
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
        (WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements):

        * UserInterface/Views/FolderTreeElement.js: Support additional classes for icons.
        * UserInterface/Views/ResourceSidebarPanel.js: Change call to FolderTreeElement constructor.

2015-03-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console Errors during provisional document loads get lost with "Clear Log on Reload"
        https://bugs.webkit.org/show_bug.cgi?id=142603

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._messageAdded):
        (WebInspector.LogContentView.prototype._provisionalLoadStarted):
        Detect a provisional load has started to start save messages that come in at this time.

        (WebInspector.LogContentView.prototype._sessionStarted):
        Reappend provisional load messages if we auto-cleared.

        (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
        (WebInspector.LogContentView.prototype._clearProvisionalState):
        Helpers for dealing with the provisional loading state.

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

        Web Inspector: CSS parser errors in the console should include column numbers
        https://bugs.webkit.org/show_bug.cgi?id=114313

        Reviewed by Darin Adler.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._linkifyLocation):
        Column numbers in console messages are also 1 based and should be adjusted.

2015-03-11  Commit Queue  <commit-queue@webkit.org>

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

        Caused crashes on the debug bots (Requested by cdumez on
        #webkit).

        Reverted changeset:

        "Web Inspector: CSS parser errors in the console should
        include column numbers"
        https://bugs.webkit.org/show_bug.cgi?id=114313
        http://trac.webkit.org/changeset/181367

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

        Web Inspector: Reload after Global Search results in empty Resources Sidebar.
        https://bugs.webkit.org/show_bug.cgi?id=142572

        Reviewed by Timothy Hatcher.

        If you reload when the search content tree outline is showing, break out
        to show the resource tree outline.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._showResourcesContentTreeOutline):
        (WebInspector.ResourceSidebarPanel.prototype._showSearchContentTreeOutline):

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

        Web Inspector: SearchResultTreeElement.representedObject is missing a saveIdentityToCookie implementation
        https://bugs.webkit.org/show_bug.cgi?id=134698

        Reviewed by Timothy Hatcher.

        This will restore selection of a global search tree element if you
        close and reopen the inspector in such a case.

        * UserInterface/Models/DOMSearchMatchObject.js:
        (WebInspector.DOMSearchMatchObject.prototype.get resource):
        (WebInspector.DOMSearchMatchObject.titleForDOMNode):
        Cookie has the resource URL, DOM Node title, and text range.

        * UserInterface/Models/SourceCodeSearchMatchObject.js:
        (WebInspector.SourceCodeSearchMatchObject.prototype.get sourceCodeTextRange):
        Cookie has the source code URL and text range.

2015-03-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CSS parser errors in the console should include column numbers
        https://bugs.webkit.org/show_bug.cgi?id=114313

        Reviewed by Benjamin Poulain.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._linkifyLocation):
        Column numbers in console messages are also 1 based and should be adjusted.

2015-03-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.error output broken, does not produce ObjectTree
        https://bugs.webkit.org/show_bug.cgi?id=142554

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/IssueMessage.js:
        (WebInspector.IssueMessage):
        * UserInterface/Protocol/ConsoleObserver.js:
        (WebInspector.ConsoleObserver.prototype.messageAdded):

2015-03-10  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Destructuring function parameters should show type information
        https://bugs.webkit.org/show_bug.cgi?id=142233

        Reviewed by Joseph Pecoraro.

        JSC supports a function's formal parameter being a destructuring pattern, 
        and so should the type profiler in the Inspector. This was just an oversight 
        not to have this in bug 141215.

        This patch also does a bit of refactoring to not have duplicate code
        that traverses AST nodes in TypeTokenAnnotator and ScriptSyntaxTree.
        Before, both of these classes were responsible for traversing the AST
        in an identical way, this is bad. Now, ScriptSyntaxTree contains the
        canonical implementation of how the AST should be traversed and which
        AST nodes should be collected for type profiling. ScriptSyntaxTree will
        pass this information back to TypeTokenAnnotator.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeToken):
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeTokensForEachNode): Deleted.
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype.):
        (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
        (WebInspector.ScriptSyntaxTree.prototype.gatherIdentifiersInVariableDeclaration): Deleted.

2015-03-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inline Error / Warning message for Issues
        https://bugs.webkit.org/show_bug.cgi?id=142520

        Reviewed by Timothy Hatcher.

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

        * UserInterface/Controllers/IssueManager.js:
        (WebInspector.IssueManager.prototype.issueWasAdded):
        * UserInterface/Models/IssueMessage.js:
        (WebInspector.IssueMessage):
        (WebInspector.IssueMessage.prototype.get columnNumber):
        * UserInterface/Protocol/ConsoleObserver.js:
        (WebInspector.ConsoleObserver.prototype.messageAdded):
        Correctly pass the column number into IssueMessage.

        * UserInterface/Models/LineWidget.js:
        (WebInspector.LineWidget):
        (WebInspector.LineWidget.prototype.get codeMirrorLineWidget):
        (WebInspector.LineWidget.prototype.get widgetElement):
        Create a new Model class for a LineWidget. The root element
        should never change, but its children can be updated.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor .CodeMirror-linewidget):
        Override styles so that widgets can overlap line content.

        (.source-code.text-editor > .CodeMirror .issue-widget):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline):
        Float issue widgets to the right side of the editor.

        (.source-code.text-editor > .CodeMirror .issue-widget > .arrow):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline > .arrow):
        Pure CSS arrow for widgets on the same line as their issue.

        (.source-code.text-editor > .CodeMirror .issue-widget > .icon):
        (.source-code.text-editor > .CodeMirror .issue-widget > .icon.icon-warning):
        (.source-code.text-editor > .CodeMirror .issue-widget > .icon.icon-error):
        Issue icon styles for the different issue types.

        (.source-code.text-editor > .CodeMirror .issue-widget.warning):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning > .arrow):
        (.source-code.text-editor > .CodeMirror .issue-widget.error):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.error):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline.error > .arrow):
        Different colors for the different issue types.

        (.source-code.text-editor > .CodeMirror .issue-widget > .text):
        (.source-code.text-editor > .CodeMirror .issue-widget.inline > .text):
        Text positioning when on the same line or when expanded.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._addIssue):
        (WebInspector.SourceCodeTextEditor.prototype._iconClassNameForIssueLevel):
        (WebInspector.SourceCodeTextEditor.prototype._updateIssueWidgetForIssues):
        (WebInspector.SourceCodeTextEditor.prototype._isWidgetToggleable):
        (WebInspector.SourceCodeTextEditor.prototype._handleWidgetClick):
        Create widgets for issues.

        (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
        (WebInspector.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting):
        (WebInspector.SourceCodeTextEditor.prototype._clearWidgets):
        (WebInspector.SourceCodeTextEditor.prototype._reinsertAllIssues):
        Update all widgets in certain cases.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.addStyleClassToLine):
        This assertion is known to happen for issues added to an editor
        before the content has loaded.

        (WebInspector.TextEditor.prototype.createWidgetForLine):
        Create a widget for a line.

2015-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: JS Pretty Printing: "case" or "default" outside of switch causes unbalanced indentation
        https://bugs.webkit.org/show_bug.cgi?id=142428

        Reviewed by Timothy Hatcher.

        * Tools/PrettyPrinting/CodeMirrorFormatters.js:
        * UserInterface/Views/CodeMirrorFormatters.js:
        Fix "case" and "default" indentation rules to only happen inside a switch.

        * Tools/PrettyPrinting/js-tests/switch-case-default-expected.js:
        * Tools/PrettyPrinting/js-tests/switch-case-default.js:
        Add tests for "case" and "default" nested inside and outside of switches.

2015-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Improved Support for Iterator Objects
        https://bugs.webkit.org/show_bug.cgi?id=142420

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl):
        Treat an iterator like an object.

        * UserInterface/Views/ObjectPreviewView.js:
        Output iterator previews with []s, not {}s.

2015-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt Object Literal Method Property Syntax
        https://bugs.webkit.org/show_bug.cgi?id=142409

        Reviewed by Timothy Hatcher.

        Mechanical change touching lots of files.

2015-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt Object Literal Shorthand Property Construction Syntax
        https://bugs.webkit.org/show_bug.cgi?id=142374

        Reviewed by Timothy Hatcher.

        Mechanical change touching lots of files.

2015-03-06  Jono Wells  <jonowells@apple.com>

        Web Inspector: Populate Debugger sidebar with all debuggable resources
        https://bugs.webkit.org/show_bug.cgi?id=141232

        Reviewed by Timothy Hatcher.

        All debuggable resources now show in the debugger sidebar. The _resourceAdded handler now adds a script resource
        to the sidebar regardless of whether it has any breakpoints set on it. The new function
        _getTreeElementForSourceCodeAndAddToContentTreeOutline adds the element to the debugger sidebar before
        _addBreakpointsForSourceCode is called. Removing all breakpoints from a resource no longer removes that
        resource from the debugger sidebar. TreeOutline.prototype.removeChild has been updated so the disclosure
        button will disappear and reappear correctly when removing/adding breakpoints.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint): Expand resource if first breakpoint is added.
        (WebInspector.DebuggerSidebarPanel.prototype._getTreeElementForSourceCodeAndAddToContentTreeOutline): Created.
        (WebInspector.DebuggerSidebarPanel.prototype._resourceAdded): Checks resource type and adds scripts to sidebar.
        (WebInspector.DebuggerSidebarPanel.prototype._mainResourceChanged):
        (WebInspector.DebuggerSidebarPanel.prototype._scriptAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._removeBreakpointTreeElement): No longer removes empty parent.
        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected): Displays scripts without breakpoints now.

        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.get disclosureButton): Drive-by fix. Unused. Deleted.

        * UserInterface/Views/TreeOutline.js:
        (TreeOutline.prototype.removeChild):
        Remove parent class and set hasChildren to false if necessary to properly hide and reveal disclosure button
        for elements whose children have been removed.

2015-03-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Follow-up fixes to ObjectTreeBaseTreeElement
        https://bugs.webkit.org/show_bug.cgi?id=142367

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype.propertyPathType):
        * UserInterface/Views/ObjectTreeSetIndexTreeElement.js:
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype.resolvedValuePropertyPath):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype._titleFragment):

2015-03-05  Tobias Reiss  <tobi+webkit@basecode.de>

        Web Inspector: console.debug/info should show up in Log Console Filter
        https://bugs.webkit.org/show_bug.cgi?id=142300

        Reviewed by Joseph Pecoraro.

        Add WebInspector.ConsoleMessage.MessageLevel.Debug case that allows console.debug/info
        to show up in Log Console Filter.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._filterMessages):

2015-03-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add ObjectTreeBaseTreeElement to share functionality
        https://bugs.webkit.org/show_bug.cgi?id=142323

        Reviewed by Timothy Hatcher.

        By making this change:

          - Share lots of duplicated code.
          - Array / Set / Map tree elements get context menu support

        * UserInterface/Main.html:
        * UserInterface/Views/ObjectTreeBaseTreeElement.js: Added.
        (WebInspector.ObjectTreeBaseTreeElement):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.get property):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.get propertyPath):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.oncontextmenu):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.resolvedValue):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.resolvedValuePropertyPath):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.thisPropertyPath):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.hadError):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.propertyPathType):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.propertyPathString):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createInteractiveGetterElement):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.createReadOnlyIconElement):
        New file, copying most of the code from PropertyTreeElement so it can be shared.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
        (WebInspector.ObjectTreeArrayIndexTreeElement):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype.invokedGetter):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype.get property): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._resolvedValue): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._propertyPathType): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._resolvedValuePropertyPath): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._thisPropertyPath): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._propertyPathString): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._updateTitle): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._createInteractiveGetterElement.): Deleted.
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._createReadOnlyIconElement): Deleted.
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.invokedGetter):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTooltips):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._alwaysDisplayAsProperty):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildren):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildrenInternal):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateEntries):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateProperties):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.get property): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype.oncontextmenu): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValue): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._propertyPathType): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._thisPropertyPath): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement.): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createReadOnlyIconElement): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype): Deleted.
        Subclass ObjectTreeBaseTreeElement and eliminate the code now
        automatically handled by the base class.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
        (WebInspector.ObjectTreeMapEntryTreeElement):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype.resolvedValue):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype._propertyPathString): Deleted.
        * UserInterface/Views/ObjectTreeSetIndexTreeElement.js:
        (WebInspector.ObjectTreeSetIndexTreeElement):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype.resolvedValue):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype._resolvedValuePropertyPath): Deleted.
        Override resolved value since these are not about PropertyDescriptors.
        This will make context menus work automatically.

2015-03-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve display of previews with overflow
        https://bugs.webkit.org/show_bug.cgi?id=142321

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):

2015-03-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Array/Collection Sizes should be visible and distinct
        https://bugs.webkit.org/show_bug.cgi?id=142254

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ObjectPreview.js:
        (WebInspector.ObjectPreview):
        (WebInspector.ObjectPreview.fromPayload):
        (WebInspector.ObjectPreview.prototype.get size):
        (WebInspector.ObjectPreview.prototype.hasSize):
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.fromPrimitiveValue):
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.prototype.get size):
        (WebInspector.RemoteObject.prototype.hasSize):
        Check if this type has a size and get the size.
        Gracefully handle construction for legacy protocols.

        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview > .size):
        * UserInterface/Views/FormattedValue.css:
        (:matches(.formatted-array, .formatted-map, .formatted-set, .formatted-weakmap) > .size):
        Style the array/collection size.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView):
        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):
        (WebInspector.FormattedValue.createElementForRemoteObject):
        (WebInspector.FormattedValue.createElementForObjectPreview):
        (WebInspector.FormattedValue.createElementForPropertyPreview):
        Add an element showing the array/collection size.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype):
        Remove special handling for Array sizes now that this is handled earlier.

        * UserInterface/Controllers/StorageManager.js:
        (WebInspector.StorageManager.prototype.processData):
        (WebInspector.StorageManager.prototype.requestIndexedDatabaseData):
        Fix what looks like broken RemoteObject construction.

2015-03-04  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: TimelineViews should be displayed in a ContentViewContainer
        https://bugs.webkit.org/show_bug.cgi?id=142290

        Reviewed by Timothy Hatcher.

        TimelineRecordingContentView has a bunch of logic to manage the currently visible TimelineView.
        This could be delegated to a ContentViewContainer to simplify the logic. It also opens the possibility
        for other views to be displayed beneath the timeline overview graphs when it makes sense to do so.

        In order to be displayable in the container, TimelineView and its subclasses have been upgraded to
        be ContentView subclasses. This also reduces some code duplication for basic view management.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView): Move base class instantiation pattern from TimelineView to here.
        (WebInspector.ContentView.isViewable):
        * UserInterface/Views/LayoutTimelineView.js: Use ContentView events and base methods.
        (WebInspector.LayoutTimelineView.prototype.shown):
        (WebInspector.LayoutTimelineView.prototype.hidden):
        (WebInspector.LayoutTimelineView.prototype._dataGridNodeSelected):
        * UserInterface/Views/NetworkTimelineView.js: Use ContentView events and base methods.
        (WebInspector.NetworkTimelineView.prototype.shown):
        (WebInspector.NetworkTimelineView.prototype.hidden):
        (WebInspector.NetworkTimelineView.prototype._dataGridNodeSelected):
        * UserInterface/Views/OverviewTimelineView.js: Use ContentView events and base methods.
        (WebInspector.OverviewTimelineView.prototype.shown):
        (WebInspector.OverviewTimelineView.prototype._dataGridNodeSelected):
        (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
        * UserInterface/Views/ScriptTimelineView.js: Use ContentView events and base methods.
        (WebInspector.ScriptTimelineView.prototype.shown):
        (WebInspector.ScriptTimelineView.prototype.hidden):
        (WebInspector.ScriptTimelineView.prototype._dataGridNodeSelected):
        * UserInterface/Views/TimelineRecordingContentView.css: Use WebInspector.ContentViewContainer class.
        (.content-view.timeline-recording > .content-view-container):
        (.content-view.timeline-recording > .content-view-container > .timeline-view > .data-grid td):
        (.content-view.timeline-recording > .content-view-container > .timeline-view > .data-grid table.data):
        (.content-view.timeline-recording > .view-container): Deleted.
        (.content-view.timeline-recording > .view-container > .timeline-view > .data-grid td): Deleted.
        (.content-view.timeline-recording > .view-container > .timeline-view > .data-grid table.data): Deleted.

        * UserInterface/Views/TimelineRecordingContentView.js:
        Many of the changes here mirror the implementation of ClusterContentView. Searching is disabled since
        none of the timeline views are currently searchable using ContentViewContainer's full-text search.

        In cases where we update the current timeline view, the currentTimelineView accessor returns the
        content view if a TimelineView is shown in the content view container, otherwise null.

        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype.showOverviewTimelineView):
        (WebInspector.TimelineRecordingContentView.prototype.showTimelineViewForTimeline):
        (WebInspector.TimelineRecordingContentView.prototype.get supplementalRepresentedObjects):
        (WebInspector.TimelineRecordingContentView.prototype.get handleCopyEvent):
        (WebInspector.TimelineRecordingContentView.prototype.get supportsSave):
        (WebInspector.TimelineRecordingContentView.prototype.get saveData):
        (WebInspector.TimelineRecordingContentView.prototype.get currentTimelineView):
        (WebInspector.TimelineRecordingContentView.prototype.shown):
        (WebInspector.TimelineRecordingContentView.prototype.hidden):
        (WebInspector.TimelineRecordingContentView.prototype.closed):
        (WebInspector.TimelineRecordingContentView.prototype.canGoBack):
        (WebInspector.TimelineRecordingContentView.prototype.canGoForward):
        (WebInspector.TimelineRecordingContentView.prototype.goBack):
        (WebInspector.TimelineRecordingContentView.prototype.goForward):
        (WebInspector.TimelineRecordingContentView.prototype.updateLayout):
        (WebInspector.TimelineRecordingContentView.prototype.saveToCookie):
        (WebInspector.TimelineRecordingContentView.prototype.get filterDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._contentViewSupplementalRepresentedObjectsDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
        (WebInspector.TimelineRecordingContentView.prototype._timelineCountChanged):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        (WebInspector.TimelineRecordingContentView.prototype.filterDidChange): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._timelineViewSelectionPathComponentsDidChange): Deleted.
        (WebInspector.TimelineRecordingContentView.prototype._showTimelineView): Deleted.
        * UserInterface/Views/TimelineView.js: Remove duplicated functionality and use ContentView equivalents instead.
        (WebInspector.TimelineView):
        (WebInspector.TimelineView.prototype.filterUpdated):
        (WebInspector.TimelineView.prototype.needsLayout):
        (WebInspector.TimelineView.prototype.get representedObject): Deleted.
        (WebInspector.TimelineView.prototype.get visible): Deleted.
        (WebInspector.TimelineView.prototype.shown): Deleted.
        (WebInspector.TimelineView.prototype.hidden): Deleted.

2015-03-03  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: selecting overview timeline tree elements without source locations doesn't update selection components
        https://bugs.webkit.org/show_bug.cgi?id=142248

        Reviewed by Timothy Hatcher.

        Add a missing event dispatch to trigger recalculation of path components when showing the overview timeline view.

        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype._treeElementSelected):

2015-03-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Refactoring: separate ConsoleSession from ConsoleGroup
        https://bugs.webkit.org/show_bug.cgi?id=142141

        ConsoleSession doesn't have a title and it's not collapsible either.
        Simplify ConsoleSession by removing excessive markup.

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        (WebInspector.JavaScriptLogViewController.prototype.startNewSession):
        (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessage):
        (WebInspector.JavaScriptLogViewController.prototype.get topConsoleGroup): Deleted.
        * UserInterface/Main.html:
        * UserInterface/Views/ConsoleGroup.js:
        (WebInspector.ConsoleGroup):
        (WebInspector.ConsoleGroup.prototype.render):
        (WebInspector.ConsoleGroup.prototype.addMessage):
        (WebInspector.ConsoleGroup.prototype.append):
        (WebInspector.ConsoleGroup.prototype.hasMessages): Deleted.
        * UserInterface/Views/ConsoleSession.js: Added.
        (WebInspector.ConsoleSession):
        (WebInspector.ConsoleSession.prototype.addMessage):
        (WebInspector.ConsoleSession.prototype.append):
        (WebInspector.ConsoleSession.prototype.hasMessages):
        * UserInterface/Views/LogContentView.css:
        (.console-session + .console-session):
        (.console-group.new-session .console-group-messages .console-item:first-child): Deleted.
        (.console-group.new-session): Deleted.

2015-03-03  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: popover should use requestAnimationFrame to drive move/resize animations
        https://bugs.webkit.org/show_bug.cgi?id=142218

        Reviewed by Timothy Hatcher.

        Remove setTimeout workaround now that Inspector runs in its own process.

        * UserInterface/Views/Popover.js:
        (WebInspector.Popover.prototype.drawBackground):
        (WebInspector.Popover.prototype._animateFrame):

2015-03-03  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Console log level selector loses selection on reload
        https://bugs.webkit.org/show_bug.cgi?id=142199

        Reviewed by Timothy Hatcher.

        The selected items in the console scope bar were being saved as settings,
        but the "All" scope is forcibly selected on reload due to a logic bug.

        * UserInterface/Base/Main.js:
        (WebInspector.showFullHeightConsole):
        The scope bar may already have selected items restored from WebInspector.Settings.
        Don't select a scope unless explicitly requested (i.e., clicking on dashboard buttons)
        or if no scopes are selected at all. (In the latter case, "All" is the default scope.)

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView): Don't specify a default value here to avoid trampling
        settings. The "All" scope is selected by default in showFullHeightConsole if
        nothing else is selected.

2015-03-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove native extensions now built-in
        https://bugs.webkit.org/show_bug.cgi?id=142203

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js:

2015-03-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Context Menu to Log a Particular Object
        https://bugs.webkit.org/show_bug.cgi?id=142198

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.saveResultCallback):
        (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
        Add a way to show an execution and result immediately in the Log View.

        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt.prototype.pushHistoryItem):
        (WebInspector.ConsolePrompt.prototype.commitTextOrInsertNewLine):
        (WebInspector.ConsolePrompt.prototype._handleEnterKey):
        (WebInspector.ConsolePrompt.prototype._commitHistoryEntry):
        Add a way to append a history item to the console prompt history.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype):
        Add a context menu item to object tree properties to log the value.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.createCallArgument):
        (WebInspector.RemoteObject.prototype.callFunction):
        (WebInspector.RemoteObject.prototype.asCallArgument):
        Simplify CallArgument creation.

        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager.prototype.mycallback):
        (WebInspector.RuntimeManager.prototype.saveResult):
        Wrap RuntimeAgent.saveResult. If supported, run the backend command
        and fetch a saved result index from the backend for the given value.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.get logViewController):
        Misc.

2015-03-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Context Menus to Object Tree properties
        https://bugs.webkit.org/show_bug.cgi?id=142125

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertyTreeElement.prototype._functionContextMenuEventFired):
        (WebInspector.ObjectPropertyTreeElement.prototype._functionContextMenuEventFired.revealFunction):
        Fix legacy implementation.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
        Give prototype buttons a tooltip.

        (WebInspector.ObjectTreePropertyTreeElement.prototype.oncontextmenu):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._contextMenuHandler):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._appendMenusItemsForObject):
        Context Menus based on the selected object.

2015-02-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use Maps in ResourceCollection instead of objects
        https://bugs.webkit.org/show_bug.cgi?id=142101

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/ResourceCollection.js:
        (WebInspector.ResourceCollection):
        (WebInspector.ResourceCollection.prototype.resourcesWithType):
        (WebInspector.ResourceCollection.prototype.removeAllResources):
        (WebInspector.ResourceCollection.prototype.resourceForURL):
        (WebInspector.ResourceCollection.prototype._associateWithResource):
        (WebInspector.ResourceCollection.prototype._disassociateWithResource):
        (WebInspector.ResourceCollection.prototype._resourceURLDidChange):
        (WebInspector.ResourceCollection.prototype._resourceTypeDidChange):
        Use Maps instead of objects.

2015-02-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Add a subtle blue background for selected console messages
        https://bugs.webkit.org/show_bug.cgi?id=142073

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-item.selected::after):
        (.console-messages:focus .console-item.selected):
        (.console-messages:focus .console-item.selected + .console-item):
        (.console-error-level + .console-item):
        (.console-error-level .section .header .title):
        (.console-warning-level):
        (.console-warning-level + .console-item):

2015-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Colored console messages apply text color to object tree properties
        https://bugs.webkit.org/show_bug.cgi?id=142051

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree):
        Default the color to black within Object Tree and Object Preview views.

2015-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clear Log on Reload clears some logs that were after reload
        https://bugs.webkit.org/show_bug.cgi?id=142070

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._sessionStarted):
        We can bail after calling clearLog, since that will already start
        a new session for us.

        (WebInspector.LogContentView.prototype._clearLog):
        Don't trigger a backend clear messages, since that will cause us to
        clear messages received between the request and response.

2015-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Save Console Evaluations into Command Line variables $1-$99 ($n)
        https://bugs.webkit.org/show_bug.cgi?id=142061

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager.prototype.evalCallback):
        (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
        Add a saveResult parameter for the new protocol command in parameter.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsObject):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsArray):
        (WebInspector.ConsoleMessageImpl.prototype._rootPropertyPathForObject):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype.appendTitleSuffix):
        For console evaluation results, show a "= $n" when the evaluation was
        given a saved result index.

        * UserInterface/Views/LogContentView.css:
        (.console-saved-variable):
        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview-name):
        Make $n and class names in previews always non-italics.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.printResult):
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (get WebInspector.JavaScriptRuntimeCompletionProvider.prototype.):
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager.prototype.messagesCleared):
        (WebInspector.LogManager.prototype._mainResourceDidChange):
        Try to provide better autocompletion for $n, by populating autocompletion menus
        from $1-$n where n is the maximum saved result index seen. Clear the maximum
        when we clear the console.

        * UserInterface/Views/ConsoleCommandResult.js:
        (WebInspector.ConsoleCommandResult):
        (WebInspector.ConsoleCommandResult.clearMaximumSavedResultIndex):
        Keep track of the maximum savedResultIndex for console evaluation results.

2015-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Set/Map appear as lossless when they have lossy entries
        https://bugs.webkit.org/show_bug.cgi?id=142050

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        Take into account the lossless states of entry keys and values.

2015-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: New ObjectTree UI for Arrays / Maps / Sets
        https://bugs.webkit.org/show_bug.cgi?id=142037

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        Miscellaneous changes.

        * UserInterface/Models/PropertyDescriptor.js:
        (WebInspector.PropertyDescriptor.prototype.isIndexProperty):
        Useful for quickly checking if this property is numeric and possibly
        an array index.

        * UserInterface/Models/PropertyPath.js:
        (WebInspector.PropertyPath.prototype.appendMapKey):
        (WebInspector.PropertyPath.prototype.appendMapValue):
        (WebInspector.PropertyPath.prototype.appendSetIndex):
        Be specific about property paths into maps / sets. Note that a map
        value may be displayable if the key is simple.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.hasValue):
        A simple value RemoteObject may have the value "undefined". So provide
        a falsey proof helper that actually checks if we have a value.

        (WebInspector.RemoteObject.prototype.isArray):
        (WebInspector.RemoteObject.prototype.backendGetOwnPropertyDescriptor):
        (WebInspector.RemoteObject.prototype.wrappedCallback):
        (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptor):
        Currently backend APIs exist only to get all properties. In the case
        of collections, we often want to get only one property (__proto__).
        This is a simple implementation on top of callFunctionOn.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsObject):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsArray):
        (WebInspector.ConsoleMessageImpl.prototype.appendUndefined): Deleted.
        (WebInspector.ConsoleMessageImpl.prototype._printArray): Deleted.
        (WebInspector.ConsoleMessageImpl.prototype._formatAsArrayEntry): Deleted.
        Simplify array formatted to just use an ObjectTreeView. Add fixmes
        that we should seed the ObjectTreeView with a starting property path.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-node > ol):
        Sometimes, a node's display was getting overridden by various console styles.
        Force a node to always display block. We may be able to remove this later.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
        Helper for formatting a node / object / value more easily. This
        is used by all collection types.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        We lost the nice sparse array support when switching to the new preview path,
        we should add it back.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index):
        (.object-tree-array-index > .titles):
        (.object-tree-array-index > .icon):
        (.object-tree-array-index .index-name):
        (.object-tree-array-index .index-value .object-tree):
        (.object-tree-array-index .index-value .object-tree .object-tree-outline):
        (.object-tree-property + ol .object-tree-array-index):
        New styles specific to array index tree elements.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.css:
        (.object-tree-array-index.object-tree-map-entry > .titles > .title > .index-name):
        (.object-tree-map-entry.key):
        (.object-tree-map-entry.key:first-of-type):
        (.object-tree-map-entry):
        New styles specific to map key/value tree elements.

        * UserInterface/Views/ObjectTreeCollectionTreeElement.js: Removed.
        Remove old collection implementation.

        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.js: Added.
        (WebInspector.ObjectTreeArrayIndexTreeElement):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype.get property):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._resolvedValue):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._propertyPathType):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._resolvedValuePropertyPath):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._thisPropertyPath):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._propertyPathString):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._updateTitle):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._createInteractiveGetterElement.):
        (WebInspector.ObjectTreeArrayIndexTreeElement.prototype._createReadOnlyIconElement):
        Index followed by formatted value. Unfortunately a page can hack up an array
        with getter properties, so also support getter values in an array. This ends
        up copying a lot of ObjectTreePropertyTreeElement as a result.

        * UserInterface/Views/ObjectTreeMapEntryTreeElement.js: Added.
        (WebInspector.ObjectTreeMapEntryTreeElement):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype.get object):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype._propertyPathString):
        (WebInspector.ObjectTreeMapEntryTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreeMapKeyTreeElement):
        (WebInspector.ObjectTreeMapKeyTreeElement.prototype.displayPropertyName):
        (WebInspector.ObjectTreeMapKeyTreeElement.prototype.resolvedValuePropertyPath):
        (WebInspector.ObjectTreeMapValueTreeElement):
        (WebInspector.ObjectTreeMapValueTreeElement.prototype.displayPropertyName):
        (WebInspector.ObjectTreeMapValueTreeElement.prototype.resolvedValuePropertyPath):
        Key/value followed by formatted value.

        * UserInterface/Views/ObjectTreeSetIndexTreeElement.js: Added.
        (WebInspector.ObjectTreeSetIndexTreeElement):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype.get object):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype._resolvedValuePropertyPath):
        (WebInspector.ObjectTreeSetIndexTreeElement.prototype._titleFragment):
        Dot followed by formatted value.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property > .titles):
        Reformat.

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree-property :matches(.formatted-string, .formatted-regexp)):
        Upgrade generic styles.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValue):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildren):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildrenInternal):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateEntries):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateProperties):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        (WebInspector.ObjectTreeView.emptyMessageElement):
        (WebInspector.ObjectTreeView.prototype.expand):
        (WebInspector.ObjectTreeView.prototype.collapse):
        (WebInspector.ObjectTreeView.prototype.update):
        (WebInspector.ObjectTreeView.prototype._updateChildren):
        (WebInspector.ObjectTreeView.prototype._updateEntries):
        (WebInspector.ObjectTreeView.prototype._updateProperties):
        (WebInspector.ObjectTreeView.prototype._handlePreviewOrTitleElementClick):
        Both ObjectTreeView and ObjectTreePropertyTreeElement will fetch only collection
        entries or properties depending on the type of the object being expanded.

        (WebInspector.ObjectTreeView.prototype._trackWeakEntries):
        (WebInspector.ObjectTreeView.prototype._untrackWeakEntries):
        Allow WeakMap entries to be Garbage Collected when the ObjectTreeView
        collapses or the console is cleared. FIXME for handling sub-tree WeakMaps.

2015-02-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Make build logs more legible by reducing noise
        https://bugs.webkit.org/show_bug.cgi?id=142034

        Reviewed by Alexey Proskuryakov.

        Modify batch files, makefiles, and DOS commands to remove
        uninteresting/unhelpful output.

        * WebInspectorUI.vcxproj/WebInspectorUI.make:

2015-02-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Regex/Error output in Object Tree and Previews
        https://bugs.webkit.org/show_bug.cgi?id=142010

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView):
        (WebInspector.ObjectPreviewView.prototype._initTitleElement):
        Since some object types may be formatted as simple values, ensure they get
        the formatted style even in the title view.

        (WebInspector.ObjectPreviewView.prototype._appendPreview):
        Those object types that can be formatted as simple values should skip
        to the value formatting phase.

        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        Do not show property previews for error objects. Always assume lossy
        so that it can be expanded.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        Make a similiar improvement for ObjectTree titles when previews are
        unavailable. This will make dir(value) show a stylized value in the
        title of the Object Tree.

2015-02-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve PropertyPath display strings for getters / values
        https://bugs.webkit.org/show_bug.cgi?id=142008

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js:
        (doubleQuotedString):
        Helper to double quote a string and escape double quotes with-in it.

        * UserInterface/Models/PropertyPath.js:
        (WebInspector.PropertyPath.prototype.get reducedPath):
        Compute the path eliminating unnecessary __proto__s. Note we don't
        property handle the case where a .__proto__.x is override earlier
        by a .x, but that case is rare.

        (WebInspector.PropertyPath.prototype.displayPath):
        Helper for choosing fullPath or reducedPath display strings.

        (WebInspector.PropertyPath.prototype.appendPropertyName):
        (WebInspector.PropertyPath.prototype.appendGetterPropertyName):
        (WebInspector.PropertyPath.prototype.appendSetterPropertyName):
        (WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
        When appending a descriptor, specify if it is for a getter/setter or value.
        For getters / setters the actual function can be directly fetched via
        __lookupGetter__/__lookupSetter__. Continue to use the property name for values.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._propertyPathType):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._thisPropertyPath):
        (WebInspector.ObjectTreePropertyTreeElement.prototype):

2015-02-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Eliminate console-formatted-* class names in favor of formatted-*
        https://bugs.webkit.org/show_bug.cgi?id=141948

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForNode):
        Helper for formatting a node as a DOMTreeOutline.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsString):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsNode):
        (WebInspector.ConsoleMessageImpl.prototype.appendUndefined):
        (WebInspector.ConsoleMessageImpl.prototype._printArray):
        (WebInspector.ConsoleMessageImpl.prototype.): Deleted.
        * UserInterface/Views/LogContentView.css:
        (.console-user-command-result):
        (.console-formatted-object): Deleted.
        (.console-object-preview): Deleted.
        (.expanded .console-object-preview): Deleted.
        (.console-object-preview .name): Deleted.
        (.expanded .console-object-preview > .console-object-preview-body): Deleted.
        (.console-object-preview > .console-object-preview-name.console-object-preview-name-Object): Deleted.
        (.console-object-preview-body .console-object-preview-name.console-object-preview-name-Object): Deleted.
        (.expanded .console-object-preview > .console-object-preview-name.console-object-preview-name-Object): Deleted.
        (.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap): Deleted.
        (:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .section): Deleted.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._leftArrowWasPressed):
        (WebInspector.LogContentView.prototype._rightArrowWasPressed):
        Add FIXMEs since this will no longer work with ObjectTree.

        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree):
        Copy over the font styles from console-formatted-object.

        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertyTreeElement.prototype.update):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForString):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForRegExp):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForNumber):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForBoolean):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForNull):
        (WebInspector.SourceCodeTextEditor.prototype._showPopoverForUndefined):
        Convert to formatted value class names.

2015-02-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make Getter/Setter RemoteObject property and ObjectPreview handling consistent
        https://bugs.webkit.org/show_bug.cgi?id=141587

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame.prototype.collectScopeChainVariableNames):
        * UserInterface/Models/PropertyDescriptor.js:
        (WebInspector.PropertyDescriptor.prototype.get nativeGetter):
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.getAllPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.getDisplayablePropertyDescriptors):
        (WebInspector.RemoteObject.prototype._getPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.if):
        (WebInspector.RemoteObject.prototype.deprecatedGetOwnProperties):
        (WebInspector.RemoteObject.prototype.deprecatedGetAllProperties):
        (WebInspector.RemoteObject.prototype._deprecatedGetProperties):
        (WebInspector.RemoteObject.prototype.getOwnAndGetterPropertyDescriptors): Deleted.
        (WebInspector.RemoteObject.prototype.callback): Deleted.
        (WebInspector.RemoteObject.prototype.getOwnProperties): Deleted.
        (WebInspector.RemoteObject.prototype.getOwnAndGetterProperties): Deleted.
        (WebInspector.RemoteObject.prototype.getAllProperties): Deleted.
        (WebInspector.RemoteObject.prototype.set else): Deleted.
        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsArray):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady):
        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertiesSection.prototype.update):
        (WebInspector.ObjectPropertyTreeElement.prototype.onpopulate):
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype.):
        (WebInspector.ObjectTreePropertyTreeElement.prototype):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype.update):

2015-02-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: New Object Tree View UI
        https://bugs.webkit.org/show_bug.cgi?id=141932

        Reviewed by Timothy Hatcher.

        Part 1: Majority of the UI.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Images/Eye.svg: Added.
        * UserInterface/Images/TypeBoolean.svg: Added.
        * UserInterface/Images/TypeNull.svg: Added.
        * UserInterface/Images/TypeNumber.svg: Added.
        * UserInterface/Images/TypeObject.svg: Added.
        * UserInterface/Images/TypeRegex.svg: Added.
        * UserInterface/Images/TypeString.svg: Added.
        * UserInterface/Images/TypeSymbol.svg: Added.
        * UserInterface/Images/TypeUndefined.svg: Added.
        * UserInterface/Main.html:
        Miscellaneous.

        * UserInterface/Views/FormattedValue.css:
        (.formatted-boolean):
        Give booleans a light purple color.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.createElementForTypesAndValue):
        Previously we were truncating function value logging in the console. E.g.
          js> multiLineFunction
          <-  function multiLineFunction() {
        No longer truncate so we display the full string.

        * UserInterface/Models/PropertyPath.js: Added.
        (WebInspector.PropertyPath):
        (WebInspector.PropertyPath.prototype.get object):
        (WebInspector.PropertyPath.prototype.get parent):
        (WebInspector.PropertyPath.prototype.get isPrototype):
        (WebInspector.PropertyPath.prototype.get rootObject):
        (WebInspector.PropertyPath.prototype.get lastNonPrototypeObject):
        (WebInspector.PropertyPath.prototype.get pathComponent):
        (WebInspector.PropertyPath.prototype.get fullPath):
        (WebInspector.PropertyPath.prototype.isRoot):
        (WebInspector.PropertyPath.prototype.isPathComponentImpossible):
        (WebInspector.PropertyPath.prototype.isFullPathImpossible):
        (WebInspector.PropertyPath.prototype.appendPropertyName):
        (WebInspector.PropertyPath.prototype.appendPropertySymbol):
        (WebInspector.PropertyPath.prototype.appendInternalPropertyName):
        (WebInspector.PropertyPath.prototype.appendArrayIndex):
        (WebInspector.PropertyPath.prototype.appendCollectionIndex):
        (WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
        (WebInspector.PropertyPath.prototype._canPropertyNameBeDotAccess):
        PropertyPaths are a linked list of remote object / patch component pairs.
        For a property like "foo['property 1'].__proto__.baz" we will have a PropertyPath
        chain with the RemoteObject for each component. This allows us to accurately
        select the RemoteObject on which we should invoke a getter. It also allows
        us to display the property path string from the root object, if possible.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.callFunction):
        (WebInspector.RemoteObject.prototype.backendInvokeGetter):
        (WebInspector.RemoteObject.prototype.invokeGetter):
        Provide a way to invoke a getter function on a remote object if we
        have a reference to the getter function. At the same time, improve
        the mostly unused callFunction API to automatically convert
        RemoteObjects / values to their Runtime.CallArgument format.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css: Added.
        (.object-tree-property):
        (.object-tree-property > .disclosure-button):
        (.object-tree-property.parent > .disclosure-button):
        (.object-tree-property.parent.expanded > .disclosure-button):
        (.object-tree-property > .titles):
        Focused styles for the ObjectTree property GeneralTreeElements.
        Reuse navigation sidebar disclosure-triangles.

        (.object-tree-property > .icon):
        (.object-tree-property.boolean > .icon):
        (.object-tree-property.function > .icon):
        (.object-tree-property.number > .icon):
        (.object-tree-property.object > .icon):
        (.object-tree-property.object.null > .icon):
        (.object-tree-property.object.node > .icon):
        (.object-tree-property.regex > .icon):
        (.object-tree-property.string > .icon):
        (.object-tree-property.symbol > .icon):
        (.object-tree-property.undefined > .icon):
        Use different icons for different object types. Special case
        "accessor" to be undefined.

        (.object-tree-property .prototype-name):
        (.object-tree-property .property-name.not-enumerable):
        Style property names in sans-serif font.
        Give non-enumerable properties a slightly transparent look.

        (.object-tree-property.prototype-property):
        (.object-tree-property.prototype-property > .icon):
        (.object-tree-property.prototype-property + ol):
        Special styles for prototype properties and their children.

        (.object-tree-property .getter):
        (.object-tree-property .getter:hover):
        (.object-tree-property .read-only):
        Styles for clickable getter button and non-interactive read-only indicator.

        (.object-tree-property :matches(.formatted-string, .formatted-regexp)):
        Do not allow wrapping for values that previously allowed wrapping.

        (.object-tree-property .value.error):
        If getting a value resulted in an error, display that error in red.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement):
        Extend from GeneralTreeElement and set up class names on the root <li> object.

        (WebInspector.ObjectTreePropertyTreeElement.prototype.onattach): Deleted.
        No longer needed by using GeneralTreeElement.

        (WebInspector.ObjectTreePropertyTreeElement.prototype.onexpand):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.oncollapse):
        Expand / collapse an associated ObjectPreview if we have one.

        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValue):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath):
        This PropertyTreeElement may be displaying for a value, or a getter that has
        gotten a value. Refer to this as the "resolvedValue".

        (WebInspector.ObjectTreePropertyTreeElement.prototype._thisPropertyPath):
        A PropertyPath leaf used for tooltips.

        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTooltips):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
        Helpers for updating small parts of the UI. When a getter is invoked,
        we need to update the entire UI of this TreeElement.

        (WebInspector.ObjectTreePropertyTreeElement.prototype._titleFragment):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitle): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitlePropertyStyle): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAPIStyle): Deleted.
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
        Create the UI for the mainTitle of this PropertyTreeElement.
        
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createReadOnlyIconElement):
        Helpers for creating the small components of the title UI.

        (WebInspector.ObjectTreePropertyTreeElement.prototype._alwaysDisplayAsProperty):
        Establish when a property should still be displayed as a "property" even when in API mode.
        For example a value property on a prototype, should still display as an expandable property.

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree > :matches(.title, .object-preview)::before):
        (.object-tree:not(.lossless-preview) > :matches(.title, .object-preview)):
        (.object-tree.expanded > :matches(.title, .object-preview)::before):
        (.object-tree .object-tree-outline):
        (.object-tree-outline ol):
        (.object-tree-outline li .empty-message):
        (:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline):
        (.object-tree > .title): Deleted.
        (.object-tree-outline): Deleted.
        (.object-tree-outline li): Deleted.
        (.object-tree-outline li.parent): Deleted.
        (.object-tree-outline li.parent::before): Deleted.
        (.object-tree-outline li.parent.expanded::before): Deleted.
        (.object-tree-property .name): Deleted.
        (.object-tree-property .name.not-enumerable): Deleted.
        (.object-tree-property .value.error): Deleted.
        (.console-group-messages .object-tree:not(.lossless-preview)): Deleted.
        (.console-group-messages .object-tree:not(.lossless-preview) > :matches(.title, .object-preview)): Deleted.
        (.console-group-messages .object-tree:not(.lossless-preview) > :matches(.title, .object-preview)::before): Deleted.
        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree): Deleted.
        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline): Deleted.
        Move most PropertyTreeElement specific styles into ObjectPropertyTreeElement.css.
        Plenty of console specific files were eliminated.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype.update):
        (WebInspector.ObjectTreeView.prototype._updateProperties):


        Part 2: Provide better parameter lists for native functions.

        When expanding an object's prototype chain, with authored code
        you will accurately see parameter lists for user authored functions
        because we can get this by parsing Function.prototype.toString.
        For native code, we don't get any parameter information. In such cases
        we can detect we are a native function, and provide our own strings.

        This fills in most of the JavaScript built-ins and some DOM
        functions, however we should autogenerate the rest of the DOM.

        * UserInterface/Base/Utilities.js:
        (isFunctionStringNativeCode):
        Helper to check if a function is native or not based on its string.

        * UserInterface/Main.html:
        * UserInterface/Models/NativeFunctionParameters.js: Added.
        Dictionary of parameter lists for native constructor functions
        and prototype functions.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionPropertyString):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
        (WebInspector.ObjectTreePropertyTreeElement.prototype):
        When we have a native function, try to provide a better parameter string.


        Part 3: Better handle errors when invoking getters.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.callFunction):
        (WebInspector.RemoteObject.prototype.invokeGetter):
        Pass the error, wasThrown, and result through to the caller so they can
        act on all the information possible. Provide encapsulation though
        and auto-convert the result to a RemoteObject for the callback.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._createTooltipForNode.setTooltip):
        (WebInspector.DOMTreeElement.prototype._createTooltipForNode.resolvedNode):
        (WebInspector.DOMTreeElement.prototype._createTooltipForNode):
        Update current users of callFunctionOn for the new callback parameters.

        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property.had-error > .icon):
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement.):
        Better style getters with errors.

2015-02-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Do not show "{}" after Date description in Object Previews
        https://bugs.webkit.org/show_bug.cgi?id=141898

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        Only show "{...}" section for Date objects that have user
        defined properties. Otherwise, Dates do not have properties.

2015-02-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused console-object-preview styles - replaced by ObjectPreviewView
        https://bugs.webkit.org/show_bug.cgi?id=141945

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-object-preview): Deleted.
        (.expanded .console-object-preview): Deleted.
        (.console-object-preview .name): Deleted.
        (.expanded .console-object-preview > .console-object-preview-body): Deleted.
        (.console-object-preview > .console-object-preview-name.console-object-preview-name-Object): Deleted.
        (.console-object-preview-body .console-object-preview-name.console-object-preview-name-Object): Deleted.
        (.expanded .console-object-preview > .console-object-preview-name.console-object-preview-name-Object): Deleted.

2015-02-23  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: BasicBlockAnnotator ranges should be inclusive of both the start and end offset
        https://bugs.webkit.org/show_bug.cgi?id=141334

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.addStyleToTextRange):

2015-02-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Lazily Create GeneralTreeElement Status Elements
        https://bugs.webkit.org/show_bug.cgi?id=141873

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.set status):
        (WebInspector.GeneralTreeElement.prototype.onattach):
        (WebInspector.GeneralTreeElement.prototype._createElementsIfNeeded):
        (WebInspector.GeneralTreeElement.prototype._updateStatusElement):
        Lazily create and attach the status element container if
        "this.status" is actually used by a GeneralTreeElement subclass.

        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype._updateStatus):
        Set to the empty string instead of null to avoid inadvertently
        creating status elements for no reason.

2015-02-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Give ObjectPreviewView a showTitle/showPreview toggle
        https://bugs.webkit.org/show_bug.cgi?id=141874

        Reviewed by Timothy Hatcher.

        Refactor ObjectTree/ObjectPreview a bit to make it easier
        to use expanding/collapsing previews in other places.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView):
        (WebInspector.ObjectPreviewView.prototype.showTitle):
        (WebInspector.ObjectPreviewView.prototype.showPreview):
        Maintain both a titleElement and previewElement. Show only
        one at a time based on showTitle/showPreview APIs.

        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree.expanded .object-preview):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView):
        (WebInspector.ObjectTreeView.prototype.expand):
        (WebInspector.ObjectTreeView.prototype.collapse):
        If we have a preview, let PreviewView handle toggling
        between a title and preview display.

2015-02-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make Console UI icons / lines slightly larger
        https://bugs.webkit.org/show_bug.cgi?id=141876

        Reviewed by Timothy Hatcher.

        In preparation for a new ObjectTree design with larger icons,
        increase the size of existing output in the Console / Log
        so they don't look so small in comparison. This:

          - bumps minimum height of lines from 16px to 21px
          - 10x10 icons to be 12x12
          - recenters icons to match console prompt
          - realigns icons with console log / object output

        * UserInterface/Views/LogContentView.css:
        (.console-user-command-result.console-log-level::before):
        (.console-message, .console-user-command):
        (.console-item::before):
        (.console-user-command::before):
        (:matches(.console-warning-level, .console-error-level, .console-log-level).console-message):
        (:matches(.console-warning-level, .console-error-level, .console-log-level)::before):
        (.outline-disclosure li):
        (.outline-disclosure .expanded li):
        Fix a case breaking single-line message height.
        Only add padding to expanded trees, not collapsed trees.

        * UserInterface/Views/QuickConsole.css:
        (.quick-console > .console-prompt::before):

2015-02-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Generate Previews more often for RemoteObject interaction
        https://bugs.webkit.org/show_bug.cgi?id=141875

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/PropertyDescriptor.js:
        (WebInspector.PropertyDescriptor.fromPayload):
        Fix InternalPropertyDescriptor ingestion. There was no ".internal"
        property on these objects, so take a flag.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype._getPropertyDescriptors):
        Fix InternalPropertyDescriptor ingestion by specifying during
        importing the internal properties. Also, get previews.

        (WebInspector.RemoteObject.prototype.callFunction):
        Always get previews when using callFunctionOn.

2015-02-20  Ronald Jett  <rjett@apple.com>

        Web Inspector: Add a setting for clearing the console on page reload
        https://bugs.webkit.org/show_bug.cgi?id=134414

        Reviewed by Timothy Hatcher.

        Created a new setting "clear-log-on-reload", which defaults to true.
        Users can toggle this setting with an item added to the console's context menu. 
        When enabled, the console will clear on page reload. When disabled, the console
        content will remain during page reloads. 

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._sessionStarted):
        (WebInspector.LogContentView.prototype._handleContextMenuEvent):
        (WebInspector.LogContentView.prototype._toggleClearLogOnReloadSetting):

2015-02-19  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: merge in upstream Esprima to support parsing more of ES6
        https://bugs.webkit.org/show_bug.cgi?id=141215

        Reviewed by Timothy Hatcher.

        This patch merges in a new esprima that has some ES6 support.
        Specifically, the ES6 support ScriptSyntaxTree now has is:
        - ForOf loops
        - Object destructuring
        - Array destructuring

        ScriptSyntaxTree now uses Symbols for identifying AST node types
        instead of strings. This will prevent any direct usage of strings 
        for node types instead of a direct property access off the 
        ScriptSyntaxTree constructor.

        This patch also does some gardening work: 
        - TypeTokenAnnotator only walks over the incoming type information
          data once to be more efficient. 
        - TypeTokenView is now smarter about updating its associated DOM node
          only if its display name has changed.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype._insertTypeTokensForEachNode):
        * UserInterface/External/Esprima/esprima.js:
        (.):
        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype.gatherIdentifiersInVariableDeclaration):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        * UserInterface/Views/TypeTokenView.js:
        (WebInspector.TypeTokenView.prototype.update):

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use of Array.from for NodeList/Arguments to Array conversion
        https://bugs.webkit.org/show_bug.cgi?id=141819

        Reviewed by Timothy Hatcher.

        Array.from is clearer than Array.prototype.slice.call(arrayLike).

        * UserInterface/Base/Test.js:
        (.console.logType):
        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Command.prototype.promise):
        (InspectorBackend.Command.prototype._invokeWithArguments):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._allMessages):

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Follow-up fix to r180371. formatParameterAsValue expects full object, not just a description.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Introduce FormattedValue helpers and use them in Console/ObjectTree
        https://bugs.webkit.org/show_bug.cgi?id=141812

        Reviewed by Timothy Hatcher.

        There were a few different ways to get styled values. Try to consolidate them
        all in FormattedValue. That is also a convenient place to have the styles.

        * UserInterface/Main.html:
        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsValue):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsString):

        (WebInspector.ConsoleMessageImpl.prototype._userProvidedColumnNames):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsTable):
        (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
        (WebInspector.ConsoleMessageImpl.prototype._propertyPreviewElement): Deleted.
        Fix console.table after renaming ObjectPreview.properties to ObjectPreview.propertyPreviews.
        Also, use FormattedValue to create the value elements. Also, remove class
        "source-code" as I do not see it actually being used in a meaningful way.

        * UserInterface/Views/FormattedValue.css: Added.
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap):
        (.formatted-number):
        (.formatted-string, .formatted-regexp):
        (.formatted-string):
        (.formatted-regexp):
        (.formatted-symbol):
        (.formatted-null, .formatted-undefined):
        * UserInterface/Views/FormattedValue.js: Added.
        (WebInspector.FormattedValue.classNameForTypes):
        (WebInspector.FormattedValue.classNameForObject):
        (WebInspector.FormattedValue.createLinkifiedElementString):
        (WebInspector.FormattedValue.createElementForTypesAndValue):
        (WebInspector.FormattedValue.createElementForRemoteObject):
        (WebInspector.FormattedValue.createElementForObjectPreview):
        (WebInspector.FormattedValue.createElementForPropertyPreview):
        Styles and formatted value element creation.

        * UserInterface/Views/LogContentView.css:
        (.expandable.source-code): Deleted.
        Remove ".source-code". I do not see it actually being used in a meaningful way.

        * UserInterface/Views/ObjectPreviewView.js:
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendValuePreview):
        (WebInspector.ObjectPreviewView.prototype._formattedObjectElementForPreview): Deleted.
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._descriptionString): Deleted.
        * UserInterface/Views/ObjectTreeView.css:
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap): Deleted.
        (.formatted-number): Deleted.
        (.formatted-string, .formatted-regexp): Deleted.
        (.formatted-string): Deleted.
        (.formatted-regexp): Deleted.
        (.formatted-symbol): Deleted.
        (.formatted-null, .formatted-undefined): Deleted.
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.classNameForObject): Deleted.
        Extract styles and value formatting to FormattedValue helpers.

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Disable DOM Tree Editing / Styles Editing of Shadow DOM Nodes
        https://bugs.webkit.org/show_bug.cgi?id=141793

        Unreviewed follow-up. Fix prototypes.

        * UserInterface/Views/ObjectPreviewView.js:
        * UserInterface/Views/ObjectTreeView.js:

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Create Separate Model and View Objects for RemoteObjects / ObjectPreview / PropertyDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=141696

        Reviewed by Timothy Hatcher.

        * UserInterface/Main.html:
        Add new files.

        * UserInterface/Models/CollectionEntry.js: Added.
        (WebInspector.CollectionEntry):
        (WebInspector.CollectionEntry.fromPayload):
        (WebInspector.CollectionEntry.prototype.get key):
        (WebInspector.CollectionEntry.prototype.get value):
        * UserInterface/Models/CollectionEntryPreview.js: Added.
        (WebInspector.CollectionEntryPreview):
        (WebInspector.CollectionEntryPreview.fromPayload):
        (WebInspector.CollectionEntryPreview.prototype.get keyPreview):
        (WebInspector.CollectionEntryPreview.prototype.get valuePreview):
        * UserInterface/Models/ObjectPreview.js: Added.
        (WebInspector.ObjectPreview):
        (WebInspector.ObjectPreview.fromPayload):
        (WebInspector.ObjectPreview.prototype.get type):
        (WebInspector.ObjectPreview.prototype.get subtype):
        (WebInspector.ObjectPreview.prototype.get description):
        (WebInspector.ObjectPreview.prototype.get lossless):
        (WebInspector.ObjectPreview.prototype.get overflow):
        (WebInspector.ObjectPreview.prototype.get properties):
        (WebInspector.ObjectPreview.prototype.get entries):
        * UserInterface/Models/PropertyPreview.js: Added.
        (WebInspector.PropertyPreview):
        (WebInspector.PropertyPreview.fromPayload):
        (WebInspector.PropertyPreview.prototype.get name):
        (WebInspector.PropertyPreview.prototype.get type):
        (WebInspector.PropertyPreview.prototype.get subtype):
        (WebInspector.PropertyPreview.prototype.get value):
        (WebInspector.PropertyPreview.prototype.get valuePreview):
        * UserInterface/Models/PropertyDescriptor.js: Added.
        (WebInspector.PropertyDescriptor.fromPayload):
        (WebInspector.PropertyDescriptor.prototype.get name):
        (WebInspector.PropertyDescriptor.prototype.get value):
        (WebInspector.PropertyDescriptor.prototype.get writable):
        (WebInspector.PropertyDescriptor.prototype.get configurable):
        (WebInspector.PropertyDescriptor.prototype.get enumerable):
        (WebInspector.PropertyDescriptor.prototype.get isOwnProperty):
        (WebInspector.PropertyDescriptor.prototype.get wasThrown):
        (WebInspector.PropertyDescriptor.prototype.get isInternalProperty):
        (WebInspector.PropertyDescriptor.prototype.hasValue):
        (WebInspector.PropertyDescriptor.prototype.hasGetter):
        (WebInspector.PropertyDescriptor.prototype.hasSetter):
        New Model objects for different Protocol types.
        The only customizations right now are compatibility modifications
        and PropertyDescriptor's "hasValue", "hasGetter", and "hasSetter"
        functions to return reliable checks based on the descriptors contents.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.resolveNode):
        (WebInspector.RemoteObject.prototype.get value):
        (WebInspector.RemoteObject.prototype._isSymbol):
        (WebInspector.RemoteObject.prototype.isCollectionType):
        (WebInspector.RemoteObject.prototype.isWeakCollection):
        (WebInspector.RemoteObject.prototype.getCollectionEntries):
        (WebInspector.RemoteObject.prototype.arrayLength):
        Clean up the existing code to enforce more checks and use our
        style of member variables and public accessors.

        (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.getOwnAndGetterPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.getAllPropertyDescriptors):
        (WebInspector.RemoteObject.prototype.callback):
        Provide a new way of getting properties that returns Model objects
        instead of raw protocol types.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._format):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.ConsoleMessageImpl.prototype._propertyPreviewElement):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsNode):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsTable):
        (WebInspector.ConsoleMessageImpl.prototype._formatAsArrayEntry):
        Always include a preview when possible. Now, when forced to be an object,
        force expansion even if the preview is lossless.

        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsObject):
        Use an ObjectTreeView instead of ObjectPropertiesSection.

        (WebInspector.ConsoleMessageImpl.prototype._appendPreview): Deleted.
        (WebInspector.ConsoleMessageImpl.prototype._appendEntryPreviews): Deleted.
        (WebInspector.ConsoleMessageImpl.prototype._appendPropertyPreviews): Deleted.
        (WebInspector.ConsoleMessageImpl.prototype._appendValuePreview): Deleted.
        This code is moved into ObjectPreviewView.


        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.CollectionEntriesMainTreeElement.prototype.onexpand.callback):
        (WebInspector.CollectionEntriesMainTreeElement.prototype.onexpand):
        These types are now converted to Model types in Model objects, so do not do it here.

        * UserInterface/Views/ObjectPreviewView.css: Added.
        (.object-preview):
        (.object-preview.lossless):
        (.object-preview .name):
        * UserInterface/Views/ObjectPreviewView.js: Added.
        (WebInspector.ObjectPreviewView):
        (WebInspector.ObjectPreviewView.prototype.get preview):
        (WebInspector.ObjectPreviewView.prototype.get element):
        (WebInspector.ObjectPreviewView.prototype.get mode):
        (WebInspector.ObjectPreviewView.prototype.get lossless):
        (WebInspector.ObjectPreviewView.prototype._numberOfPropertiesToShowInMode):
        (WebInspector.ObjectPreviewView.prototype._appendPreview):
        (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
        (WebInspector.ObjectPreviewView.prototype._appendValuePreview):
        (WebInspector.ObjectPreviewView.prototype._formattedObjectElementForPreview):
        An ObjectPreviewView can create a full/brief view given a ObjectPreview.
        The view will contain formatted values everywhere possible.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js: Added.
        (WebInspector.ObjectTreePropertyTreeElement):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.get property):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.onpopulate):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.onattach):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAPIStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._descriptionString):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
        (WebInspector.ObjectTreePropertyTreeElement.prototype.mode):
        (WebInspector.ObjectTreePropertyTreeElement.prototype):
        * UserInterface/Views/ObjectTreeView.js: Added.
        (WebInspector.ObjectTreeView):
        (WebInspector.ObjectTreeView.classNameForObject):
        (WebInspector.ObjectTreeView.ComparePropertyDescriptors):
        (WebInspector.ObjectTreeView.prototype.get object):
        (WebInspector.ObjectTreeView.prototype.get element):
        (WebInspector.ObjectTreeView.prototype.get expanded):
        (WebInspector.ObjectTreeView.prototype.expand):
        (WebInspector.ObjectTreeView.prototype.collapse):
        (WebInspector.ObjectTreeView.prototype.update):
        (WebInspector.ObjectTreeView.prototype._updateProperties):
        (WebInspector.ObjectTreeView.prototype._handlePreviewOrTitleElementClick):
        Re-implementation of ObjectPropertiesSection for our Model objects
        without "Section" semantics / dependencies. An ObjectTree will creates
        an expandable tree for a RemoteObject. The top level clickable item
        will be an ObjectPreview if possible, otherwise just a title element.

        * UserInterface/Views/ObjectTreeView.css: Added.
        (.object-tree):
        (.object-tree > .title):
        (.object-tree > :matches(.title, .object-preview)::before):
        (.object-tree.expanded > :matches(.title, .object-preview)::before):
        (.object-tree.lossless-preview > :matches(.title, .object-preview)::before):
        (.object-tree-outline):
        (.object-tree.expanded > .object-tree-outline):
        (.object-tree-outline li):
        (.object-tree-outline li.parent):
        (.object-tree-outline li.parent::before):
        (.object-tree-outline li.parent.expanded::before):
        (.object-tree-outline ol):
        (.object-tree-outline ol.expanded):
        (.object-tree-outline li .empty-message):
        (.object-tree-property .name):
        (.object-tree-property .name.not-enumerable):
        (.object-tree-property .value.error):
        (.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap):
        (.formatted-number):
        (.formatted-string, .formatted-regexp):
        (.formatted-string):
        (.formatted-regexp):
        (.formatted-symbol):
        (.formatted-null, .formatted-undefined):
        (.console-group-messages .object-tree:not(.lossless-preview)):
        (.console-group-messages .object-tree:not(.lossless-preview) > :matches(.title, .object-preview)):
        (.console-group-messages .object-tree:not(.lossless-preview) > :matches(.title, .object-preview)::before):
        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree):
        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline):
        All styles for ObjectTree / ObjectPreview. Independent from
        other styles in the inspector. Most of this is a copy of
        the styles applied to ObjectPropertiesSection, renamed.


        * UserInterface/Views/ObjectTreeCollectionTreeElement.js: Added.
        (WebInspector.ObjectTreeCollectionTreeElement):
        (WebInspector.ObjectTreeCollectionTreeElement.propertyDescriptorForEntry):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype.get remoteObject):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype.onexpand.callback):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype.onexpand):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype.oncollapse):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype.ondetach):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype._trackWeakEntries):
        (WebInspector.ObjectTreeCollectionTreeElement.prototype._untrackWeakEntries):
        (WebInspector.ObjectTreeCollectionEntryTreeElement):
        (WebInspector.ObjectTreeCollectionEntryTreeElement.prototype.onpopulate):
        (WebInspector.ObjectTreeCollectionEntryTreeElement.prototype.onattach):
        (WebInspector.ObjectTreeEmptyCollectionTreeElement):
        Essentially a copy of ObjectPropertiesSection Collection handling using
        the ObjectTree class names.

        * UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
        Fix prototype typo.

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: DOMTree / Node Details Sidebar do not update as <input> content changes
        https://bugs.webkit.org/show_bug.cgi?id=141790

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._characterDataModified):
        Update Node "Value" details if character data changes.

        * UserInterface/Views/DOMTreeUpdater.js:
        (WebInspector.DOMTreeUpdater.prototype._updateModifiedNodes):
        Update the title of the parent. If the parent had a single text node child
        and now doesn't, it will need to update its display.

2015-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Disable DOM Tree Editing / Styles Editing of Shadow DOM Nodes
        https://bugs.webkit.org/show_bug.cgi?id=141793

        Reviewed by Timothy Hatcher.

        Currently the backend disallows editing of Shadow DOM nodes,
        so the frontend should not provide options that do not work.
        Long term we should allow editing Shadow DOM nodes.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WebInspector.CSSStyleDeclaration.prototype.get editable):
        Inline styles on a Shadow DOM node are not editable.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype.ondelete):
        (WebInspector.DOMTreeElement.prototype._startEditingTarget):
        (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
        (WebInspector.DOMTreeElement.prototype._populateTextContextMenu):
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        (WebInspector.DOMTreeElement.prototype._startEditing):
        Disable context menus and keyboard shortcuts on Shadow DOM nodes.
        Only Context Menu item we keep is "Copy as HTML".

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype._contextMenuEventFired):
        (WebInspector.DOMTreeOutline.prototype.populateContextMenu):
        Eliminate double look-up.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.addNewRuleButton):
        Do not add the New Rule Button to the Styles Sidebar of Shadow DOM Nodes.
        Instead this will just be an empty divider.

2015-02-18  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: REGRESSION: Missing Divider line between console.log and console evaluation
        https://bugs.webkit.org/show_bug.cgi?id=141770

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-item):
        (.console-message): Deleted.

2015-02-18  Jono Wells  <jonowells@apple.com>

        Web Inspector: Inspecting a page where resources are in folders forces folder organization on every subsequent page
        https://bugs.webkit.org/show_bug.cgi?id=141397

        Reviewed by Timothy Hatcher.

        When removeChildren is called on an instance of a FolderizedTreeElement, the element's _groupedIntoFolders flag
        will now be set to false. This will prevent unnecessary folderization upon a frame navigation. Also during an
        onpopulate event, addChildForRepresentedObject is called repeatedly and much of the work done during each call
        was unnecessary. That work has now been partially removed and partially relocated to a function that is only
        called at the beginning of an onpopulate event.

        * UserInterface/Views/FolderizedTreeElement.js:
        (WebInspector.FolderizedTreeElement.prototype.set removeChildren): Set _groupedIntoFolders to false.
        (WebInspector.FolderizedTreeElement.prototype.addChildForRepresentedObject): Remove unnecessary treeOutline
        emptiness check, and move _shouldGroupIntoFolders() check to new function prepareToPopulate().
        (WebInspector.FolderizedTreeElement.prototype.prepareToPopulate): Create.
        (WebInspector.FolderizedTreeElement.prototype._populateFromNewChildQueue): Call prepareToPopulate().

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.prototype.onpopulate): Call prepareToPopulate().

        * UserInterface/Views/GeneralTreeElement.js: Drive-by inheritance style fix.
        * UserInterface/Views/ResourceTreeElement.js: Drive-by inheritance style fix.

2015-02-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Improved Console Support for Promise Objects
        https://bugs.webkit.org/show_bug.cgi?id=141634

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        For now just add Internal Properties and regular properties.
        We will address the UI later.

2015-02-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Tweak the styles on the Console
        https://bugs.webkit.org/show_bug.cgi?id=140580

            - Use non-monospace (default sans-serif) font for console messages, but keep using monospace font
              for objects, functions, and anything else that presumably code.
            - Display all expandable objects on a separate row.

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleCommand.js:
        (WebInspector.ConsoleCommand.prototype.decorateMessageElement):
        (WebInspector.ConsoleCommand.prototype.toMessageElement):
        * UserInterface/Views/ConsoleGroup.js:
        (WebInspector.ConsoleGroup.prototype.addMessage):
        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._format):
        (WebInspector.ConsoleMessageImpl.prototype._isExpandable):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.ConsoleMessageImpl.prototype.append):
        (WebInspector.ConsoleMessageImpl.prototype._formatWithSubstitutionString):
        (WebInspector.ConsoleMessageImpl.prototype.decorateMessageElement):
        (WebInspector.ConsoleMessageImpl.prototype.toMessageElement):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsString): Deleted.
        * UserInterface/Views/LogContentView.css:
        (.console-messages):
        (.console-formatted-object):
        (.expandable.source-code):
        (.console-message):
        (.console-item.selected::after):
        (.console-messages:focus .console-item.selected::after):
        (.console-user-command-result.console-log-level::before):
        (.console-item::before):
        (.console-message .bubble):
        (.console-error-level):
        (.console-error-level .section .header .title):
        (.console-error-level::before):
        (.console-warning-level):
        (.console-warning-level .console-message-text):
        (.console-warning-level::before):
        (.console-user-command::before):
        (.console-group-messages .section):
        (.console-group-messages .section .header::before):
        (.console-group-messages .section .header .title):
        (.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap):
        (.outline-disclosure li):
        (.outline-disclosure li.parent::before):
        (.console-item): Deleted.
        (.console-item.selected): Deleted.
        (.console-messages:focus .console-item.selected): Deleted.
        (.console-item.selected .console-message::after): Deleted.
        (.console-messages:focus .console-item.selected .data-grid tr.selected): Deleted.
        (.console-messages:focus .console-item.selected .console-message::after): Deleted.
        (.console-message, .console-user-command): Deleted.
        (.console-message::before, .console-user-command::before, .javascript-prompt::before, .console-group-title::before): Deleted.
        (.console-group): Deleted.
        (.console-debug-level .console-message-text): Deleted.
        (.console-debug-level::before): Deleted.
        (.console-group-messages .section .header): Deleted.
        (.console-group-messages .outline-disclosure): Deleted.
        (.console-group-messages .outline-disclosure > ol): Deleted.
        (.outline-disclosure li.elements-drag-over .selection): Deleted.
        (.outline-disclosure ol:focus li.selected .selection): Deleted.
        (.outline-disclosure > ol): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._mousemove):
        (WebInspector.LogContentView.prototype._updateMessagesSelection):
        (WebInspector.LogContentView.prototype._isMessageVisible):
        (WebInspector.LogContentView.prototype._isMessageSelected):
        (WebInspector.LogContentView.prototype._selectAllMessages):
        (WebInspector.LogContentView.prototype._unfilteredMessages):
        (WebInspector.LogContentView.prototype._visibleMessages):
        (WebInspector.LogContentView.prototype._filterMessages):
        (WebInspector.LogContentView.prototype._leftArrowWasPressed):
        (WebInspector.LogContentView.prototype._propertiesSectionDidUpdateContent):
        (WebInspector.LogContentView.prototype._performSearch):
        * UserInterface/Views/Section.css:
        (.section .header .title::before):
        (.section.expanded .header .title::before):
        (.section .header .title, .event-bar .header .title):
        (.properties-tree li.parent::before):
        (.section .header::before): Deleted.
        (.section.expanded .header::before): Deleted.

2015-02-15  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: remove unused XHR replay code
        https://bugs.webkit.org/show_bug.cgi?id=141622

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:

2015-02-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove specificity approximation
        https://bugs.webkit.org/show_bug.cgi?id=141600

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh.appendSelector):

2015-02-13  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: support better git diff of localizedStrings.js
        https://bugs.webkit.org/show_bug.cgi?id=137237

        Reviewed by Joseph Pecoraro.

        * .gitattributes: Added.

2015-02-12  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: add keyboard shortcut to enable/disable all breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=141527

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel): Bind Command/Control + Y to toggle breakpoints button.

2015-02-12  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: support adding and removing timelines to the timeline sidebar panel and overview
        https://bugs.webkit.org/show_bug.cgi?id=138434

        Reviewed by Timothy Hatcher.

        A timeline recording's timelines should not be static. This patch adds relevant machinery to
        dynamically add and remove timelines from the Timeline model object and its various views.

        From the model side, this is a simple change that adds TimelineAdded and TimelineRemoved events.
        The timeline views and timeline sidebar require more extensive changes to support this functionality.
        Instead of keeping a fixed set of timeline tree elements, the sidebar view now adds and removes
        tree elements to reflect the available timelines for the displayed timeline recording.

        This change also includes several minor cleanups, such as appending 'Element' to view properties that
        are DOM elements, and renaming TimelineContentView to TimelineRecordingContentView.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._loadNewRecording):
        Populate predefined network, layout, and script timelines here after constructing the recording.

        * UserInterface/Main.html:
        * UserInterface/Models/Timeline.js:
        Move hardcoded class names and localized strings to these base class methods. This is not implemented
        using overridden methods because not all timeline types have their own subclasses. Add a dummy
        implementation of saveIdentityToCookie() to avoid warnings when saving sidebar panel selection state.

        (WebInspector.Timeline.prototype.get type):
        (WebInspector.Timeline.prototype.get displayName): Added.
        (WebInspector.Timeline.prototype.get iconClassName): Added.
        (WebInspector.Timeline.prototype.addRecord):
        * UserInterface/Models/TimelineRecording.js:
        (WebInspector.TimelineRecording):
        (WebInspector.TimelineRecording.prototype.addTimeline.set timeline): Added.
        (WebInspector.TimelineRecording.prototype.addTimeline): Added.
        (WebInspector.TimelineRecording.prototype.removeTimeline.get this): Added.
        (WebInspector.TimelineRecording.prototype.removeTimeline): Added.
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        * UserInterface/Views/LayoutTimelineView.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.layout .item .subtitle):
        (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.layout .item .subtitle): Deleted.
        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
        (WebInspector.LayoutTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.saveStateToCookie): Fix error message formatting.
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        * UserInterface/Views/NetworkTimelineView.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.network .item .subtitle):
        (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.network .item .subtitle): Deleted.
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/ScriptTimelineView.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.script .item .subtitle):
        (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.script .item .subtitle): Deleted.
        * UserInterface/Views/ScriptTimelineView.js:
        (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
        (WebInspector.ScriptTimelineView.prototype._closeStatusButtonClicked):
        * UserInterface/Views/TimelineOverview.js:
        Convert this class to use the representedObject class pattern. It manages its own mapping from timelines
        to overview graph views. Append 'Element' to some properties holding DOM elements.
        (WebInspector.TimelineOverview):
        (WebInspector.TimelineOverview.prototype.get visibleDuration):
        (WebInspector.TimelineOverview.prototype.reset):
        (WebInspector.TimelineOverview.prototype.updateLayout):
        (WebInspector.TimelineOverview.prototype._handleScrollEvent):
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        (WebInspector.TimelineOverview.prototype._timelineRemoved):
        (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
        (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
        * UserInterface/Views/TimelineRecordingContentView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/TimelineContentView.css.
        Remove hard-coded top offsets and heights that need to be dynamically calculated.
        (.content-view.timeline-recording > .timeline-overview):
        (.content-view.timeline-recording > .view-container):
        (.content-view.timeline-recording > .view-container > .timeline-view > .data-grid td):
        (.content-view.timeline-recording > .view-container > .timeline-view > .data-grid table.data):
        * UserInterface/Views/TimelineRecordingContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js.
        Manage timeline views and path components dynamically. Adjust view heights as necessary. Append 'Element'
        to some properties holding DOM elements.
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype.showOverviewTimelineView):
        (WebInspector.TimelineRecordingContentView.prototype.showTimelineViewForTimeline):
        (WebInspector.TimelineRecordingContentView.prototype.get allowedNavigationSidebarPanels):
        (WebInspector.TimelineRecordingContentView.prototype.get supportsSplitContentBrowser):
        (WebInspector.TimelineRecordingContentView.prototype.get navigationItems):
        (WebInspector.TimelineRecordingContentView.prototype.get currentTimelineView):
        (WebInspector.TimelineRecordingContentView.prototype.shown):
        (WebInspector.TimelineRecordingContentView.prototype.hidden):
        (WebInspector.TimelineRecordingContentView.prototype.filterDidChange):
        (WebInspector.TimelineRecordingContentView.prototype.updateLayout):
        (WebInspector.TimelineRecordingContentView.prototype.saveToCookie):
        (WebInspector.TimelineRecordingContentView.prototype.restoreFromCookie):
        (WebInspector.TimelineRecordingContentView.prototype.get matchTreeElementAgainstCustomFilters.checkTimeBounds):
        (WebInspector.TimelineRecordingContentView.prototype.get matchTreeElementAgainstCustomFilters):
        (WebInspector.TimelineRecordingContentView.prototype._pathComponentSelected):
        (WebInspector.TimelineRecordingContentView.prototype._timelineViewSelectionPathComponentsDidChange):
        (WebInspector.TimelineRecordingContentView.prototype._showTimelineView):
        (WebInspector.TimelineRecordingContentView.prototype._update):
        (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
        (WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
        (WebInspector.TimelineRecordingContentView.prototype._stopUpdatingCurrentTime):
        (WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
        (WebInspector.TimelineRecordingContentView.prototype._capturingStopped):
        (WebInspector.TimelineRecordingContentView.prototype._debuggerPaused):
        (WebInspector.TimelineRecordingContentView.prototype._debuggerResumed):
        Fix a minor regression where we make a useless call to stop updating the time.

        (WebInspector.TimelineRecordingContentView.prototype._recordingTimesUpdated):
        (WebInspector.TimelineRecordingContentView.prototype._clearTimeline):
        (WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
        (WebInspector.TimelineRecordingContentView.prototype._timelineCountChanged):
        (WebInspector.TimelineRecordingContentView.prototype._recordingReset):
        (WebInspector.TimelineRecordingContentView.prototype._recordingUnloaded):
        (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
        * UserInterface/Views/TimelineSidebarPanel.css:
        (.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing > .content):
        (.sidebar > .panel.navigation.timeline.timeline-content-view-showing > .content): Deleted.
        * UserInterface/Views/TimelineSidebarPanel.js:
        Manage timeline tree elements dynamically. Adjust view heights as necessary. Append 'Element'
        to some properties holding DOM elements. Keep track of the displayed recording and view explicitly.
        (WebInspector.TimelineSidebarPanel):
        (WebInspector.TimelineSidebarPanel.prototype.shown):
        (WebInspector.TimelineSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.looselyCompareRepresentedObjects):
        (WebInspector.TimelineSidebarPanel.prototype.showTimelineOverview):
        (WebInspector.TimelineSidebarPanel.prototype.updateFilter):
        (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WebInspector.TimelineSidebarPanel.prototype.canShowDifferentContentView):
        (WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
        (WebInspector.TimelineSidebarPanel.prototype.get if):
        (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
        (WebInspector.TimelineSidebarPanel.prototype._recordingCountChanged):
        (WebInspector.TimelineSidebarPanel.prototype._recordingSelected):
        (WebInspector.TimelineSidebarPanel.prototype._recordingLoaded):
        (WebInspector.TimelineSidebarPanel.prototype._timelineRemoved):
        (WebInspector.TimelineSidebarPanel.prototype._timelineCountChanged):
        (WebInspector.TimelineSidebarPanel.createTimelineTreeElement): Deleted.
        (WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie):
        * UserInterface/Views/TimelineView.css:
        (.panel.navigation.timeline.timeline-recording-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline):
        (.panel.navigation.timeline.timeline-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline): Deleted.

2015-02-12  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Large background image fails to load in inspector
        https://bugs.webkit.org/show_bug.cgi?id=141405

        Reviewed by Timothy Hatcher.

        Convert base64-encoded resource data to binary data using Uint8Array and Blobs.
        Use object URLs for blobs instead of data URLs when setting image 'src' attribute
        and in @font-face urls. This conversion happens when the backend indicates that
        resource content is base64-encoded.

        Update image and font clients of resource-fetching functionality so that they use
        object URLs correctly. Add some plumbing so that Blobs can be constructed with
        the correct mime-type.

        * UserInterface/Base/Utilities.js:
        (decodeBase64ToBlob): Added.
        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet.prototype.get mimeType): Added.
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.createObjectURL): Added.
        (WebInspector.Resource.prototype.getImageSize.imageDidLoad):
        (WebInspector.Resource.prototype.getImageSize):
        (WebInspector.Resource.prototype.get contentURL): Deleted.
        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.get mimeType): Added.
        * UserInterface/Models/SourceCode.js:
        (WebInspector.SourceCode.prototype.get mimeType): Added.
        (WebInspector.SourceCode.prototype._processContent):
        (WebInspector.SourceCode.prototype.get contentIsBase64Encoded): Deleted.
        * UserInterface/Models/SourceCodeRevision.js:
        (WebInspector.SourceCodeRevision):
        (WebInspector.SourceCodeRevision.prototype.copy):
        (WebInspector.SourceCodeRevision.prototype.get contentIsBase64Encoded): Deleted.
        (WebInspector.SourceCodeRevision.prototype.set contentIsBase64Encoded): Deleted.
        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView.prototype.hidden):
        (WebInspector.FontResourceContentView.prototype.closed):
        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView.prototype.contentAvailable):

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

        Web Inspector: REGRESSION: Clicking selected item in the sidebar second time should scroll to the corresponding line
        https://bugs.webkit.org/show_bug.cgi?id=140280

        Reviewed by Brian Burg.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.showContentView):
        Perform scolling regardless of the navigation history. Since scrolling source code doesn't introduce a BackForwardEntry,
        it's possible that the actual content view has a different scroll position.

2015-02-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Better handle unknown release versions
        https://bugs.webkit.org/show_bug.cgi?id=141454

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Platform.js:
        If given an unknown Mac OS X version, at least parse
        the version number in WebInspector.Platform.

2015-02-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Make collapsed sidebars undraggable
        https://bugs.webkit.org/show_bug.cgi?id=140664

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/Sidebar.css:
        (.sidebar.collapsed):
        (.sidebar.collapsed.right > .resizer): Deleted.
        (.sidebar.collapsed.left > .resizer): Deleted.
        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar):
        (WebInspector.Sidebar.prototype._resizerMouseDown):
        (WebInspector.Sidebar.prototype._resizerMouseMoved):
        (WebInspector.Sidebar.prototype._resizerDoubleClicked): Deleted.

2015-02-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CSS Pretty Printing: still fails fails to put space between rgb(...) and numbers in minified gradients
        https://bugs.webkit.org/show_bug.cgi?id=141411

        Reviewed by Timothy Hatcher.

        * Tools/PrettyPrinting/CodeMirrorFormatters.js:
        * UserInterface/Views/CodeMirrorFormatters.js:
        Token actually was "number m-css" so we should check token strings
        more robustly, like elsewhere in the formatters.

2015-02-09  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: Uncaught exception when reporting wrong backend command call signature
        https://bugs.webkit.org/show_bug.cgi?id=141401

        Reviewed by Joseph Pecoraro.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Command.prototype._invokeWithArguments): Fix wrong variable name.

2015-02-06  Jono Wells  <jonowells@apple.com>

        Web Inspector: REGRESSION: CSS Resource appears as empty after editing it via Styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=140586

        Reviewed by Timothy Hatcher.

        Update SourceCode#_processContent to properly handle the promise returned from CSSAgent so that the content
        will properly update when a style has changed. Properly clear the existing _requestContentPromise on the
        stylesheet so that the content will update correctly.

        * UserInterface/Controllers/CSSStyleManager.js: Drive-by style updates.
        (WebInspector.CSSStyleManager.prototype._fetchInfoForAllStyleSheets):
        * UserInterface/Models/CSSStyleSheet.js: Drive-by inheritance style update.
        (WebInspector.CSSStyleSheet.prototype.requestContentFromBackend): Remove unnecessary backend promise function call.
        * UserInterface/Models/Resource.js: Drive-by removal of unused variable.
        * UserInterface/Models/SourceCode.js:
        (WebInspector.SourceCode.prototype.markContentAsStale): Clear _requestContentPromise.
        (WebInspector.SourceCode.prototype._processContent): Handle `parameters.text` correctly.

2015-02-04  Jono Wells  <jonowells@apple.com>

        Web Inspector: REGRESSION: Inline SourceMap resources show empty content when opened.
        https://bugs.webkit.org/show_bug.cgi?id=141225

        Reviewed by Timothy Hatcher.

        Change WebInspector.SourceMapResource.prototype.requestContentFromBackend to correctly and consistently handle
        calls to NetworkAgent. The helper function sourceMapResourceLoaded will now properly handle parameters as a single
        payload, including manual calls in the case where the source map content is in a data URI. Also
        WebInspector.SourceCode.prototype._processContent now properly handles an error string used for displaying
        resource loading error messages in the resource content view.

        * UserInterface/Models/Resource.js: drive-by style fix.

        * UserInterface/Models/SourceCode.js:
        (WebInspector.SourceCode.prototype._processContent):
        Properly handle error string.

        * UserInterface/Models/SourceMapResource.js:
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend):
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend.sourceMapResourceLoaded):
        Formerly sourceMapResourceLoadError, now handles parameters from the NetworkAgent correctly.

        (WebInspector.SourceMapResource.prototype.requestContentFromBackend.sourceMapResourceLoadError):
        This function now handles NetworkAgent errors only.

2015-02-05  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: eliminate some unnecessary layout/painting in timeline overview and ruler
        https://bugs.webkit.org/show_bug.cgi?id=141293

        Reviewed by Timothy Hatcher.

        The timeline overview's ruler was forcing repaints of divider labels even if the labels
        had not changed since the last requestAnimationFrame. Bail out early if nothing changed.

        The timeline overview and its graphs were updating layout using requestAnimationFrame
        even when the TimelineContentView is not visible. Fix this by propagating visibility
        changes to subviews, and not updating layout when hidden.

        The above change also fixes an assertion sometimes encountered when the timeline view
        tries to cache an element's offset width, but cannot because it isn't visible.

        * UserInterface/Views/TimelineContentView.js:
        (WebInspector.TimelineContentView.prototype.shown):
        (WebInspector.TimelineContentView.prototype.hidden):
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype.get visible):
        (WebInspector.TimelineOverview.prototype.shown):
        (WebInspector.TimelineOverview.prototype.hidden):
        (WebInspector.TimelineOverview.prototype._needsLayout):
        * UserInterface/Views/TimelineOverviewGraph.js:
        (WebInspector.TimelineOverviewGraph.prototype.get visible):
        (WebInspector.TimelineOverviewGraph.prototype.shown):
        (WebInspector.TimelineOverviewGraph.prototype.hidden):
        (WebInspector.TimelineOverviewGraph.prototype.needsLayout):
        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.updateLayout):

2015-02-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Improved Console Support for Symbol Objects
        https://bugs.webkit.org/show_bug.cgi?id=141173

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.prototype._isSymbol):
        Symbols have an objectId because it is a non-primitive that cannot be passed
        by value, however it cannot have properties, so handle some cases.

        * UserInterface/Views/LogContentView.css:
        (.console-formatted-symbol):
        Give Symbol's their own color.

2015-02-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Insertion bar (caret) is hidden behind the placeholder text in the style editor
        https://bugs.webkit.org/show_bug.cgi?id=139659

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-placeholder):
        Use non-monospace font to fit the placeholder text on a single line and
        match the color if the native placeholder.

2015-02-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.table with columnName filter for non-existent property should still show column
        https://bugs.webkit.org/show_bug.cgi?id=141066

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._appendPropertyPreviews):
        (WebInspector.ConsoleMessageImpl.prototype._userProvidedColumnNames):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsTable):
        If a second argument was provided to console.table, try to extract a list
        of string names to use for the object properties. Output a table with
        the provided column names, in the specified order. Also, use this
        opportunity to mark missing properties with an em dash.

2015-02-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CSS Autocompletion: Autodetect many color supporting properties
        https://bugs.webkit.org/show_bug.cgi?id=141166

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Utilities.js:
        Add String.prototype.endsWith. Group String extensions together.

        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.forProperty):
        If a property name ends in "color", provide CSS color completions.

        (WebInspector.CSSKeywordCompletions.isColorAwareProperty): Deleted.
        This was unused and disagrees slightly with the implementation above.

2015-02-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Support console.table
        https://bugs.webkit.org/show_bug.cgi?id=141058

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New "Index", "(Index)", "Value", table header strings.

        * UserInterface/Views/ConsoleMessage.js:
        Add "Table", but add FIXMEs to consider using the protocol generated enums.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._format):
        Special case console.table messages.

        (WebInspector.ConsoleMessageImpl.prototype._appendPropertyPreviews):
        (WebInspector.ConsoleMessageImpl.prototype._propertyPreviewElement):
        Factor out ProjectPreview printing. Also, replace newlines in strings
        with return characters, like we did elsewhere.

        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsTable):
        Ultimately try to create a DataGrid from the output. Search first
        for rich object data in the list. If no rich object data is found
        just check for simple values. If the table is lossy, also do
        a log of the object in case the user wants to see more data.


        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid):
        The for..in enumeration is unordered and may not give us the
        column ordering we wanted. So include an optional preferred
        column names list to get the preferred order.

        (WebInspector.DataGrid.createSortableDataGrid):
        Numerous bug fixes here. Accidental globals, typos, and sorting failures.

        (WebInspector.DataGrid.prototype.autoSizeColumns):
        (WebInspector.DataGrid.prototype.textForDataGridNodeColumn):
        (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
        Create a generic method to get the text for a datagrid node in a column.
        This is important for getting the text from console.table previews which
        contains Nodes.

        * UserInterface/Views/LogContentView.css:
        (.console-messages:focus .console-item.selected .data-grid tr.selected):
        (.console-item .data-grid tr.selected):
        DataGrid selection colors while in the console which may or may
        not have selected console items.

2015-02-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Extend CSS.getSupportedCSSProperties to provide values for properties for CSS Augmented JSContext
        https://bugs.webkit.org/show_bug.cgi?id=141064

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSCompletions.js:
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WebInspector.CSSKeywordCompletions.addCustomCompletions):
        (WebInspector.CSSKeywordCompletions.addPropertyCompletionValues):
        If a property is specified with custom values, extend the
        keyword completions map to make those values available
        in autocompletion.

2015-01-30  Joseph Pecoraro  <pecoraro@apple.com>

        Remote Web Inspector should not show undock toolbar buttons
        https://bugs.webkit.org/show_bug.cgi?id=141061

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Be sure to update the toolbar's dock navigation icons because they
        may need to be hidden (the default state).

2015-01-29  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Allow text selection when the BasicBlockAnnotator is enabled
        https://bugs.webkit.org/show_bug.cgi?id=140987

        Reviewed by Timothy Hatcher.

        Because the BasicBlockAnnotator no longer sets the background color of
        lines that haven't executed to gray, text selection while the
        BasicBlockAnnotator is enabled no longer results in a bad user interface.
        This patch both allows text selection while the BasicBlockAnnotator is
        enabled and also removes the now unused listeners to CodeMirror's focus
        and blur events.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler.scrollHandler):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler):
        (WebInspector.SourceCodeTextEditor.prototype.gainedFocus): Deleted.
        (WebInspector.SourceCodeTextEditor.prototype.lostFocus): Deleted.
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):
        (WebInspector.TextEditor.prototype.gainedFocus): Deleted.
        (WebInspector.TextEditor.prototype.lostFocus): Deleted.

2015-01-29  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Make BasicBlockAnnotator lessen the saturation of syntax highlighting instead of graying out unexecuted code
        https://bugs.webkit.org/show_bug.cgi?id=141011

        Reviewed by Timothy Hatcher.

        This patch removes a lot of the complicated logic associated around 
        determining which code can be grayed out by the BasicBlockAnnotator. 
        Instead, the BasicBlockAnnotator now applies a CSS class to all the
        code that has not executed which lessens the saturation of the 
        syntax coloring for the code. This creates both a nicer user
        interface and a nicer user experience because it makes reading
        source code with the BasicBlockAnnotator enabled more pleasant.

        * UserInterface/Controllers/BasicBlockAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges.):
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
        (WebInspector.BasicBlockAnnotator.prototype.set _highlightTextForBasicBlock):
        (WebInspector.BasicBlockAnnotator.prototype._isTextRangeOnlyWhitespace): Deleted.
        (WebInspector.BasicBlockAnnotator.prototype._isTextRangeOnlyClosingBrace): Deleted.
        (_canGrayOutEntireLine): Deleted.
        (_grayOutLine): Deleted.
        (_clearRangeForBasicBlockMarker.get marker): Deleted.
        (_clearRangeForBasicBlockMarker): Deleted.
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.hover-menu.color > img):
        (.basic-block-has-not-executed): Deleted.
        (.basic-block-has-not-executed-prepend::before): Deleted.
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.cm-s-default .basic-block-has-not-executed):
        (.cm-s-default .basic-block-has-not-executed.cm-comment):
        (.cm-s-default .basic-block-has-not-executed.cm-m-css:matches(.cm-atom, .cm-meta, .cm-variable-3, .cm-property)):
        (.cm-s-default .basic-block-has-not-executed:matches(.cm-number, .cm-atom.cm-hex-color)):
        (.cm-s-default .basic-block-has-not-executed.cm-string):
        (.cm-s-default .basic-block-has-not-executed.cm-m-xml.cm-meta):
        (.cm-s-default .basic-block-has-not-executed.cm-m-xml.cm-attribute):

2015-01-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ES6: Improved Console Format for Set and Map Objects (like Arrays)
        https://bugs.webkit.org/show_bug.cgi?id=122867

        Reviewed by Timothy Hatcher.

        This includes Set/Map/WeakMap previews:

            - Set previews: Set {1, 2, 3}
            - Map/WeakMap previews: Map {1 => 2, "key" => "value"}

        For WeakMaps:
        
            - the preview itself shows up to 5 key/value pairs from when the object was logged
            - the previews are strings only, and thus do not retain the actual keys/values
            - when expanding, we get RemoteObjects and strongly retain the keys/values
            - when collapsing / clearing, we release the RemoteObjects so they can get collected

        Currently you collapse the <entries> section, and re-expand later the
        collection may show you knew keys/values. The UI for this will change.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.isCollectionType):
        (WebInspector.RemoteObject.prototype.isWeakCollection):
        (WebInspector.RemoteObject.prototype.getCollectionEntries):
        (WebInspector.RemoteObject.prototype.releaseWeakCollectionEntries):
        (WebInspector.RemoteObject.prototype.arrayLength):
        (WebInspector.RemoteObject.prototype._weakCollectionObjectGroup):
        High level functions for dealing with a RemoteObject that may be a
        collection / weak collection.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsObject):
        Include default formatters for collection types.

        (WebInspector.ConsoleMessageImpl.prototype._appendPreview):
        (WebInspector.ConsoleMessageImpl.prototype._appendEntryPreviews):
        (WebInspector.ConsoleMessageImpl.prototype._appendPropertyPreviews):
        (WebInspector.ConsoleMessageImpl.prototype._appendValuePreview):
        (WebInspector.ConsoleMessageImpl.prototype._appendObjectPreview): Deleted.
        Refactor preview generation a bit and include a specific path for
        generation the output of a preview with "entries".

        * UserInterface/Views/LogContentView.css:
        (.console-object-preview-body .console-object-preview-name.console-object-preview-name-Object):
        With nested Object previews ("Map {{a:1} => 1}") don't show "Object" for the inner
        object preview. Only show it if it has a unique type ("Map {Foo {a:1} => 1}")

        (.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap):
        (:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .section):
        (:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .properties):
        Make map/set/weakmap display like Objects.

        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertiesSection.prototype.update):
        (WebInspector.ObjectPropertiesSection.prototype.updateProperties):
        (WebInspector.ObjectPropertyTreeElement.prototype.onpopulate.callback):
        (WebInspector.ObjectPropertyTreeElement.prototype.onpopulate):
        (WebInspector.CollectionEntriesMainTreeElement):
        (WebInspector.CollectionEntriesMainTreeElement.prototype.onexpand.callback):
        (WebInspector.CollectionEntriesMainTreeElement.prototype.onexpand):
        (WebInspector.CollectionEntriesMainTreeElement.prototype.oncollapse):
        (WebInspector.CollectionEntriesMainTreeElement.prototype.ondetach):
        (WebInspector.CollectionEntriesMainTreeElement.prototype._trackWeakEntries):
        (WebInspector.CollectionEntriesMainTreeElement.prototype._untrackWeakEntries):
        (WebInspector.CollectionEntryTreeElement):
        (WebInspector.CollectionEntryTreeElement.prototype.onpopulate):
        (WebInspector.CollectionEntryTreeElement.prototype.onattach):
        (WebInspector.EmptyCollectionTreeElement):
        (WebInspector.ObjectPropertiesSection.prototype.update.callback): Deleted.
        Add a quick UI for exploring the entries of a collection. We are actively
        changing the styles of objects in the Console, so this should change soon.

2015-01-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Change Main Frame Status Buttons when debugging Augmented JSContext
        https://bugs.webkit.org/show_bug.cgi?id=141006

        Reviewed by Timothy Hatcher.

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

        * UserInterface/Base/Main.js:
        (WebInspector.canArchiveMainFrame):
        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.prototype.updateStatusForMainFrame):
        (WebInspector.FrameTreeElement.prototype._updateDownloadButton):
        Update the tooltip when in a non-Web debuggable, and only show
        the Download button when in a Web debuggable.

        * UserInterface/Views/TreeElementStatusButton.js:
        (WebInspector.TreeElementStatusButton.prototype.set hidden):
        Oops! The implementation was backwards. Simplify with classList.toggle.

2015-01-28  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: remove CSS.setPropertyText, CSS.toggleProperty and related dead code
        https://bugs.webkit.org/show_bug.cgi?id=140961

        Reviewed by Timothy Hatcher.

        Setters for CSSProperty (except override) are not used, so delete them. These setters
        and their callees in DOMNodeStyles were the only clients of the removed protocol commands.

        * UserInterface/Models/CSSProperty.js:
        (WebInspector.CSSProperty.prototype.update):
        (WebInspector.CSSProperty.prototype.get name):
        (WebInspector.CSSProperty.prototype.get value):
        (WebInspector.CSSProperty.prototype.get priority):
        (WebInspector.CSSProperty.prototype.hasOtherVendorNameOrKeyword):
        (WebInspector.CSSProperty.prototype.set text): Deleted.
        (WebInspector.CSSProperty.prototype.set name): Deleted.
        (WebInspector.CSSProperty.prototype.set value): Deleted.
        (WebInspector.CSSProperty.prototype.set important): Deleted.
        (WebInspector.CSSProperty.prototype.set priority): Deleted.
        (WebInspector.CSSProperty.prototype.set enabled): Deleted.
        (WebInspector.CSSProperty.prototype.add): Deleted.
        (WebInspector.CSSProperty.prototype.remove): Deleted.
        (WebInspector.CSSProperty.prototype._updatePropertySoon.performUpdate): Deleted.
        (WebInspector.CSSProperty.prototype._updatePropertySoon): Deleted.
        (WebInspector.CSSProperty.prototype._cancelPendingUpdate): Deleted.
        * UserInterface/Models/CSSStyleDeclaration.js:
        (WebInspector.CSSStyleDeclaration.prototype.addProperty): Deleted.
        (WebInspector.CSSStyleDeclaration.prototype.removeProperty): Deleted.
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.addEmptyRule):
        (WebInspector.DOMNodeStyles.prototype.addRule): Deleted.
        (WebInspector.DOMNodeStyles.prototype.changeProperty): Deleted.
        (WebInspector.DOMNodeStyles.prototype.changePropertyText): Deleted.
        (WebInspector.DOMNodeStyles.prototype.changePropertyEnabledState): Deleted.
        (WebInspector.DOMNodeStyles.prototype.addProperty): Deleted.
        (WebInspector.DOMNodeStyles.prototype.removeProperty): Deleted.
        (WebInspector.DOMNodeStyles.prototype._handlePropertyChange): Deleted.
        * UserInterface/Protocol/Legacy/6.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype._newRuleClicked):
        * Versions/Inspector-iOS-6.0.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:

2015-01-28  Dana Burkart  <dburkart@apple.com>

        Move ASan flag settings from DebugRelease.xcconfig to Base.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=136765

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

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

        Web Inspector: Object Previews in the Console
        https://bugs.webkit.org/show_bug.cgi?id=129204

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (get WebInspector.JavaScriptRuntimeCompletionProvider.prototype.):
        Update RuntimeManager callsites that do not need object previews.

        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager.prototype.evalCallback):
        (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
        Update the main evaluate method to include a boolean parameter for
        object previews. Most callers do not need them. Also, since previews
        were not available on iOS 6, switch to invoke, to conditionally
        include the command parameter.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject):
        (WebInspector.RemoteObject.fromPayload):
        (WebInspector.RemoteObject.prototype.get preview):
        Store the preview from the payload.

        * UserInterface/Views/ConsoleMessageImpl.js:
        (WebInspector.ConsoleMessageImpl.prototype._format):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameter):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsNode):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsString):
        (WebInspector.ConsoleMessageImpl.prototype._formatAsArrayEntry):
        Pass an explicit false for most formatters to not use a preview if available.
        
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsArray):
        (WebInspector.ConsoleMessageImpl.prototype._formatParameterAsObject):
        Currently only object types are previewed. Though we request previews
        for arrays, we don't use the preview because we show a better preview
        by just immediately requesting for a full non-preview property list.
        
        (WebInspector.ConsoleMessageImpl.prototype._appendObjectPreview):
        Quickly output an object preview into the title element. The format
        is "ClassName {prop: value...}". Elide the class name if it is "Object".
        Also skip over certain preview properties that may not be useful
        at a glance (like constructor, or accessors without values).

        * UserInterface/Views/LogContentView.css:
        (.console-object-preview):
        (.console-formatted-array .console-object-preview):
        (.console-object-preview-lossless):
        (.expanded .console-object-preview):
        Show lossy previews in italics.
        Show lossless previews and array previews without italics.
        Do not show the class name in the preview in italics when expanded.

        (.console-object-preview .name):
        Give preview property names the same color as ObjectPropertiesSection property names.
        
        (.expanded .console-object-preview > .console-object-preview-body):
        When expanding an object, hide the preview.

        (.console-object-preview > .console-object-preview-name.console-object-preview-name-Object):
        (.expanded .console-object-preview > .console-object-preview-name.console-object-preview-name-Object):
        For "Object" previews, hide the name "Object" when not expanded, and show it when expanded.

2015-01-23  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Disable *Annotators on minified files that aren't pretty printed
        https://bugs.webkit.org/show_bug.cgi?id=140550

        Reviewed by Timothy Hatcher.

        When SourceCodeTextEditor speculates that a file is minified it 
        sets a flag on itself that the Annotators will notice when pretty 
        printing and turning on type profiling. 

        SourceCodeTextEditor enforces the following two behaviors:

        1. Always pretty print a file if we think it's minified while 
        viewing type annotations. So, while viewing a minified file, 
        if you press the type profiling button, the pretty printer will 
        first reformat the file, then the type profiler will insert type annotations.

        2. If the type profiler is enabled and we're viewing a pretty 
        printed file that we think originally was minified, and the 
        pretty printer is disabled via pressing the button, then the 
        type profiler will also be disabled.

        These two behaviors maintain a good user experience because 
        it prevents a bad visual representation of profiler data and 
        also prevents bad performance.

        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype.toggleTypeAnnotations): Deleted.
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype.shown):
        (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
        (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.prettyPrint):
        (WebInspector.SourceCodeTextEditor.prototype._contentWillPopulate):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithContent):
        (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):

2015-01-22  Jonathan Wells  <jonowells@apple.com>

        Web Inspector: ResourceContentView.js incorrectly contains call to WebInspector.UIString with a variable parameter
        https://bugs.webkit.org/show_bug.cgi?id=140268

        Reviewed by Timothy Hatcher.

        UIString no longer incorrectly used around variables. Drive-by fixes to prototype inheritance style.
        Use of Promises corrected such that requesting content for a resource resolves rather than rejects if
        a resource can't be found or has another error that isn't a web inspector error.

        * Localizations/en.lproj/localizedStrings.js: Updated.
        * UserInterface/Models/Resource.js: Change reject to resolve.
        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.requestContentFromBackend): Proper use of Error object.
        * UserInterface/Models/SourceCode.js: Use correct inheritance style.
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype._contentAvailable): Handle error now that promise resolves.
        (WebInspector.ResourceContentView.prototype._contentError): Remove incorrect use of UIString.
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._contentAvailable): Handle error now that promise resolves.

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

        Web Inspector: Expected gutter highlight when selecting console input line, just like output line
        https://bugs.webkit.org/show_bug.cgi?id=140696

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:

2015-01-21  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Change Annotator's isActive getter into an isActive() function.
        https://bugs.webkit.org/show_bug.cgi?id=140729

        Reviewed by Timothy Hatcher.

        This patch also makes the child classes of Annotator use
        the function instead of accessing the property directly.

        * UserInterface/Controllers/Annotator.js:
        (WebInspector.Annotator.prototype.isActive):
        (WebInspector.Annotator.prototype.get isActive): Deleted.
        * UserInterface/Controllers/BasicBlockAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype.insertAnnotations):
        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator.prototype.toggleTypeAnnotations):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.prettyPrint):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
        (WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):

2015-01-21  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Don't allow the BasicBlockAnnotator to highlight a section if it's only a closing brace
        https://bugs.webkit.org/show_bug.cgi?id=140727

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/BasicBlockAnnotator.js:
        (WebInspector.BasicBlockAnnotator.prototype.set _highlightTextForBasicBlock):
        (WebInspector.BasicBlockAnnotator.prototype._isTextRangeOnlyClosingBrace):
        BasicBlockAnnotator tries to no longer highlight a basic block if it is only
        whitespace and a closing brace. These ranges are often after statements
        that make these basic blocks unreachable, such as a return/break/continue
        statement occurring inside a if/else/while/for block. This check won't
        match every highlighted empty closing brace, but catches most of them 
        because it only does intra block analysis instead of inter block analysis.

2015-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use spread operator in a few places
        https://bugs.webkit.org/show_bug.cgi?id=140699

        Reviewed by Geoffrey Garen.

        * UserInterface/Controllers/ProbeManager.js:
        (WebInspector.ProbeManager.prototype.get probeSets):
        Simplify by using the spread operator.

        * UserInterface/Models/TimelineRecording.js:
        This actually fixes an issue. The one place this was used was expecting
        an array and called ".length" on the result. However, the iterator being
        returned does not have a ".length" property so it was always undefined.

2015-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Expanding event objects in console shows undefined for most values, it should have real values
        https://bugs.webkit.org/show_bug.cgi?id=137306

        Reviewed by Timothy Hatcher.

        When first expanding an object, show all the object's own properties and any
        getter properties that may be on its prototype chain. Now, we only fetch
        own properties, for __proto__ properties.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.getOwnProperties):
        (WebInspector.RemoteObject.prototype.getOwnAndGetterProperties):
        (WebInspector.RemoteObject.prototype.getAllProperties):
        (WebInspector.RemoteObject.prototype.get hasChildren): Deleted.
        * UserInterface/Views/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertiesSection):
        (WebInspector.ObjectPropertiesSection.prototype.update):
        (WebInspector.ObjectPropertyTreeElement.prototype.onpopulate):

2015-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should show dynamic specificity values
        https://bugs.webkit.org/show_bug.cgi?id=140647

        Reviewed by Benjamin Poulain.

        For dynamic selectors, provide text in the tooltip describing that the
        specificity is dynamic and may change, and pointing out the element
        the current value was calculated against.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/CSSSelector.js:
        (WebInspector.CSSSelector):
        (WebInspector.CSSSelector.prototype.get specificity):
        (WebInspector.CSSSelector.prototype.get dynamic):
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseSelectorListPayload.return):
        (WebInspector.DOMNodeStyles.prototype._parseSelectorListPayload):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh.appendSelector):

2015-01-19  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Provide a front end for JSC's Control Flow Profiler
        https://bugs.webkit.org/show_bug.cgi?id=138454

        Reviewed by Timothy Hatcher.

        This patch creates a user interface for JSC's control flow profiler.
        The Web Inspector gets basic block ranges from JSC, and displays
        basic blocks that have not executed as having a gray background.
        
        BasicBlockAnnotator is the class responsible for this UI logic.
        It also does a few nifty things when presenting a UI for this gray
        background color: if an entire line of code is within the basic 
        block's boundary, the annotator will not just highlight the background 
        behind the text, but the background of the entire line itself. This
        provides a nicer experience when glancing through large JavaScript files.

        This patch also adds some necessary wrapper methods inside TextEditor
        for accessing CodeMirror's text highlighting functionality. It also
        creates a way for TextEditor and SourceCodeTextEditor to listen
        for focus events inside CodeMirror.

        * UserInterface/Controllers/AnnotatorManager.js: Removed.
        * UserInterface/Controllers/BasicBlockAnnotator.js: Added.
        (WebInspector.BasicBlockAnnotator):
        (WebInspector.BasicBlockAnnotator.prototype.clearAnnotations):
        (WebInspector.BasicBlockAnnotator.prototype.insertAnnotations):
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges.):
        (WebInspector.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
        (WebInspector.BasicBlockAnnotator.prototype.set _highlightTextForBasicBlock):
        (WebInspector.BasicBlockAnnotator.prototype._isTextRangeOnlyWhitespace):
        (WebInspector.BasicBlockAnnotator.prototype._canGrayOutEntireLine):
        (WebInspector.BasicBlockAnnotator.prototype._grayOutLine):
        (WebInspector.BasicBlockAnnotator.prototype._clearRangeForBasicBlockMarker.get marker):
        (WebInspector.BasicBlockAnnotator.prototype._clearRangeForBasicBlockMarker):
        * UserInterface/Main.html:
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.basic-block-has-not-executed):
        (.basic-block-has-not-executed-prepend::before):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype.shown):
        (WebInspector.SourceCodeTextEditor.prototype.hidden):
        (WebInspector.SourceCodeTextEditor.prototype.canShowTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
        (WebInspector.SourceCodeTextEditor.prototype.gainedFocus):
        (WebInspector.SourceCodeTextEditor.prototype.lostFocus):
        (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.prettyPrint):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithContent):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
        (WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
        (WebInspector.SourceCodeTextEditor.prototype._makeBasicBlockAnnotator):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler.scrollHandler):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):
        (WebInspector.TextEditor.prototype.getTextInRange):
        (WebInspector.TextEditor.prototype.addStyleToTextRange):
        (WebInspector.TextEditor.prototype.gainedFocus):
        (WebInspector.TextEditor.prototype.lostFocus):

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

        Web Inspector: Make message selection in the console more readable
        https://bugs.webkit.org/show_bug.cgi?id=140385

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LogContentView.css:
        (.console-item.selected):
        (.console-messages:focus .console-item.selected):
        (.console-item.selected .console-message::after):
        (.console-messages:focus .console-item.selected .console-message::after):
        (.console-messages:focus .console-item.selected .go-to-link):
        * UserInterface/Views/Main.css:
        (.go-to-link):
        !important statements seem to be unnecessary, remove them.

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

        Web Inspector: Remove unused WebInspector.LocalJSONObject
        https://bugs.webkit.org/show_bug.cgi?id=140570

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.fromLocalObject): Deleted.
        (WebInspector.LocalJSONObject): Deleted.
        (WebInspector.LocalJSONObject.prototype.get description.switch.case.string_appeared_here): Deleted.
        (WebInspector.LocalJSONObject.prototype.get description.switch.default): Deleted.
        (WebInspector.LocalJSONObject.prototype.get description): Deleted.
        (WebInspector.LocalJSONObject.prototype._concatenate): Deleted.
        (WebInspector.LocalJSONObject.prototype.get type): Deleted.
        (WebInspector.LocalJSONObject.prototype.get subtype): Deleted.
        (WebInspector.LocalJSONObject.prototype.get hasChildren): Deleted.
        (WebInspector.LocalJSONObject.prototype.getOwnProperties): Deleted.
        (WebInspector.LocalJSONObject.prototype.getAllProperties): Deleted.
        (WebInspector.LocalJSONObject.prototype._children.buildProperty): Deleted.
        (WebInspector.LocalJSONObject.prototype._children): Deleted.
        (WebInspector.LocalJSONObject.prototype.isError): Deleted.

2015-01-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exceptions, attempting to dispatch unimplemented Network WebSocket methods
        https://bugs.webkit.org/show_bug.cgi?id=140532

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.webSocketFrameReceived):
        (WebInspector.NetworkObserver.prototype.webSocketFrameError):
        (WebInspector.NetworkObserver.prototype.webSocketFrameSent):
        Add stubs to prevent an exception when trying to dispatch the event.

2015-01-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reopening the inspector can selects a sub-frame instead of the Main Frame's DOM
        https://bugs.webkit.org/show_bug.cgi?id=140513

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Frame.js:
        (WebInspector.Frame.prototype.saveIdentityToCookie):
        Specifically identify the main frame, so that any sub-frames with the same
        URL, don't get choosen over the main frame when restoring state from cookie.

2015-01-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: selecting Paint timeline records from sidebar does not trigger preview of paint quad
        https://bugs.webkit.org/show_bug.cgi?id=139151

        Reviewed by Brian Burg.

        * UserInterface/Views/LayoutTimelineDataGrid.js:
        (WebInspector.LayoutTimelineDataGrid):
        (WebInspector.LayoutTimelineDataGrid.prototype.callFramePopoverAnchorElement):
        (WebInspector.LayoutTimelineDataGrid.prototype.reset): Deleted.
        (WebInspector.LayoutTimelineDataGrid.prototype.hidden): Deleted.
        (WebInspector.LayoutTimelineDataGrid.prototype._layoutDataGridSelectedNodeChanged): Deleted.
        (WebInspector.LayoutTimelineDataGrid.prototype._hideHighlightIfNeeded): Deleted.
        Move the node highlight from the datagrid to the timeline view because
        we want this to happen on both the Navigation sidebar and the datagrid.

        * UserInterface/Views/LayoutTimelineView.js:
        (WebInspector.LayoutTimelineView.prototype.shown):
        (WebInspector.LayoutTimelineView.prototype.hidden):
        (WebInspector.LayoutTimelineView.prototype.filterDidChange):
        (WebInspector.LayoutTimelineView.prototype.reset):
        (WebInspector.LayoutTimelineView.prototype._treeElementDeselected):
        (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
        Update the highlight for major view updates.

        (WebInspector.LayoutTimelineView.prototype._updateHighlight):
        (WebInspector.LayoutTimelineView.prototype._showHighlightForRecord):
        (WebInspector.LayoutTimelineView.prototype._hideHighlightIfNeeded):
        (WebInspector.LayoutTimelineView.prototype._hoveredOrSelectedRecord):
        Show a highlight for what we are hovering, or what is selected.
        Note the selected node may not be visible due to filtering.

        (WebInspector.LayoutTimelineView.prototype._mouseOverDataGrid):
        (WebInspector.LayoutTimelineView.prototype._mouseLeaveDataGrid):
        (WebInspector.LayoutTimelineView.prototype._mouseOverTreeOutline):
        (WebInspector.LayoutTimelineView.prototype._mouseLeaveTreeOutline):
        Update hovered information mousing over the datagrid and tree outline.

        * UserInterface/Views/TimelineContentView.js:
        (WebInspector.TimelineContentView.prototype.filterDidChange):
        * UserInterface/Views/TimelineSidebarPanel.js:
        (WebInspector.TimelineSidebarPanel.prototype.updateFilter):
        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.filterDidChange):
        Include a "filterDidChange" TimelineView method that gets called after
        updateFilter (things like the filter bar or timeline range changes).

        * UserInterface/Views/TreeOutline.js:
        (TreeOutline.prototype.treeElementFromNode):
        (TreeOutline.prototype.treeElementFromPoint):
        Provide a helper to get a tree element from an event target.

2015-01-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: TextEditor doesn't update when resizing console, white space instead of content
        https://bugs.webkit.org/show_bug.cgi?id=140240

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector._consoleResizerMouseDown.dockedResizerDrag):
        Dispatch the event that signals the console has changed size.

2015-01-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: I do not expect to see the same rule multiple times in styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=138185

        Reviewed by Timothy Hatcher.

        In the styles sidebar, don't show a duplicate, lesser-specificity rule even
        if it matches the selected element multiple times with different selectors
        in the list.

        * UserInterface/Models/CSSRule.js:
        (WebInspector.CSSRule.prototype.isEqualTo):
        CSSRule identifiers are objects.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh):
        Remove duplicates from the ordered list of style declarations.

2015-01-12  Jonathan Wells  <jonowells@apple.com>

        Web Inspector: Timeline: when Network Requests view is selected, in progress requests are absent.
        https://bugs.webkit.org/show_bug.cgi?id=140090

        Reviewed by Timothy Hatcher.

        TimelineContentView#_updateTimes() changed to call WebInspector.timelineSidebarPanel.updateFilter() in addition
        to updating the layout of the current timeline view. TimelineSidebarPanel.updateFilter() now responsible for
        updating filtered resources in a TimelineView.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        Now handles updating the UI associated with filtering of navigation sidebar tree elements.

        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype.updateLayout):
        No longer handles updating other UI along with the navigation sidebar tree elements. That is now handled by
        WebInspector.TimelineView.prototype.filterUpdated.
        (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByDetails): Drive-by fix. Missing vars.

        * UserInterface/Views/TimelineContentView.js:
        (WebInspector.TimelineContentView.prototype._updateTimes): Add call to updateFilter().

        * UserInterface/Views/TimelineView.js:
        (WebInspector.TimelineView.prototype.filterUpdated):
        Function added to dispatch a SelectionPathComponentsDidChange event.

2015-01-09  Enrica Casucci  <enrica@apple.com>

        [iOS] Support additional text styles.
        https://bugs.webkit.org/show_bug.cgi?id=140310
        rdar://problem/18568864

        Reviewed by Joseph Pecoraro.

        Add support for three new text styles.

        * UserInterface/Models/CSSKeywordCompletions.js:

2015-01-09  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: REGRESSION: Navigation sidebar can show blank next to the Console view
        https://bugs.webkit.org/show_bug.cgi?id=140291

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded): Don't restore collapsed false if selectedSidebarPanel is null.
        (WebInspector._sidebarCollapsedStateDidChange): Support a _ignoreNavigationSidebarPanelCollapsedEvent flag
        to avoid setting _navigationSidebarCollapsedSetting.
        (WebInspector._navigationSidebarPanelSelected): Force collapsed if selectedSidebarPanel is null.
        (WebInspector._contentBrowserCurrentContentViewDidChange): Set _ignoreNavigationSidebarPanelCollapsedEvent
        when forcing the collapsed state to avoid setting _navigationSidebarCollapsedSetting and calling
        _updateContentViewForCurrentNavigationSidebar.

2015-01-08  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: REGRESSION Showing debugger sidebar shouldn't change selected JS file
        https://bugs.webkit.org/show_bug.cgi?id=139526

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector._revealAndSelectRepresentedObjectInNavigationSidebar):
        When switching to Debugger, show last selected JS or HTML resource.

        (WebInspector.showSplitConsole):
        (WebInspector.showFullHeightConsole):
        (WebInspector.toggleConsoleView):
        (WebInspector._sidebarCollapsedStateDidChange):
        (WebInspector._updateContentViewForCurrentNavigationSidebar):
        (WebInspector._navigationSidebarPanelSelected):
        (WebInspector._contentBrowserCurrentContentViewDidChange):
        (WebInspector._updateNavigationSidebarForCurrentContentView): Deleted.
        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/DatabaseContentView.js:
        (WebInspector.DatabaseContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/DatabaseTableContentView.js:
        (WebInspector.DatabaseTableContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/FrameDOMTreeContentView.js:
        (WebInspector.FrameDOMTreeContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.prototype.get allowedNavigationSidebarPanels):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.ResourceSidebarPanel.prototype.showMainFrame):
        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.removeSidebarPanel):
        * UserInterface/Views/TimelineContentView.js:
        (WebInspector.TimelineContentView.prototype.get allowedNavigationSidebarPanels):

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

        Web Inspector: Phantom breakpoint appears on empty line after reload of minified file with a breakpoint
        https://bugs.webkit.org/show_bug.cgi?id=140276

        Reviewed by Timothy Hatcher.

        Styles being set on lines (e.g. breakpoint styles) before content loaded can
        carry forward with the empty line. It is safe for us to just remove all
        the styles from the intial empty line before we load the initial content.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.set string.update):
        (WebInspector.TextEditor.prototype.set string):

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

        Web Inspector: Pause Reason Improvements (Breakpoint, Debugger Statement, Pause on Next Statement)
        https://bugs.webkit.org/show_bug.cgi?id=138991

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New UI strings for Pause Reasons.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.breakpointForIdentifier):
        Provide a way to get the breakpoint with an identifier.

        * UserInterface/Images/PausedBreakpoint.svg: Added.
        * UserInterface/Images/gtk/PausedBreakpoint.svg: Added.
        Copy PseudoElement.svg icon and give it a new name.

        * UserInterface/Views/BreakpointTreeElement.css:
        (.breakpoint-paused-icon .icon):
        New icon for a breakpoint causing a pause.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.removeStatusImage):
        (WebInspector.BreakpointTreeElement.prototype._updateStatus):
        Give API to remove the breakpoint status icon from a BreakpointTreeElement.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype.get hasSelectedElement):
        (WebInspector.DebuggerSidebarPanel.prototype.deselectBreakpointContentTreeElements):
        (WebInspector.DebuggerSidebarPanel.prototype.deselectPauseReasonContentTreeElements):
        (WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
        Give DebuggerSidebarPanel an optional pause reason tree outline. When available
        include it in the pattern of ensuring a single exclusive selection.

        (WebInspector.DebuggerSidebarPanel.prototype._breakpointRemoved):
        When a breakpoint is removed, check if we should update the pause reason tree outline.

        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReason):
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        Update Pause Reason section contents depending on the reason.

        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonGotoArrow):
        Always try to include a goto arrow to jump to the original pause location
        if it is available at the time of pausing.

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

        Web Inspector: Expected UserAgent styles to be crossed-out if overridden
        https://bugs.webkit.org/show_bug.cgi?id=140154

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseStylePropertyPayload):
        Add a comment about anonymous styles. The getter is no longer used, and it is not
        clear if we really care about this state, or if "anonymous" is an appropriate name.

        (WebInspector.DOMNodeStyles.prototype._markOverriddenProperties):
        Allow browser styles (user agent / html attributes) to be overridden.

        (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
        When refreshing styles after changes, the Style object backing HTML attributes
        was being completely replaced. Allow it to be remembered by a unique key.

2015-01-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Do not create rulesMap entries for rules without identifiers
        https://bugs.webkit.org/show_bug.cgi?id=140237

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseRulePayload):
        We were accidentally converting a null into a string with a loose string
        concatenation. Only do this if the mapKey is not-null.

2015-01-07  Saam Barati  <saambarati1@gmail.com>

        Web Inspector: Abstract common functions from TypeTokenAnnotator into a parent class and introduce an AnnotatorManager
        https://bugs.webkit.org/show_bug.cgi?id=139426

        Reviewed by Timothy Hatcher.

        This patch creates a parent class, Annotator, that TypeTokenAnnotator
        inherits from. Annotator defines a common set of functionality
        that a text editor annotator can use to mark up UI. This 
        is in preparation other classes that will inherit from Annotator.
        
        This patch also introduces AnnotatorManager which controls a
        set of Annotators and provides a single interface for
        controlling them.

        * UserInterface/Controllers/Annotator.js: Added.
        (WebInspector.Annotator):
        (WebInspector.Annotator.prototype.get sourceCodeTextEditor):
        (WebInspector.Annotator.prototype.get isActive):
        (WebInspector.Annotator.prototype.pause):
        (WebInspector.Annotator.prototype.resume):
        (WebInspector.Annotator.prototype.refresh):
        (WebInspector.Annotator.prototype.reset):
        (WebInspector.Annotator.prototype.clear):
        (WebInspector.Annotator.prototype.insertAnnotations):
        (WebInspector.Annotator.prototype.clearAnnotations):
        (WebInspector.Annotator.prototype._clearTimeoutIfNeeded):
        * UserInterface/Controllers/AnnotatorManager.js: Added.
        (WebInspector.AnnotatorManager):
        (WebInspector.AnnotatorManager.prototype.addAnnotator):
        (WebInspector.AnnotatorManager.prototype.isAnnotatorActive):
        (WebInspector.AnnotatorManager.prototype.pauseAll):
        (WebInspector.AnnotatorManager.prototype.resumeAll):
        (WebInspector.AnnotatorManager.prototype.refreshAllIfActive):
        (WebInspector.AnnotatorManager.prototype.resetAllIfActive):
        (WebInspector.AnnotatorManager.prototype.clearAll):
        (WebInspector.AnnotatorManager.prototype.removeAllAnnotators):
        (WebInspector.AnnotatorManager.prototype._getAnnotators):
        * UserInterface/Controllers/TypeTokenAnnotator.js:
        (WebInspector.TypeTokenAnnotator):
        (WebInspector.TypeTokenAnnotator.prototype.insertAnnotations.):
        (WebInspector.TypeTokenAnnotator.prototype.clearAnnotations):
        (WebInspector.TypeTokenAnnotator.prototype._insertToken):
        (WebInspector.TypeTokenAnnotator.prototype.get isActive): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype.get sourceCodeTextEditor): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype.pause): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype.resume): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype.refresh): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype.reset): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype._insertAnnotations.): Deleted.
        (WebInspector.TypeTokenAnnotator.prototype._clearTimeoutIfNeeded): Deleted.
        * UserInterface/Main.html:
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype.shown):
        (WebInspector.SourceCodeTextEditor.prototype.hidden):
        (WebInspector.SourceCodeTextEditor.prototype.canShowTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
        (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
        (WebInspector.SourceCodeTextEditor.prototype.prettyPrint):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
        (WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
        (WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):
        (WebInspector.SourceCodeTextEditor.prototype._getAssociatedScript):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler.scrollHandler):
        (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler):

2015-01-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Do not style implicit CSS properties in the Style Rules section
        https://bugs.webkit.org/show_bug.cgi?id=140161

        Reviewed by Timothy Hatcher.

        Previously, implicit properties being transparent in the Rules section
        was confusing and not useful. Lets simplify what transparency means:

            - Rules:  transparency means a non-inheritable property in an inherited rule
            - Computed: transparency means an implicit value

        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property.not-inherited):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property:matches(.implicit, .not-inherited)): Deleted.

2015-01-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught Exception when dismissing Go To Line dialog
        https://bugs.webkit.org/show_bug.cgi?id=139663

        Reviewed by Timothy Hatcher.

        Calling removeChild would trigger the blur event handler and do a
        nested call of dismiss(), re-entering and removing while in the middle
        of removing. Avoid re-entrancy to avoid the exception.

        * UserInterface/Views/GoToLineDialog.js:
        (WebInspector.GoToLineDialog):
        (WebInspector.GoToLineDialog.prototype.dismiss):

2015-01-01  Darin Adler  <darin@apple.com>

        We often misspell identifier as "identifer"
        https://bugs.webkit.org/show_bug.cgi?id=140025

        Reviewed by Michael Saboff.

        * UserInterface/Base/Main.js:
        (WebInspector._updateNavigationSidebarForCurrentContentView):
        (WebInspector._contentBrowserCurrentContentViewDidChange):
        Fix misspellings.

2014-12-29  Jonathan Wells  <jonowells@apple.com>

        Web Inspector: SourceCode.requestContent should return a promise
        https://bugs.webkit.org/show_bug.cgi?id=135777

        Reviewed by Brian Burg.

        Change SourceCode.js to request content from the backend using Promises. Change Resource.js to use this new
        approach when determining whether a resource load has finished. Change all calls to the older
        SourceCode#requestContentFromBackendIfNeeded to simply use requestContent and use a catch function
        if a content request error needs to be handled. Fix a bug where the appropriate error message for an
        invalid resource wasn't showing in the resource content view.

        * UserInterface/Controllers/AnalyzerManager.js:
        (set WebInspector.AnalyzerManager.prototype.getAnalyzerMessagesForSourceCode.):
        (set WebInspector.AnalyzerManager.prototype.getAnalyzerMessagesForSourceCode):
        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype._updateResourceContent.fetchedStyleSheetContent):
        (WebInspector.CSSStyleManager.prototype._updateResourceContent.styleSheetReady):
        * UserInterface/Models/CSSStyleSheet.js:
        (WebInspector.CSSStyleSheet.prototype.requestContentFromBackend):
        (WebInspector.CSSStyleSheet.prototype.canRequestContentFromBackend): Deleted.
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.changeStyleText):
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.canRequestContent):
        (WebInspector.Resource.prototype.requestContentFromBackend):
        (WebInspector.Resource.prototype.markAsFinished):
        (WebInspector.Resource.prototype.markAsFailed):
        (WebInspector.Resource.prototype.getImageSize):
        (WebInspector.Resource.prototype.canRequestContentFromBackend): Deleted.
        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.requestContentFromBackend):
        (WebInspector.Script.prototype.requestScriptSyntaxTree.catch):
        (WebInspector.Script.prototype.canRequestContentFromBackend): Deleted.
        * UserInterface/Models/SourceCode.js:
        (WebInspector.SourceCode):
        (WebInspector.SourceCode.prototype.requestContent):
        (WebInspector.SourceCode.prototype.requestContentFromBackend):
        (WebInspector.SourceCode.prototype._processContent):
        (WebInspector.SourceCode.prototype.canRequestContentFromBackend): Deleted.
        (WebInspector.SourceCode.prototype.requestContentFromBackendIfNeeded): Deleted.
        (WebInspector.SourceCode.prototype.servicePendingContentRequests): Deleted.
        * UserInterface/Models/SourceMapResource.js:
        (WebInspector.SourceMapResource):
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend.sourceMapResourceLoadError):
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend):
        (WebInspector.SourceMapResource.prototype.canRequestContentFromBackend): Deleted.
        (WebInspector.SourceMapResource.prototype.requestContentFromBackend.sourceMapResourceLoaded): Deleted.
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        (WebInspector.ResourceContentView.prototype._contentAvailable):
        (WebInspector.ResourceContentView.prototype._contentError):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype._contentAvailable):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithInlineScriptContent.scriptContentAvailable):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithInlineScriptContent):
        (WebInspector.SourceCodeTextEditor.prototype._populateWithScriptContent):

2014-12-26  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/19348208> REGRESSION (r177027): iOS builds use the wrong toolchain
        https://bugs.webkit.org/show_bug.cgi?id=139950

        Reviewed by David Kilzer.

        * Configurations/Base.xcconfig: Only define TOOLCHAINS when building for OS X, doing so
        in a manner that works with Xcode 5.1.1.

2014-12-20  David Kilzer  <ddkilzer@apple.com>

        Switch from using PLATFORM_NAME to SDK selectors in WebCore, WebInspectorUI, WebKit, WebKit2
        <http://webkit.org/b/139463>

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig:
        - Only set TOOLCHAINS on OS X.
        * Configurations/DebugRelease.xcconfig:
        - Only set MACOSX_DEPLOYMENT_TARGET and SDKROOT on OS X.
        * Configurations/Version.xcconfig:
        - Set SYSTEM_VERSION_PREFIX separately for iOS and OS X.
        * Configurations/WebInspectorUIFramework.xcconfig:
        - Set NORMAL_PRODUCTION_FRAMEWORKS_DIR,
          PRODUCTION_FRAMEWORKS_DIR and
          JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_Production by SDK.

2014-12-19  Commit Queue  <commit-queue@webkit.org>

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

        "Broke Production builds by installing
        libWebCoreTestSupport.dylib in the wrong directory" (Requested
        by ddkilzer on #webkit).

        Reverted changeset:

        "Switch from using PLATFORM_NAME to SDK selectors in WebCore,
        WebInspectorUI, WebKit, WebKit2"
        https://bugs.webkit.org/show_bug.cgi?id=139463
        http://trac.webkit.org/changeset/177574

2014-12-19  David Kilzer  <ddkilzer@apple.com>

        Switch from using PLATFORM_NAME to SDK selectors in WebCore, WebInspectorUI, WebKit, WebKit2
        <http://webkit.org/b/139463>

        Reviewed by Mark Rowe.

        * Configurations/Base.xcconfig:
        - Only set TOOLCHAINS on OS X.
        * Configurations/DebugRelease.xcconfig:
        - Only set MACOSX_DEPLOYMENT_TARGET and SDKROOT on OS X.
        * Configurations/Version.xcconfig:
        - Set SYSTEM_VERSION_PREFIX separately for iOS and OS X.
        * Configurations/WebInspectorUIFramework.xcconfig:
        - Set NORMAL_PRODUCTION_FRAMEWORKS_DIR,
          PRODUCTION_FRAMEWORKS_DIR and
          JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_Production by SDK.

2014-12-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION: Dragging undocked web inspector causes mouse to change from pointer to i-bar cursor over window title
        https://bugs.webkit.org/show_bug.cgi?id=139720

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        Prevent default handling of the mouse event when clicking in the titlebar area. WebCore won't continue handling the event,
        but docking buttons/context menu still function.

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

        Web Inspector: Clicking on the expand object arrow should always expand an object
        https://bugs.webkit.org/show_bug.cgi?id=139382

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype._click): Deleted.
        stopPropagation was preventing the object expansion from happening as expecting.

2014-12-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CSSStyleDeclarationTextEditor fails to update if computed properties changed from empty to non-empty
        https://bugs.webkit.org/show_bug.cgi?id=139610

        Reviewed by Timothy Hatcher.

        The CSSStyleDeclarationTextEditor for Computed Style Properties always has
        empty DOMNodeStyles text. However we would not reset contents if properties
        changed and the actualy content was empty. So once empty, we could never
        recover. In fact, we should always refresh for Computed Styles.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._propertiesChanged):

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

        Web Inspector: Hide Compositing Borders Button if backend returns an error that it is unsupported
        https://bugs.webkit.org/show_bug.cgi?id=139307

        Reviewed by Darin Adler.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):

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

        Web Inspector: Uncaught Exceptions when attempting to show Content Flow
        https://bugs.webkit.org/show_bug.cgi?id=139276

        Reviewed by Brian Burg.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView):
        (WebInspector.ContentView.isViewable):
        LegacyJavaScriptProfileObject no longer exists, these references should be removed.

        * UserInterface/Views/FolderizedTreeElement.js:
        (WebInspector.FolderizedTreeElement.prototype._insertChildTreeElement):
        This sort function references "this" and needed to be bound.

2014-12-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Timeline Filter Bar only has "All", missing Resource Type filters
        https://bugs.webkit.org/show_bug.cgi?id=139268

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.createColumnScopeBar):
        Users of createColumnScopeBar pass a Map object now instead of a dictionary.
        Iterate over the map appropriately.

2014-12-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: LayoutTests/inspector tests fail in Production builds due to missing test resources
        https://bugs.webkit.org/show_bug.cgi?id=138898

        Reviewed by Mark Rowe.

        In Production builds, if FORCE_TOOL_INSTALL=YES is in the environment
        we will copy all resources (for Tests) and still do the combine and
        optimize phase for normal Production inspection resources.

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

2014-12-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Missing getter, clients never see DragToAdjustController is enabled
        https://bugs.webkit.org/show_bug.cgi?id=139228

        Reviewed by Simon Fraser.

        * UserInterface/Controllers/DragToAdjustController.js:
        (WebInspector.DragToAdjustController.prototype.get enabled):

2014-12-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CSS Minification breaks some selectors with colons
        https://bugs.webkit.org/show_bug.cgi?id=139206

        Reviewed by Simon Fraser.

        Do not remove spaces preceeding colons, as they may change the semantics
        of selectors with colon prefixes (e.g. "a :not(b)").

        At the same time, we can strip spaces around "!" characters, for example
        a space is not required before "!important" priority.

        * Scripts/cssmin.py:
        (cssminify):

2014-12-01  Benjamin Poulain  <benjamin@webkit.org>

        Web Inspector: add more :not() and :matches() awesomeness
        https://bugs.webkit.org/show_bug.cgi?id=138997

        Reviewed by Joseph Pecoraro.

        Simplify the Inspector's CSS when possible.

        * UserInterface/Views/DatabaseContentView.css:
        (:matches(.database-user-query, .database-query-prompt, .database-query-result)::before):
        (.database-user-query::before, .database-query-prompt::before, .database-query-result::before): Deleted.
        * UserInterface/Views/GradientSlider.css:
        (.gradient-slider-knob > :matches(img, div)):
        (.gradient-slider-knob > div): Deleted.
        * UserInterface/Views/HoverMenu.css:
        (.hover-menu > svg > :matches(path, rect)):
        (.hover-menu > svg > rect): Deleted.
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
        (.panel.details.layer-tree .name-column :matches(.pseudo-element, .reflection)):
        (.panel.details.layer-tree tr.selected .name-column :matches(.pseudo-element, .reflection)):
        (.panel.details.layer-tree .name-column .reflection): Deleted.
        (.panel.details.layer-tree tr.selected .name-column .reflection): Deleted.
        * UserInterface/Views/ProbeDetailsSidebarPanel.css:
        (.details-section.probe-set .options > :matches(.probe-remove, .probe-clear-samples, .probe-add)):
        (.details-section.probe-set .options > .probe-add): Deleted.
        * UserInterface/Views/ResourceSidebarPanel.css:
        (.sidebar > .panel.navigation.resource > :matches(.content, .empty-content-placeholder)):
        (body.mac-platform.legacy .sidebar > .panel.navigation.resource > :matches(.content, .empty-content-placeholder)):
        (.sidebar > .panel.navigation.resource > .empty-content-placeholder): Deleted.
        (body.mac-platform.legacy .sidebar > .panel.navigation.resource > .empty-content-placeholder): Deleted.
        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li:matches(.selected, :active)):
        (.scope-bar > li:active): Deleted.
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.syntax-highlighted :matches(.css-comment, .javascript-comment, .html-comment)):
        (.syntax-highlighted :matches(.css-keyword, .css-tag, .css-at-rule, .css-important, .javascript-keyword, .html-tag)):
        (.syntax-highlighted :matches(.css-number, .javascript-number)):
        (.syntax-highlighted :matches(.css-property, .css-selector, .javascript-ident)):
        (.syntax-highlighted :matches(.css-string, .javascript-string, .javascript-regexp, .html-attribute-value)):
        (.syntax-highlighted :matches(.html-doctype, .html-processing-instruction)):
        (.syntax-highlighted .html-comment): Deleted.
        (.syntax-highlighted .html-tag): Deleted.
        (.syntax-highlighted .javascript-number): Deleted.
        (.syntax-highlighted .javascript-ident): Deleted.
        (.syntax-highlighted .html-attribute-value): Deleted.
        (.syntax-highlighted .html-processing-instruction): Deleted.
        It looks like ".cm-tag.cm-bracket" was there only to override the rule below.
        From basic testing, it looks like "cm-tag" and "cm-bracket" always appear together. I removed the "cm-bracket" rule
        from the second rule, and simplified the first rule.

        * UserInterface/Views/TimelineSidebarPanel.css:
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > :matches(.content, .empty-content-placeholder)):
        (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .empty-content-placeholder): Deleted.
        * UserInterface/Views/Toolbar.css:
        (body.mac-platform:not(.legacy, .docked) .toolbar):
        (body.mac-platform:not(.legacy, .docked) .toolbar.icon-and-label-vertical):
        (body.mac-platform:not(.legacy, .docked) .toolbar.icon-and-label-vertical.small-size):
        (body.mac-platform:not(.legacy, .docked) .toolbar:matches(.icon-and-label-horizontal, .icon-only)):
        (body.mac-platform:not(.legacy, .docked) .toolbar:matches(.icon-and-label-horizontal.small-size, .icon-only.small-size, .label-only)):
        (.toolbar:matches(.icon-and-label-horizontal.small-size, .icon-only.small-size, .label-only) .control-section):
        (body.mac-platform:not(.legacy):not(.docked) .toolbar): Deleted.
        (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-and-label-vertical): Deleted.
        (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-and-label-vertical.small-size): Deleted.
        (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-only): Deleted.
        (body.mac-platform:not(.legacy):not(.docked) .toolbar.label-only): Deleted.
        (.toolbar.label-only .control-section): Deleted.

2014-11-27  Andres Gomez  <agomez@igalia.com>

        Web Inspector: Update NavigationItemProbes icon for the GTK+ port
        https://bugs.webkit.org/show_bug.cgi?id=139074

        Reviewed by Carlos Garcia Campos.

        NavigationItemProbes was updated for the Mac port and we are now
        having a similar ideogram in GTK+.

        * UserInterface/Images/gtk/NavigationItemProbes.svg: Updated.

2014-11-21  Benjamin Poulain  <bpoulain@apple.com>

        Start using the new :not() and :matches() in the Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=138978

        Reviewed by Joseph Pecoraro.

        Start simpifying some definitions by using modern CSS.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (body.mac-platform.legacy .style-declaration-section.last-in-group + .style-declaration-section:matches(.last-in-group, :last-child)):
        (.style-declaration-section:matches(.locked, .selector-locked) > .header > .selector):
        (body.mac-platform.legacy .style-declaration-section.last-in-group + .style-declaration-section:last-child): Deleted.
        (.style-declaration-section.selector-locked > .header > .selector): Deleted.
        * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property:matches(.disabled, .invalid, .other-vendor, .not-inherited, .overridden)):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property:matches(.implicit, .not-inherited)):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .editing-line .css-style-declaration-property:matches(.disabled, .other-vendor, .not-inherited, .overridden)):
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property.overridden): Deleted.
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .css-style-declaration-property.not-inherited): Deleted.
        (.css-style-text-editor > .CodeMirror .CodeMirror-lines .editing-line .css-style-declaration-property.overridden): Deleted.
        * UserInterface/Views/ControlToolbarItem.css:
        (.toolbar:matches(.icon-and-label-horizontal, .toolbar.icon-only) .item.control):
        (.toolbar.icon-only .item.control): Deleted.
        * UserInterface/Views/DOMStorageContentView.css:
        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar.icon-and-label-vertical:matches(.small-size, .normal-size) .dashboard-container):
        (.toolbar:matches(.label-only, .small-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal)) .dashboard-container):
        (.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard-container):
        (.toolbar.normal-size.icon-and-label-vertical .dashboard-container): Deleted.
        (.toolbar.small-size.icon-and-label-horizontal .dashboard-container): Deleted.
        (.toolbar.normal-size.icon-and-label-horizontal .dashboard-container): Deleted.
        * UserInterface/Views/DataGrid.css:
        (.data-grid :matches(th, td):not(:last-child)):
        (.data-grid th:matches(.sort-ascending, .sort-descending)):
        (.data-grid :matches(th, td) > div):
        (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
        (.data-grid tr:matches(.selected, :hover) .go-to-arrow):
        (.data-grid :-webkit-any(th, td):not(:last-child)): Deleted.
        (.data-grid th:-webkit-any(.sort-ascending, .sort-descending)): Deleted.
        (.data-grid :-webkit-any(th, td) > div): Deleted.
        (.data-grid th:-webkit-any(.sort-ascending, .sort-descending) > div:first-child): Deleted.
        (.data-grid tr:-webkit-any(.selected, :hover) .go-to-arrow): Deleted.
        * UserInterface/Views/DebuggerDashboardView.css:
        (.toolbar.collapsed .dashboard.debugger > :not(.message, .navigation-bar )):
        (.toolbar.collapsed .dashboard.debugger > :not(.message):not(.navigation-bar )): Deleted.
        * UserInterface/Views/DefaultDashboardView.css:
        (body.web .toolbar.collapsed .dashboard.default > :matches(.time, .resourcesSize, .logs)):
        (body.javascript .toolbar .dashboard.default > :matches(.time, .resourcesSize, .resourcesCount)):
        (.toolbar:matches(.label-only, .small-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal)) .dashboard.default > .item):
        (.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard.default > .item):
        (body.web .toolbar.collapsed .dashboard.default > .logs): Deleted.
        (body.javascript .toolbar .dashboard.default > .resourcesCount): Deleted.
        (.toolbar.small-size.icon-and-label-horizontal .dashboard.default > .item): Deleted.
        (.toolbar.normal-size.icon-and-label-horizontal .dashboard.default > .item): Deleted.
        * UserInterface/Views/DetailsSection.css:
        (.details-section > .header > :matches(.node-link, .go-to-arrow)):
        (.details-section > .content > .group:nth-child(even) > .row:matches(.simple:first-child > *, :not(.simple):first-child)):
        (body.mac-platform.legacy .details-section > .content > .group:matches(:nth-child(even), :last-child) > .row.simple:last-child > *):
        (.details-section > .content > .group > .row:matches(.empty, .text)):
        (body.mac-platform.legacy .details-section > .content > .group > .row:matches(.empty, .text)):
        (.details-section > .header > .go-to-arrow): Deleted.
        (.details-section > .content > .group:nth-child(even) > .row.simple:first-child > *): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group:last-child > .row.simple:last-child > *): Deleted.
        (.details-section > .content > .group > .row.text): Deleted.
        (body.mac-platform.legacy .details-section > .content > .group > .row.text): Deleted.
        * UserInterface/Views/FindBanner.css:
        (:matches(.find-banner, .supports-find-banner).no-find-banner-transition):
        (.supports-find-banner.no-find-banner-transition): Deleted.
        * UserInterface/Views/FlexibleSpaceNavigationItem.css:
        (:matches(.navigation-bar, .toolbar) .item.flexible-space):
        (.toolbar .item.flexible-space): Deleted.

2014-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: LayoutTests/inspector should not have localStorage side effects
        https://bugs.webkit.org/show_bug.cgi?id=138895

        Reviewed by Brian Burg.

        When running inspector tests, do not restore/save WebInspector.Settings
        to localStorage, as that will cause side effects. Instead each Setting
        will be initialized with its default value and can be modified during
        the run of the test.

        * UserInterface/Base/Test.js:
        (WebInspector.loaded):
        Name the setting to match the normal setting name now that persistence
        is not an issue.

        * UserInterface/Models/Setting.js:
        (WebInspector.Setting.prototype.get value):
        (WebInspector.Setting.prototype.set value):
        Do not restore/save when in tests.

2014-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: JSContext inspection Resource search does not work
        https://bugs.webkit.org/show_bug.cgi?id=131252

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.resourceCallback):
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.resourcesCallback):
        Cleanup by reordering things a bit.

        (WebInspector.ResourceSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
        (WebInspector.ResourceSidebarPanel.prototype.performSearch.searchScripts):
        (WebInspector.ResourceSidebarPanel.prototype.performSearch):
        Search non-resource scripts individually.

        (WebInspector.ResourceSidebarPanel.prototype._searchTreeElementForScript):
        Lazily create a ScriptTreeElement for the search tree outline as needed.

        (WebInspector.ResourceSidebarPanel.prototype._scriptsToSearch):
        When searching scripts, just perform a shallow walk of the tree outline to find
        Script resources that are not also Resources. Scripts are always guarenteed to
        be in a folder when inspecting a web resource. For JSContext inspection, scripts
        are promoted to the top level.

        * UserInterface/Main.html:
        * UserInterface/Models/SourceCodeSearchMatchObject.js: Renamed from Source/WebInspectorUI/UserInterface/Models/ResourceSearchMatchObject.js.
        (WebInspector.SourceCodeSearchMatchObject):
        * UserInterface/Views/SearchIcons.css:
        (.source-code-match-icon .icon):
        (.resource-match-icon .icon): Deleted.
        * UserInterface/Views/SearchResultTreeElement.js:
        (WebInspector.SearchResultTreeElement):
        Rename ResourceSearchMatchObject to SourceCodeSearchMatchObject.

2014-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Provide $exception in the console for the thrown exception value
        https://bugs.webkit.org/show_bug.cgi?id=138726

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Test.js:
        (WebInspector.loaded):
        In order to use RuntimeManager to execute in the global context or on the
        active debugger call frame, we need to expose the quickConsole controller.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        Expose $exception to completion when we paused because of an exception.

2014-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Debugger should not mutate variable when hovering mouse over ++n expression
        https://bugs.webkit.org/show_bug.cgi?id=138839

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):

2014-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve basic JavaScript completion in inline <script>s
        https://bugs.webkit.org/show_bug.cgi?id=138845

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
        Fix up CodeMirror mode handling for JavaScript completion when inside of mixed mode
        input (html). Also add completion for CodeMirror's localVars list.

== Rolled over to ChangeLog-2014-11-19 ==
