blob: de7689375ae2d739173f2e4d45f96fcb9a6d0b9c [file] [log] [blame]
2018-09-21 Brian Burg <bburg@apple.com>
Web Inspector: remove unnecessary WI.Platform.version checks
https://bugs.webkit.org/show_bug.cgi?id=189845
Reviewed by Matt Baker.
* UserInterface/Base/Platform.js:
(osVersionMatch): Add name for macOS Mojave.
* UserInterface/Base/Main.js:
* UserInterface/Views/Popover.js:
Remove old logic that's no longer needed.
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: remove setting for Sources tab
https://bugs.webkit.org/show_bug.cgi?id=189817
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._debuggerDidPause):
(WI.isShowingSourcesTab): Removed.
(WI.showSourcesTab): Removed.
* UserInterface/Views/SourcesSidebarPanel.css: Removed.
* UserInterface/Views/SourcesSidebarPanel.js: Removed.
* UserInterface/Views/SourcesTabContentView.js: Removed.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
2018-09-20 Simon Fraser <simon.fraser@apple.com>
Make "overflow: overlay" a synonym for "overflow: auto"
https://bugs.webkit.org/show_bug.cgi?id=189811
Reviewed by Zalan Bujtas.
Remove "overlay" from the overflow values.
* UserInterface/Models/CSSKeywordCompletions.js:
* UserInterface/Views/VisualStyleDetailsPanel.js:
(WI.VisualStyleDetailsPanel.prototype._populateDisplaySection):
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: hide Accessibility Audit Tab setting
https://bugs.webkit.org/show_bug.cgi?id=189816
Reviewed by Joseph Pecoraro.
Considering that this tab doesn't exist, there's no reason to have a setting/UI for it.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: remove Legacy Style Editor
https://bugs.webkit.org/show_bug.cgi?id=189808
Reviewed by Joseph Pecoraro.
The Legacy Style Editor has been hidden behind an "experimental" setting for almost a year.
It's time that we remove it, especially since the new Style Editor is at a similar, if not
more advanced, state.
* .eslintrc:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
* Localizations/en.lproj/localizedStrings.js:
* Tools/PrettyPrinting/index.html:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Base/Setting.js:
* UserInterface/Base/TextUtilities.js: Removed.
* UserInterface/Base/Utilities.js:
* UserInterface/Views/RulesStyleDetailsPanel.css: Removed.
* UserInterface/Views/RulesStyleDetailsPanel.js: Removed.
* UserInterface/Views/CSSStyleDeclarationSection.css: Removed.
* UserInterface/Views/CSSStyleDeclarationSection.js: Removed.
* UserInterface/Views/CSSStyleDeclarationTextEditor.css: Removed.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js: Removed.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.get text):
(WI.CSSProperty.prototype.get synthesizedText): Deleted.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.set text):
(WI.CSSStyleDeclaration.prototype.resetText): Deleted.
(WI.CSSStyleDeclaration.prototype.get modified): Deleted.
(WI.CSSStyleDeclaration.prototype.generateCSSRuleString): Deleted.
(WI.CSSStyleDeclaration.prototype.isInspectorRule): Deleted.
* UserInterface/Models/CSSSelector.js:
(WI.CSSSelector.prototype.isGreaterThan): Deleted.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule.prototype.update):
(WI.CSSRule.prototype.get matchedSelectors): Deleted.
(WI.CSSRule.prototype.get matchedSelectorText): Deleted.
(WI.CSSRule.prototype.hasMatchedPseudoElementSelector): Deleted.
(WI.CSSRule.prototype.get mediaText): Deleted.
(WI.CSSRule.prototype.get mostSpecificSelector): Deleted.
(WI.CSSRule.prototype.selectorIsGreater): Deleted.
(WI.CSSRule.prototype._determineMostSpecificSelector): Deleted.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.changeRule.changeCompleted): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.styleChanged): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.changeText): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.ruleSelectorChanged): Deleted.
(WI.DOMNodeStyles.prototype.changeRule): Deleted.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.prototype.isValidPropertyName):
(WI.CSSCompletions):
(WI.CSSCompletions.prototype.keySet): Deleted.
(WI.CSSCompletions.prototype.propertyRequiresWebkitPrefix): Deleted.
(WI.CSSCompletions.prototype.getClosestPropertyName): Deleted.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorStartEditingAdjacentRule): Deleted.
* UserInterface/Views/RulesStyleDetailsSidebarPanel.js:
(WI.RulesStyleDetailsSidebarPanel):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorStartEditingRuleSelector): Added.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector): Deleted.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .rules): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link:hover): Added.
(.sidebar > .panel.details.css-style > .content > .rules > .message-text-view): Added.
(.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .message-text-view): Added.
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content > .rules .section-header): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link:hover): Added.
(.spreadsheet-style-panel .section-header): Deleted.
(.spreadsheet-style-panel .section-header .node-link): Deleted.
(.spreadsheet-style-panel .section-header .node-link:hover): Deleted.
(.spreadsheet-style-panel .section-header): Deleted.
(.spreadsheet-style-panel .section-header .node-link:hover): Deleted.
* UserInterface/Views/CodeMirrorAdditions.js:
(extendedCSSRuleStartState): Removed.
* UserInterface/Views/CodeMirrorFormatters.js:
Remove "css-rule" CodeMirror mode.
* UserInterface/Views/CodeMirrorTextMarkers.js:
(createCodeMirrorVariableTextMarkers): Deleted.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-09-21 Mike Gorse <mgorse@suse.com>
Build tools should work when the /usr/bin/python is python3
https://bugs.webkit.org/show_bug.cgi?id=156674
Reviewed by Michael Catanzaro.
* Scripts/copy-user-interface-resources.pl: Use $PYTHON if set
in the environment.
2018-09-20 Devin Rousso <drousso@apple.com>
Web Inspector: remove Visual Style CSS details sidebar panel
https://bugs.webkit.org/show_bug.cgi?id=189807
Reviewed by Joseph Pecoraro.
The Visual Style CSS details sidebar panel has been hidden behind an "experimental" setting
for almost a year. It's time that we remove it.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Images/AnimationPlayStatePaused.svg: Removed.
* UserInterface/Images/AnimationPlayStateRunning.svg: Removed.
* UserInterface/Images/ClearBoth.svg: Removed.
* UserInterface/Images/ClearLeft.svg: Removed.
* UserInterface/Images/ClearRight.svg: Removed.
* UserInterface/Images/FloatLeft.svg: Removed.
* UserInterface/Images/FloatRight.svg: Removed.
* UserInterface/Images/FontStyleItalic.svg: Removed.
* UserInterface/Images/FontStyleNormal.svg: Removed.
* UserInterface/Images/ListStylePositionInside.svg: Removed.
* UserInterface/Images/ListStylePositionOutside.svg: Removed.
* UserInterface/Images/TextAlignCenter.svg: Removed.
* UserInterface/Images/TextAlignJustify.svg: Removed.
* UserInterface/Images/TextAlignLeft.svg: Removed.
* UserInterface/Images/TextAlignRight.svg: Removed.
* UserInterface/Images/TextDecorationLineThrough.svg: Removed.
* UserInterface/Images/TextDecorationOverline.svg: Removed.
* UserInterface/Images/TextDecorationUnderline.svg: Removed.
* UserInterface/Images/TextTransformCapitalize.svg: Removed.
* UserInterface/Images/TextTransformLowercase.svg: Removed.
* UserInterface/Images/TextTransformUppercase.svg: Removed.
* UserInterface/Images/VisualStyleNone.svg: Removed.
* UserInterface/Images/VisualStylePropertyLinked.svg: Removed.
* UserInterface/Images/VisualStylePropertyUnlinked.svg: Removed.
* UserInterface/Views/VisualStyleBackgroundPicker.css: Removed.
* UserInterface/Views/VisualStyleBackgroundPicker.js: Removed.
* UserInterface/Views/VisualStyleBasicInput.js: Removed.
* UserInterface/Views/VisualStyleColorPicker.css: Removed.
* UserInterface/Views/VisualStyleColorPicker.js: Removed.
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css: Removed.
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js: Removed.
* UserInterface/Views/VisualStyleDetailsPanel.css: Removed.
* UserInterface/Views/VisualStyleDetailsPanel.js: Removed.
* UserInterface/Views/VisualStyleDetailsSidebarPanel.js: Removed.
* UserInterface/Views/VisualStyleFontFamilyListEditor.js: Removed.
* UserInterface/Views/VisualStyleFontFamilyTreeElement.js: Removed.
* UserInterface/Views/VisualStyleKeywordCheckbox.css: Removed.
* UserInterface/Views/VisualStyleKeywordCheckbox.js: Removed.
* UserInterface/Views/VisualStyleKeywordIconList.css: Removed.
* UserInterface/Views/VisualStyleKeywordIconList.js: Removed.
* UserInterface/Views/VisualStyleKeywordPicker.js: Removed.
* UserInterface/Views/VisualStyleNumberInputBox.css: Removed.
* UserInterface/Views/VisualStyleNumberInputBox.js: Removed.
* UserInterface/Views/VisualStylePropertyCombiner.js: Removed.
* UserInterface/Views/VisualStylePropertyEditor.css: Removed.
* UserInterface/Views/VisualStylePropertyEditor.js: Removed.
* UserInterface/Views/VisualStylePropertyEditorLink.css: Removed.
* UserInterface/Views/VisualStylePropertyEditorLink.js: Removed.
* UserInterface/Views/VisualStylePropertyNameInput.js: Removed.
* UserInterface/Views/VisualStyleRelativeNumberSlider.css: Removed.
* UserInterface/Views/VisualStyleRelativeNumberSlider.js: Removed.
* UserInterface/Views/VisualStyleSelectorSection.css: Removed.
* UserInterface/Views/VisualStyleSelectorSection.js: Removed.
* UserInterface/Views/VisualStyleSelectorTreeItem.css: Removed.
* UserInterface/Views/VisualStyleSelectorTreeItem.js: Removed.
* UserInterface/Views/VisualStyleTabbedPropertiesRow.css: Removed.
* UserInterface/Views/VisualStyleTabbedPropertiesRow.js: Removed.
* UserInterface/Views/VisualStyleTimingEditor.css: Removed.
* UserInterface/Views/VisualStyleTimingEditor.js: Removed.
* UserInterface/Views/VisualStyleURLInput.js: Removed.
* UserInterface/Views/VisualStyleUnitSlider.css: Removed.
* UserInterface/Views/VisualStyleUnitSlider.js: Removed.
* UserInterface/Controllers/VisualStyleCompletionsController.js: Removed.
2018-09-20 Devin Rousso <drousso@apple.com>
Web Inspector: Styles Redesign: rework Computed panel to use Spreadsheet classes
https://bugs.webkit.org/show_bug.cgi?id=183627
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel):
(WI.ComputedStyleDetailsPanel.prototype.refresh):
(WI.ComputedStyleDetailsPanel.prototype.applyFilter):
(WI.ComputedStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationEditorShowProperty):
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
(WI.ComputedStyleDetailsPanel.prototype.filterDidChange):
(WI.ComputedStyleDetailsPanel.prototype._computedStyleShowAllCheckboxValueChanged):
(WI.ComputedStyleDetailsPanel.prototype._handlePropertiesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel.prototype._handleVariablesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel.prototype._handleEditorFilterApplied):
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty.delegateShowProperty): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty): Deleted.
Replace CSSStyleDeclarationTextEditor with SpreadsheetCSSStyleDeclarationEditor.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set showsImplicitProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set alwaysShowPropertyNames):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set propertyVisibilityMode):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set hideFilterNonMatchingProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set sortPropertiesByName): Added.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.applyFilter):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyShowProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender): Deleted.
Create setters for the "special" functionality required by the Computed panel and tie them
into the logic that determines what properties are rendered.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
Create go-to arrow if the property has a shorthand version or a source code location.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
Don't reapply the filter after refreshing, as the current panel will handle applying it.
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.details-section:matches(.computed-style-properties, .computed-style-box-model):not(.collapsed) > :matches(.header, .content)):
(.computed-style-properties .property .go-to-arrow):
(.computed-style-properties .property:hover .go-to-arrow):
(.computed-style-properties.details-section): Deleted.
(.details-section > .content > .group > .row .CodeMirror-code pre .go-to-arrow): Deleted.
(.details-section > .content > .group > .row .CodeMirror-code pre:hover .go-to-arrow): Deleted.
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)): Deleted.
* UserInterface/Views/DetailsSection.css:
(.details-section.computed-style-properties:not(.collapsed) > .header): Deleted.
Consolidate Computed panel styles to it's respective CSS file.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .property:matches(.implicit, .not-inherited) .content > *):
(.spreadsheet-style-declaration-editor .property.not-inherited .content > *): Deleted.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
* UserInterface/Views/Variables.css:
(:root):
Move `css-declaration` padding variables so they can be used by SpreadsheetCSSStyleDeclarationEditor
without a parent SpreadsheetCSSStyleDeclarationSection.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.style-spreadsheet .style-rule): Deleted.
(.style-spreadsheet .selector-line): Deleted.
(.style-spreadsheet .selector): Deleted.
(.style-spreadsheet :matches(.selector .matched, .selector:focus)): Deleted.
(.style-spreadsheet .name): Deleted.
(.style-spreadsheet .value): Deleted.
(.style-spreadsheet :matches(.selector, .name, .value)): Deleted.
(.style-spreadsheet :matches(.selector, .name, .value):focus): Deleted.
(.style-spreadsheet .selector-inline): Deleted.
(.style-spreadsheet .property): Deleted.
(.style-spreadsheet .property-disabled,): Deleted.
(.style-spreadsheet .property-disabled :matches(.name, .value)): Deleted.
(.style-spreadsheet .styles-source): Deleted.
(.style-spreadsheet :matches(a, .node-link)): Deleted.
(.style-spreadsheet :matches(a, .node-link):hover): Deleted.
(.style-spreadsheet .declarations): Deleted.
(.style-spreadsheet input[type="checkbox"]): Deleted.
(.style-spreadsheet input[type="checkbox"]:not(:checked)): Deleted.
(.style-spreadsheet .declarations:hover input[type="checkbox"]): Deleted.
Drive-by fix: remove styles that don't apply to anything.
2018-09-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: move DarkMode.css rules into appropriate CSS files
https://bugs.webkit.org/show_bug.cgi?id=189673
Reviewed by Matt Baker.
* UserInterface/Main.html:
* UserInterface/Views/BezierEditor.css:
(@media (prefers-dark-interface)):
(.bezier-editor > .bezier-preview-timing):
(.bezier-editor > .bezier-container .bezier-curve):
(.bezier-editor > .bezier-container .linear-curve):
(.bezier-editor > .bezier-preview):
(.bezier-editor > .bezier-preview > div):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
* UserInterface/Views/BreakpointActionView.css:
(@media (prefers-dark-interface)):
(.breakpoint-action-block-body):
(.breakpoint-action-block-body > .description):
(.breakpoint-action-append-button,):
(.breakpoint-action-eval-editor):
* UserInterface/Views/BreakpointPopoverController.css:
(@media (prefers-dark-interface)):
(.popover .edit-breakpoint-popover-content > label.toggle):
(.popover .edit-breakpoint-popover-content > table > tr > th):
(.edit-breakpoint-popover-condition):
* UserInterface/Views/ButtonNavigationItem.css:
(@media (prefers-dark-interface)):
(.navigation-bar .item.button):
* UserInterface/Views/ButtonToolbarItem.css:
(@media (prefers-dark-interface)):
(.toolbar .item.button):
(.toolbar .item.button:not(.disabled):active):
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
* UserInterface/Views/CallFrameView.css:
(@media (prefers-dark-interface)):
(.call-frame .subtitle,):
(.call-frame:hover .subtitle .source-link,):
(.call-frame .separator):
* UserInterface/Views/CanvasContentView.css:
(@media (prefers-dark-interface)):
(.content-view.canvas:not(.tab)):
* UserInterface/Views/CanvasOverviewContentView.css:
(@media (prefers-dark-interface)):
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
* UserInterface/Views/CanvasTabContentView.css:
(@media (prefers-dark-interface)):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon,):
(.content-view.canvas > .preview > img,):
* UserInterface/Views/CodeMirrorOverrides.css:
(@media (prefers-dark-interface)):
(.CodeMirror-cursor):
(.CodeMirror .CodeMirror-gutters):
(.cm-s-default .cm-link):
(.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
* UserInterface/Views/CompletionSuggestionsView.css:
(@media (prefers-dark-interface)):
(.completion-suggestions):
(.completion-suggestions-container > .item):
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(@media (prefers-dark-interface)):
(.computed-style-properties.details-section):
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
* UserInterface/Views/ConsoleMessageView.css:
(@media (prefers-dark-interface)):
(.console-message .syntax-highlighted):
(.console-warning-level .console-message-text):
(.console-error-level .console-message-text):
(.console-user-command > .console-message-text):
(.console-message .repeat-count):
* UserInterface/Views/ConsolePrompt.css:
(@media (prefers-dark-interface)):
(.console-prompt):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
* UserInterface/Views/DOMTreeOutline.css:
(@media (prefers-dark-interface)):
(.tree-outline.dom):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom li.selected .selection-area):
(.tree-outline.dom:focus li.selected .selection-area):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom .shadow):
(.tree-outline.dom li.parent.shadow + ol.children.expanded,):
(.showing-find-banner .tree-outline.dom .search-highlight):
* UserInterface/Views/DarkMode.css: Removed.
* UserInterface/Views/DataGrid.css:
(@media (prefers-dark-interface)):
(.data-grid th):
(.data-grid td .subtitle):
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
(.data-grid tr.editable .cell-content > input):
(.data-grid td.spanning):
* UserInterface/Views/DebuggerDashboardView.css:
(@media (prefers-dark-interface)):
(.toolbar .dashboard.debugger):
(.dashboard.debugger .navigation-bar .item.button > .glyph):
(.dashboard.debugger > .location .function-name):
(.dashboard.debugger > .location .go-to-link):
(.dashboard.debugger > .divider):
* UserInterface/Views/DefaultDashboardView.css:
(@media (prefers-dark-interface)):
(.toolbar .dashboard.default > .item > div):
(.toolbar .dashboard.default > .item.enabled > div):
(.toolbar .dashboard.default > .item.enabled:hover):
(.toolbar .dashboard.default > .item.enabled:hover > div):
(.toolbar .dashboard.default > .resourcesCount > img,):
(body.latest-mac .toolbar .dashboard .item.button):
(.dashboard-container .advance-arrow):
* UserInterface/Views/DetailsSection.css:
(@media (prefers-dark-interface)):
(.details-section > .header):
(.details-section > .header > label):
(.details-section .details-section,):
(.details-section .details-section:not(.collapsed) > .header):
(.details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group:nth-child(even)):
(.details-section > .content > .group > .row:matches(.empty, .text)):
* UserInterface/Views/DividerNavigationItem.css:
(@media (prefers-dark-interface)):
(.navigation-bar .item.divider):
* UserInterface/Views/Editing.css:
(@media (prefers-dark-interface)):
(.editing):
(.editing, .editing *):
* UserInterface/Views/FindBanner.css:
(@media (prefers-dark-interface)):
(.find-banner > input[type="search"]):
(.find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)):
* UserInterface/Views/FontResourceContentView.css:
(@media (prefers-dark-interface)):
(.content-view.resource.font .preview > .line):
(.content-view.resource.font .metric.top):
(.content-view.resource.font .metric.baseline):
(.content-view.resource.font .metric.middle):
(.content-view.resource.font .metric.xheight):
(.content-view.resource.font .metric.bottom):
* UserInterface/Views/FormattedValue.css:
(@media (prefers-dark-interface)):
(.formatted-object,):
(.formatted-null,):
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
* UserInterface/Views/HoverMenu.css:
(@media (prefers-dark-interface)):
(.hover-menu > svg > :matches(path, rect)):
* UserInterface/Views/ImageResourceContentView.css:
(@media (prefers-dark-interface)):
(.content-view.resource.image):
* UserInterface/Views/InlineSwatch.css:
(@media (prefers-dark-interface)):
(.inline-swatch):
* UserInterface/Views/LogContentView.css:
(@media (prefers-dark-interface)):
(.console-messages):
(.console-item):
(.console-messages:focus .console-item.selected):
(.console-messages:focus .console-item.selected + .console-item):
(.console-session:first-of-type .console-session-header):
(.console-session:not(:first-of-type) .console-session-header):
(.console-messages a):
(.console-messages a:hover):
(.console-messages:focus .console-item.selected::after):
(.console-error-level):
(.console-error-level:not(.filtered-out, .filtered-out-by-search), .console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.console-warning-level):
(.console-warning-level:not(.filtered-out, .filtered-out-by-search), .console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.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:
(#main):
(@media (prefers-dark-interface)):
(.go-to-arrow):
(.resource-link,):
(.expand-list-button):
(:matches(img, canvas).show-grid):
* UserInterface/Views/NetworkResourceDetailView.css:
(@media (prefers-dark-interface)):
(.network-resource-detail):
(.network-resource-detail .item.close > .glyph):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.resource-headers .value):
* UserInterface/Views/NetworkTableContentView.css:
(@media (prefers-dark-interface)):
(.network-table .cell.domain > .lock):
* UserInterface/Views/NewTabContentView.css:
(@media (prefers-dark-interface)):
(.new-tab.tab.content-view):
* UserInterface/Views/ObjectTreePropertyTreeElement.css:
(@media (prefers-dark-interface)):
(.object-tree-property .getter,):
(.item.object-tree-property.prototype-property):
(.object-tree-property.prototype-property:hover,):
(.object-tree-property .value.error):
* UserInterface/Views/ObjectTreeView.css:
(@media (prefers-dark-interface)):
(.object-tree,):
(.object-preview .name):
(.object-preview > .size):
* UserInterface/Views/OpenResourceDialog.css:
(@media (prefers-dark-interface)):
(.open-resource-dialog):
(.open-resource-dialog > .field > input):
(.open-resource-dialog > .field > input::placeholder):
(.open-resource-dialog > .tree-outline .item.selected):
(.open-resource-dialog > .field::before):
* UserInterface/Views/ProgressView.css:
(@media (prefers-dark-interface)):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.indeterminate-progress-spinner):
* UserInterface/Views/QuickConsole.css:
(@media (prefers-dark-interface)):
(.quick-console):
(.CodeMirror .jump-to-symbol-highlight,):
(.quick-console.showing-log):
* UserInterface/Views/RecordingActionTreeElement.css:
(@media (prefers-dark-interface)):
(.item.action:not(.initial-state)::before):
(.tree-outline .item.action.visual:not(.selected, .invalid)):
(.item.action:not(.initial-state) > .icon):
(.tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
* UserInterface/Views/RecordingContentView.css:
(@media (prefers-dark-interface)):
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
* UserInterface/Views/ResourceHeadersContentView.css:
(@media (prefers-dark-interface)):
(.resource-headers .value):
* UserInterface/Views/ResourceSizesContentView.css:
(@media (prefers-dark-interface)):
(.resource-sizes > .content .label):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(@media (prefers-dark-interface)):
(.popover.waterfall-popover):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table > tr > td.label,):
(.resource-timing-breakdown > table hr):
* UserInterface/Views/ScopeBar.css:
(@media (prefers-dark-interface)):
(.scope-bar > li):
* UserInterface/Views/SearchBar.css:
(@media (prefers-dark-interface)):
(:matches(.search-bar, .filter-bar) > input[type="search"],):
(:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder):
(:matches(.search-bar, .filter-bar) > input[type="search"]:focus):
* UserInterface/Views/SearchSidebarPanel.css:
(@media all):
* UserInterface/Views/SettingsTabContentView.css:
(@media (prefers-dark-interface)):
(.content-view.settings .navigation-bar):
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
* UserInterface/Views/ShaderProgramContentView.css:
(@media (prefers-dark-interface)):
(.content-view.shader-program > .text-editor.shader):
(.content-view.shader-program > .text-editor.shader > .type-title):
* UserInterface/Views/ShaderProgramTreeElement.css:
(@media (prefers-dark-interface)):
(.item.shader-program .status > img):
* UserInterface/Views/SourceCodeTextEditor.css:
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .error):
(.source-code.text-editor > .CodeMirror .warning):
(.source-code.text-editor > .CodeMirror .issue-widget):
(.source-code.text-editor > .CodeMirror .issue-widget.warning,):
(.source-code.text-editor > .CodeMirror .issue-widget.error,):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(@media (prefers-dark-interface)):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(@media (prefers-dark-interface)):
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration.locked):
(.spreadsheet-css-declaration .selector.style-attribute):
(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration.locked .origin::after):
(.spreadsheet-css-declaration .origin .go-to-link,):
(.spreadsheet-css-declaration .media-label):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(@media (prefers-dark-interface)):
(.spreadsheet-style-panel .section-header):
(.spreadsheet-style-panel .section-header .node-link:hover):
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(@media (prefers-dark-interface)):
(.syntax-highlighted,):
(.cm-s-default,):
(.cm-s-default .cm-attribute):
(.cm-s-default .cm-m-xml.cm-attribute,):
(.cm-s-default .cm-meta):
(.cm-s-default .cm-variable-3):
(.cm-s-default .cm-builtin):
* UserInterface/Views/TabBar.css:
(@media (prefers-dark-interface)):
(.tab-bar):
(.tab-bar > .item):
(.tab-bar > .item > .title):
(.tab-bar > .item:not(.disabled).selected):
(.tab-bar:not(.animating) > .item:not(.selected):hover):
(.tab-bar > .item > .close,):
(body.window-inactive .tab-bar):
(body.window-inactive .tab-bar > .item):
(body.window-inactive .tab-bar > .item.selected):
(body.window-inactive .tab-bar > .item > .title):
* UserInterface/Views/Table.css:
(@media (prefers-dark-interface)):
(.table,):
(.table > .header > .sortable:active):
(.table > .header > :matches(.sort-ascending, .sort-descending)):
(.table > .header > :matches(.sort-ascending, .sort-descending)::after):
* UserInterface/Views/TextEditor.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
* UserInterface/Views/TimelineDataGrid.css:
(@media (prefers-dark-interface)):
(.data-grid th:matches(.sort-ascending, .sort-descending)):
* UserInterface/Views/TimelineIcons.css:
(@media (prefers-dark-interface)):
(.time-icon .icon):
* UserInterface/Views/TimelineOverview.css:
(@media (prefers-dark-interface)):
(.timeline-overview > .navigation-bar.timelines):
(.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
(.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),):
* UserInterface/Views/TimelineRecordingContentView.css:
(@media (prefers-dark-interface)):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
* UserInterface/Views/Toolbar.css:
(@media (prefers-dark-interface)):
(body .toolbar):
(body.window-inactive .toolbar):
(body.latest-mac .toolbar .item.button,):
(body.latest-mac .toolbar .search-bar > input[type="search"]):
(body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
(body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button):
(body.latest-mac .toolbar .dashboard-container):
(body.latest-mac .toolbar .item.button:active):
(body.latest-mac.window-inactive .toolbar .item.button,):
* UserInterface/Views/TreeOutline.css:
(@media (prefers-dark-interface)):
(.tree-outline .item .subtitle):
* UserInterface/Views/Variables.css:
(@media (prefers-dark-interface)):
(:root):
(body.window-inactive):
(body.window-inactive *):
* UserInterface/Views/WebSocketContentView.css:
(@media (prefers-dark-interface)):
(.web-socket.content-view .data-grid table.data tr.revealed):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
* UserInterface/Views/XHRBreakpointPopover.css:
(@media (prefers-dark-interface)):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
2018-09-17 Devin Rousso <drousso@apple.com>
Web Inspector: generate CSSKeywordCompletions from backend values
https://bugs.webkit.org/show_bug.cgi?id=189041
Reviewed by Joseph Pecoraro.
Moves the longhands map to `WI.CSSKeywordCompletions` for more global access. Creates an
aliases map to support completions on aliases with the same values as the non-alias name.
Removes all keyword-only properties from `WI.CSSKeywordCompletions._propertyKeywordMap` as
they are now generated by the backend (kept for compatibility).
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions):
(WI.CSSCompletions.requestCSSCompletions.propertyNamesCallback):
(WI.CSSCompletions.prototype.isShorthandPropertyName):
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forProperty.addKeywordsForName): Added.
(WI.CSSKeywordCompletions.forProperty):
(WI.CSSKeywordCompletions.addCustomCompletions):
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.isInheritedPropertyName):
2018-09-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: breakpoint context menu appears twice in DOM tree
https://bugs.webkit.org/show_bug.cgi?id=189308
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMBreakpointTreeController.js:
(WI.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
Set a symbol on the `contextMenu` to ensure that the same items are not added twice.
2018-09-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Source View doesn't scroll to show line when breakpoint is hit inside of <script> in HTML resource
https://bugs.webkit.org/show_bug.cgi?id=189638
<rdar://problem/43359278>
Reviewed by Matt Baker.
Pausing in Document resources on page load have special considerations where we
may not receive their full content immediately, so we may synthesize inline script
content for the resource until we have full content. Unfortunately, when we get
full content and update the TextEditor we were losing the revealed position and
other editor information. This change specifically targets those cases, by
re-applying editor state when updating such a resource from partial to full content.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._contentAvailable):
Signal to the editor that when updating the content it should carry
over editor state. Only do this if we had partial content before.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor):
(WI.TextEditor.prototype.set repeatReveal):
Provide a way to signal we should restore state when update the content.
(WI.TextEditor.set string.update):
(WI.TextEditor.prototype.set string):
When repeatReveal was enabled, restore editor state such as the
revealed location and text selection.
2018-09-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Record actions performed on ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=181341
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
(WI.Recording.prototype.createContext):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.getImageParameters):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.shown):
(WI.RecordingContentView.prototype.hidden):
(WI.RecordingContentView.prototype._generateContentFromSnapshot): Renamed.
(WI.RecordingContentView.prototype._updateImageGrid):
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
2018-09-13 Jamal Nasser <jamaln@mail.com>
Web Inspector: Dark Mode: bezier curve editor should be updated
https://bugs.webkit.org/show_bug.cgi?id=187657
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.bezier-editor > .bezier-preview-timing):
(.bezier-editor > .bezier-container .bezier-curve):
(.bezier-editor > .bezier-container .linear-curve):
(.bezier-editor > .bezier-preview):
(.bezier-editor > .bezier-preview > div):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
2018-09-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Timelines: clicking a row in Script > Events grid triggers Location popover when column is hidden
https://bugs.webkit.org/show_bug.cgi?id=189603
<rdar://problem/44431403>
Reviewed by Joseph Pecoraro.
TimelineDataGrid controls showing/hiding the call frame popover, with subclasses
overriding callFramePopoverAnchorElement to position it. This patch adds
another overridable base class method, shouldShowCallFramePopover, which subclasses
can use to block the popover when the Location column is hidden.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.layout):
(WI.DataGrid.prototype._positionResizerElements):
(WI.DataGrid.prototype._isColumnVisible): Deleted.
* UserInterface/Views/LayoutTimelineDataGrid.js:
(WI.LayoutTimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.LayoutTimelineDataGrid):
* UserInterface/Views/ScriptTimelineDataGrid.js:
(WI.ScriptTimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.ScriptTimelineDataGrid):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.TimelineDataGrid.prototype._dataGridSelectedNodeChanged):
2018-09-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Opening inspector with a selected element might immediately scroll that element off screen in the DOM Tree outline
https://bugs.webkit.org/show_bug.cgi?id=189569
<rdar://problem/44397098>
Reviewed by Devin Rousso.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.layout):
Re-select the selected DOM node in the DOM Tree when the view resizes.
Typically this can happen if the sidebar opens/closes/resizes, in which
case we will want the selected DOM node to stay in view even if the DOM
tree starts wrapping earlier content.
2018-09-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: fix test case failures in js-isLikelyStackTrace.html
https://bugs.webkit.org/show_bug.cgi?id=180664
Reviewed by Devin Rousso.
* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):
In a quick benchmark 50% of the time was rebuilding the same complex regular
expression over and over again. Instead just build the regex once and reset
it before each use.
2018-09-12 Devin Rousso <drousso@apple.com>
Web Inspector: imported recordings are unable to be viewed after navigation
https://bugs.webkit.org/show_bug.cgi?id=189208
Reviewed by Joseph Pecoraro.
Move the "Imported Recordings" folder to the top level (instead of under "Overview") so that
it is selectable when there are no canvases but there is an imported recording.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
Null out the `source` of each `WI.Recording` for the removed `WI.Canvas`.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype._removeCanvas):
Add each `WI.Recording`for the removed `WI.Canvas` to the "Imported Recordings" folder.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._showError):
Drive-by: don't recreate the error preview element if it already exists.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.updateRepresentedObjects): Added.
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange): Deleted.
2018-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix typo "vritualized"
https://bugs.webkit.org/show_bug.cgi?id=189511
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
2018-09-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Address some ESLint warnings
https://bugs.webkit.org/show_bug.cgi?id=188824
Reviewed by Matt Baker.
* .eslintrc:
* UserInterface/Base/Platform.js:
* UserInterface/Controllers/AuditManager.js:
* UserInterface/Controllers/BasicBlockAnnotator.js:
* UserInterface/Controllers/CallFrameTreeController.js:
* UserInterface/Controllers/HARBuilder.js:
* UserInterface/Models/AuditReport.js:
* UserInterface/Models/AuditResult.js:
* UserInterface/Models/AuditTestCase.js:
* UserInterface/Models/AuditTestSuite.js:
* UserInterface/Models/Cookie.js:
* UserInterface/Models/SourceCodePosition.js:
* UserInterface/Test/FrontendTestHarness.js:
* UserInterface/Test/TestSuite.js:
* UserInterface/Views/CanvasContentView.js:
* UserInterface/Views/CollectionContentView.js:
* UserInterface/Views/ContentBrowser.js:
* UserInterface/Views/CookieStorageContentView.js:
* UserInterface/Views/DataGrid.js:
* UserInterface/Views/DatabaseTableContentView.js:
* UserInterface/Views/FindBanner.js:
* UserInterface/Views/JSONResourceContentView.js:
* UserInterface/Views/LogContentView.js:
* UserInterface/Views/ResourceSidebarPanel.js:
* UserInterface/Views/SourceCodeTextEditor.js:
* UserInterface/Views/SpreadsheetTextField.js:
* UserInterface/Workers/Formatter/FormatterUtilities.js:
2018-09-06 Andy Estes <aestes@apple.com>
[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
https://bugs.webkit.org/show_bug.cgi?id=189366
<rdar://problem/44193218>
Reviewed by Sam Weinig.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-31 Jamal Nasser <xnasser@outlook.com>
Added a CSS rule to DarkMode.css to fix color on sidebar toggle.
<https://webkit.org/b/189139>
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
2018-08-29 David Kilzer <ddkilzer@apple.com>
Remove empty directories from from svn.webkit.org repository
<https://webkit.org/b/189081>
* WebInspectorUI.esproj: Removed.
2018-08-28 Devin Rousso <drousso@apple.com>
console.log() shows (anonymous function) instead of the passed string when a certain format is used
https://bugs.webkit.org/show_bug.cgi?id=188946
<rdar://problem/43756428>
Reviewed by Brian Burg.
Stack trace URLs are much more likely to follow the following format:
<protocol>://<path>:<line>:<column>
Modify the test regexp to always require that a protocol exists and to check that there are
no ":" inside the protocol or path. Additionally, stack traces usually have more than one
frame, so return false if there isn't more than one line.
* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):
2018-08-28 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
https://bugs.webkit.org/show_bug.cgi?id=189061
Reviewed by Brian Burg.
When recordings are imported, they don't have an associated `WI.Canvas`, meaning that the
`WI.Recording` is never added to the canvas' `WI.RecordingCollection`. Previously, the
canvas sidebar relied upon the `ItemAdded` event to update the recording `WI.ScopeBar`.
Since the imported recording isn't ever added to the collection, this is never fired.
This patch moves the function call that updates the `WI.ScopeBar` to a more universal path,
ensuring that no matter how a `WI.Recording` is set for the sidebar, it will be shown.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
2018-08-28 Devin Rousso <drousso@apple.com>
Web Inspector: Search bar is too narrow in some localizations
https://bugs.webkit.org/show_bug.cgi?id=189060
<rdar://problem/43006369>
Reviewed by Brian Burg.
* UserInterface/Views/Toolbar.css:
(.toolbar .search-bar):
2018-08-27 Keith Rollin <krollin@apple.com>
Unreviewed build fix -- disable LTO for production builds
* Configurations/Base.xcconfig:
2018-08-27 Andy Estes <aestes@apple.com>
Teach Web Inspector how to complete keywords for -apple-pay-button-style and -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=189001
Reviewed by Devin Rousso.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: when scrolling a virtualized TreeOutline, only update the DOM periodically
https://bugs.webkit.org/show_bug.cgi?id=188960
Reviewed by Brian Burg.
After each `updateVirtualizedElements` call, remember the `WI.TreeElement` that is located
halfway within the visible list. When handling each "scroll", only regenerate the
`WI.TreeOutline` DOM if the user has scrolled `extraRows` distance.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Added.
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: provide autocompletion for event breakpoints
https://bugs.webkit.org/show_bug.cgi?id=188717
Reviewed by Brian Burg.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.getSupportedEventNames): Added.
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype.completionSuggestionsClickedCompletion): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._showSuggestionsView): Added.
2018-08-27 Keith Rollin <krollin@apple.com>
Build system support for LTO
https://bugs.webkit.org/show_bug.cgi?id=187785
<rdar://problem/42353132>
Reviewed by Dan Bernstein.
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: virtualized TreeOutline is empty when filtering
https://bugs.webkit.org/show_bug.cgi?id=188959
Reviewed by Brian Burg.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
Only set `focusedTreeElement` if the `WI.TreeElement` is selected and not hidden. There is
no reason to focus a hidden or unselected `WI.TreeElement`.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: Color picker: can't enter decimal numbers for opacity
https://bugs.webkit.org/show_bug.cgi?id=187026
<rdar://problem/41446500>
Reviewed by Brian Burg.
After every "input" event, we update the `color` value of the `WI.ColorPicker` based on a
generated string using the values of the various <input>. The issue with this approach is
that adding a decimal point (e.g. "0.") would still be construed as 0, meaning that the
color wouldn't change and would instead be reset back to it's old value. This patch adds an
early return if the newly generated color has the same value as the current color, thereby
meaning that the `color` wouldn't change when changing from "0" to "0.".
* UserInterface/Views/ColorPicker.js:
(WI.ColorPicker):
(WI.ColorPicker.createColorInput):
(WI.ColorPicker.prototype._handleColorInputInput):
2018-08-23 Simon Fraser <simon.fraser@apple.com>
Add support for dumping GC heap snapshots, and a viewer
https://bugs.webkit.org/show_bug.cgi?id=186416
Reviewed by Joseph Pecoraro.
Make a way to dump information about the GC heap that is useful for looking for leaked
or abandoned objects. This dump is obtained (on Apple platforms) via:
notifyutil -p com.apple.WebKit.dumpGCHeap
which writes a JSON file to /tmp which can then be loaded into the viewer in Tools/GCHeapInspector.
This leverages the heap snapshot used by Web Inspector, adding an alternate format for
the snapshot JSON that adds additional data about objects and why they are GC roots.
The generated bindings code is changed to include the output root reason from isReachableFromOpaqueRoots(),
and to implement heapSnapshot() which provides the address of the wrapped object. A new IDL attribute,
CustomHeapSnapshot, is used to allow custom heapSnapshot() implementations for classes like JSDocument
that need to decorate the heap snapshot cell data with things like the document URL.
GCController registers a notifyutil callback which gathers the debug heap snapshot, and dumps it
to a file in /tmp. The file path is printed out to the system log.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
2018-08-23 Brian Burg <bburg@apple.com>
Web Inspector: fix typos in some compositing reasons
https://bugs.webkit.org/show_bug.cgi?id=188905
<rdar://problem/43624825>
Reviewed by Simon Fraser.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WI.LayerTreeDetailsSidebarPanel):
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype._updateReasonsList):
(WI.Layers3DContentView):
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: support breakpoints for timers and animation-frame events
https://bugs.webkit.org/show_bug.cgi?id=188778
Reviewed by Brian Burg.
Add a `type` to `WI.EventBreakpoint` that matches `DOMDebugger.EventBreakpointType`:
- `AnimationFrame` for `requestAnimationFrame`
- `Listener` for any named DOM Event
- `Timer` for `setTimeout` and `setInterval`
Modified `WI.EventBreakpointPopover` to provide ways for selecting these other types, which
is then passed to `WI.DOMDebuggerManager`, which now calls through to the newly added
`DOMDebugger.removeEventBreakpoint` and `DOMDebugger.setEventBreakpoint` that sets
breakpoints for all event types.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/EventBreakpointAnimationFrame.svg: Added.
* UserInterface/Images/EventBreakpointListener.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/EventBreakpoint.svg.
* UserInterface/Images/EventBreakpointTimer.svg: Added.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.supportsEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForTypeAndEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Deleted.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.setBreakpointForEventListener):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload):
(WI.EventBreakpoint.prototype.get type): Added.
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get breakpoint): Added.
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.show.createOption): Added.
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._handleTypeSelectChange): Added.
(WI.EventBreakpointPopover.prototype.get result): Deleted.
(WI.EventBreakpointPopover.prototype.get value): Deleted.
* UserInterface/Views/EventBreakpointPopover.css:
(.popover .event-breakpoint-content > .event-type): Added.
(.popover .event-breakpoint-content > input): Deleted.
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
* UserInterface/Views/EventBreakpointTreeElement.css:
(.breakpoint.event.animation-frame:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.listener:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.timer:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event:not(.breakpoint-paused-icon) .icon): Deleted.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: `console.inspect(sessionStorage)` first time does not show Session Storage content view if Storage tab was previously unvisited
https://bugs.webkit.org/show_bug.cgi?id=188801
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
(WI._storageWasInspected):
Since the `WI.StorageSidebarPanel` is not created until the `WI.StorageTabContentView` is
created, the `WI.StorageManager.Event.DOMStorageObjectWasInspected` and
`WI.StorageManager.Event.DatabaseWasInspected` events do not reach the sidebar. We should
follow what `WI._domNodeWasInspected` does and additionally call `WI.showRepresentedObject`
on the inspected object.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: InspectorStyleSheet not visible in the resources sidebar
https://bugs.webkit.org/show_bug.cgi?id=188819
<rdar://problem/43579039>
Reviewed by Brian Burg.
* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection.prototype.objectIsRequiredType):
2018-08-23 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Scripts not showing up in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=188814
<rdar://problem/43576117>
Reviewed by Brian Burg.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._addScript):
This path shouldn't apply to JSContext inspection which will
never have a pageTarget and but doesn't have a mainResource.
2018-08-22 Devin Rousso <drousso@apple.com>
Web Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
https://bugs.webkit.org/show_bug.cgi?id=188803
<rdar://problem/43572838>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved):
2018-08-22 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.
The script was removed in r235151.
* UserInterface/Main.html:
2018-08-21 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove TreeOutlineDataGridSynchronizer
https://bugs.webkit.org/show_bug.cgi?id=188449
<rdar://problem/43107980>
Reviewed by Devin Rousso.
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView.prototype.layout):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
(WI.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid):
(WI.TimelineDataGrid.prototype.reset):
(WI.TimelineDataGrid.prototype.shown):
(WI.TimelineDataGrid.prototype.addRowInSortOrder):
(WI.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WI.TimelineDataGrid.prototype._sort):
(WI.TimelineDataGrid.prototype.treeElementForDataGridNode): Deleted.
(WI.TimelineDataGrid.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/TreeOutlineDataGridSynchronizer.js: Removed.
2018-08-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌘G does not while find banner is focused
https://bugs.webkit.org/show_bug.cgi?id=188815
<rdar://problem/43577158>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Allow an <input> element to be the current focus element, which is what will
our global KeyboardShortcut handlers will interact with. Also make sure
that showing the find banner for the first time still focuses it.
2018-08-21 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r235095): duplicate actions existing in WI.CanvasSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=188808
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Check that the `WI.RecordingAction` is not already represented in the `WI.TreeOutline`
before adding it.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress):
Drive-by: vertically center the <progress> shown for `WI.RecordingFrame` during processing.
2018-08-21 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: provide default icon for all actions
https://bugs.webkit.org/show_bug.cgi?id=188807
Reviewed by Matt Baker.
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .icon):
(.item.action.initial-state > .icon): Deleted.
2018-08-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rulers.svg is missing
https://bugs.webkit.org/show_bug.cgi?id=188806
<rdar://problem/43574273>
Reviewed by Devin Rousso.
* UserInterface/Images/Rulers.svg: Added.
2018-08-20 Devin Rousso <drousso@apple.com>
Web Inspector: allow breakpoints to be set for specific event listeners
https://bugs.webkit.org/show_bug.cgi?id=183138
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload): Added.
(WI.EventBreakpoint.prototype.get eventListener): Added.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.get eventBreakpoints): Added.
(WI.DOMTreeManager.prototype._setDocument):
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
(WI.DOMTreeManager.prototype.setBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.removeBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.breakpointForEventListenerId): Added.
* UserInterface/Controllers/EventBreakpointTreeController.js:
(WI.EventBreakpointTreeController):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleRow):
(WI.EventListenerSectionGroup.prototype._createBreakpointToggleRow): Added.
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
2018-08-20 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas tab: allow recording processing to be stopped midway
https://bugs.webkit.org/show_bug.cgi?id=185152
Reviewed by Joseph Pecoraro.
Previously, `WI.Recording` used a `WI.YieldableTask` to process every action in such a way
as to not block the UI. The downside to this approach was that it used a message view to
indicate the progress of this process, and prevented the user from viewing the `WI.Recording`
until that process was completed.
This patch changes `WI.Recording` to instead use `async/await` and fire events whenever a
`WI.RecordingAction` (and `WI.RecordingFrame`) finished processing, allowing it to be added
to the recording `WI.TreeOutline` and selected by the user. Additionally, a pause/resume
button is added to the `WI.CanvasSidebarPanel` so the user has greater control over what
how much of the `WI.Recording` they want to process.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Utilities.js:
(Promise.delay)
Utility function for promisifying `setTimeout`.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.get processing): Added.
(WI.Recording.prototype.get ready): Added.
(WI.Recording.prototype.startProcessing): Added.
(WI.Recording.prototype.stopProcessing): Added.
(WI.Recording.prototype.async._process): Added.
(WI.Recording.prototype.process): Deleted.
(WI.Recording.prototype.async.yieldableTaskWillProcessItem): Deleted.
(WI.Recording.prototype.async.yieldableTaskDidFinish): Deleted.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.get ready): Added.
(WI.RecordingAction.prototype.async.swizzle):
(WI.RecordingAction.prototype.apply):
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged.createPauseButton): Added.
(WI.CanvasSidebarPanel.prototype._recordingChanged.createResumeButton): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingFrameTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingActionTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingStartProcessingFrame): Added.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:matches(:focus, .force-focus) .item.processing.selected .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle::before): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options > .indeterminate-progress-spinner): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner): Deleted.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._handleRecordingProcessedAction): Added.
(WI.RecordingContentView.prototype._updateProcessProgress): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > header > .slider-container > .slider-value): Added.
* UserInterface/Views/FolderTreeElement.js:
(WI.FolderTreeElement):
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.get statusElement): Added.
(WI.GeneralTreeElement.prototype._updateTitleElements):
* UserInterface/Views/RecordingContentView.js:
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
Drive-by: `WI.Collection` doesn't have a `values()` accessor for the underlying `Set`.
* UserInterface/Views/RecordingNavigationSidebarPanel.css: Removed.
* UserInterface/Views/RecordingNavigationSidebarPanel.js: Removed.
These files are no longer used since they were "merged" into `WI.CanvasSidebarPanel`.
2018-08-20 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
https://bugs.webkit.org/show_bug.cgi?id=183650
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._shaderProgramAdded):
(WI.CanvasContentView.prototype._shaderProgramRemoved):
(WI.CanvasContentView.prototype._updateViewRelatedItems):
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
(WI.CanvasContentView.prototype._addRecording): Deleted.
(WI.CanvasContentView.prototype._handleRecordingSelectElementChange): Deleted.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > :matches(.view-shader, .view-recording)):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > img + img):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-shader):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-recording):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings > select): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus): Deleted.
Create two image buttons in the bottom left corner of each canvas tile that appear when the
canvas has associated shaders and/or recordings. Clicking each image button will function
similar to path components, in that if there is only one shader/recording, it is immediately
selected, whereas if there are multiple a dropdown is shown.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Drive-by: ensure that the selected recording action is properly updated when first loading a
recording and when scrubbing through one.
2018-08-16 Devin Rousso <drousso@apple.com>
Web Inspector: support breakpoints for arbitrary event names
https://bugs.webkit.org/show_bug.cgi?id=183118
Reviewed by Joseph Pecoraro.
Create UI for setting breakpoints on event names. Ties into renamed DOMDebugger commands,
specifically `setEventBreakpoint` and `removeEventBreakpoint`, that will pause execution if
any DOM event is fired that matches any previously registered breakpoints.
Event breakpoints are distinguished by name, and they currently apply globally, meaning
that only one breakpoint per event name can be registered.
Event breakpoints are created in the Debugger tab in a new "Event Breakpoints" section in
the Navigation sidebar. A new type of popover, EventBreakpointPopover, is used, but right
now all it contains is a basic text input for the event name. Similarly, a new TreeElement
subclass, EventBreakpointTreeElement, is used when showing the list of event listener
breakpoints, but all it shows now is the event name.
The majority of the logic in this patch was derived from XHR breakpoints.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Images/EventBreakpoint.svg: Added.
* UserInterface/Models/EventBreakpoint.js: Added.
(WI.EventBreakpoint):
(WI.EventBreakpoint.prototype.get eventName):
(WI.EventBreakpoint.prototype.get disabled):
(WI.EventBreakpoint.prototype.set disabled):
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.get eventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Added.
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype._eventBreakpointDisabledStateDidChange): Added.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):
* UserInterface/Controllers/EventBreakpointTreeController.js: Added.
(WI.EventBreakpointTreeController):
(WI.EventBreakpointTreeController.prototype.revealAndSelect):
(WI.EventBreakpointTreeController.prototype._eventBreakpointAdded):
(WI.EventBreakpointTreeController.prototype._eventBreakpointRemoved):
(WI.EventBreakpointTreeController.prototype._addTreeElement):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved): Added.
(WI.DebuggerSidebarPanel.prototype._addEventBreakpointButtonClicked): Added.
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/EventBreakpointTreeElement.js: Added.
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.onenter):
(WI.EventBreakpointTreeElement.prototype.onspace):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._statusImageElementClicked):
(WI.EventBreakpointTreeElement.prototype._statusImageElementFocused):
(WI.EventBreakpointTreeElement.prototype._statusImageElementMouseDown):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
(WI.EventBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/EventBreakpointTreeElement.css: Added.
(.breakpoint.event-listener:not(.breakpoint-paused-icon) .icon):
* UserInterface/Views/EventBreakpointPopover.js: Added.
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get result):
(WI.EventBreakpointPopover.prototype.get value):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
* UserInterface/Views/EventBreakpointPopover.css: Added.
(.popover .event-listener-breakpoint-content):
(.popover .event-listener-breakpoint-content > input):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
2018-08-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show Initiator information in Network Table
https://bugs.webkit.org/show_bug.cgi?id=188590
<rdar://problem/43305488>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.willShowWithCookie):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
When a ResourceDetailView gets shown, it may also want to show its initial content view
with a cookie as the cookie may contain position highlight information.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._showResourceDetailView):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
When showing a represented object, pass the cookie information on to the detail
view's so that it may include the cookie when showing the final content view.
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateInitiatorCell):
(WI.NetworkTableContentView.prototype.initialLayout):
New initiator column contains a source code link to the call site.
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._entryForResource):
Entry data for the initiator is a display string that can be sorted easily.
2018-08-16 Joseph Pecoraro <pecoraro@apple.com>
LayoutTest inspector/worker/debugger-pause.html sometimes times out
https://bugs.webkit.org/show_bug.cgi?id=188580
Reviewed by Matt Baker.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get mainResource):
(WI.Target.prototype.set mainResource):
Dispatch an event when the Main Resource is set.
2018-08-15 Aditya Keerthi <akeerthi@apple.com>
[Datalist] Add button to TextFieldInputs with a datalist
https://bugs.webkit.org/show_bug.cgi?id=187741
Reviewed by Tim Horton.
Add keyword completion for 'list-button'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r?): the probe sidebar doesn't show up when adding probes
https://bugs.webkit.org/show_bug.cgi?id=188594
Reviewed by Brian Burg.
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WI.ProbeDetailsSidebarPanel.prototype.set inspectedProbeSets):
(WI.ProbeDetailsSidebarPanel.prototype.initialLayout):
Add checks to ensure that DOM elements for each probe section exist before trying to
add/remove them from the sidebar. This can happen if probes are inspected before the sidebar
is shown for the first time.
* UserInterface/Views/ProbeSetDataGrid.js:
(WI.ProbeSetDataGrid):
(WI.ProbeSetDataGrid.columnIdentifierForProbe): Added.
(WI.ProbeSetDataGrid.prototype._setupProbe):
(WI.ProbeSetDataGrid.prototype._teardownProbe):
(WI.ProbeSetDataGrid.prototype._probeExpressionChanged):
* UserInterface/Views/ProbeSetDataGridNode.js:
(WI.ProbeSetDataGridNode.prototype.set frame):
Provide better column identifiers for each probe's `WI.DataGrid`. It's possible for the
numeric probe ID value to be stringified when passing it into the constructor of
`WI.DataGrid`, which will not match the original numeric value on later retrieval.
2018-08-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should not center rows when scrolling them into view
https://bugs.webkit.org/show_bug.cgi?id=188593
<rdar://problem/43311660>
Reviewed by Devin Rousso.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleKeyDown):
2018-08-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should handle row selection instead of the table delegate
https://bugs.webkit.org/show_bug.cgi?id=188534
<rdar://problem/43253335>
Reviewed by Joseph Pecoraro.
Row selection should be implemented by Table, rather than its delegate.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableShouldSelectRow):
(WI.NetworkTableContentView.prototype.tableCellMouseDown): Deleted.
Prevent selection unless the clicked cell belongs to the name column.
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tableShouldSelectRow):
Always prevent selection.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype._handleMouseDown):
2018-08-12 Aditya Keerthi <akeerthi@apple.com>
[macOS] Color wells should appear pressed when presenting a color picker
https://bugs.webkit.org/show_bug.cgi?id=188477
Reviewed by Tim Horton.
Add keyword completion for 'color-well'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: SourceCodeTextEditor error/warning text widget is too light
https://bugs.webkit.org/show_bug.cgi?id=188126
<rdar://problem/42674963>
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .issue-widget.warning,): Added.
(.source-code.text-editor > .CodeMirror .issue-widget.error,): Added.
2018-08-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version (iOS 12)
https://bugs.webkit.org/show_bug.cgi?id=188359
<rdar://problem/42981364>
Reviewed by Brian Burg.
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-12.0.json: Added.
2018-08-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Global search sometimes returns duplicate results for a resource
https://bugs.webkit.org/show_bug.cgi?id=188270
<rdar://problem/42867498>
Reviewed by Brian Burg.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
Avoid duplicate search results in the frontend. We should also fix the backend
but a frontend fix will also be desired for backends that have the issue.
2018-08-03 Alex Christensen <achristensen@webkit.org>
Fix spelling of "overridden"
https://bugs.webkit.org/show_bug.cgi?id=188315
Reviewed by Darin Adler.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.treeElementForRepresentedObject):
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.ondetach):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.get sizesToFit):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.shouldFilterPopulate):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.canBeFormatted):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.onpopulate):
2018-08-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: SourceCodeTextEditor thread indicator widget is too light
https://bugs.webkit.org/show_bug.cgi?id=188119
<rdar://problem/42670811>
Reviewed by Matt Baker.
Make the background of the thread indicator widget darker.
Reduce the number of HTML elements and simplify CSS by removing the HTML element that drew an arrow and using clip-path on inline widgets instead.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
* UserInterface/Views/SourceCodeTextEditor.css:
(.source-code.text-editor .CodeMirror-linewidget):
(.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .thread-widget.inline):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
(WI.SourceCodeTextEditor.prototype._updateIssueWidgetForIssues):
* UserInterface/Views/TextEditor.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line.primary .CodeMirror-linenumber::after):
* UserInterface/Views/Variables.css:
(:root):
2018-08-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: disabled breakpoints banner is too light
https://bugs.webkit.org/show_bug.cgi?id=188120
<rdar://problem/42671348>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.navigation.debugger .warning-banner):
2018-07-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include a full URL tooltip when hovering the name in the Network Tab
https://bugs.webkit.org/show_bug.cgi?id=188199
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
Give a tooltip to the entire cell since the entire cell has interactivity.
2018-07-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Search sidebar panel text field has a white background
https://bugs.webkit.org/show_bug.cgi?id=188128
<rdar://problem/42678270>
Reviewed by Matt Baker.
Make the search bar in Search tab match the style of the filter bar.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:matches(.search-bar, .filter-bar) > input[type="search"],):
(:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder):
(:matches(.search-bar, .filter-bar) > input[type="search"]:focus):
(.filter-bar > input[type="search"]): Deleted.
(.filter-bar > input[type="search"]::placeholder): Deleted.
(.filter-bar > input[type="search"]:focus): Deleted.
2018-07-26 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r234281.
Broke internal builds.
Reverted changeset:
"[Datalist] Add button to TextFieldInputs with a datalist"
https://bugs.webkit.org/show_bug.cgi?id=187741
https://trac.webkit.org/changeset/234281
2018-07-26 Aditya Keerthi <akeerthi@apple.com>
[Datalist] Add button to TextFieldInputs with a datalist
https://bugs.webkit.org/show_bug.cgi?id=187741
Reviewed by Tim Horton.
Add keyword completion for 'list-button'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-07-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Breakpoint editor in JS debugger has inconsistent background
https://bugs.webkit.org/show_bug.cgi?id=188026
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.edit-breakpoint-popover-condition):
(.breakpoint-action-eval-editor):
2018-07-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: remove odd-looking top border
https://bugs.webkit.org/show_bug.cgi?id=187885
Reviewed by Matt Baker.
This border doesn't exist in the light mode, and it shouldn't be in the dark mode either.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(body .toolbar):
2018-07-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Layers tab background should be dark
https://bugs.webkit.org/show_bug.cgi?id=187660
<rdar://problem/42179616>
Reviewed by Brian Burg.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype.initialLayout):
* UserInterface/Views/Variables.css:
(:root):
2018-07-19 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers visualization shouldn't select on mousedown
https://bugs.webkit.org/show_bug.cgi?id=187488
Reviewed by Matt Baker.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._canvasMouseUp):
Don't update selection on mousedown, update on mouseup!
Specifically, only update when mousedown & mouseup targets are the same and mousemove hasn't been triggered.
2018-07-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: poor contrast for Search Tab's "the page's content has changed" message
https://bugs.webkit.org/show_bug.cgi?id=187792
Reviewed by Brian Burg.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
Make the background color slightly more yellow and less red. This slightly dicreases the contrast
but makes the text look less like an error.
* UserInterface/Views/SearchSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.navigation.search.changed > .banner):
2018-07-18 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r232591): CodeMirrorEditor should not use a RegExp lineSeparator option
https://bugs.webkit.org/show_bug.cgi?id=187772
<rdar://problem/42331640>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CodeMirrorEditor.js:
(WI.CodeMirrorEditor.create):
(WI.CodeMirrorEditor):
CodeMirror should be left to auto-detect line separators. By default
it detects \n, \r\n, and \r. By specifying a regular expression we
merely cause problems when CodeMirror uses the supplied lineSeparator
when joining its array of lines together.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.set string.update):
(WI.TextEditor.prototype.set string):
This assertion was only true when we forced "\n" line endings everywhere.
It no longer holds for source text with "\r\n" (Windows-style) line endings.
2018-07-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Fix execution highlighting after r233820
https://bugs.webkit.org/show_bug.cgi?id=187703
<rdar://problem/42246167>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.currentPositionToOriginalPosition):
(WI.TextEditor.prototype._updateExecutionRangeHighlight):
2018-07-16 Aaron Chu <aaron_chu@apple.com>
AX: Audit Tab should have an Audit Manager
https://bugs.webkit.org/show_bug.cgi?id=184071
<rdar://problem/38946364>
Reviewed by Brian Burg.
This implements the AuditManager for the audit feature. This patch revolves
around building out an AuditManager that facilitates an audit. The AuditManager
is responsible for managing and storing AuditReports and AuditTestSuites. It is
also tasked to decide how to run a test -- whether as a test case or as a test
suite. This patch also includes 4 models with which the AuditManager works to
perform an audit and to generate a report. These models include AuditTestCase,
which as a collection is stored inside an AuditTestSuite; and AuditResult,
which, as a collection is stored inside an AuditReport.
* UserInterface/Controllers/AuditManager.js: Added.
(WI.AuditManager):
(WI.AuditManager.prototype.get testSuites):
(WI.AuditManager.prototype.get reports):
(WI.AuditManager.prototype.async.runAuditTestByRepresentedObject):
(WI.AuditManager.prototype.reportForId):
(WI.AuditManager.prototype.removeAllReports):
(WI.AuditManager.prototype.async._runTestCase):
* UserInterface/Main.html:
* UserInterface/Models/AuditReport.js: Added.
(WI.AuditReport):
(WI.AuditReport.prototype.get representedTestCases):
(WI.AuditReport.prototype.get representedTestSuite):
(WI.AuditReport.prototype.get resultsData):
(WI.AuditReport.prototype.get isWritable):
(WI.AuditReport.prototype.get failedCount):
(WI.AuditReport.prototype.addResult):
(WI.AuditReport.prototype.close):
* UserInterface/Models/AuditResult.js: Added.
(WI.AuditResult):
(WI.AuditResult.prototype.get testResult):
(WI.AuditResult.prototype.get name):
(WI.AuditResult.prototype.get logLevel):
(WI.AuditResult.prototype.get failed):
* UserInterface/Models/AuditTestCase.js: Added.
(WI.AuditTestCase.prototype.get id):
(WI.AuditTestCase.prototype.get name):
(WI.AuditTestCase.prototype.get suite):
(WI.AuditTestCase.prototype.get test):
(WI.AuditTestCase.prototype.get setup):
(WI.AuditTestCase.prototype.get tearDown):
(WI.AuditTestCase.prototype.get errorDetails):
(WI.AuditTestCase):
* UserInterface/Models/AuditTestSuite.js: Added.
(WI.AuditTestSuite):
(WI.AuditTestSuite.testCaseDescriptors):
(WI.AuditTestSuite.prototype.get id):
(WI.AuditTestSuite.prototype.get name):
(WI.AuditTestSuite.prototype.get testCases):
(WI.AuditTestSuite.prototype._buildTestCasesFromDescriptors):
* UserInterface/Test.html:
2018-07-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Console filter field buttons should be darker
https://bugs.webkit.org/show_bug.cgi?id=187626
<rdar://problem/42142744>
Reviewed by Brian Burg.
* UserInterface/Views/FindBanner.css:
(@media (prefers-dark-interface)):
(.find-banner > button.segmented):
(.find-banner > button.segmented > .glyph):
2018-07-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: selected item background color is too light
https://bugs.webkit.org/show_bug.cgi?id=187691
<rdar://problem/42225308>
Reviewed by Brian Burg.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom:focus li.selected .selection-area):
2018-07-14 Kocsen Chung <kocsen_chung@apple.com>
Ensure WebKit stack is ad-hoc signed
https://bugs.webkit.org/show_bug.cgi?id=187667
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r195723): Improve support for resources with '\r' and '\r\n' line endings
https://bugs.webkit.org/show_bug.cgi?id=186453
<rdar://problem/39689180>
Reviewed by Joseph Pecoraro.
Now that the frontend no longer uses offsets from the original source
file to calculate positions within CodeMirror, it is possible to support
resources with '\r' and '\r\n' line endings in the editor.
* UserInterface/Views/CodeMirrorEditor.js:
(WI.CodeMirrorEditor.create):
(WI.CodeMirrorEditor):
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Basic blocks highlighting should use line/column locations instead of offsets
https://bugs.webkit.org/show_bug.cgi?id=187613
<rdar://problem/42131808>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/BasicBlockAnnotator.js:
Basic blocks sent from the backend include offsets into the original
file, rather than line/column locations. In order to translate to positions
within CodeMirror, we need to calculate the original line and column
for each block.
(WI.BasicBlockAnnotator.prototype.insertAnnotations):
(WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions.offsetToPosition):
(WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions):
(WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges.):
(WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
(WI.BasicBlockAnnotator.prototype._highlightTextForBasicBlock):
* UserInterface/Models/SourceCodePosition.js:
(WI.SourceCodePosition.prototype.offsetColumn):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.getTextInRange):
(WI.TextEditor.prototype.addStyleToTextRange):
Better encapsulation for CodeMirror positions.
* UserInterface/Workers/Formatter/FormatterUtilities.js:
(get if):
Update String.prototype.lineEndings to support additional line separators.
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Execution highlighting in the frontend should be line/column-based
https://bugs.webkit.org/show_bug.cgi?id=187532
<rdar://problem/42035580>
Reviewed by Joseph Pecoraro.
Source code offsets from Esprima should not be used to calculate ranges
in CodeMirror for expression highlighting.
This also fixes a long standing bug when adjusting for the starting
position of an inline script. Previously the start offset from the script
TextRange was used for this purpose, but the value is often incorrect (see
https://bugs.webkit.org/show_bug.cgi?id=187532#c5). By using the starting
line/column instead, we avoid the problem.
* UserInterface/Models/ScriptSyntaxTree.js:
(WI.ScriptSyntaxTree.prototype.containersOfPosition):
(WI.ScriptSyntaxTree.prototype.containersOfOffset): Deleted.
* UserInterface/Models/SourceCodePosition.js:
(WI.SourceCodePosition.prototype.offsetColumn):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.toInlineScriptPosition):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.fromInlineScriptPosition):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.convertRangeOffsetsToSourceCodeOffsets): Deleted.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._updateExecutionRangeHighlight):
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: SourceCodePosition.js missing from Test.html
https://bugs.webkit.org/show_bug.cgi?id=187644
Reviewed by Brian Burg.
* UserInterface/Test.html:
2018-07-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Type token positioning should use line/column locations from Esprima instead of offsets
https://bugs.webkit.org/show_bug.cgi?id=187612
<rdar://problem/42131910>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/TypeTokenAnnotator.js:
(WI.TypeTokenAnnotator.prototype.insertAnnotations):
(WI.TypeTokenAnnotator.prototype._insertTypeToken):
(WI.TypeTokenAnnotator.prototype._insertToken):
Use line/column locations, instead of offsets, from the AST when calculating
token positions for CodeMirror. Once in CodeMirror's string space, we
can safely convert to/from offsets.
* UserInterface/Models/ScriptSyntaxTree.js:
Retrieve line/column locations for AST nodes, in addition to offsets.
Offsets into the original file are still needed for getting type information
from the profiler in the backend.
(WI.ScriptSyntaxTree):
(WI.ScriptSyntaxTree.prototype.filterByRange):
Filter by positions, which can be safely used from CodeMirror, instead of offsets.
(WI.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
(WI.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange): Deleted.
* UserInterface/Models/SourceCodePosition.js:
Add convenience methods for comparing line/column positions, and for
converting to the format expected by CodeMirror. SourceCodePosition could
be made to interoperate with CodeMirror by exposing properties `line`
and `ch`, but making the conversion explicit improves code readability.
(WI.SourceCodePosition.prototype.equals):
(WI.SourceCodePosition.prototype.isBefore):
(WI.SourceCodePosition.prototype.isAfter):
(WI.SourceCodePosition.prototype.isWithin):
(WI.SourceCodePosition.prototype.toCodeMirror):
(WI.SourceCodePosition):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.visibleRangePositions):
(WI.TextEditor.prototype.originalPositionToCurrentPosition):
(WI.TextEditor.prototype.currentOffsetToCurrentPosition):
(WI.TextEditor.prototype.currentPositionToCurrentOffset):
(WI.TextEditor.prototype.setInlineWidget):
2018-07-10 Fujii Hironori <Hironori.Fujii@sony.com>
REGRESSION(r229932) Use of uninitialized value in subroutine entry at copy-user-interface-resources.pl
https://bugs.webkit.org/show_bug.cgi?id=187511
Reviewed by Brian Burg.
copy-user-interface-resources.pl output warning messages unless
BUILT_PRODUCTS_DIR and BUILT_PRODUCTS_DIR env vars are defined.
* Scripts/copy-user-interface-resources.pl:
(webInspectorUIAdditionsDir): Added. Return UNDEF if
BUILT_PRODUCTS_DIR and SDKROOT env vars aren't defined.
(combineOrStripResourcesForWebKitAdditions): Check
$webInspectorUIAdditionsDir is defined.
2018-07-10 Ross Kirsling <rkirsling@gmail.com>
Web Inspector: Layers inspector should allow control-dragging to pan the 3D render
https://bugs.webkit.org/show_bug.cgi?id=185109
Reviewed by Matt Baker.
Addressed in the three.js repo itself (https://github.com/mrdoob/three.js/pull/13972),
so this patch simply updates three.js and its OrbitControls module.
* UserInterface/External/three.js/LICENSE:
* UserInterface/External/three.js/three.js:
Update to r94.
* UserInterface/External/three.js/OrbitControls.js:
Update to latest.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._restrictPan):
Adapt to recent changes in three.js.
2018-07-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove unused NavigationSidebarPanel.treeElementAddedOrChanged
https://bugs.webkit.org/show_bug.cgi?id=187508
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype.treeElementAddedOrChanged): Deleted.
2018-07-10 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r217505): Debugger content view doesn't update when left sidebar is collapsed
https://bugs.webkit.org/show_bug.cgi?id=187482
<rdar://problem/41989190>
Reviewed by Brian Burg.
Subclasses of NavigationSidebarPanel must process tree selection changes
even when collapsed. Sidebar panels perform critical controller tasks
for their tabs, such as updating the view when pausing in the debugger,
and when the hierarchical path component selection changes.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/SourcesSidebarPanel.js:
(WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel._treeSelectionDidChange):
2018-07-09 Brian Burg <bburg@apple.com>
REGRESSION: Web Inspector no longer pauses in internal injected scripts like WDFindNodes.js
https://bugs.webkit.org/show_bug.cgi?id=187350
<rdar://problem/41728249>
Reviewed by Matt Baker.
* UserInterface/Base/Setting.js: Add a new setting to allow pausing in internal scripts.
* UserInterface/Controllers/DebuggerManager.js: Listen to the setting change and toggle
the backend setting accordingly. The default is to not break into internal scripts.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):
Expose the new setting in the Debug settings panel.
2018-07-06 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: resource search field has white text on white background
https://bugs.webkit.org/show_bug.cgi?id=187423
Reviewed by Timothy Hatcher.
Match the colors of sidebar filter fields.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.find-banner > input[type="search"]):
2018-07-04 Tim Horton <timothy_horton@apple.com>
Introduce PLATFORM(IOSMAC)
https://bugs.webkit.org/show_bug.cgi?id=187315
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2018-06-28 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r213000): copy from Search results content view broken
https://bugs.webkit.org/show_bug.cgi?id=187020
<rdar://problem/40928766>
Reviewed by Timothy Hatcher.
Since WI._copy listens for a copy event from the document, it is called
after CodeMirror handles the event and sets clipboard data. If WI._copy
finds a custom copy handler to call, that handler can determine whether
to overwrite the current clipboard data, or leave it alone.
SearchTabContentView's handleCopyEvent method should return early if the
content tree outline doesn't have the focus. This prevents the selection
in the TextEditor from being overwritten, without any special knowledge of
the content browser's current view.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView.prototype.handleCopyEvent):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Box Model section should have dark background
https://bugs.webkit.org/show_bug.cgi?id=186976
Reviewed by Brian Burg.
Replace all instances of black text on white background with the default text and background colors.
* UserInterface/Views/BoxModelDetailsSectionRow.css:
(@media (prefers-dark-interface)):
(.details-section .row.box-model):
(.details-section .row.box-model .label):
(.details-section .row.box-model :matches(.position, .margin, .border, .padding, .content)):
(.details-section .row.box-model:not(.hovered) :matches(.margin, .border, .padding, .content),):
(.details-section .row.box-model .margin):
(.details-section .row.box-model .border):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: color outline is too dark
https://bugs.webkit.org/show_bug.cgi?id=186975
Reviewed by Brian Burg.
Make the outline lighter than the background.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.hover-menu > svg > :matches(path, rect)):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Media query names are unreadable
https://bugs.webkit.org/show_bug.cgi?id=186974
Reviewed by Brian Burg.
Change media query names from dark blue to light blue.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
(.cm-s-default .cm-attribute):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Network headers colors are too dim
https://bugs.webkit.org/show_bug.cgi?id=186985
Reviewed by Brian Burg.
Increasing the luminance of network header colors by increasing lightness and brightness.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Font guideline colors are too bright
https://bugs.webkit.org/show_bug.cgi?id=186986
Reviewed by Brian Burg.
Make the guidelines less distractive from the font glyphs.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.content-view.resource.font .preview > .line):
(.content-view.resource.font .metric.top):
(.content-view.resource.font .metric.baseline):
(.content-view.resource.font .metric.middle):
(.content-view.resource.font .metric.xheight):
(.content-view.resource.font .metric.bottom):
2018-06-20 Daniel Bates <dabates@apple.com>
Web Inspector: All non-Same-Site cookies are marked as Same-Site Strict in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=186867
<rdar://problem/41175424>
Reviewed by Matt Baker.
Fixes an issue where cookies that do not have a Same-Site policy would be marked up as Same-
Site Strict in Web Inspector's cookie storage content view (under the storage tab).
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._rebuildTable): Only compute the display name if
we cookie.sameSite is non-null and is not WI.Cookie.SameSiteType.None. Moreover, remove
an extraneous call to WI.Cookie.parseSameSiteAttributeValue() as cookie.SameSite represents
the already parsed value (one of the WI.Cookie.SameSiteType-scoped values).
2018-06-18 Brian Burg <bburg@apple.com>
Web Inspector: TypeError: Array.prototype.sort passed bad value in NetworkTableContentView _updateSortAndFilteredEntries
https://bugs.webkit.org/show_bug.cgi?id=186787
<rdar://problem/41175680>
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
2018-06-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: open source Dark Mode
https://bugs.webkit.org/show_bug.cgi?id=186606
Reviewed by Timothy Hatcher.
The dark mode is currently only available on macOS Mojave via prefers-dark-interface CSS media query.
* UserInterface/Main.html:
* UserInterface/Views/DarkMode.css: Added.
(@media (prefers-dark-interface)):
(:root):
(body.window-inactive):
(body.window-inactive *):
(#main):
(.tree-outline.dom li.selected .selection-area):
(.tab-bar > .item > .icon):
(.go-to-arrow):
(.resource-link,):
(.expand-list-button):
(:matches(img, canvas).show-grid):
(.formatted-object,):
(.formatted-null,):
(.editing):
(.editing, .editing *):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
(.details-section > .header):
(.details-section > .header > label):
(.details-section .details-section,):
(.details-section .details-section:not(.collapsed) > .header):
(.details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group:nth-child(even)):
(.details-section > .content > .group > .row:matches(.empty, .text)):
(.data-grid th):
(.data-grid td .subtitle):
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
(.data-grid tr.editable .cell-content > input):
(.data-grid td.spanning):
(.object-tree,):
(.object-preview .name):
(.object-preview > .size):
(.tab-bar):
(.tab-bar > .item):
(.tab-bar > .item > .title):
(.tab-bar > .item:not(.disabled).selected):
(.tab-bar:not(.animating) > .item:not(.selected):hover):
(.tab-bar > .item > .close):
(body.window-inactive .tab-bar):
(body.window-inactive .tab-bar > .item):
(body.window-inactive .tab-bar > .item.selected):
(body.window-inactive .tab-bar > .item > .title):
(body .toolbar):
(body.window-inactive .toolbar):
(body.latest-mac .toolbar .item.button,):
(body.latest-mac .toolbar .search-bar > input[type="search"]):
(body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
(body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button):
(body.latest-mac .toolbar .dashboard-container):
(body.latest-mac .toolbar .item.button:active):
(body.latest-mac.window-inactive .toolbar .item.button,):
(.navigation-bar .item.divider):
(.toolbar .item.button):
(.toolbar .item.button:not(.disabled):active):
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
(.toolbar .dashboard.default > .item > div):
(.toolbar .dashboard.default > .item.enabled > div):
(.toolbar .dashboard.default > .item.enabled:hover):
(.toolbar .dashboard.default > .item.enabled:hover > div):
(.toolbar .dashboard.default > .resourcesCount > img,):
(body.latest-mac .toolbar .dashboard .item.button):
(.dashboard-container .advance-arrow):
(.toolbar .dashboard.debugger):
(.dashboard.debugger .navigation-bar .item.button > .glyph):
(.dashboard.debugger > .location .function-name):
(.dashboard.debugger > .location .go-to-link):
(.dashboard.debugger > .divider):
(.popover .edit-breakpoint-popover-content > label.toggle):
(.popover .edit-breakpoint-popover-content > table > tr > th):
(.breakpoint-action-block-body):
(.breakpoint-action-block-body > .description):
(.breakpoint-action-append-button,):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(.navigation-bar .item.button):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration.locked .origin::after):
(.spreadsheet-css-declaration .origin .go-to-link,):
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
(.spreadsheet-css-declaration .media-label):
(.quick-console):
(.syntax-highlighted,):
(.cm-s-default,):
(.CodeMirror .jump-to-symbol-highlight,):
(.console-prompt):
(.completion-suggestions):
(.completion-suggestions-container > .item):
(.CodeMirror-cursor):
(.CodeMirror .CodeMirror-gutters):
(.cm-s-default .cm-link):
(.cm-s-default .cm-m-xml.cm-attribute,):
(.cm-s-default .cm-meta):
(.cm-s-default .cm-variable-3):
(.cm-s-default .cm-builtin):
(.tree-outline .item .subtitle):
(.object-tree-property .getter,):
(.item.object-tree-property.prototype-property):
(.object-tree-property.prototype-property:hover,):
(.object-tree-property .value.error):
(.tree-outline.dom):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom .shadow):
(.tree-outline.dom li.parent.shadow + ol.children.expanded,):
(.showing-find-banner .tree-outline.dom .search-highlight):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
(.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
(.spreadsheet-css-declaration.locked):
(.spreadsheet-css-declaration .selector.style-attribute):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
(.inline-swatch):
(.spreadsheet-style-panel .section-header):
(.spreadsheet-style-panel .section-header .node-link:hover):
(.computed-style-properties.details-section):
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
(.table,):
(.table > .header > .sortable:active):
(.table > .header > :matches(.sort-ascending, .sort-descending)):
(.table > .header > :matches(.sort-ascending, .sort-descending)::after):
(.scope-bar > li):
(.timeline-overview > .navigation-bar.timelines):
(.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
(.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),):
(.time-icon .icon):
(.data-grid th:matches(.sort-ascending, .sort-descending)):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
(.content-view.settings .navigation-bar):
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
(.new-tab.tab.content-view):
(.filter-bar > input[type="search"]):
(.filter-bar > input[type="search"]::placeholder):
(.filter-bar > input[type="search"]:focus):
(.content-view.resource.image):
(.console-messages):
(.console-item):
(.console-messages:focus .console-item.selected):
(.console-messages:focus .console-item.selected + .console-item):
(.console-session:first-of-type .console-session-header):
(.console-session:not(:first-of-type) .console-session-header):
(.console-messages a):
(.console-messages a:hover):
(.console-messages:focus .console-item.selected::after):
(.console-error-level):
(.console-error-level:not(.filtered-out, .filtered-out-by-search), .console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.console-warning-level):
(.console-warning-level:not(.filtered-out, .filtered-out-by-search), .console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
(.source-code.text-editor > .CodeMirror .error):
(.source-code.text-editor > .CodeMirror .warning):
(.source-code.text-editor > .CodeMirror .issue-widget):
(.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.inline.error):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.error > .arrow):
(.console-message .syntax-highlighted):
(.console-warning-level .console-message-text):
(.console-error-level .console-message-text):
(.console-user-command > .console-message-text):
(.console-message .repeat-count):
(.call-frame .subtitle,):
(.call-frame:hover .subtitle .source-link,):
(.call-frame .separator):
(.quick-console.showing-log):
(.find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)):
(.network-resource-detail):
(.network-resource-detail .item.close > .glyph):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.resource-headers .value):
(.network-table .cell.domain > .lock):
(.resource-sizes > .content .label):
(.popover.waterfall-popover):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table > tr > td.label,):
(.resource-timing-breakdown > table hr):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.web-socket.content-view .data-grid table.data tr.revealed):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
(.item.action:not(.initial-state)::before):
(.tree-outline .item.action.visual:not(.selected, .invalid)):
(.item.action:not(.initial-state) > .icon):
(.tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon,):
(.content-view.canvas > .preview > img,):
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
(.content-view.canvas:not(.tab)):
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.indeterminate-progress-spinner):
(.content-view.shader-program > .text-editor.shader):
(.content-view.shader-program > .text-editor.shader > .type-title):
(.item.shader-program .status > img):
(.open-resource-dialog):
(.open-resource-dialog > .field > input):
(.open-resource-dialog > .field > input::placeholder):
(.open-resource-dialog > .tree-outline .item.selected):
(.open-resource-dialog > .field::before):
2018-06-09 Dan Bernstein <mitz@apple.com>
[Xcode] Clean up and modernize some build setting definitions
https://bugs.webkit.org/show_bug.cgi?id=186463
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig: Removed definition for macOS 10.11.
* Configurations/DebugRelease.xcconfig: Ditto.
* Configurations/Version.xcconfig: Ditto.
2018-06-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Tab picker is briefly visible when TabBar initially shown
https://bugs.webkit.org/show_bug.cgi?id=186317
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TabBar.js:
(WI.TabBar): Picker should be initially hidden.
2018-06-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Text in "Add New Class" in auto-capitalizes
https://bugs.webkit.org/show_bug.cgi?id=186311
Reviewed by Matt Baker.
Disable spellcheck to prevent auto-capitalization.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
2018-06-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Cannot copy a link address in Elements tab
https://bugs.webkit.org/show_bug.cgi?id=186281
<rdar://problem/39193355>
Reviewed by Brian Burg.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
2018-05-30 Daniel Bates <dabates@apple.com>
Web Inspector: Annotate Same-Site cookies
https://bugs.webkit.org/show_bug.cgi?id=184897
<rdar://problem/35178209>
Reviewed by Brian Burg.
Add a new column for the value of the Same-Site cookie attribute to the resource cookie content
view (shown for a resource under the Network tab) and cookie storage content view (shown under
the Storage tab).
The SameSite column in the resource cookie content view reflects the parsing of the Same-Site
attribute from the HTTP response by Web Inspector. This parsing is materially consistent with
the parsing of the SameSite atttribute in CFNetwork. The Same-Site column in the cookie storage
content view reflects the Same-Site cookie policy associated with the cookies provided by the
network stack, if supported. This column will be blank on systems whose network stack does not
support Same-Site cookies (e.g libsoup).
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.cookies):
* UserInterface/Models/Cookie.js:
(WI.Cookie):
(WI.Cookie.displayNameForSameSiteType):
(WI.Cookie.parseSameSiteAttributeValue):
(WI.Cookie.parseSetCookieResponseHeader):
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._rebuildTable):
(WI.CookieStorageContentView.prototype._sortDataGrid):
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tablePopulateCell):
(WI.ResourceCookiesContentView.prototype._generateSortComparator):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
2018-05-25 Matt Baker <mattbaker@apple.com>
Web Inspector: Popover dismissed while attempting to move cursor inside
https://bugs.webkit.org/show_bug.cgi?id=185741
<rdar://problem/40340938>
Reviewed by Joseph Pecoraro.
Hovering a token within the bounds of the current popover should not
show a new popover. This prevents the popover from being dismissed when
the cursor passes over a token under the transparent portion of the
popover frame.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._showPopover):
2018-05-22 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r232052.
Breaks internal builds.
Reverted changeset:
"Use more C++17"
https://bugs.webkit.org/show_bug.cgi?id=185176
https://trac.webkit.org/changeset/232052
2018-05-21 Yusuke Suzuki <utatane.tea@gmail.com>
Use more C++17
https://bugs.webkit.org/show_bug.cgi?id=185176
Reviewed by JF Bastien.
* Configurations/Base.xcconfig:
2018-05-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: put `hasVisualEffect` behind an experimental setting
https://bugs.webkit.org/show_bug.cgi?id=185758
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.onattach):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-05-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: create a navigation item for toggling the overlay rulers/guides
https://bugs.webkit.org/show_bug.cgi?id=185644
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype.closed):
(WI.DOMTreeContentView.prototype._showRulersChanged): Added.
(WI.DOMTreeContentView.prototype._toggleShowRulers): Added.
2018-05-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Canvas: Remove unused --value-visual-highlight CSS variable
https://bugs.webkit.org/show_bug.cgi?id=185636
Reviewed by Matt Baker.
* UserInterface/Views/Variables.css:
(:root):
2018-05-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: don't automatically select a recording when viewing a canvas
https://bugs.webkit.org/show_bug.cgi?id=182950
Reviewed by Matt Baker.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Add a "dummy" ScopeBarItem to the recording ScopeBar that is selected whenever a TreeElement
that doesn't correspond to a Recording is selected. This way, the Recording ScopeBar will
become deselected, and the list of actions will disappear. Clicking on the Recording ScopeBar
will show the previously selected Recording.
2018-05-08 Matt Baker <mattbaker@apple.com>
Web Inspector: Console drawer resizing is broken when console prompt has >1 line of code
https://bugs.webkit.org/show_bug.cgi?id=185369
<rdar://problem/40013202>
Reviewed by Devin Rousso.
Mouse offset calculation should account for the height of the quick console.
The only reason resizing worked with the single-line quick console is that
the offset calculation included the resizer height, which is very close
to that of the single-line quick console (27px and 30px respectively).
* UserInterface/Views/ConsoleDrawer.js:
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: simplify the WI.Collection interface
https://bugs.webkit.org/show_bug.cgi?id=185187
Reviewed by Brian Burg.
* UserInterface/Models/Collection.js:
(WI.Collection.prototype.get size): Added.
(WI.Collection.prototype.has): Added.
(WI.Collection.prototype.toJSON):
(WI.Collection.prototype.[Symbol.iterator]): Added.
(WI.Collection.prototype.get items): Deleted.
(WI.Collection.prototype.toArray): Deleted.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
* UserInterface/Models/Frame.js:
(WI.Frame.prototype.removeAllChildFrames):
(WI.Frame.prototype.resourceForURL):
(WI.Frame.prototype.removeAllResources):
* UserInterface/Models/Script.js:
(WI.Script):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.prototype.onpopulate):
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype.attached):
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._filterCookies):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
* UserInterface/Views/FolderizedTreeElement.js:
(WI.FolderizedTreeElement.prototype.updateParentStatus):
(WI.FolderizedTreeElement.prototype._shouldGroupIntoFolders):
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.onpopulate):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.get contentTreeOutlines):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._addResourcesForFrame):
(WI.OpenResourceDialog.prototype._addResourcesForTarget):
* UserInterface/Views/TreeOutlineGroup.js:
(WI.TreeOutlineGroup.prototype.get selectedTreeElement):
(WI.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
* UserInterface/Views/WorkerTreeElement.js:
(WI.WorkerTreeElement.prototype.onpopulate):
2018-05-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Newly added unsupported properties sometimes don't have warnings
https://bugs.webkit.org/show_bug.cgi?id=183097
<rdar://problem/37843816>
Reviewed by Matt Baker.
Update status of properties warnings every time focus moves.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updatePropertiesStatus):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: ensure that tabbing through the last section wraps back to the first
https://bugs.webkit.org/show_bug.cgi?id=181973
Reviewed by Matt Baker.
Unified delegate functions to start editing previous/next rules into a single function for
simplicity.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorStartEditingAdjacentRule):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule): Deleted.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusFirstSection):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusLastSection):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionStartEditingAdjacentRule):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule): Deleted.
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule): Deleted.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusLastPseudoClassCheckbox):
(WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusFilterBar):
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown):
(WI.GeneralStyleDetailsSidebarPanel.prototype._forcedPseudoClassCheckboxChanged):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown):
Drive-by fix: provide tabbing support for the Computed styles panel.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey.switchRule):
(WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey.switchRule):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.focusFirstSection):
(WI.ComputedStyleDetailsPanel.prototype.focusLastSection):
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorStartEditingAdjacentRule):
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: Determine isFunction by looking at the prototype
https://bugs.webkit.org/show_bug.cgi?id=184990
Reviewed by Brian Burg.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.isFunctionForType):
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.async.swizzle):
2018-05-01 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: determine hasVisibleEffect for all actions immediately after recording is added
https://bugs.webkit.org/show_bug.cgi?id=182995
Reviewed by Matt Baker.
Previously, we'd swizzle the entirety of the `WI.Recording` in one, which would usually
freeze the UI, especially for larger recordings. This patch uses `WI.YieldableTask` to split
the work and allow the rest of the UI to still be usable while `WI.Recording` are processing.
Additionally, since we no longer have to worry about hangs, we can do more work upfront,
such as calculating `hasVisibleEffect` and the current state of 2D canvases.
These changes require that all uses of `WI.Recording` call `process()` before attempting to
use any `frames`/`actions`/`initialState`, as they will have their original payload values
and will have not been swizzled or applied.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.process):
(WI.Recording.prototype.createContext): Added.
(WI.Recording.prototype.async yieldableTaskWillProcessItem): Added.
(WI.Recording.prototype.async yieldableTaskDidFinish): Added.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.process): Added.
(WI.RecordingAction.prototype.async swizzle): Added.
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.set state): Deleted.
(WI.RecordingAction.prototype.swizzle): Deleted.
(WI.RecordingAction.prototype.apply.getContent): Deleted.
(WI.RecordingAction.prototype.async _swizzle): Deleted.
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype.onattach):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged): Deleted.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._generateContentCanvas2D): Added.
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Added.
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._updateProcessProgress): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Added.
(WI.RecordingContentView.supportsCanvasPathDebugging): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvas2D): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvasWebGL): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):
* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.supportsCanvasPathDebugging):
2018-04-26 Jer Noble <jer.noble@apple.com>
Unreviewed build fix; fix WebInspectorUI copy resources step after r231063.
* Configurations/Base.xcconfig:
2018-04-26 Jer Noble <jer.noble@apple.com>
WK_COCOA_TOUCH all the things.
https://bugs.webkit.org/show_bug.cgi?id=185006
Reviewed by Tim Horton.
* Configurations/WebInspectorUIFramework.xcconfig:
2018-04-21 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r214076): Web Inspector: Timelines load and DOMContentLoaded markers aren't visible
https://bugs.webkit.org/show_bug.cgi?id=184858
Reviewed by Brian Burg.
r214076 changed the color of all markers to light gray.
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker):
(body[dir=ltr] .timeline-ruler > .markers > .marker):
(body[dir=rtl] .timeline-ruler > .markers > .marker):
(.timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker.load-event):
(.timeline-ruler > .markers > .marker.dom-content-event):
(.timeline-ruler > .markers > .marker.timestamp):
(body[dir=ltr] .timeline-ruler > .markers > .marker.current-time): Deleted.
(body[dir=rtl] .timeline-ruler > .markers > .marker.current-time): Deleted.
2018-04-19 Chris Dumez <cdumez@apple.com>
Rename JSDOMWindowProxy to JSWindowProxy
https://bugs.webkit.org/show_bug.cgi?id=184797
Reviewed by Sam Weinig.
Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot.prototype._isNodeGlobalObject):
2018-04-19 David Kilzer <ddkilzer@apple.com>
Enable Objective-C weak references
<https://webkit.org/b/184789>
<rdar://problem/39571716>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
(CLANG_ENABLE_OBJC_WEAK): Enable.
2018-04-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Can't select and copy text from Network tab popover
https://bugs.webkit.org/show_bug.cgi?id=184606
Reviewed by Matt Baker.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.waterfall-popover .resource-timing-breakdown):
2018-04-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Refactoring: move popover styles from JS to CSS
https://bugs.webkit.org/show_bug.cgi?id=184558
Reviewed by Brian Burg.
Introduce several CSS variables to customize popover appearance in CSS
and not JavaScript.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Popover.js:
(WI.Popover):
(WI.Popover.prototype._drawBackground):
Replace `var` with `let`.
(WI.Popover.prototype.get backgroundStyle): Deleted.
(WI.Popover.prototype.set backgroundStyle): Deleted.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):
(.waterfall-popover .resource-timing-breakdown): Deleted.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Popover.js:
(WI.Popover):
(WI.Popover.prototype._drawBackground):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):
2018-04-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Errors glyph doesn't fully change to blue when active
https://bugs.webkit.org/show_bug.cgi?id=184389
Reviewed by Joseph Pecoraro.
The dot of the exclamation mark was always black.
* UserInterface/Images/Errors.svg:
2018-04-03 Aaron Chu <aaron_chu@apple.com>
AX: Add Experimental setting for Accessibility Audit
https://bugs.webkit.org/show_bug.cgi?id=183646
<rdar://problem/38478583>
Reviewed by Brian Burg.
Added experimental feature flag for Accessibility Audit work.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-04-01 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove dead TabBrowser/TabContentView code
https://bugs.webkit.org/show_bug.cgi?id=184104
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI._tryToRestorePendingTabs):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView.prototype.shown):
(WI.NewTabContentView.prototype.hidden):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.showTabForContentView):
(WI.TabBrowser._tabBarItemRemoved):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get parentTabBrowser): Deleted.
(WI.TabContentView.prototype.set parentTabBrowser): Deleted.
2018-03-30 Devin Rousso <webkit@devinrousso.com>
Web Inspector: tint all pixels drawn by shader program when hovering ShaderProgramTreeElement
https://bugs.webkit.org/show_bug.cgi?id=175223
Reviewed by Matt Baker.
* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram):
(WI.ShaderProgram.prototype.showHighlight):
(WI.ShaderProgram.prototype.hideHighlight):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.onattach):
(WI.ShaderProgramTreeElement.prototype._handleMouseOver):
(WI.ShaderProgramTreeElement.prototype._handleMouseOut):
Whenever a ShaderProgramTreeElement is hovered, highlight the corresponding shader program
by tinting the pixels it draws via a blend.
2018-03-27 Timothy Hatcher <timothy@apple.com>
Web Inspector: Modernize some utility functions
https://bugs.webkit.org/show_bug.cgi?id=184047
Reviewed by Matt Baker.
* UserInterface/Base/Utilities.js:
(Node.prototype.enclosingNodeOrSelfWithClass): Use parentElement instead of parentNode, so we don't need to check for document.
(Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Ditto. Also just toUpperCase input, since nodeName is already upper case.
(String.prototype.escapeCharacters): Use Set and string iteration instead of indexOf and charAt.
2018-03-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Command-Shift-left/right arrow keys should not switch tabs when focused on color picker text fields
https://bugs.webkit.org/show_bug.cgi?id=184028
Reviewed by Timothy Hatcher.
* UserInterface/Views/EditingSupport.js:
(WI.isEventTargetAnEditableField):
Detect <input type="number"> as an editable text field.
2018-03-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: don't show checkboxes for invalid properties
https://bugs.webkit.org/show_bug.cgi?id=183951
<rdar://problem/38807602>
Reviewed by Matt Baker.
Since toggling of invalid properties isn't supported by the backend, don't show checkboxes for invalid properties.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-css-declaration:matches(:hover, :focus) .property:not(:matches(.invalid-name, .invalid-value)) .property-toggle,):
(.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,): Deleted.
Don't show checkboxes for invalid properties but still show them for duplicate properties.
2018-03-23 Brian Burg <bburg@apple.com>
Web Inspector: add WebKitAdditions hooks for WebInspectorUI
https://bugs.webkit.org/show_bug.cgi?id=183940
<rdar://problem/38796310>
Reviewed by Timothy Hatcher.
* Scripts/combine-resources.pl:
(debugLog): Added. Leave in the logging I used to debug this.
(concatenateIncludedFilesMatchingPattern):
(stripIncludedFilesMatchingPattern):
(concatenateFiles): Deleted.
This function tried to do too many things. Split it into
two functions, one for stripping includes and one for concatenating
files referenced by includes.
Lastly, add a negative lookahead clause for 'WebKitAdditions' so includes
containing that string are not combined when no input directory is passed
to the script.
* Scripts/copy-user-interface-resources.pl:
WebKitAdditions is computed either from BUILT_PRODUCTS_DIR or SDKROOT,
depending on the build style. Just try them in order and use the first
one that exists. WebInspectorUI files are in their own directory, so
we can assume there are files to process if that directory exists.
Copy Main.html to derived sources before doing any processing on it.
This makes all combining phases have the same --input-html argument.
(debugLog): Added. Leave in the logging I used to debug this.
(combineOrStripResourcesForWebKitAdditions):
(stripResourcesForWebKitAdditions):
(combineResourcesForWebKitAdditions):
Determine if WebKitAdditions exists and whether there are any
resources for WebInspectorUI present that need to be processed.
* UserInterface/Main.html:
Add stub .js and .css WebKitAdditions files. We can add more later
if it makes sense but this is good enough to validate the build machinery.
2018-03-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: flashing when switching between nodes
https://bugs.webkit.org/show_bug.cgi?id=179291
<rdar://problem/35352660>
Reviewed by Matt Baker.
Flashing was happening because the layout was a two-step process:
1. Append empty sections.
2. Layout everything inside of the section on requestAnimationFrame.
SpreadsheetRulesStyleDetailsPanel was converted to use layout method,
so both steps happen on requestAnimationFrame.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
The removed lines from the refresh method moved to the layout method without any changes.
2018-03-22 Nikita Vasilyev <nvasilyev@apple.com>
Uncaught Exception: TypeError: this._textEditor.toggleUnexecutedCodeHighlights().then is not a function
https://bugs.webkit.org/show_bug.cgi?id=181912
<rdar://problem/36700022>
Reviewed by Matt Baker.
The uncaught exception was caused by returning `false` instead of a promise object.
This patch only fixes the exception. Further enhancements should be done in <https://webkit.org/b/183887>.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
(WI.SourceCodeTextEditor.prototype.toggleUnexecutedCodeHighlights):
2018-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Loses focus when editing a property while page is being loaded
https://bugs.webkit.org/show_bug.cgi?id=182619
<rdar://problem/37363185>
Reviewed by Matt Baker.
Adding or removing a stylesheet causes SpreadsheetRulesStyleDetailsPanel to refresh, triggering a layout
of all SpreadsheetCSSStyleDeclarationSection child views. This resets the focus, selection, and
auto-completion state.
This patch prevents SpreadsheetCSSStyleDeclarationSection from performing a layout when a property is being edited.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
Allow re-layout after creating a blank CSS property and pasting CSS code.
- _pendingAddBlankPropertyIndexOffset is a number after pasting CSS rules.
- _propertyPendingStartEditing is a property model after creating a new property.
2018-03-20 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Session dividers are not added when Console tab is not visible
https://bugs.webkit.org/show_bug.cgi?id=168622
Reviewed by Matt Baker.
Restructure `_pendingMessages` to be a `Map [ConsoleSession, ConsoleMessageView]`. Instead
of rendering to the `_currentConsoleGroup`, we now render to the saved `ConsoleSession`.
Also ensure that `_pendingMessages` is cleared when navigating and "Preserve Log" is off.
* UserInterface/Controllers/JavaScriptLogViewController.js:
(WI.JavaScriptLogViewController):
(WI.JavaScriptLogViewController.prototype.startNewSession):
(WI.JavaScriptLogViewController.prototype.consolePromptHistoryDidChange):
(WI.JavaScriptLogViewController.prototype._appendConsoleMessageView):
(WI.JavaScriptLogViewController.prototype.renderPendingMessages):
(WI.JavaScriptLogViewController.prototype.get prompt): Deleted.
(WI.JavaScriptLogViewController.prototype.get currentConsoleGroup): Deleted.
2018-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Can't add a new class by editing class attribute in DOM outline
https://bugs.webkit.org/show_bug.cgi?id=180890
Reviewed by Ryosuke Niwa.
Typing "my-foo my-bar" creates a single "my-foo\xA0my-bar" class name because
contentEditable-based attribute editor sometimes inserts non-breaking space characters (\xA0).
Replace all non-breaking space characters with the regular space characters when
commiting attribute change.
* UserInterface/Views/DOMTreeElement.js:
2018-03-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Elements: "Force Print Media Styles" should not persist across Web Inspector sessions
https://bugs.webkit.org/show_bug.cgi?id=183708
<rdar://problem/36452183>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype._showPrintStylesChanged):
(WI.DOMTreeContentView.prototype._togglePrintStyles):
(WI.DOMTreeContentView.prototype._showPrintStylesSettingChanged): Deleted.
(WI.DOMTreeContentView.prototype._togglePrintStylesSetting): Deleted.
2018-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: a recording initiated by the user should be shown immediately on completion
https://bugs.webkit.org/show_bug.cgi?id=183647
<rdar://problem/38479187>
Reviewed by Matt Baker.
When recordings are initiated via `console.record`, we don't want to automatically show the
recording after it's payload is sent to the frontend. We determine whether a recording came
from the console by comparing the recording's associated canvas with the current value of
`_recordingCanvas`. Previously, when stopping a recording, we would always null the value,
which meant that all non-single-frame recordings (single-frame recordings are stopped by
the agent after the first paint or tick after an action is performed) would be categorized
as coming from the console, since `_recordingCanvas` would be null by the time the frontend
recieved the payload.
This patch changes it so that the nulling of `_recordingCanvas` in `stopRecording` is only
done if the agent command errors. It was already the case that `_recordingCanvas` was nulled
in `stopRecording`, so this patch just prevents it from being nulled too early.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.stopRecording):
2018-03-12 Jon Davis <jond@apple.com>
Web Inspector: Remove redundant tooltips
https://bugs.webkit.org/show_bug.cgi?id=183099
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Instantiate ConsoleDrawer so the keyboard shortcuts for FindBanner are available.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem):
Only show tooltips when the button style is an image.
* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer):
(WI.ConsoleDrawer.prototype.toggleButtonShortcutTooltip):
Added helper to set the toggle button keyboard shortcut tooltip.
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/FindBanner.js:
(WI.FindBanner):
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent):
(WI.HierarchicalPathComponent.prototype.get tooltip):
(WI.HierarchicalPathComponent.prototype.set tooltip):
(WI.HierarchicalPathComponent.prototype.get hideTooltip):
(WI.HierarchicalPathComponent.prototype.set hideTooltip):
(WI.HierarchicalPathComponent.prototype._updateElementTitleAndText):
Add tooltip management features to manage tooltips separately of the displayName,
and provide a behavior to hide tooltips while retaining the tooltip data.
* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
Hide tooltips when fully visible, show tooltips for collapsed items.
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem.prototype.titleDidChange):
Set tooltips for pinned tab bar items.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
Set the ConsoleDrawer toggle button tooltip after the keyboard shortcut is registered.
* UserInterface/Views/StorageTreeElement.js:
(WI.StorageTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem.prototype.get title):
(WI.TabBarItem.prototype.set title):
(WI.TabBarItem.prototype.titleDidChange):
(WI.TabBarItem):
Add title property management with an overridable titleDidChange handler for
setting tooltips when needed.
* UserInterface/Views/TimelineTreeElement.js:
(WI.TimelineTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/ToggleButtonNavigationItem.js:
(WI.ToggleButtonNavigationItem.prototype.set defaultToolTip):
Added a setter for manging the default tooltip of a toggle button.
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2018-03-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
https://bugs.webkit.org/show_bug.cgi?id=183317
<rdar://problem/38108455>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
Introduce preferredTabType option instead of listing ignoreResourcesTab, ignoreDebuggerTab, ignoreSearchTab, and ignoreNetworkTab.
The only correct outcome of selecting "Reveal in Sources Tab" context menu is to open Sources tab, not any other tab.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
2018-03-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Sources: add SourcesTabContentView and SourceSidebarPanel classes
https://bugs.webkit.org/show_bug.cgi?id=183316
<rdar://problem/38107639>
Reviewed by Matt Baker.
Add Sources tab and sidebar panel, which are copies of the corresponding Resources classes.
The Sources tab is shown when it's enabled in the experimental settings. This patch doesn't
remove existing Resources and Debugger tabs.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Main.html:
* UserInterface/Views/SourcesSidebarPanel.css: Added.
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .navigation-bar):
* UserInterface/Views/SourcesSidebarPanel.js: Added.
(WI.SourcesSidebarPanel):
(WI.SourcesSidebarPanel.shouldPlaceResourcesAtTopLevel):
(WI.SourcesSidebarPanel.prototype.get minimumWidth):
(WI.SourcesSidebarPanel.prototype.closed):
(WI.SourcesSidebarPanel.prototype.showDefaultContentView):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesSidebarPanel.prototype.initialLayout):
(WI.SourcesSidebarPanel.prototype.hasCustomFilters):
(WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.SourcesSidebarPanel.prototype._mainResourceDidChange):
(WI.SourcesSidebarPanel.prototype._mainFrameDidChange):
(WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
(WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange):
(WI.SourcesSidebarPanel.prototype._scriptWasAdded):
(WI.SourcesSidebarPanel.prototype._addScript):
(WI.SourcesSidebarPanel.prototype._scriptWasRemoved):
(WI.SourcesSidebarPanel.prototype._scriptsCleared):
(WI.SourcesSidebarPanel.prototype._styleSheetAdded):
(WI.SourcesSidebarPanel.prototype._addTargetWithMainResource):
(WI.SourcesSidebarPanel.prototype._targetRemoved):
(WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
(WI.SourcesSidebarPanel.prototype._compareTreeElements):
(WI.SourcesSidebarPanel.prototype._extraDomainsActivated):
(WI.SourcesSidebarPanel.prototype._scopeBarSelectionDidChange):
* UserInterface/Views/SourcesTabContentView.js: Added.
(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.isTabAllowed):
(WI.SourcesTabContentView.prototype.get type):
(WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
(WI.SourcesTabContentView.prototype.canShowRepresentedObject):
2018-03-07 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: ensure that the Recording TreeOutline has a specified height for virtualization
https://bugs.webkit.org/show_bug.cgi?id=183015
Reviewed by Matt Baker.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar): Deleted.
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas): Deleted.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype._detach):
2018-02-26 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: Scroll into view / Inspect element if Canvas has DOM node
https://bugs.webkit.org/show_bug.cgi?id=181769
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Markup.svg: Added.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._canvasElementButtonClicked):
2018-02-19 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
https://bugs.webkit.org/show_bug.cgi?id=182597
<rdar://problem/37341564>
Reviewed by Devin Rousso.
Support showing/hiding the navigation sidebar panel based on the current
represented object. Individual TabContentViews can opt-in to this behavior,
by overriding TabContentView.prototype.managesNavigationSidebarPanel.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
Hide the Canvas navigation sidebar when viewing the overview.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView):
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
(WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
(WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
Provide default implementation that just defers to the TabContentView.
This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
will have a meaningful default to fall back on.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
(WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get managesNavigationSidebarPanel):
2018-02-16 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab
https://bugs.webkit.org/show_bug.cgi?id=182353
<rdar://problem/37088644>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Create Search UI based on experimental setting. When the new TabBar is
enabled, the Search tab is a pinned tab. Since it is also saveable, it
needs to be added to the TabBrowser (the browser adds the item to the bar).
When restoring saved tabs, make an additional check to prevent a tab
from being added twice. This can occur now that the Search tab is pinned.
* UserInterface/Images/Search.svg:
Update art to better match Safari/macOS. Slightly increase the radius of
the lens, and shorten the length of the handle.
* UserInterface/Views/GoToLineDialog.css:
(.go-to-line-dialog > div::before):
Update styles for new Search icon.
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype.get saveableTabCount):
Backported new TabBar method which is called by TabBrowser.
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog > .field::before):
Update styles for new Search icon.
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem.prototype.fromTabInfo):
Match GeneralTabBarItem.fromTabInfo.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
New image (magnifying glass without border) when new TabBar is enabled.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView):
* UserInterface/Views/TabBar.js:
(WI.TabBar):
Move creation of the Settings item out of TabBar. The TabBar should
only be concerned with managing tabs.
(WI.TabBar.prototype.get saveableTabCount):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype.get normalNonEphemeralTabCount): Deleted.
Now that the Search tab is pinned, there aren't any normal tabs that
are also ephemeral. For the LegacyTabBar, both the Search and New Tab
tabs are still in this category.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.closeTabForContentView):
(WI.TabBrowser.prototype._tabBarItemSelected):
(WI.TabBrowser._tabBarItemRemoved):
Recent tab list should be validated against the list of saveable tabs,
since the Search tab is no longer a normal tab (a GeneralTabBarItem),
but is still persisted across Inspector sessions.
2018-02-16 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: TabBarItem close button is incorrectly positioned
https://bugs.webkit.org/show_bug.cgi?id=182844
<rdar://problem/37586749>
Reviewed by Timothy Hatcher.
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem.prototype.set title):
Insert the title before the last flexible space item.
* UserInterface/Views/TabBar.css:
(.tab-bar > .item):
(.tab-bar > .item > .close):
(.tab-bar > .item > .flex-space):
(.tab-bar > .item.ephemeral > .flex-space:last-child):
(.tab-bar.collapsed > .item):
(.tab-bar.collapsed > .item > .flex-space):
(.tab-bar.collapsed > .item > .close):
(.tab-bar.collapsed > .item:hover > .close):
(.tab-bar.collapsed > .item.ephemeral:hover > .icon):
(.tab-bar > .item:hover > .close): Deleted.
(.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon): Deleted.
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem):
Restore flexible space items before and after the icon.
2018-02-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: completion popover doesn't hide when switching panels
https://bugs.webkit.org/show_bug.cgi?id=182464
<rdar://problem/37202763>
Reviewed by Timothy Hatcher.
Save the position of the anchor, an element the popover is shown for, and hide the completion popover
when the position changes.
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves):
When the popover is visible, check every 200ms if the anchor moved.
(WI.CompletionSuggestionsView.prototype.hide):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._getCaretRect):
getBoundingClientRect returns {x: 0, y: 0} when it can't determine node's position.
This happens when a node isn't attached to DOM, attached to DOM but not visible, and
a number of odd cases.
2018-02-14 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: only show allowed tabs in the available tabs context menu
https://bugs.webkit.org/show_bug.cgi?id=182721
<rdar://problem/37479019>
Reviewed by Timothy Hatcher.
In addition to only including allowed tabs in the TabBar context menu,
perform a sanity check when setting the selected tab item, since the
serialized selection index could refer to a tab that is no longer allowed.
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype.set selectedTabBarItem):
(WI.LegacyTabBar.prototype._handleContextMenu):
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype._handleContextMenu):
2018-02-09 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: tree selection abruptly changes when selecting a recording frame
https://bugs.webkit.org/show_bug.cgi?id=182667
<rdar://problem/37412639>
Reviewed by Devin Rousso.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .status):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status): Deleted.
Style changes for the additional DOM element required to virtualize the recording tree outline.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
In order to be virtualized, the tree must be the only child of its parent.
(WI.CanvasSidebarPanel.prototype.set action):
Ensure that a frame tree element isn't deselected when the last action
in the frame becomes selected in the RecordingContentView.
(WI.CanvasSidebarPanel.prototype.shown):
Refresh the sidebar, as represented objects may have changed while hidden.
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
Unset the recording when no valid represented objects are found, to
prevent a stale recording tree from being shown when viewing the overview.
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Moved toggling of the "has-recordings" style to _canvasChanged, since
the navigation bar should be hidden when no canvas exists.
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
Drive by fixes for child view visible state.
* UserInterface/Views/TreeOutline.css:
(.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner):
Make spinner easier to see against the selection background color.
2018-02-09 Matt Baker <mattbaker@apple.com>
Web Inspector: Object.shallowEqual always fails when comparing array property values
https://bugs.webkit.org/show_bug.cgi?id=182634
<rdar://problem/37374639>
Reviewed by Devin Rousso.
Object.shallowEqual should use Array.shallowEqual when comparing property
values, since strictly comparing objects/arrays is only true if both
operands reference the same Object.
* UserInterface/Base/Utilities.js:
(value):
2018-02-08 Matt Baker <mattbaker@apple.com>
Web Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
https://bugs.webkit.org/show_bug.cgi?id=178744
<rdar://problem/35374379>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Canvas2D.svg:
* UserInterface/Images/Canvas3D.svg:
* UserInterface/Images/Recording.svg:
Update canvas icons to be monochrome. Simplified the recording icon.
* UserInterface/Main.html:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.get state):
(WI.RecordingAction.prototype.set state):
Allow (2D) snapshot state to be associated with the action. Used by
RecordingActionDetailsSidebarPanel to retrieve the snapshot state.
* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .progress): Deleted.
(.content-view.canvas:not(.tab) > .progress > .frame-count): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.get navigationItems):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype._updateProgressView):
Replace progress UI with a reusable ProgressView class.
When in the overview, clicking the CanvasContentView shows a dedicated
CanvasContentView for inspecting shaders and recordings. This behavior
is controlled by CollectionContentView, so we need to prevent it when
clicking inside the header and footer elements, which contain clickable UI.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.inspect):
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas.is-recording > .progress-view,):
(.content-view.canvas-overview .content-view.canvas.is-recording > .preview):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)): Deleted.
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)): Deleted.
(.content-view.canvas-overview .content-view.canvas > .preview): Deleted.
(.content-view.canvas-overview .content-view.canvas > .progress ~ .preview): Deleted.
Clean up styles, and remove selection styles as canvases are no longer selectable in the overview.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally): Deleted.
(WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged): Deleted.
(WI.CanvasOverviewContentView.prototype._handleUp): Deleted.
(WI.CanvasOverviewContentView.prototype._handleRight): Deleted.
(WI.CanvasOverviewContentView.prototype._handleDown): Deleted.
(WI.CanvasOverviewContentView.prototype._handleLeft): Deleted.
(WI.CanvasOverviewContentView.prototype._handleSpace): Deleted.
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange): Deleted.
Disable canvas selection. Remove logic for supplemental represented objects,
path components, and selection keyboard shortcuts.
* UserInterface/Views/CanvasSidebarPanel.css: Added.
(.sidebar > .panel.navigation.canvas > .content):
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.webgl .icon):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.shader-program > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status):
* UserInterface/Views/CanvasSidebarPanel.js: Added.
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.get canvas):
(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype.hidden):
(WI.CanvasSidebarPanel.prototype.hasCustomFilters):
(WI.CanvasSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.CanvasSidebarPanel.prototype.initialLayout):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._scopeBarSelectionChanged):
(WI.CanvasSidebarPanel.prototype._toggleRecording):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Add new navigation sidebar, split into two sections. The upper section
contains a tree with a single element for the current canvas, and child
elements for any shader programs. The maximum height of this section is 50%
of the sidebar's height. The lower section contains a tree for the selected
recording, and a scope bar for choosing between recordings.
* UserInterface/Views/CanvasTabContentView.css:
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.webgl .icon):
(.content-view.tab.canvas .navigation-bar > .item .shader-program > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon): Deleted.
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon): Deleted.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
(WI.CanvasTabContentView.prototype._recordingAdded):
(WI.CanvasTabContentView.prototype._handleSpace):
(WI.CanvasTabContentView.prototype.showRepresentedObject): Deleted.
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged): Deleted.
(WI.CanvasTabContentView.prototype._recordingActionIndexChanged): Deleted.
(WI.CanvasTabContentView.prototype._updateActionIndex): Deleted.
The canvas tab now maintains a tree outline of all canvases, with an
"Overview" element as the root. The Overview element is always the first
item of content browser's hierarchical path.
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.createRecordingTreeElement):
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype.onattach):
(WI.CanvasTreeElement.prototype.onpopulate):
(WI.CanvasTreeElement.prototype._updateStatus):
(WI.CanvasTreeElement.prototype.ondetach): Deleted.
Make it possible to not show recordings under the Canvas element.
Create `isRecording` status element (spinner).
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.shown):
(WI.CollectionContentView.prototype.hidden):
Child ContentViews need to be updated when the collection's visibility changes.
* UserInterface/Views/ContentView.js:
(WI.ContentView.isViewable):
* UserInterface/Views/ProgressView.css: Added.
(.progress-view):
(.progress-view > .titles):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.progress-view > .titles > .subtitle::before):
(.progress-view > .indeterminate-progress-spinner):
* UserInterface/Views/ProgressView.js: Added.
(WI.ProgressView):
(WI.ProgressView.prototype.get title):
(WI.ProgressView.prototype.set title):
(WI.ProgressView.prototype.get subtitle):
(WI.ProgressView.prototype.set subtitle):
(WI.ProgressView.prototype.get visible):
(WI.ProgressView.prototype.set visible):
(WI.ProgressView.prototype.initialLayout):
(WI.ProgressView.prototype._updateTitles):
New view class (not a ContentView) for showing a generic progress message,
with a title, subtitle, and progress spinner.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):
Remove unnecessary styles.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.get supplementalRepresentedObjects):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.get saveData):
(WI.RecordingContentView.prototype._exportRecording):
Relocate the recording export logic and UI.
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
(WI.RecordingContentView.prototype._sliderChanged):
Refactor logic for notifying the rest of the UI of changes to the action slider.
The selected action is now exposed as a supplemental represented object, and a
corresponding SupplementalRepresentedObjectsDidChange event.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype.inspect):
(WI.RecordingStateDetailsSidebarPanel.prototype.set action):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateAction): Deleted.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
(WI.RecordingTraceDetailsSidebarPanel.prototype.set action):
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction): Deleted.
Now that the selected action is exposed to the UI as a supplemental
represented object, details sidebars can be more decoupled from the
canvas tab, and be notified of changes to the selection via `inspect()`.
* UserInterface/Views/ResourceIcons.css:
(.canvas > .icon): Deleted.
(.shader-program .icon): Deleted.
2018-02-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Typing value and quickly moving focus away may display outdated value in UI
https://bugs.webkit.org/show_bug.cgi?id=182588
<rdar://problem/37332161>
Reviewed by Matt Baker.
CSSProperty models were updated with a 250ms delay. Quickly adding a blank property after modifying
an existing property could result in outdated values being shown.
This patch removes the 250ms delay.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
2018-02-07 Matt Baker <mattbaker@apple.com>
Web Inspector: replace isAncestor with Node.contains() in LegacyTabBar
https://bugs.webkit.org/show_bug.cgi?id=182586
Reviewed by Timothy Hatcher.
* UserInterface/Views/LegacyTabBar.js:
2018-02-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: completion popover doesn't hide when switching panels
https://bugs.webkit.org/show_bug.cgi?id=182464
<rdar://problem/37202763>
Reviewed by Timothy Hatcher.
Hide completion popover by triggering blur event on the focused text field.
Removing text fields from the DOM tree would hide the completion popovers as well,
but switching sidebar panels doesn't remove them from the DOM.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hidden):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.hidden):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.hidden):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.hidden):
2018-02-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Replace isAncestor and isDescendant with native DOM contains method
https://bugs.webkit.org/show_bug.cgi?id=182069
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.restoreFocusFromElement):
(WI._mouseDown):
(WI._focusedContentBrowser):
(WI._focusedContentView):
* UserInterface/Base/Utilities.js:
(Node.prototype.traverseNextNode):
(Node.prototype.isAncestor): Deleted.
(Node.prototype.isDescendant): Deleted.
(Node.prototype.isSelfOrAncestor): Deleted.
(Node.prototype.isSelfOrDescendant): Deleted.
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WI.BoxModelDetailsSectionRow.prototype._handleKeyDown):
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WI.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._onmouseout):
* UserInterface/Views/DetailsSection.js:
(WI.DetailsSection.prototype._headerElementClicked):
* UserInterface/Views/EditingSupport.js:
(WI.incrementElementValue):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
* UserInterface/Views/SoftContextMenu.js:
(WI.SoftContextMenu.prototype._menuItemMouseOut):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype.insertTabBarItem):
2018-02-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Elements tab should have "Jump to Layer" functionality
https://bugs.webkit.org/show_bug.cgi?id=181800
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.isShowingElementsTab):
(WI.showLayersTab):
(WI.isShowingLayersTab):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView.prototype.selectLayerForNode):
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.selectLayerForNode):
(WI.Layers3DContentView.prototype.layout):
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
(WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
2018-02-06 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Rename String.prototype.trimEnd to avoid conflicts with native trimEnd
https://bugs.webkit.org/show_bug.cgi?id=182545
Reviewed by Brian Burg.
Rename:
- trimEnd to truncateEnd
- trimMiddle to truncateMiddle
* UserInterface/Base/Utilities.js:
(String.prototype.trimMiddle): Deleted.
(String.prototype.trimEnd): Deleted.
(String.prototype.truncateMiddle): Added.
(String.prototype.truncateEnd): Added.
Use strict mode. Scrict mode allows `this` to be a primitive (a string, in our case).
In non-strict mode, `this` is always an object. Without the strict mode,
"a".truncateEnd(42) !== "a", because truncateEnd returns a string object.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._buildAttributeDOM):
* UserInterface/Views/DOMTreeElementPathComponent.js:
(WI.DOMTreeElementPathComponent):
* UserInterface/Views/SearchResultTreeElement.js:
Remove an obvious comment.
(WI.SearchResultTreeElement.truncateAndHighlightTitle):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
2018-02-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Add an experimental setting to enable Sources tab
https://bugs.webkit.org/show_bug.cgi?id=182461
Reviewed by Brian Burg.
This patch only adds a setting. It doesn't add the Sources tab.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
2018-02-02 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: Pasting multiple properties should create properties instead of a bad property
https://bugs.webkit.org/show_bug.cgi?id=179622
<rdar://problem/35511170>
Reviewed by Matt Baker.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype._handleNamePaste):
When the user pastes into the name field, parse the text for a list of name-value pairs and
replace the property being edited with the text of those pairs.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyAddBlankPropertySoon):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved): Deleted.
Calling `addBlankProperty` will trigger a layout on the next frame, but that might be before
the CSSAgent has had a chance to finish refreshing, so we need a way to defer the creation
of a new property until after we have finished the next layout (which is after the refresh).
Drive-by: fix naming of some delegate functions.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.replaceWithText):
Provide a way for replacing the property with new text.
2018-02-02 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: remove New Tab button and add experimental feature flag
https://bugs.webkit.org/show_bug.cgi?id=182342
<rdar://problem/37078662>
Reviewed by Devin Rousso.
This patch adds a new experimental setting group, "User Interface", with
a single setting, "Enable New TabBar". When enabled, the New Tab button is
no longer available in the top-level TabBar. The 'open tabs' context menu
no longer allows the last non-ephemeral open tab to be closed (unchecked).
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._tryToRestorePendingTabs):
Retain legacy behavior behind experimental feature setting.
(WI.isNewTabWithTypeAllowed):
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView):
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.prototype.fromTabInfo):
(WI.GeneralTabBarItem.prototype.get isEphemeral):
(WI.GeneralTabBarItem.fromTabContentViewConstructor): Deleted.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
* UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
(WI.LegacyTabBar):
(WI.LegacyTabBar.prototype.get newTabTabBarItem):
(WI.LegacyTabBar.prototype.updateNewTabTabBarItemState):
(WI.LegacyTabBar.prototype.addTabBarItem):
(WI.LegacyTabBar.prototype.insertTabBarItem.animateTabs):
(WI.LegacyTabBar.prototype.insertTabBarItem.removeStyles):
(WI.LegacyTabBar.prototype.insertTabBarItem):
(WI.LegacyTabBar.prototype.removeTabBarItem.animateTabs):
(WI.LegacyTabBar.prototype.removeTabBarItem.removeStyles):
(WI.LegacyTabBar.prototype.removeTabBarItem):
(WI.LegacyTabBar.prototype.selectPreviousTab):
(WI.LegacyTabBar.prototype.selectNextTab):
(WI.LegacyTabBar.prototype.get selectedTabBarItem):
(WI.LegacyTabBar.prototype.set selectedTabBarItem):
(WI.LegacyTabBar.prototype.get tabBarItems):
(WI.LegacyTabBar.prototype.get normalTabCount):
(WI.LegacyTabBar.prototype.layout.forceItemHidden):
(WI.LegacyTabBar.prototype.layout):
(WI.LegacyTabBar.prototype._tabBarItemsFromLeftToRight):
(WI.LegacyTabBar.prototype._findTabBarItem):
(WI.LegacyTabBar.prototype._hasMoreThanOneNormalTab):
(WI.LegacyTabBar.prototype._openDefaultTab):
(WI.LegacyTabBar.prototype._recordTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._applyTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._clearTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose.):
(WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose):
(WI.LegacyTabBar.prototype._handleMouseDown):
(WI.LegacyTabBar.prototype._handleClick):
(WI.LegacyTabBar.prototype._handleMouseMoved):
(WI.LegacyTabBar.prototype._handleMouseUp):
(WI.LegacyTabBar.prototype._handleMouseLeave):
(WI.LegacyTabBar.prototype._handleContextMenu):
(WI.LegacyTabBar.prototype._handleNewTabClick):
(WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu):
(WI.LegacyTabBar.prototype._handleNewTabMouseEnter):
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
(WI.NewTabContentView.tabInfo):
(WI.NewTabContentView.isEphemeral): Deleted.
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
(WI.SearchTabContentView.isEphemeral): Deleted.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.tabInfo):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
(WI.SettingsTabContentView.isEphemeral): Deleted.
* UserInterface/Views/StorageTabContentView.js:
(WI.StorageTabContentView):
* UserInterface/Views/TabBar.css:
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype.insertTabBarItem):
(WI.TabBar.prototype.removeTabBarItem):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.get normalNonEphemeralTabCount):
(WI.TabBar.prototype._handleMouseDown):
(WI.TabBar.prototype._handleClick):
(WI.TabBar.prototype._handleMouseMoved):
(WI.TabBar.prototype._handleMouseLeave):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype._handleTabPickerTabContextMenu):
(WI.TabBar.prototype.get newTabTabBarItem): Deleted.
(WI.TabBar.prototype.updateNewTabTabBarItemState): Deleted.
(WI.TabBar.prototype._openDefaultTab): Deleted.
(WI.TabBar.prototype._handleNewTabClick): Deleted.
(WI.TabBar.prototype._handleNewTabMouseEnter): Deleted.
Remove support for the New Tab button and default tab. Without a default
tab, there is nothing to display when no tabs are open, so prevent the
last non-pinned tab from being removed.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser._tabBarItemRemoved):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.isEphemeral): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
2018-01-30 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Replace Object.shallowMerge with ES2018 spread operator
https://bugs.webkit.org/show_bug.cgi?id=182219
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
(Object.shallowMerge): Deleted.
* UserInterface/Base/DOMUtilities.js:
(WI.linkifyNodeReference):
* UserInterface/Base/Main.js:
(WI.handlePossibleLinkClick):
(WI.openURL):
(WI.showSourceCodeLocation):
(WI.showOriginalUnformattedSourceCodeLocation):
(WI.showOriginalOrFormattedSourceCodeLocation):
(WI.showOriginalOrFormattedSourceCodeTextRange):
(WI.linkifyLocation):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._insertAdjacentHTML):
* UserInterface/Views/WebSocketContentView.js:
(WI.WebSocketContentView.prototype._addRow):
2018-01-26 Matt Baker <mattbaker@apple.com>
Web Inspector: Timelines content browser NavigationBar is squashed at narrow heights
https://bugs.webkit.org/show_bug.cgi?id=182196
<rdar://problem/36929899>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationBar.css:
(.navigation-bar):
2018-01-26 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: improvements to tab layout and resize behavior
https://bugs.webkit.org/show_bug.cgi?id=181468
<rdar://problem/36395439>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/TabPicker.svg: Added.
New ">>" icon for the tab picker button.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView):
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.fromTabContentViewConstructor):
(WI.GeneralTabBarItem.prototype.get title):
Add missing override for getter/setter pair.
(WI.GeneralTabBarItem.prototype.set title):
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent):
Show the close button on ephemeral tabs only (Search, New Tab).
Replace unused `representedObject` parameter with `isEphemeral`, which
determines whether to show a close button for the tab.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
* UserInterface/Views/NavigationBar.js:
Remove unused symbol.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem):
Remove unused parameter.
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
* UserInterface/Views/StorageTabContentView.js:
(WI.StorageTabContentView):
* UserInterface/Views/TabBar.css:
(.tab-bar > .item):
(.tab-bar.calculate-width > .item):
(.tab-bar > .item.pinned.tab-picker):
(.tab-bar > .item > .close):
(.tab-bar > .item > .title):
(.tab-bar:not(.collapsed) > .item > .title):
(.tab-bar.collapsed > .item:not(.pinned) > .icon):
(.tab-bar > .item:hover > .close):
(.tab-bar.collapsed > .item:hover > .close):
(.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon):
(.tab-bar.collapsed > .item.ephemeral:hover > .title):
(body[dir=ltr] .tab-bar > .item > .close): Deleted.
(body[dir=rtl] .tab-bar > .item > .close): Deleted.
(.tab-bar > .item > .flex-space): Deleted.
(.tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=ltr] .tab-bar > .item > .title): Deleted.
(body[dir=rtl] .tab-bar > .item > .title): Deleted.
(.tab-bar.collapsed > .item): Deleted.
(.tab-bar.collapsed > .item > .flex-space): Deleted.
(.tab-bar.collapsed > .item > .close): Deleted.
(body[dir=ltr] .tab-bar.collapsed > .item > .close): Deleted.
(body[dir=rtl] .tab-bar.collapsed > .item > .close): Deleted.
(.tab-bar.hide-titles > .item > .title): Deleted.
(.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon,): Deleted.
(.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close,): Deleted.
Clean up tab styles and prevent tabs from shrinking during flex layout.
Added new `calculate-width` class, to disable flex layout when measuring
the minimum width of the TabBar required to fit all tab items.
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.layout.forceItemHidden):
(WI.TabBar.prototype.layout):
Perform two layout passes, similar to NavigationBar. The first pass disables
flex layout and measures tab items at full size. If the bar isn't wide enough
to show all the tabs, hide their icons and measure again. If there still isn't
room, hide tabs starting from the end of the bar and display the tab picker.
(WI.TabBar.prototype._handleMouseDown):
(WI.TabBar.prototype._handleTabPickerTabContextMenu):
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table: Sort indicator is not displayed when sorted column is hidden and re-shown
https://bugs.webkit.org/show_bug.cgi?id=182164
<rdar://problem/36892619>
Reviewed by Brian Burg.
* UserInterface/Views/Table.js:
(WI.Table.prototype.showColumn):
Re-add the sort classes if the column being shown is the active sort column.
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network - Cookies view should behave better at narrow widths, all data is hidden
https://bugs.webkit.org/show_bug.cgi?id=182163
<rdar://problem/36893241>
Reviewed by Brian Burg.
* UserInterface/Views/ResourceCookiesContentView.css:
(.resource-cookies .table):
Give these tables a reasonable minimum size so that if the inspector
is narrow, the content view can still be scrolled to see all of
the table data.
* UserInterface/Views/Table.css:
(.table > .header):
Match the data-container and mark overflow as hidden, otherwise
super narrow widths show header content beyond the edge.
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Displayed Columns" should not be displayed in context menu if all columns are required columns
https://bugs.webkit.org/show_bug.cgi?id=182162
<rdar://problem/36893758>
Reviewed by Matt Baker.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleHeaderContextMenu):
Only add the header column when we know there are hideable columns.
2018-01-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Simplify update-LegacyInspectorBackendCommands.rb
https://bugs.webkit.org/show_bug.cgi?id=182067
Reviewed by Brian Burg.
* Scripts/update-LegacyInspectorBackendCommands.rb:
Remove stale dependency_json, it has always been empty for a while now.
Switch to framework WebInspectorUI to generate only the backend commands
and not spend time generating a bunch of cpp files.
2018-01-24 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r226994): Web Inspector: Styles: Suggestions popover floats in top-left corner of Web Inspector after tabbing
https://bugs.webkit.org/show_bug.cgi?id=182027
Reviewed by Matt Baker.
r226994 added a layout of all properties on property removal. Layout caused
a property element to be removed from DOM right before dislaying the suggestion
popover, resulting in the popover being displayed at the top left corner.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
Only update property view indices when a property is removed.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.set index):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
Checking this._element.parentNode to see if the element is attached to the DOM tree is unreliable,
since the element may have a non-null parent node that is detached from the DOM tree. To fix that,
we could traverse element's ancestors, but I used a concise isConnected property instead.
2018-01-24 Joseph Pecoraro <pecoraro@apple.com>
ReferenceError:​ Can't find variable:​ DOMAgent (at ScriptSyntaxTree.js:​178:​22)​
https://bugs.webkit.org/show_bug.cgi?id=182059
Reviewed by Matt Baker.
* UserInterface/Models/ScriptSyntaxTree.js:
(WI.ScriptSyntaxTree.functionReturnDivot):
DOMAgent won't be available in a ServiceWorker or JSContext inspector. So add
a check for DOMAgent, and assume if DOMAgent doesn't exist that we should fall
back to the latest path (non-iOS 9) target.
2018-01-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network's columns shake when scrolling at non-default zoom level
https://bugs.webkit.org/show_bug.cgi?id=181998
<rdar://problem/36449808>
Reviewed by Matt Baker.
* UserInterface/Views/Table.js:
When zoomed the bounding client rect values were fractional, which was
unexpected by this area of code. Floor the values to get a value we expect
to be able to evenly distribute.
2018-01-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: data corruption when updating values quickly
https://bugs.webkit.org/show_bug.cgi?id=179461
<rdar://problem/35431882>
Reviewed by Joseph Pecoraro.
Data corruption used to happen because CSSStyleDeclaration.prototype.text didn't
update synchronously. Making two or more quick changes resulted in corrupted data.
Imagine we modify a CSS value 3 times:
Front-end: (1)-(2)---(3)
Back-end: (1)-----(2)-(3)
The first response from the backend could happen after the 2nd edit. In this patch,
CSSStyleDeclaration is locked when its view is being edited.
To correctly display invalid and overridden properties, the backend is allowed to update
CSSStyleDeclaration and CSSProperty when they're locked if the text from the backend
matches the model's text. This should happen when the backend is caught up with the
front-end changes.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.update):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.get locked):
(WI.CSSStyleDeclaration.prototype.set locked):
(WI.CSSStyleDeclaration.prototype.set text):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get editing):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set focused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set inlineSwatchActive):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchActivated):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchDeactivated):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
Lock CSSStyleDeclaration when a CSS property name or value is focused or
an inline widget is active.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
When selector is focused, clicking on the white-space should not add a new blank property.
2018-01-19 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers tab should do away with popovers (if possible)
https://bugs.webkit.org/show_bug.cgi?id=181805
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
Remove superfluous colon from a string.
* UserInterface/Main.html:
* UserInterface/Views/LayerDetailsSidebarPanel.css:
* UserInterface/Views/Layers3DContentView.css: Added.
Remove popover styling from sidebar, add new file with similar styling for canvas overlay.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
(WI.LayerDetailsSidebarPanel.prototype._updateLayers):
(WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
(WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._presentPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._contentForPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons.addReason): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons): Deleted.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.shown):
(WI.Layers3DContentView.prototype.selectLayerById):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._buildLayerInfoElement):
(WI.Layers3DContentView.prototype._updateLayerInfoElement):
(WI.Layers3DContentView.prototype._updateReasonsList):
Remove popover from sidebar table, overlay div with same data arrangement on top of the canvas.
Also reverse the fix from r226671 since the visualization is no longer unusable without the sidebar!
2018-01-19 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas Tab: Multiple "waiting for frames" messages displayed
https://bugs.webkit.org/show_bug.cgi?id=181865
<rdar://problem/36664737>
Reviewed by Devin Rousso.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingStopped):
2018-01-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: tabbing on commented out property throws exception
https://bugs.webkit.org/show_bug.cgi?id=180676
<rdar://problem/35981058>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
Tabbing from the selector field should focus on the first editable property.
When no editable properties are present, a new blank property should be added after the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
Shift-tabbing from the selector field should focus on the last editable property of the previous CSS rule.
When no editable properties are present, a new blank property should be added after the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
When navigating between properties skip the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyAfter):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyBefore):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.get enabled):
(WI.SpreadsheetStyleProperty.prototype._update):
2018-01-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Make styles sidebar always LTR
https://bugs.webkit.org/show_bug.cgi?id=175357
<rdar://problem/33787988>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
2018-01-19 Keith Miller <keith_miller@apple.com>
HaveInternalSDK includes should be "#include?"
https://bugs.webkit.org/show_bug.cgi?id=179670
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2018-01-18 Dan Bernstein <mitz@apple.com>
[Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
https://bugs.webkit.org/show_bug.cgi?id=181803
Reviewed by Tim Horton.
* Configurations/Base.xcconfig: Updated.
* Configurations/DebugRelease.xcconfig: Ditto.
* Configurations/Version.xcconfig: Ditto.
2018-01-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: record button on canvas card doesn't always show on hover, or is misplaced
https://bugs.webkit.org/show_bug.cgi?id=179183
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop): Deleted.
2018-01-17 Devin Rousso <webkit@devinrousso.com>
Web Inspector: clicking on a path component that has no siblings should select it
https://bugs.webkit.org/show_bug.cgi?id=181772
Reviewed by Joseph Pecoraro.
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent.prototype._updateSelectElement):
(WI.HierarchicalPathComponent.prototype._selectElementMouseDown):
2018-01-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add back localized strings for Styles sidebar panels
https://bugs.webkit.org/show_bug.cgi?id=181748
<rdar://problem/36583184>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
(WI.ComputedStyleDetailsSidebarPanel):
* UserInterface/Views/RulesStyleDetailsSidebarPanel.js:
(WI.RulesStyleDetailsSidebarPanel):
* UserInterface/Views/VisualStyleDetailsSidebarPanel.js:
(WI.VisualStyleDetailsSidebarPanel):
Add back localized strings for panel titles lost in r225547.
2018-01-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Super long URL string causes bad wrapping in Resources detail sidebar
https://bugs.webkit.org/show_bug.cgi?id=181617
Reviewed by Brian Burg.
* UserInterface/Views/DetailsSection.css:
(.details-section > .content > .group > .row.simple > .value):
Set the break to all characters.
2018-01-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: typing a "space" in the QuickConsole shouldn't trigger a recording
https://bugs.webkit.org/show_bug.cgi?id=181706
<rdar://problem/36558221>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._handleSpace):
2018-01-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make Console's Execution Context picker stand out when it is non-default
https://bugs.webkit.org/show_bug.cgi?id=181628
<rdar://problem/36492044>
Reviewed by Matt Baker.
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component > .selector-arrows):
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent.prototype.set selectorArrows):
Switch to SVG element so we can style the arrows.
* UserInterface/Views/QuickConsole.css:
(.quick-console > .navigation-bar > .hierarchical-path .execution-context):
(.quick-console > .navigation-bar > .hierarchical-path .execution-context .separator):
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context):
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context .selector-arrows):
Styles for the execution context picker. We hide the unused separator
and instead use margin so that the selected background and border don't
have an extra 7px on the right/end side.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._activeExecutionContextChanged):
Toggle the non-default class name on the path.
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: pressing down key should select first item from completion list when focusing on empty value
https://bugs.webkit.org/show_bug.cgi?id=181633
<rdar://problem/36501797>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Long value causes bad wrapping
https://bugs.webkit.org/show_bug.cgi?id=181618
<rdar://problem/36485175>
Reviewed by Joseph Pecoraro.
Wrap long values only when editing.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .value.editing):
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: clicking on the white space after the property sometimes places a blank property at the wrong index
https://bugs.webkit.org/show_bug.cgi?id=179585
<rdar://problem/35490780>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
Layout call is needed to update data-property-index attributes on the property views.
2018-01-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Export HAR Context Menu not working
https://bugs.webkit.org/show_bug.cgi?id=181694
<rdar://problem/36479197>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
Ensure `this` works in the handler.
2018-01-15 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
https://bugs.webkit.org/show_bug.cgi?id=181448
<rdar://problem/36383298>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
Reorder production tab classes and default (open) tabs.
(WI.registerTabClass): Removed.
Not used.
* UserInterface/Base/Object.js:
Remove notification that is no longer used.
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.prototype.set title):
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
Remove per-tab context menu (provided Close Tab and Close Other Tabs).
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype._handleContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser):
(WI.TabBrowser._handleNewTabContextMenu): Deleted.
No longer needed.
2018-01-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: properties should never be semitransparent or crossed out while editing
https://bugs.webkit.org/show_bug.cgi?id=180793
<rdar://problem/36038813>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .value.editing):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
(.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled) .content > *):
(.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .content .value):
(.spreadsheet-style-declaration-editor .property.not-inherited .content > *):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
2018-01-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Drop support for iOS 7 targets
https://bugs.webkit.org/show_bug.cgi?id=181549
<rdar://problem/36444813>
Reviewed by Brian Burg.
* Versions/Inspector-iOS-7.0.json: Removed.
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js: Removed.
Remove protocol snapshot and generated commands for iOS 7.
* UserInterface/Base/Main.js:
* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._createPopoverContent):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._setBreakpoint):
* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/Instrument.js:
(WI.Instrument.startLegacyTimelineAgent):
* UserInterface/Models/ResourceTimingData.js:
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord.EventType.displayName):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
* UserInterface/Protocol/CSSObserver.js:
(WI.CSSObserver.prototype.regionLayoutUpdated): Deleted.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.fromPayload):
Remove code that was only necessary to support iOS 7.
2018-01-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Support JSX (React) syntax highlighting
https://bugs.webkit.org/show_bug.cgi?id=181607
<rdar://problem/36442564>
Reviewed by Brian Burg.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
(WI.fileExtensionForMIMEType):
* UserInterface/Models/Resource.js:
Support the jsx extension and mime types.
* UserInterface/Main.html:
* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/jsx.js: Added.
Include new mode from CodeMirror@d8926768.
2018-01-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rename "Query String" section as "Query String Parameters" for clarity
https://bugs.webkit.org/show_bug.cgi?id=181464
Reviewed by Darin Adler.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype.initialLayout):
2018-01-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused variable in WI.DebuggerSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=181517
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r218975): Web Inspector: Add back NavigationSidebarPanel initialization parameter used by SearchSidebarPanel (top overflow shadow)
https://bugs.webkit.org/show_bug.cgi?id=181518
<rdar://problem/36427197>
Reviewed by Matt Baker.
* UserInterface/Views/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .overflow-shadow.top):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel):
Add back the initialization parameter still used by SearchSidebarPanel
and add back its implementation. There were still references to
dynamically update _topOverflowShadowElement in NavigationSidebarPanel.
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Incorrect check with WI.debuggableType
https://bugs.webkit.org/show_bug.cgi?id=181515
<rdar://problem/36425509>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
This moved to WI.sharedApp a while ago.
2018-01-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: throttle recording slider updates
https://bugs.webkit.org/show_bug.cgi?id=180839
<rdar://problem/36057849>
Reviewed by Joseph Pecoraro
* UserInterface/Base/Utilities.js:
Add Object.throttle and Function.cancelThrottle. Repeated calls to a
function on a throttled object are delayed, so that the function isn't
invoked more frequently than the specified delay value.
For a description of throttling behavior see:
- http://www.chrislondon.co/throttling-vs-debouncing
- http://benalman.com/projects/jquery-throttle-debounce-plugin
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.updateActionIndex):
Throttle frequency of canvas snapshot creation to 200ms.
(WI.RecordingContentView.prototype.hidden):
Prevent trailing edge call after hiding the view.
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Should not try to autocomplete subsections of a string
https://bugs.webkit.org/show_bug.cgi?id=181461
<rdar://problem/36369421>
Reviewed by Brian Burg.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
Disable autocompletion within strings.
2018-01-09 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r201855): Web Inspector: Should see "length" autocompletion suggestion on a string literal
https://bugs.webkit.org/show_bug.cgi?id=181462
<rdar://problem/36390699>
Reviewed by Matt Baker.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getCompletions):
This is code that runs on the inspected target, which may have an old version of
WebKit/JavaScriptCore, so don't use new syntax like this.
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
We intended to return the result by as a JSON value instead of a RemoteObject.
2018-01-09 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers sidebar shows popover on selection even when collapsed
https://bugs.webkit.org/show_bug.cgi?id=181465
Reviewed by Matt Baker.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
Have sidebar show itself if necessary before displaying popover.
2018-01-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Find next / previous within a resource content view does not have bouncy highlight when editor scrolls
https://bugs.webkit.org/show_bug.cgi?id=181279
<rdar://problem/36291097>
Reviewed by Brian Burg.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._revealSearchResult):
Reposition the bouncy highlight on scroll based on the CodeMirror
line/ch position of the search result.
(WI.TextEditor.prototype._removeBouncyHighlightElementIfNeeded):
Track the bouncy highlight scroll handler in a member variable so that
we always remember to remove it and don't leak scroll handlers.
2018-01-07 David Kilzer <ddkilzer@apple.com>
Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
<https://webkit.org/b/181256>
<rdar://problem/36281730>
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
(WARNING_CFLAGS): Add -Wcast-qual.
2018-01-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version
https://bugs.webkit.org/show_bug.cgi?id=181354
<rdar://problem/35432817>
Reviewed by Matt Baker.
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-11.3.json: Added.
2018-01-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
https://bugs.webkit.org/show_bug.cgi?id=180770
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get contextType):
(WI.Canvas.prototype.saveIdentityToCookie):
(WI.Canvas.prototype.get frame): Deleted.
2018-01-04 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION (r225709): Web Inspector: CSS Source maps not loading
https://bugs.webkit.org/show_bug.cgi?id=181314
<rdar://problem/36177620>
Reviewed by Brian Burg.
* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
Correct this so that we only fall back to a reasonable frame id
if we couldn't determine a frame id from earlier. Previously this
was incorrectly clearing the frame id if we had gotten it earlier.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add SourceMap related files for tests.
2018-01-04 Brian Burg <bburg@apple.com>
Web Inspector: Capture Element Screenshot looks fuzzy
https://bugs.webkit.org/show_bug.cgi?id=175734
<rdar://problem/33803377>
Reviewed by Joseph Pecoraro and Simon Fraser.
Spruce up these functions a bit. They now optionally return a promise
if no callback is supplied. They now can take either a WI.DOMNode or a node id.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.querySelector):
(WI.DOMTreeManager.prototype.querySelectorAll):
2018-01-04 Brian Burg <bburg@apple.com>
Web Inspector: add RemoteObject.fetchProperties and some basic tests for RemoteObject API
https://bugs.webkit.org/show_bug.cgi?id=180945
Reviewed by Joseph Pecoraro.
Add a new method, fetchProperties, which async fetches an arbitrary list of properties
from a RemoteObject. This is intended for writing tests and other quick evaluations,
so it has some behaviors that are suitable in these situations:
- If the evaluation throws an exception, the result will reject with that exception.
- If there is a protocol error for some reason, the result will reject with an exception.
- Non-string and non-number keys cause an exception, as this is probably not intended.
- Does not accept a callback, returns a promise only. New code should use async.
For full fidelity introspection of property descriptors, clients should use the existing
getOwnPropertyDescriptor[s] class of methods.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.async.fetchProperties): Added.
- Validate specified keys and remove duplicates.
- Request properties one-by-one to avoid fetching all descriptors and dealing with previews.
- Unwrap returned primitive values to avoid unnecessary munging in tests.
(WI.RemoteObject.prototype.getProperty):
- Rework this to return a promise if no callback was supplied.
- Introduce stricter property type checking to avoid unintended mistakes.
(WI.RemoteObject.prototype.callFunction):
- Rework this to return a promise if no callback was supplied.
- Turn thrown exceptions and protocol errors into rejected promises.
2018-01-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌘G / ⇧⌘G text search does not working after closing find banner
https://bugs.webkit.org/show_bug.cgi?id=181280
<rdar://problem/36291175>
Reviewed by Matt Baker.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser.prototype._findBannerDidHide):
When the find banner is hidden trigger a new ContentView method,
searchHidden instead of the destructive searchCleared. This allows
most content views (text editors, DOM tree, Network Headers view)
to keep their populated search results.
* UserInterface/Views/ContentView.js:
(WI.ContentView.prototype.searchHidden):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.searchHidden):
By default searchHidden does nothing. The Console's LogContentView
treats the find banner differently and clears its search results.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.searchCleared):
Modernize some code while working in this area.
* UserInterface/Views/Main.css:
(.bouncy-highlight):
Ensure black text on yellow background in the bouncy highlight. In the
DOM Tree it could have been white if the find banner was closed.
2018-01-03 Ting-Wei Lan <lantw44@gmail.com>
Replace hard-coded paths in shebangs with #!/usr/bin/env
https://bugs.webkit.org/show_bug.cgi?id=181040
Reviewed by Alex Christensen.
* Scripts/combine-resources.pl:
* Scripts/copy-user-interface-resources-dryrun.rb:
* Scripts/copy-user-interface-resources.pl:
* Scripts/fix-worker-imports-for-optimized-builds.pl:
* Scripts/remove-console-asserts-dryrun.rb:
* Scripts/remove-console-asserts.pl:
* Scripts/update-LegacyInspectorBackendCommands.rb:
* Scripts/update-codemirror-resources.rb:
* WebInspectorUI.vcxproj/build-webinspectorui.pl:
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Log Value" context menu is sometimes unavailable
https://bugs.webkit.org/show_bug.cgi?id=181278
<rdar://problem/36281649>
Reviewed by Devin Rousso.
* UserInterface/Views/ObjectPreviewView.css:
(.object-preview > .title):
* UserInterface/Views/ObjectTreeView.css:
(.object-tree.expanded > .title):
Make the expanded object title information 16px tall to match ObjectTree
tree element row heights. This eliminates the floating console message
location from overlapping the first ObjectTree's TreeElement and causing
truncation and other behavior issues (like Context Menu identification).
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: RTL - DOM Tree Element selection doesn't work
https://bugs.webkit.org/show_bug.cgi?id=181275
<rdar://problem/36290450>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.treeElementFromEvent):
Provide a better explanation for why we are making the `x` adjustment here,
to detect the inner most tree element along the horizontal. Fix the algorithm
for RTL, since the intent is to adjust to the trailing edge of the container
which is on the opposite side in RTL.
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Find banner sometimes does not work (when already populated and shown for first time on resource)
https://bugs.webkit.org/show_bug.cgi?id=181255
<rdar://problem/36248855>
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set string):
Defer any early searches until the initial content of a TextEditor has been set.
Such searches can happen when the FindBanner already has content when a
ContentView is first opened and needs to load its content from the backend.
Further, even though the content may be loaded from the backend before the
search results, microtask hops might cause the content to get to the TextEditor
after the search results.
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION: Web Inspector: Debugger tab doesn't restore selected resource on reload
https://bugs.webkit.org/show_bug.cgi?id=181253
<rdar://problem/36280564>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
Add braces to ensure the trailing else is actually trailing the outer
chain as it was intended to be.
2018-01-02 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
https://bugs.webkit.org/show_bug.cgi?id=181229
<rdar://problem/36075219>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Cleanup linkifyURLAsNode. Ignore Search tab in generic handlePossibleLinkClick
when not already in the Search tab.
* UserInterface/Views/CallFrameView.js:
(WI.CallFrameView):
Ignore Search and Network tab in CallFrame links.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Improve style.
== Rolled over to ChangeLog-2018-01-01 ==