2021-03-18 Nikita Vasilyev Use 1000-based units for file sizes, per HIG https://bugs.webkit.org/show_bug.cgi?id=208190 Reviewed by BJ Burg. * UserInterface/Base/Utilities.js: * UserInterface/Views/ResourceSizesContentView.js: (WI.ResourceSizesContentView.prototype._formattedSizeComponent): 2021-03-18 Nikita Vasilyev Web Inspector: REGRESSION(r271348): Console: message source code location is not vertically aligned with containing function name https://bugs.webkit.org/show_bug.cgi?id=223288 Reviewed by Devin Rousso. WebKit inline-block behavior changed in r271348 to match the spec more closely. * UserInterface/Views/ConsoleMessageView.css: (.console-message-location.call-frame > .title): Explicitly set `vertical-align` to match the behavior prior r271348. 2021-03-17 Devin Rousso Web Inspector: use native datetime-local picker for changing `expires` value in cookie popover https://bugs.webkit.org/show_bug.cgi?id=209389 Reviewed by BJ Burg. r259173 already made it so that the `` for Expires used `datetime-local`, so nothing needs to be changed to adopt that. We still want to keep the `"input"` event listener that parses and validates the `value` (or `placeholder`) of the `` because dates in the past should be considered invalid. * UserInterface/Views/CookiePopover.js: (WI.CookiePopover.prototype.show): Add `step = 1` so that the seconds field is shown. (WI.CookiePopover.prototype.show.formatDate): Added. (WI.CookiePopover.prototype.show.formatDate.pad): Added. * UserInterface/Views/CookiePopover.css: Remove the FIXME comment. 2021-03-17 Razvan Caliman Web Inspector: add GridOverlay diagnostic event and related hooks https://bugs.webkit.org/show_bug.cgi?id=223256 Reviewed by BJ Burg. Add instrumentation to log telemetry for the CSS Grid Inspector. We want to answer these questions: - How do users prefer to toggle the overlay, in-context from grid badges in the DOM tree or from the aggregated grid node overlay list in Layout sidebar panel? - Which overlay options are most used? Did we pick good defaults or do users prefer others? * UserInterface/Base/Main.js: (WI.contentLoaded): * UserInterface/Controllers/GridOverlayDiagnosticEventRecorder.js: Added. (WI.GridOverlayDiagnosticEventRecorder): (WI.GridOverlayDiagnosticEventRecorder.prototype.setup): (WI.GridOverlayDiagnosticEventRecorder.prototype.teardown): (WI.GridOverlayDiagnosticEventRecorder.prototype._handleGridOverlayShown): * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager.prototype.showGridOverlay): (WI.OverlayManager.prototype.toggleGridOverlay): (WI.OverlayManager.prototype._handleGridSettingChanged): * UserInterface/Main.html: * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype._handleToggleAllCheckboxChanged): (WI.CSSGridSection.prototype.layout): * UserInterface/Views/DOMTreeElement.js: (WI.DOMTreeElement.prototype._gridBadgeClicked): 2021-03-17 Nikita Vasilyev Web Inspector: remove experimental setting and enable "grid" badges https://bugs.webkit.org/show_bug.cgi?id=223209 Reviewed by BJ Burg. * UserInterface/Base/Setting.js: * UserInterface/Views/DOMTreeElement.js: (WI.DOMTreeElement.prototype._updateGridBadge): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 2021-03-15 Nikita Vasilyev Web Inspector: remove experimental setting and enable Layout sidebar https://bugs.webkit.org/show_bug.cgi?id=221246 Reviewed by BJ Burg. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 2021-03-15 Patrick Angle Web Inspector: `Styles` sidebar pseudo-class checkboxes appear cramped after resizing window at narrow widths https://bugs.webkit.org/show_bug.cgi?id=222990 Reviewed by Devin Rousso. Fixed two compounding bugs that meant that a sidebar could end up using the base minimum width of 250px instead of the actual minimum width as reported by the selected panel. * UserInterface/Views/MultiSidebar.js: (WI.MultiSidebar.prototype.didInsertSidebarPanel): (WI.MultiSidebar.prototype.didRemoveSidebarPanel): (WI.MultiSidebar.prototype.didSetCollapsed): - Drive-by: Remove unused (and always undefined) `flag` argument. (WI.MultiSidebar.prototype._updateMinimumWidthForMultipleSidebars): - Add logic to make sure we can calculate a valid `_minimumWidthForMultipleSidebars`, and add a mechanism to allow ignoring the presence of a cached value to force a recalculation. (WI.MultiSidebar.prototype.get _hasWidthForMultipleSidebars): - Ensure if possible that there is a valid `_minimumWidthForMultipleSidebars`. (WI.MultiSidebar.prototype._makeSidebarPanelExclusive): - Sets the sidebar as non-collapsible (which sets `collapsed` to `false`) before adding the panel and setting it as the selected panel so that we don't set the selected panel on a collapsed sidebar. * UserInterface/Views/SingleSidebar.js: (WI.SingleSidebar.prototype.didSetCollapsed): - Drive-by: Remove always undefined `flag` argument, use `this.collapsed` instead. 2021-03-11 Devin Rousso Web Inspector: `WI.Object.singleFireEventListener` should not keep a strong reference to `thisObject` https://bugs.webkit.org/show_bug.cgi?id=223090 Reviewed by BJ Burg. * UserInterface/Base/Object.js: (WI.Object.addEventListener): (WI.Object.singleFireEventListener): 2021-03-10 Nikita Vasilyev Web Inspector: Add checkbox to toggle all grid overlays https://bugs.webkit.org/show_bug.cgi?id=221924 Reviewed by BJ Burg. * UserInterface/Controllers/OverlayManager.js: Drive-by: remove unused getter. * UserInterface/Views/CSSGridSection.css: (.css-grid-section .toggle-all): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection): (WI.CSSGridSection.prototype.initialLayout): (WI.CSSGridSection.prototype._handleToggleAllCheckboxChanged): (WI.CSSGridSection.prototype.layout): Drive-by: replace `Array.prototype.includes`, which runs at O(n) time, with `isGridOverlayVisible`, which checks a Map instead. (WI.CSSGridSection.prototype._handleGridOverlayStateChanged): (WI.CSSGridSection.prototype._updateToggleAllCheckbox): Optimization: minimize number of Map lookups when when at least one overlay is visible and at least one is hidden. 2021-03-10 Nikita Vasilyev Web Inspector: Syntax highlighting for JSX is incorrect https://bugs.webkit.org/show_bug.cgi?id=217613 Reviewed by BJ Burg. Out of the box, React specifies the "js" extension for JSX files. Use JSX mode for source map resources with the "js" extension. This appears to match what the other browsers' developer tools do. * UserInterface/Models/SourceMapResource.js: (WI.SourceMapResource): 2021-03-10 Razvan Caliman Web Inspector: CSS Grid Inspector clean-up https://bugs.webkit.org/show_bug.cgi?id=222913 Reviewed by BJ Burg. Remove obsolete methods to show/hide the grid overlay directly from a DOMNode. Remove engineering-only context menu helpers used while implementing grid overlays. * UserInterface/Models/DOMNode.js: * UserInterface/Views/ContextMenuUtilities.js: 2021-03-09 Razvan Caliman Web Inspector: Jump from Layout panel to grid container element https://bugs.webkit.org/show_bug.cgi?id=222429 Reviewed by Devin Rousso. Add a button to inspect a CSS grid overlay's corresponding element. Remove the similar functionality from the overloaded label. * UserInterface/Views/CSSGridSection.css: (.css-grid-section .node-display-name,): (.css-grid-section .node-overlay-list-item-container :is(.go-to-arrow, .inline-swatch)): (.css-grid-section .node-overlay-list-item-container:not(:hover) .go-to-arrow): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.layout): 2021-03-09 Razvan Caliman [Cocoa] Web Inspector: Console search box is broken, advancing to next result instead pastes from system find pasteboard https://bugs.webkit.org/show_bug.cgi?id=220773 Reviewed by Devin Rousso. Ensure FindBanner is always marked as shown in the Console to prevent malfunction when advancing through search results. * UserInterface/Views/FindBanner.js: (WI.FindBanner): (WI.FindBanner.prototype.set targetElement): (WI.FindBanner.prototype.hide): 2021-03-08 Patrick Angle Web Inspector: REGRESSION (r267038): Inspector fails to show any details about animations/transitions in the timeline https://bugs.webkit.org/show_bug.cgi?id=222921 Reviewed by Devin Rousso. Timeline views should always be updated with the time from the overview, but r267038 erroneously prevented the end time from being updated while recording was stopping and prevented the current time from being updated while recording was stopping or inactive, which meant after a recording finished (Stopping -> Inactive) the timeline views would not be updated with the current time. Because `_updateTimelineViewTimes` can be called when a different content view is selected, it was incorrect to gate setting these values based on the recording state. The check for not being in the inactive state was particularly problematic as it is quite common that a developer would open a specific timelime view for the first time after recording finishes, at which point all values should be populated regardless of recording state. The source of the time values continues to be handled in such a way as to prevent values from continuously jumping around as a recording is stopped but data continues to arrive. * UserInterface/Views/TimelineRecordingContentView.js: (WI.TimelineRecordingContentView.prototype._updateTimes): - Drive-by spelling correction. (WI.TimelineRecordingContentView.prototype._updateTimelineViewTimes): - Remove checks for the current recording state. 2021-03-08 Devin Rousso Web Inspector: REGRESSION(r269359): TypeError: undefined is not an object (evaluating 'listenersForEventType') https://bugs.webkit.org/show_bug.cgi?id=222940 Reviewed by BJ Burg. * UserInterface/Models/JavaScriptBreakpoint.js: (WI.JavaScriptBreakpoint.prototype.get special): The existing logic for `get special` checks if `this` is one of the specially saved objects on `WI.debuggerManager` (e.g. `assertionFailuresBreakpoint`). When deleting a breakpoint, `WI.debuggerManager` has already cleared out it's previously saved reference to that object, so it won't match. Use the existing `_isSpecial` (which looks at the `_sourceCodeLocation`) as a backup in case `this` doesn't directly match any of the saved objects. 2021-03-06 Tim Horton should create a model-owning compositing layer https://bugs.webkit.org/show_bug.cgi?id=222798 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): Add a compositing reason for . 2021-03-05 Nikita Vasilyev Web Inspector: border color of "grid" badge should match color of corresponding outline https://bugs.webkit.org/show_bug.cgi?id=222747 Reviewed by BJ Burg. * UserInterface/Views/DOMTreeElement.css: (.tree-outline.dom .badge-css-grid): Drive-by: decrease the font size and align the badge in the middle of the selected tree element (i.e. keep 1px space above and below the badge). (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .badge-css-grid): (@media (prefers-color-scheme: dark) .tree-outline.dom .badge-css-grid): * UserInterface/Views/DOMTreeElement.js: (WI.DOMTreeElement.prototype._updateGridBadgeStatus): For text and background color, only use the hue of the selected color to keep "grid" text always readable. 2021-03-04 Razvan Caliman Web Inspector: Persist CSS Grid overlay colors https://bugs.webkit.org/show_bug.cgi?id=222319 Reviewed by Devin Rousso. Save and restore CSS Grid overlay colors edited by a user. * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager): (WI.OverlayManager.prototype.showGridOverlay): (WI.OverlayManager.prototype.getGridColorForNode): (WI.OverlayManager.prototype.setGridColorForNode): (WI.OverlayManager.prototype._handleMainResourceDidChange): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.layout): 2021-03-04 Razvan Caliman Web Inspector: Audits Tab: nothing happens when clicking "Start" button in the content area placeholder text https://bugs.webkit.org/show_bug.cgi?id=222740 rdar://75008042 Reviewed by Devin Rousso. * UserInterface/Views/AuditTestContentView.js: (WI.AuditTestContentView.prototype.showNoResultPlaceholder): 2021-03-03 Devin Rousso Web Inspector: `RecordCanvasActionVariant` causes a huge symbol to be created in WebCore https://bugs.webkit.org/show_bug.cgi?id=222639 Reviewed by Tim Horton and Brian Burg. * UserInterface/Models/RecordingAction.js: (WI.RecordingAction): Don't use `||` for the fallback of `_payloadSnapshot` as it can be `0`. * UserInterface/Models/Recording.js: Drive-by: Rename `RecordingSwizzleTypes` to `RecordingSwizzleType`. 2021-03-03 Razvan Caliman Web Inspector: Refine CSS Grid overlay options https://bugs.webkit.org/show_bug.cgi?id=222428 Reviewed by BJ Burg. Move CSS Grid overlay settings above node list, simplify labels, reorder and set default values. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.initialLayout): * UserInterface/Views/LayoutDetailsSidebarPanel.css: (.details-section.layout-css-grid.collapsed > .content): Drive-by: Fix a bug which prevented the contents from being hidden when the section is collapsed. 2021-02-25 BJ Burg [Cocoa] Web Inspector: add support for receiving Web Extension events via _WKInspectorExtensionDelegate https://bugs.webkit.org/show_bug.cgi?id=222252 Reviewed by Devin Rousso. * UserInterface/Models/WebInspectorExtension.js: Update comment for namespace change. * UserInterface/Views/WebInspectorExtensionTabContentView.js: (WI.WebInspectorExtensionTabContentView.prototype.attached): (WI.WebInspectorExtensionTabContentView.prototype.detached): When an extension tab is shown or hidden, notify the frontend host about the event. 2021-02-25 Devin Rousso Web Inspector: REGRESSION(r269359): Sources: the Images folder does not load most images in the main content area https://bugs.webkit.org/show_bug.cgi?id=222431 Reviewed by BJ Burg. * UserInterface/Views/MultipleScopeBarItem.js: (WI.MultipleScopeBarItem.prototype.set scopeBarItems): (WI.MultipleScopeBarItem.prototype._itemSelectionDidChange): (WI.MultipleScopeBarItem.prototype.get _visibleScopeBarItems): Deleted. r269359 made it so that `removeEventListener` actually throws an error if `this` doesn't have any event listeners (it also `console.assert` if the event/listener is missing). `WI.MultipleScopeBarItem.prototype.set scopeBarItems` iterates over all `_scopeBarItems` when calling `removeEventListener`, but only iterates over `_visibleScopeBarItems` when adding them, meaning that `removeEventListener` will be called on objects that did not have a corresponding `addEventListener`. Instead, iterate over all `_scopeBarItems` in both cases and progressively build up `_visibleScopeBarItems` (which also avoids the extra work of `filter` at the other callsites), ensuring that all items have both an `addEventListener` and `removeEventListener`. 2021-02-23 Patrick Angle [Cocoa] Web Inspector: Add support for reloading the inspected page via _WKInspectorExtension https://bugs.webkit.org/show_bug.cgi?id=222296 Reviewed by BJ Burg. Added support for reloading the inspected page, including ignoring the cache if desired, via _WKInspectorExtension. * UserInterface/Controllers/WebInspectorExtensionController.js: (WI.WebInspectorExtensionController.prototype.evaluateScriptForExtension): (WI.WebInspectorExtensionController.prototype.reloadForExtension): (WI.WebInspectorExtensionController): * UserInterface/Protocol/InspectorFrontendAPI.js: (InspectorFrontendAPI.evaluateScriptForExtension): (InspectorFrontendAPI.reloadForExtension): 2021-02-19 Nikita Vasilyev Web Inspector: CSS Grid Inspector: use a color palette for default grid overlay colors https://bugs.webkit.org/show_bug.cgi?id=222161 Reviewed by Devin Rousso. Define a 5-color palette. * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager): (WI.OverlayManager.prototype.showGridOverlay): (WI.OverlayManager.prototype.colorForNode): (WI.OverlayManager.prototype._handleMainResourceDidChange): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.layout): 2021-02-19 Razvan Caliman Web Inspector: Truncate long node display names in Grid Overlay list https://bugs.webkit.org/show_bug.cgi?id=222057 Reviewed by BJ Burg. Truncate long node display names for grid overlays in the Layout panel. * UserInterface/Views/CSSGridSection.css: (.css-grid-section .node-link,): (.css-grid-section .node-overlay-list): (.css-grid-section .node-overlay-list-item-container): (.css-grid-section .node-overlay-list-item-container label): (.css-grid-section .node-overlay-list-item-container .inline-swatch): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.initialLayout): (WI.CSSGridSection.prototype.layout): * UserInterface/Views/LayoutDetailsSidebarPanel.css: (.details-section.layout-css-grid > .content > .group > .row > .css-grid-section): (.details-section.layout-css-grid > .content,): Resetting to `display: block` for .details-section and descendants that use `display: table-*` otherwise it messes with the Flexbox layout of nested children. 2021-02-18 Nikita Vasilyev Web Inspector: Elements: show badges for CSS Grid container elements https://bugs.webkit.org/show_bug.cgi?id=221370 Reviewed by BJ Burg. Clicking "grid" CSS badge shows/hides the grid overlay for the corresponding element. * UserInterface/Base/Setting.js: * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager.prototype.isGridOverlayVisible): (WI.OverlayManager.prototype.toggleGridOverlay): * UserInterface/Main.html: * UserInterface/Views/DOMTreeElement.css: Added. (.tree-outline.dom .badge-css-grid): (.tree-outline.dom .badge-css-grid.activated): (.tree-outline.dom li.selected .badge-css-grid): (.tree-outline.dom li.selected .badge-css-grid.activated): (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .badge-css-grid): (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .badge-css-grid.activated): (@media (prefers-color-scheme: dark) .tree-outline.dom .badge-css-grid): * UserInterface/Views/DOMTreeElement.js: (WI.DOMTreeElement): (WI.DOMTreeElement.prototype.onattach): (WI.DOMTreeElement.prototype.ondetach): (WI.DOMTreeElement.prototype.updateTitle): (WI.DOMTreeElement.prototype._updateGridBadge): (WI.DOMTreeElement.prototype._gridBadgeClicked): (WI.DOMTreeElement.prototype._gridBadgeDoubleClicked): (WI.DOMTreeElement.prototype._updateGridBadgeStatus): (WI.DOMTreeElement.prototype._handleLayoutContextTypeChanged): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 2021-02-18 Razvan Caliman Web Inspector: Update .eslintrc to account for ECMAScript 2021 https://bugs.webkit.org/show_bug.cgi?id=222107 Reviewed by BJ Burg. Add ES2021 parser option so ESLint-based linters don't throw errors for newer JavaScript features, like logical assignment operators (??=, &&=, ||=) Note: The linter in an editor must support ESLint v7.8.0 or newer to understand ES2021. * .eslintrc: 2021-02-16 Razvan Caliman Web Inspector: Grids with overlays that disappear and reappear remain checked in Layout pane, toggling hits assertion https://bugs.webkit.org/show_bug.cgi?id=221919 Reviewed by Devin Rousso. When a DOMNode's grid layout context changes to something else, its corresponding shown grid overlay is automatically hidden on the backend. The frontend needs to update its mapping of nodes to overlays and notify listeners of the change in state. * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager): (WI.OverlayManager.prototype._handleLayoutContextTypeChanged): 2021-02-16 Razvan Caliman Web Inspector: Grid list in Layout panel missing empty message https://bugs.webkit.org/show_bug.cgi?id=221763 Reviewed by BJ Burg. Show a message instead of an empty list in the Layout sidebar panel when there are no CSS Grid contexts found on the inspected page. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.set gridNodeSet): (WI.CSSGridSection.prototype.attached): (WI.CSSGridSection.prototype.detached): (WI.CSSGridSection.prototype._handleGridOverlayStateChanged): (WI.CSSGridSection): Move logic to update the `gridNodeSet` from `CSSGridSection` up to `LayoutDetailsSidebarPanel` so the parent view can toggle between the empty message and the populated CSS grid section accordingly. * UserInterface/Views/LayoutDetailsSidebarPanel.js: (WI.LayoutDetailsSidebarPanel): (WI.LayoutDetailsSidebarPanel.prototype.attached): (WI.LayoutDetailsSidebarPanel.prototype.detached): (WI.LayoutDetailsSidebarPanel.prototype.initialLayout): (WI.LayoutDetailsSidebarPanel.prototype.layout): (WI.LayoutDetailsSidebarPanel.prototype._handleLayoutContextTypeChanged): (WI.LayoutDetailsSidebarPanel.prototype._refreshGridNodeSet): 2021-02-11 Razvan Caliman Web Inspector: Add settings UI for CSS Grid overlay https://bugs.webkit.org/show_bug.cgi?id=221556 Reviewed by Devin Rousso. Add UI to toggle configuration options for the CSS Grid overlay. When an option's value changes, all shown overlays are refreshed. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Controllers/OverlayManager.js: (WI.OverlayManager): (WI.OverlayManager.prototype.showGridOverlay): (WI.OverlayManager.prototype._handleGridSettingChanged): * UserInterface/Views/CSSGridSection.css: (.css-grid-section .node-link,): (.css-grid-section :is(.heading, .title)): * UserInterface/Views/CSSGridSection.js: (WI.CSSGridSection.prototype.initialLayout): 2021-02-10 BJ Burg [Cocoa] Web Inspector: add support for evaluating script on the inspected page via _WKInspectorExtension https://bugs.webkit.org/show_bug.cgi?id=221567 Reviewed by Devin Rousso. This patch adds InspectorFrontendAPI.evaluateScriptForExtension(). * UserInterface/Controllers/WebInspectorExtensionController.js: (WI.WebInspectorExtensionController.prototype.evaluateScriptForExtension): Translate arguments into a corresponding RuntimeAgent.evaluate invocation. The parameters are not yet implemented, and will be filled in by a subsequent patch. * UserInterface/Models/WebInspectorExtension.js: Add new error enum value. * UserInterface/Protocol/InspectorFrontendAPI.js: (InspectorFrontendAPI.evaluateScriptForExtension): Plumbing. 2021-02-10 Alexey Proskuryakov Do not differentiate between Release and Production via ENABLE_DEVELOPER_MODE https://bugs.webkit.org/show_bug.cgi?id=221684 Reviewed by Sam Weinig. It is invalid to create behaviors that are different between these. There is almost no difference in usage scenarios between build modes - either can be produced by CI for validation, either can be used for local testing, etc. * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: 2021-02-10 Razvan Caliman Web Inspector: Display all CSS grids on page in Layout panel https://bugs.webkit.org/show_bug.cgi?id=221145 Reviewed by Devin Rousso. Show a list of CSS Grid containers in the Layout sidebar panel of the Elements Tab. Whenever grid nodes are added to or removed from the page, the list is updated. Clicking on a checkbox next to a grid node toggles the Grid overlay for that node. Changing the color of the swatch next to a grid node updates the color of the overlay if it is visible. Add OverlayManager to mediate showing and hiding Grid overlays. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Main.js: (WI.loaded): * UserInterface/Controllers/OverlayManager.js: Added. (WI.OverlayManager): (WI.OverlayManager.prototype.get nodesWithGridOverlay): (WI.OverlayManager.prototype.showGridOverlay): (WI.OverlayManager.prototype.hideGridOverlay): `OverlayManager` is a singleton used to show and hide overlays for nodes on the inspected page. It maintains state of all overlays that are visible on the page. It fires events when they are shown or hidden. * UserInterface/Main.html: * UserInterface/Models/DOMNode.js: (WI.DOMNode): (WI.DOMNode.prototype.set layoutContextType): (WI.DOMNode.prototype.markDestroyed): Whenever a node is removed from the DOM, its `layoutContextType` property changes to `null`. This dispatches a `WI.DOMNode.Event.LayoutContextTypeChanged` event which is handled in `CSSGridSection` to refresh the list of grid node containers on the page. * UserInterface/Views/BoxModelDetailsSectionRow.js: (WI.BoxModelDetailsSectionRow.prototype.set nodeStyles): * UserInterface/Views/CSSGridSection.css: Added. (.css-grid-section .node-link): (.css-grid-section .heading): * UserInterface/Views/CSSGridSection.js: Added. (WI.CSSGridSection): (WI.CSSGridSection.prototype.attached): (WI.CSSGridSection.prototype.detached): (WI.CSSGridSection.prototype.initialLayout): (WI.CSSGridSection.prototype.layout): (WI.CSSGridSection.prototype._handleGridOverlayStateChanged): (WI.CSSGridSection.prototype._handleLayoutContextTypeChanged): (WI.CSSGridSection.prototype._refreshGridNodeSet): `CSSGridSection` is a new `View` under `LayoutDetailsSidebarPanel`. It holds a list of grid nodes on the page and a set of configuration options to pass when showing the Grid overlay (upcoming in separate patch). * UserInterface/Views/LayoutDetailsSidebarPanel.css: Added. (.details-section.layout-css-grid > .content > .group > .row > .css-grid-section): * UserInterface/Views/LayoutDetailsSidebarPanel.js: (WI.LayoutDetailsSidebarPanel.prototype.initialLayout): 2021-02-09 Devin Rousso [Cocoa] rename `ENGINEERING_BUILD` to `ENABLE_DEVELOPER_MODE` to match other platforms https://bugs.webkit.org/show_bug.cgi?id=221621 Reviewed by Michael Catanzaro. * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: 2021-02-08 Patrick Angle Web Inspector: Add `CSS.setLayoutContextTypeChangedMode` for getting information about all layout contexts https://bugs.webkit.org/show_bug.cgi?id=221449 Reviewed by Devin Rousso. * UserInterface/Controllers/CSSManager.js: - Added CSS.LayoutContextTypeChangedMode enum values. (WI.CSSManager.prototype.set layoutContextTypeChangedMode): * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.nodesWithLayoutContextType): - Added ability to get all instrumented nodes of a specific layout context type. * UserInterface/Views/LayoutDetailsSidebarPanel.js: (WI.LayoutDetailsSidebarPanel.prototype.attached): (WI.LayoutDetailsSidebarPanel.prototype.detached): - Change the LayoutContextTypeChangedMode when showing/hiding the Layout panel. 2021-02-06 Alex Christensen Non-special URLs should have an opaque origin https://bugs.webkit.org/show_bug.cgi?id=162254 Reviewed by Geoff Garen. * UserInterface/Base/URLUtilities.js: (parseURL): 2021-02-05 Patrick Angle Web Inspector: Implement backend support for maintaining a list of Grid layout contexts https://bugs.webkit.org/show_bug.cgi?id=221228 Reviewed by Devin Rousso. Added `layoutContextType` property to `WI.DOMNode` and listener for `CSS.nodeLayoutContextTypeChanged` event. * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.nodeLayoutContextTypeChanged): - When a node's layout context changes, update the WI.DOMNode * UserInterface/Models/DOMNode.js: (WI.DOMNode): (WI.DOMNode.prototype.get layoutContextType): (WI.DOMNode.prototype.set layoutContextType): - Fire an event when the layout context type changes. * UserInterface/Protocol/CSSObserver.js: (WI.CSSObserver.prototype.nodeLayoutContextTypeChanged): - Listen for the `CSS.nodeLayoutContextTypeChanged` event. 2021-02-04 Razvan Caliman Web Inspector: Update .eslintrc to account for ECMAScript 2020 https://bugs.webkit.org/show_bug.cgi?id=221402 Reviewed by Devin Rousso. Add ES2020 parser option so ESLint-based linters don't throw errors for newer JavaScript language features used in WebInspectorUI. Note: The linter in an editor must support ESLint v6.2.0 or newer to understand ES2020. * .eslintrc: Drive-by: add 4 spaces indentation rule to match Coding Style Guidelines. 2021-02-04 Nikita Vasilyev Web Inspector: Collapse blackboxed call frames in Sources https://bugs.webkit.org/show_bug.cgi?id=216897 Reviewed by Devin Rousso. Stack traces often have dozens of blackboxed call frames when using blackboxing for JS-frameworks such as React.js. It makes it hard to see more relevant non-framework code. To improve this, introduce "Collapse blackboxed call frames" experimental setting, that collapses adjacent blackboxed call frames into expandable items. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Base/Utilities.js: * UserInterface/Images/TypeIcons.svg: * UserInterface/Main.html: * UserInterface/Models/CallFrame.js: (WI.CallFrame): (WI.CallFrame.prototype.get blackboxed): (WI.CallFrame.fromDebuggerPayload): (WI.CallFrame.fromPayload): * UserInterface/Views/BlackboxedGroupTreeElement.css: Added. (.tree-outline .item.blackboxed-group): (.tree-outline .item.blackboxed-group .icon): (@media (prefers-color-scheme: dark) .tree-outline .item.blackboxed-group .icon): * UserInterface/Views/BlackboxedGroupTreeElement.js: Added. (WI.BlackboxedGroupTreeElement): (WI.BlackboxedGroupTreeElement.prototype.expand): * UserInterface/Views/CallFrameTreeElement.css: (.tree-outline .item.call-frame.blackboxed:not(.selected)): * UserInterface/Views/CallFrameView.css: (.call-frame.blackboxed > .title,): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): * UserInterface/Views/ThreadTreeElement.js: (WI.ThreadTreeElement.prototype.refresh): * UserInterface/Views/TreeElement.js: (WI.TreeElement.treeElementToggled): This is necessary since `WI.BlackboxedGroupTreeElement` removes itself when expanded. * UserInterface/Views/Variables.css: (:root): 2021-02-02 BJ Burg Web Inspector: Add another Protocol Version (iOS 14.5) https://bugs.webkit.org/show_bug.cgi?id=221288 Reviewed by Devin Rousso. * UserInterface/Protocol/Legacy/14.5/InspectorBackendCommands.js: Added. * Versions/Inspector-iOS-14.5.json: Added. 2021-02-02 BJ Burg Web Inspector: implement the basics for showing/hiding grid overlays https://bugs.webkit.org/show_bug.cgi?id=221062 Reviewed by Devin Rousso. Expose new DOM.showGridOverlay and DOM.hideGridOverlay commands via WI.DOMNode. Add initial engineering UI to toggle grid overlays. New methods are covered by a new test: inspector/dom/showGridOverlay.html Additions to WI.DOMManager.prototype.requestDocument are covered by existing tests (callback case) and a new test (promise case). Additions to WI.Color are covered by a new test case in: inspector/model/color.html * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.requestDocument): (WI.DOMManager.prototype._requestDocumentWithPromise): Drive-by: upgrade requestDocument() to return a promise if no callback argument was passed. This is used by a new test. * UserInterface/Models/Color.js: (WI.Color.prototype.toProtocol): Added. The protocol object is DOM.RGBAColor, which is the same thing as WI.Color.Format.RGBA. * UserInterface/Models/DOMNode.js: (WI.DOMNode.prototype.showGridOverlay): (WI.DOMNode.prototype.hideGridOverlay): Added. These are the methods that the rest of WebInspectorUI uses to interact with grid overlays for a particular node. Note that these methods return either an unsettled promise (from the agent call) or a rejected promise (in the case that the node is destroyed). This allows test cases to `await` before checking the grid overlay count. * UserInterface/Test/TestHarness.js: (TestHarness.prototype.expectException): Improve logging output when InspectorTest.expectException does not catch an exception. * UserInterface/Views/ContextMenuUtilities.js: Add some engineering-only context menu items for showing/hiding grid overlays to DOMTreeElements in the Elements Tab. These are in place for development purposes and should eventually be removed when no longer needed. 2021-02-01 Patrick Angle REGRESSION(r270637): Web Inspector: Filtering field no longer shows in Computed panel https://bugs.webkit.org/show_bug.cgi?id=221001 Reviewed by Devin Rousso. The filter bar keeps separate filters for the Rules and Computed panes. It is therefor incorrect to hide the entire filter bar when showing multiple sidebars, instead hide the controls that have a common state between the two panels (the Classes list). * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.multi-sidebar.showing-multiple > .sidebar > .panel.details:not(.style-rules) > .content > .pseudo-classes,): 2021-02-01 Nikita Vasilyev Web Inspector: add Box Model into Layout panel https://bugs.webkit.org/show_bug.cgi?id=220987 Reviewed by BJ Burg. Add Box Model section to the experimental Layout panel. * UserInterface/Views/LayoutDetailsSidebarPanel.js: (WI.LayoutDetailsSidebarPanel): (WI.LayoutDetailsSidebarPanel.prototype.get minimumWidth): (WI.LayoutDetailsSidebarPanel.prototype.inspect): (WI.LayoutDetailsSidebarPanel.prototype.initialLayout): (WI.LayoutDetailsSidebarPanel.prototype.layout): (WI.LayoutDetailsSidebarPanel.prototype._nodeStylesRefreshed): (WI.LayoutDetailsSidebarPanel.prototype._nodeStylesNeedsRefreshed): 2021-02-01 Yusuke Suzuki [JSC] Add @ in Error.stack if URL exists https://bugs.webkit.org/show_bug.cgi?id=221184 Reviewed by Keith Miller. * UserInterface/Models/StackTrace.js: (WI.StackTrace.isLikelyStackTrace): 2021-01-27 Razvan Caliman Web Inspector: REGRESSION(r269166): not enough space around up/down arrows in execution context picker https://bugs.webkit.org/show_bug.cgi?id=221014 Reviewed by BJ Burg. Fix shorthand notation for logical property `margin-start` used on active execution context picker. * UserInterface/Views/QuickConsole.css: (.quick-console > .navigation-bar .active-execution-context > .selector-arrows): 2021-01-26 Razvan Caliman REGRESSION(r270637) Filtering does not work in Styles sidebar panel https://bugs.webkit.org/show_bug.cgi?id=220993 Reviewed by Devin Rousso. Stop expecting StyleDetailsPanel to define an abstract filterDidChange() method. Subclasses implement their own on a per-use case basis. * UserInterface/Views/ComputedStyleDetailsPanel.js: (WI.ComputedStyleDetailsPanel.prototype.filterDidChange): * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: (WI.SpreadsheetRulesStyleDetailsPanel.prototype.filterDidChange): 2021-01-25 Nikita Vasilyev Web Inspector: Add experimental setting to show Layout panel in Elements tab https://bugs.webkit.org/show_bug.cgi?id=220954 Reviewed by BJ Burg. Add "Show layout panel" checkbox to the Experimental settings that shows an empty panel (for now) in Elements tab. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Main.html: * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView): * UserInterface/Views/LayoutDetailsSidebarPanel.js: Added. (WI.LayoutDetailsSidebarPanel): (WI.LayoutDetailsSidebarPanel.prototype.supportsDOMNode): (WI.LayoutDetailsSidebarPanel.prototype.attached): (WI.LayoutDetailsSidebarPanel.prototype.detached): (WI.LayoutDetailsSidebarPanel.prototype.initialLayout): (WI.LayoutDetailsSidebarPanel.prototype.layout): (WI.LayoutDetailsSidebarPanel.prototype._mainResourceDidChange): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 2021-01-21 Devin Rousso [Apple Pay] use the first item in `shippingOptions` even when it's not `selected` https://bugs.webkit.org/show_bug.cgi?id=220810 Reviewed by Andy Estes. * UserInterface/Models/ConsoleMessage.js: * UserInterface/Models/IssueMessage.js: (WI.IssueMessage): Add a new `PaymentRequest` value to the `ChannelSource` enum. 2021-01-21 Ebrahim Byagowi Web Inspector: Fix bidi confusion when evaluation result has RTL text https://bugs.webkit.org/show_bug.cgi?id=220639 Reviewed by BJ Burg. Apply `unicode-bidi: isolate` to formatted string and regexp so that when they contain RTL text the bidi algorithm won't mix saved variable name ($1, $2, ...) with the content. * UserInterface/Views/FormattedValue.css: (.formatted-string, .formatted-regexp): 2021-01-20 Kenneth Russell Support WEBGL_multi_draw extension https://bugs.webkit.org/show_bug.cgi?id=219139 Reviewed by Dean Jackson. Tell the Inspector about the method signatures in the WEBGL_multi_draw extension. * UserInterface/Models/NativeFunctionParameters.js: 2021-01-19 Patrick Angle Web Inspector: Font Details sidebar - Fractional variation axis ranges/default values are rounded. https://bugs.webkit.org/show_bug.cgi?id=220474 Reviewed by BJ Burg. Fixes Font Details sidebar display of variation axis values, ranges, and defaults to show fractional precision when such precision is present. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Views/FontDetailsPanel.js: (WI.FontDetailsPanel.prototype.refresh): (WI.FontDetailsPanel.prototype._formatSimpleSingleValue): (WI.FontDetailsPanel.prototype._formatVariationValue): (WI.FontDetailsPanel.prototype._createVariationValueElement): (WI.FontDetailsPanel.prototype._formatAxisValueAsString): - Show fractional values with between 0 and 2 decimal places. 2021-01-19 Patrick Angle Web Inspector: `Historical Figures` string should be `Alternate Glyphs` https://bugs.webkit.org/show_bug.cgi?id=220731 Reviewed by BJ Burg. Changed title for CSS property `font-variant-alternates` to be `Alternate Glyphs`. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Views/FontDetailsPanel.js: (WI.FontDetailsPanel.prototype.initialLayout): 2021-01-15 Patrick Angle Web Inspector: Font Details sidebar - Improve line wrapping of table row titles when space is available https://bugs.webkit.org/show_bug.cgi?id=219997 Reviewed by Devin Rousso. Adjust the width of the title in each row to 105px, which provides space for both `Historical Figures` which is an always-present row and `Optical Size (opsz)` which is a registed variation axis and is used in numerous fonts including San Francisco. This overrides the normal fixed width of these titles of 85px, which causes these and numerous other unregistered axis names and tags to wrap their title more aggresively than is stricly necessary. * UserInterface/Views/FontDetailsPanel.css: (.sidebar > .panel.details.style-font > .content .details-section > .content > .group > .row.simple > .label): 2021-01-13 Ebrahim Byagowi Web Inspector: RTL content inside elements is reversed and unreadable https://bugs.webkit.org/show_bug.cgi?id=220241 Reviewed by BJ Burg. Use appropiate unicode-bidi value so that it won't reverse RTL text inside elements. * UserInterface/Views/DOMTreeOutline.css: (.tree-outline.dom li > span > .html-text-node): 2021-01-12 Patrick Angle Web Inspector: Remove experimental setting and enable Font details sidebar https://bugs.webkit.org/show_bug.cgi?id=220438 Reviewed by Devin Rousso. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): 2021-01-11 Devin Rousso Web Inspector: Debugger: allow breakpoint actions to be evaluated as a user gesture https://bugs.webkit.org/show_bug.cgi?id=200275 Reviewed by Brian Burg. * UserInterface/Models/BreakpointAction.js: (WI.BreakpointAction.supportsEmulateUserAction): Added. (WI.BreakpointAction.fromJSON): (WI.BreakpointAction.prototype.toJSON): (WI.BreakpointAction.prototype.set type): (WI.BreakpointAction.prototype.set data): (WI.BreakpointAction.prototype.get emulateUserGesture): Added. (WI.BreakpointAction.prototype.set emulateUserGesture): Added. Add an `_emulateUserGesture` property to match `Debugger.BreakpointAction`. * UserInterface/Views/BreakpointActionView.js: (WI.BreakpointActionView): (WI.BreakpointActionView.prototype._updateBody): (WI.BreakpointActionView.prototype._handleEmulateUserGestureCheckboxChange): Added. * UserInterface/Views/BreakpointActionView.css: (.breakpoint-action-block-body .description): Added. (.breakpoint-action-block-body > .flex): (.breakpoint-action-block-body > .description): Deleted. Add a "[ ] Emulate User Gesture" under the log/evaluate/probe input. * UserInterface/Models/Breakpoint.js: (WI.Breakpoint): (WI.Breakpoint.prototype.addAction): (WI.Breakpoint.prototype.removeAction): (WI.Breakpoint.prototype._handleBreakpointActionModified): Renamed from `_handleBreakpointActionChanged`. Drive-by: combine `TypeChanged` and `DataChanged` into a single `Modified` event since all the listeners currently have the same callback. * UserInterface/Views/LogContentView.js: (WI.LogContentView): (WI.LogContentView.prototype._handleEmulateInUserGestureSettingChanged): Drive-by: only show the "Emulate User Gesture" checkbox when it's supported. * Localizations/en.lproj/localizedStrings.js: 2021-01-08 Patrick Angle Web Inspector: Font Details sidebar - Improve visibility of values by emphasizing them/de-emphasizing range information https://bugs.webkit.org/show_bug.cgi?id=219996 Reviewed by Devin Rousso. Create a separate element to hold secondary axis information like minimum, maxiumum, and default values to make sure attention is drawn to the actual value. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Main.html: * UserInterface/Views/FontDetailsPanel.css: Added. (.sidebar > .panel.details.style-font > .content .details-section > .content > .group > .row.simple > .value .secondary): * UserInterface/Views/FontDetailsPanel.js: (WI.FontDetailsPanel.prototype._formatSimpleSingleValue): (WI.FontDetailsPanel.prototype._formatVariationValue): (WI.FontDetailsPanel.prototype._createVariationValueElement): - Both _formatSimpleSingleValue and _formatVariationValue now use _createVariationValueElement when they need to display secondary information alongside the value. 2021-01-08 Patrick Angle Web Inspector: Promote experimental "Show independent Styles sidebar" setting to "Elements" settings pane and enable by default https://bugs.webkit.org/show_bug.cgi?id=218126 Reviewed by Devin Rousso. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: - Remove experimental naming from setting and enable by default. * UserInterface/Views/RulesStyleDetailsSidebarPanel.js: (WI.RulesStyleDetailsSidebarPanel.prototype.get allowExclusivePresentation): (WI.RulesStyleDetailsSidebarPanel): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createElementsSettingsView): (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): - Move setting to "Elements" settings pane. 2021-01-07 Patrick Angle Web Inspector: console.takeHeapSnapshot() appears to have no effect https://bugs.webkit.org/show_bug.cgi?id=219987 Reviewed by Devin Rousso. Added a banner that appears above the snapshots data grid when there are new (unseen) snapshots that are being filtered by either the selected time range or filter text. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Main.html: * UserInterface/Views/BannerView.css: Added. (.banner-view): (.banner-view > button): (.banner-view > .dismiss): * UserInterface/Views/BannerView.js: Added. (WI.BannerView.prototype._handleActionButtonClicked): (WI.BannerView.prototype._handleDismissButtonClicked): (WI.BannerView): - Added `WI.BannerView` to handle layout and styling of banners. * UserInterface/Views/HeapAllocationsTimelineView.css: (.timeline-view.heap-allocations > .banner-view + .data-grid): * UserInterface/Views/HeapAllocationsTimelineView.js: (WI.HeapAllocationsTimelineView): (WI.HeapAllocationsTimelineView.prototype.layout): - Take note of any new records that are immediately hidden. (WI.HeapAllocationsTimelineView.prototype.reset): (WI.HeapAllocationsTimelineView.prototype.filterDidChange): (WI.HeapAllocationsTimelineView.prototype._updateUnseenRecordsBannerView): - Check that unseen messages are still hidden and add/remove the banner as appropriate. (WI.HeapAllocationsTimelineView.prototype._handleUnseenRecordsBannerClearFiltersClicked): (WI.HeapAllocationsTimelineView.prototype._handleUnseenRecordsBannerDismissClicked): * UserInterface/Views/TimelineRecordingContentView.js: (WI.TimelineRecordingContentView): (WI.TimelineRecordingContentView.prototype._handleTimelineViewNeedsFiltersCleared): - Handle the `WI.TimelineView.Event.NeedsFiltersCleared` event. * UserInterface/Views/TimelineView.js: - Added `WI.TimelineView.Event.NeedsFiltersCleared` event. 2020-12-10 Patrick Angle Web Inspector: Show current properties for font in new Elements sidebar Font panel https://bugs.webkit.org/show_bug.cgi?id=218964 Reviewed by Devin Rousso. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Setting.js: - Added experimental setting for Font panel. * UserInterface/Main.html: * UserInterface/Models/DOMNodeStyles.js: (WI.DOMNodeStyles): (WI.DOMNodeStyles.prototype.get computedPrimaryFont): (WI.DOMNodeStyles.prototype.refresh.fetchedComputedStyle): (WI.DOMNodeStyles.prototype.refresh.fetchedFontData): (WI.DOMNodeStyles.prototype.refresh): - Support getting the computed primary font. * UserInterface/Models/Font.js: Added. (WI.Font): (WI.Font.fromPayload): (WI.Font.prototype.get name): (WI.Font.prototype.get variationAxes): (WI.Font.prototype.variationAxis): - Model object for `CSS.Font`. (WI.Font.prototype.calculateFontProperties): - Build maps of font properties from the `DOMNodeStyle` and this Font. (WI.Font.prototype._calculateProperties): (WI.Font.prototype._calculateFontFeatureAxes): (WI.Font.prototype._calculateFontVariationAxes): (WI.Font.prototype._parseFontFeatureOrVariationSettings): * UserInterface/Models/FontVariationAxis.js: Added. (WI.FontVariationAxis): (WI.FontVariationAxis.fromPayload): (WI.FontVariationAxis.prototype.get name): (WI.FontVariationAxis.prototype.get tag): (WI.FontVariationAxis.prototype.get minimumValue): (WI.FontVariationAxis.prototype.get maximumValue): (WI.FontVariationAxis.prototype.get defaultValue): - Model object for `CSS.FontVariationAxis`. * UserInterface/Test.html: * UserInterface/Views/ComputedStyleDetailsPanel.css: (.sidebar > .panel.details.css-style > .content > .computed .property:not(:hover) .go-to-arrow): (.multi-sidebar.showing-multiple > .sidebar > .panel.details.style-computed > .content > .pseudo-classes,): Deleted. - Move multi-sidebar support to GeneralStyleDetailsSidebarPanel.css * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView): - Add Font panel to detail panel set if enabled and supported. * UserInterface/Views/FontDetailsPanel.js: Added. (WI.FontDetailsPanel): (WI.FontDetailsPanel.prototype.get supportsToggleCSSClass): (WI.FontDetailsPanel.prototype.refresh): (WI.FontDetailsPanel.prototype.initialLayout): (WI.FontDetailsPanel.prototype._formatSizeValue): (WI.FontDetailsPanel.prototype._formatStyleValue): (WI.FontDetailsPanel.prototype._formatSimpleSingleValue): - Format basic font properties. (WI.FontDetailsPanel.prototype._formatVariationValue): - Format non-standard variation axes. (WI.FontDetailsPanel.prototype._formatSimpleFeatureValues): - Common formatting for `font-variant-xxx` properties that map to font feature values. (WI.FontDetailsPanel.prototype._formatLigatureValue): (WI.FontDetailsPanel.prototype._formatPositionValue): (WI.FontDetailsPanel.prototype._formatCapitalsValue): (WI.FontDetailsPanel.prototype._formatNumericValue): (WI.FontDetailsPanel.prototype._formatAlternatesValue): (WI.FontDetailsPanel.prototype._formatEastAsianValue): (WI.FontDetailsPanel.prototype._featureIsEnabled): (WI.FontDetailsPanel.prototype._hasVariationValue): * UserInterface/Views/FontDetailsSidebarPanel.js: Added. (WI.FontDetailsSidebarPanel): * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.sidebar > .panel.details.css-style > .content:not(.supports-new-rule) ~ .options-container > .new-rule,): (.multi-sidebar.showing-multiple > .sidebar > .panel.details:not(.style-rules) > .content > .pseudo-classes,): - When showing the Styles panel alongside another style-based panel, hide the pseudo-class and filter options. * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: (WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusFilterBar): (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout): (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel): (WI.GeneralStyleDetailsSidebarPanel.prototype._handleNodeChanged): (WI.GeneralStyleDetailsSidebarPanel.prototype._filterDidChange): - Support not showing the filter bar for style panels where filtering is not applicable. * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): * UserInterface/Views/StyleDetailsPanel.js: (WI.StyleDetailsPanel.prototype.get supportsToggleCSSClass): (WI.StyleDetailsPanel.prototype.filterDidChange): Deleted. - Remove empty implementation of `filterDidChange` as `WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout` checks for an implmentation of this function to determine if a filter bar should be shown. 2020-11-30 Brian Burg [Cocoa] Web Inspector: add support for creating extension tabs in WebInspectorUI via _WKInspectorExtension https://bugs.webkit.org/show_bug.cgi?id=219380 Reviewed by Devin Rousso and Timothy Hatcher. * UserInterface/Controllers/WebInspectorExtensionController.js: (WI.WebInspectorExtensionController): (WI.WebInspectorExtensionController.prototype._makeNextExtensionTabID): (WI.WebInspectorExtensionController.prototype.unregisterExtension): (WI.WebInspectorExtensionController.prototype.createTabForExtension): * UserInterface/Main.html: * UserInterface/Protocol/InspectorFrontendAPI.js: (InspectorFrontendAPI.createTabForExtension): * UserInterface/Views/GeneralTabBarItem.js: (WI.GeneralTabBarItem.fromTabContentView): (WI.GeneralTabBarItem.get displayName): Deleted. * UserInterface/Views/PinnedTabBarItem.js: (WI.PinnedTabBarItem.fromTabContentView): (WI.PinnedTabBarItem): * UserInterface/Views/TabContentView.js: (WI.TabContentView.prototype.get tabBarItem): (WI.TabContentView.prototype.tabInfo): (WI.TabContentView.prototype.get managesNavigationSidebarPanel): Deleted. (WI.TabContentView.prototype.attached): Deleted. * UserInterface/Views/WebInspectorExtensionTabContentView.css: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h. (.content-view.web-inspector-extension-tab > iframe): * UserInterface/Views/WebInspectorExtensionTabContentView.js: Copied from Source/WebKit/UIProcess/API/APIInspectorExtension.h. (WI.WebInspectorExtensionTabContentView): (WI.WebInspectorExtensionTabContentView.prototype.tabInfo): (WI.WebInspectorExtensionTabContentView.prototype.get type): (WI.WebInspectorExtensionTabContentView.prototype.get supportsSplitContentBrowser): (WI.WebInspectorExtensionTabContentView.prototype.get extensionTabID): (WI.WebInspectorExtensionTabContentView.prototype.initialLayout): 2020-12-09 Devin Rousso Web Inspector: add UI for request interception https://bugs.webkit.org/show_bug.cgi?id=217032 Reviewed by Brian Burg. * UserInterface/Models/LocalResourceOverride.js: (WI.LocalResourceOverride): (WI.LocalResourceOverride.create): (WI.LocalResourceOverride.displayNameForType): Added. (WI.LocalResourceOverride.fromJSON): (WI.LocalResourceOverride.prototype.toJSON): (WI.LocalResourceOverride.prototype.get url): (WI.LocalResourceOverride.prototype.get urlComponents): Added. (WI.LocalResourceOverride.prototype.get displayName): Added. (WI.LocalResourceOverride.prototype.displayURL): Added. (WI.LocalResourceOverride.prototype.matches): (WI.LocalResourceOverride.prototype.equals): Added. (WI.LocalResourceOverride.prototype.saveIdentityToCookie): Add a `WI.LocalResourceOverride.InterceptType.Request` and pass through request information to the `WI.LocalResource`. * UserInterface/Models/SourceCode.js: (WI.SourceCode.prototype.get localResourceOverride): Added. * UserInterface/Models/Resource.js: (WI.Resource.classNamesForResource): (WI.Resource.prototype.get supportsScriptBlackboxing): (WI.Resource.prototype.async createLocalResourceOverride): (WI.Resource.prototype.updateLocalResourceOverrideRequestData): (WI.Resource.prototype.get isLocalResourceOverride): Deleted. * UserInterface/Models/LocalResource.js: (WI.LocalResource.prototype.toJSON): (WI.LocalResource.prototype.get localResourceOverride): Added. (WI.LocalResource.prototype.get isLocalResourceOverride): Deleted. Replace `get isLocalResourceOverride` with `get localResourceOverride` (on `WI.SourceCode` so that non-`WI.Resource` also can call it) by having the related `WI.LocalResourceOverride` set `_localResourceOverride`. * UserInterface/Controllers/NetworkManager.js: (WI.NetworkManager.supportsOverridingRequests): Added. (WI.NetworkManager.prototype.get localResourceOverrides): (WI.NetworkManager.prototype.addLocalResourceOverride): (WI.NetworkManager.prototype.removeLocalResourceOverride): (WI.NetworkManager.prototype.localResourceOverridesForURL): Added. (WI.NetworkManager.prototype.canBeOverridden): (WI.NetworkManager.prototype.requestIntercepted): (WI.NetworkManager.prototype.responseIntercepted): (WI.NetworkManager.prototype._handleResourceContentChangedForLocalResourceOverride): Added. (WI.NetworkManager.prototype.localResourceOverrideForURL): Deleted. (WI.NetworkManager.prototype._handleResourceContentDidChange): Deleted. Provide all `WI.LocalResourceOverride` that match the given URL sorted by how close/exact the `WI.LocalResourceOverride` is to the given URL (i.e. exact < case-insensitive < regex). Add logic to invoke `Network.interceptWithRequest` when the `WI.LocalResourceOverride` is `WI.LocalResourceOverride.InterceptType.Request`. * UserInterface/Views/LocalResourceOverridePopover.js: (WI.LocalResourceOverridePopover): (WI.LocalResourceOverridePopover.prototype.get serializedData): (WI.LocalResourceOverridePopover.prototype.show): * UserInterface/Views/LocalResourceOverridePopover.css: (.popover .local-resource-override-popover-content.request .editor:is(.url, .redirect)): Added. (.popover .local-resource-override-popover-content.response .editor.url): Added. (.popover .local-resource-override-popover-content .data-grid): Added. (.popover .local-resource-override-popover-content .reference-page-link-container): Added. (body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container): (body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container): (.popover .local-resource-override-popover-content .editor.url): Deleted. (.popover .local-resource-override-popover-content .add-header): Deleted. (.popover .local-resource-override-popover-content .add-header + .reference-page-link-container): Deleted. Replace the MIME type, status code, and status text inputs with redirect and method inputs when editing a request override. For brand new overrides, show a type dropdown that allows for dynamically updating what inputs are shown (only until the popover is dismissed, at which point the type is set forever). * UserInterface/Views/LocalResourceOverrideRequestContentView.js: Added. (WI.LocalResourceOverrideRequestContentView): (WI.LocalResourceOverrideRequestContentView.prototype.get navigationItems): (WI.LocalResourceOverrideRequestContentView.prototype.get saveData): (WI.LocalResourceOverrideRequestContentView.prototype.initialLayout): (WI.LocalResourceOverrideRequestContentView.prototype._handleRemoveLocalResourceOverride): (WI.LocalResourceOverrideRequestContentView.prototype._handleTextEditorContentDidChange): * UserInterface/Views/LocalResourceOverrideRequestContentView.css: Added. (.content-view.text.local-resource-override-request): (.content-view.text.local-resource-override-request > .text-editor): (.content-view.text.local-resource-override-request > .message-text-view): * UserInterface/Views/ContentView.js: (WI.ContentView.createFromRepresentedObject): (WI.ContentView.resolvedRepresentedObjectForRepresentedObject): Create a special `WI.TextContentView` for showing `WI.LocalResourceOverride` request data. Only allow it to be edited if the current method allows for request data. * UserInterface/Views/ResourceContentView.js: (WI.ResourceContentView): (WI.ResourceContentView.prototype.get resource): (WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent): (WI.ResourceContentView.prototype.async _createAndShowLocalResourceOverride): (WI.ResourceContentView.prototype._populateCreateLocalResourceOverrideContextMenu): (WI.ResourceContentView.prototype._handleCreateLocalResourceOverride): (WI.ResourceContentView.prototype._handleImportLocalResourceOverride): (WI.ResourceContentView.prototype.async _handleRemoveLocalResourceOverride): Added. (WI.ResourceContentView.prototype._handleLocalResourceOverrideChanged): Added. (WI.ResourceContentView.prototype.get showingLocalResourceOverride): Deleted. Show a contextmenu when clicking on the create override navigation item with items for creating either a request override or a response override. * UserInterface/Controllers/CSSManager.js: (WI.CSSManager.prototype._resourceContentDidChange): * UserInterface/Views/ContextMenuUtilities.js: (WI.appendContextMenuItemsForSourceCode): * UserInterface/Views/FontResourceContentView.js: (WI.FontResourceContentView.prototype.contentAvailable): (WI.FontResourceContentView.prototype.dropZoneShouldAppearForDragEvent): (WI.FontResourceContentView.prototype.dropZoneHandleDragEnter): (WI.FontResourceContentView.prototype.dropZoneHandleDrop): * UserInterface/Views/ImageResourceContentView.js: (WI.ImageResourceContentView.prototype.contentAvailable): (WI.ImageResourceContentView.prototype.dropZoneShouldAppearForDragEvent): (WI.ImageResourceContentView.prototype.dropZoneHandleDragEnter): (WI.ImageResourceContentView.prototype.dropZoneHandleDrop): * UserInterface/Views/LocalResourceOverrideLabelView.js: (WI.LocalResourceOverrideLabelView): (WI.LocalResourceOverrideLabelView.prototype.initialLayout): * UserInterface/Views/LocalResourceOverrideTreeElement.js: (WI.LocalResourceOverrideTreeElement): (WI.LocalResourceOverrideTreeElement.prototype.get mainTitleText): (WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover): * UserInterface/Views/LocalResourceOverrideWarningView.js: (WI.LocalResourceOverrideWarningView): (WI.LocalResourceOverrideWarningView.prototype.initialLayout): (WI.LocalResourceOverrideWarningView.prototype._updateContent): (WI.LocalResourceOverrideWarningView.prototype._handleLocalResourceOverrideAddedOrRemoved): * UserInterface/Views/NavigationSidebarPanel.js: (WI.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements): * UserInterface/Views/OpenResourceDialog.js: (WI.OpenResourceDialog.prototype._populateResourceTreeOutline): * UserInterface/Views/SourceCodeTextEditor.js: (WI.SourceCodeTextEditor.prototype.get _supportsDebugging): * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover): (WI.SourcesNavigationSidebarPanel.prototype._closeContentViewsFilter): (WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride): (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): * UserInterface/Views/ResourceTreeElement.js: (WI.ResourceTreeElement.prototype.get mainTitleText): (WI.ResourceTreeElement.prototype._updateTitles): (WI.ResourceTreeElement.prototype._updateIcon): * UserInterface/Views/TextResourceContentView.js: (WI.TextResourceContentView): (WI.TextResourceContentView.prototype.get navigationItems): (WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent): (WI.TextResourceContentView.prototype._shouldBeEditable): Replace usage of `get isLocalResourceOverride` with `get localResourceOverride`. * UserInterface/Base/HTTPUtilities.js: Add constants for known request methods. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Main.html: * UserInterface/Test.html: * UserInterface/Images/DocumentIcons.svg: * UserInterface/Base/ReferencePage.js: Add url for local overrides page. 2020-12-04 Adam Roben More FALLBACK_PLATFORM adoption https://bugs.webkit.org/show_bug.cgi?id=219545 Reviewed by Tim Horton. * Configurations/SDKVariant.xcconfig: WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to NO. 2020-12-03 Adam Roben Adopt FALLBACK_PLATFORM https://bugs.webkit.org/show_bug.cgi?id=219504 Reviewed by Tim Horton. * Configurations/SDKVariant.xcconfig: Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME as before. 2020-11-21 Brian Burg Web Inspector: implement Multimap.prototype.take() https://bugs.webkit.org/show_bug.cgi?id=219231 Reviewed by Devin Rousso. * UserInterface/Base/Multimap.js: (Multimap.prototype.take): * UserInterface/Base/Utilities.js: (value): 2020-11-20 Devin Rousso Web Inspector: drop `shown`/`hidden` in favor of `attached`/`detached` https://bugs.webkit.org/show_bug.cgi?id=218678 Reviewed by Brian Burg. * UserInterface/Views/View.js: (WI.View.prototype.removeSubview): Ensure that `detached` is called before the node is removed from the DOM so that any state currently held in the DOM can be recorded (e.g. scroll position). * UserInterface/Views/ContentBrowserTabContentView.js: (WI.ContentBrowserTabContentView.prototype.attached): (WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel): (WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels): (WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange): (WI.ContentBrowserTabContentView.prototype._detailsSidebarCollapsedStateDidChange): (WI.ContentBrowserTabContentView.prototype._detailsSidebarPanelSelected): (WI.ContentBrowserTabContentView.prototype.shown): Deleted. (WI.ContentBrowserTabContentView.prototype.hidden): Deleted. * UserInterface/Views/SingleSidebar.js: (WI.SingleSidebar.prototype.willSetSelectedSidebarPanel): (WI.SingleSidebar.prototype.didSetSelectedSidebarPanel): (WI.SingleSidebar.prototype.didSetCollapsed): Ensure that any state modifications happen before adding/removing the selected sidebar panel to/from the DOM so that it (and the previously selected sidebar panel) doesn't re-`layout` multiple times. * UserInterface/Views/ConsoleDrawer.js: (WI.ConsoleDrawer.prototype.set collapsed): (WI.ConsoleDrawer.prototype.attached): Added. (WI.ConsoleDrawer.prototype.shown): Deleted. Add special logic in `collapsed` since this is never removed from the DOM. * UserInterface/Views/ConsoleTabContentView.js: (WI.ConsoleTabContentView): (WI.ConsoleTabContentView.prototype.attached): Added. (WI.ConsoleTabContentView.prototype.detached): Added. (WI.ConsoleTabContentView.prototype.shown): Deleted. Remember whether the split console was expanded before the Console Tab is shown and restore that state after the Console Tab is hidden. * UserInterface/Views/TimelineOverview.js: (WI.TimelineOverview.prototype.get height): (WI.TimelineOverview.prototype.attached): (WI.TimelineOverview.prototype.detached): (WI.TimelineOverview.prototype.recordWasFiltered): (WI.TimelineOverview.prototype.selectRecord): (WI.TimelineOverview.prototype.updateLayoutIfNeeded): (WI.TimelineOverview.prototype.layout): (WI.TimelineOverview.prototype._instrumentAdded): (WI.TimelineOverview.prototype._timelineRulerMouseClicked): (WI.TimelineOverview.prototype._viewModeDidChange): (WI.TimelineOverview.prototype.get visible): Deleted. (WI.TimelineOverview.prototype.shown): Deleted. (WI.TimelineOverview.prototype.hidden): Deleted. * UserInterface/Views/TimelineOverviewGraph.js: (WI.TimelineOverviewGraph): (WI.TimelineOverviewGraph.prototype.get hidden): (WI.TimelineOverviewGraph.prototype.set hidden): (WI.TimelineOverviewGraph.prototype.needsLayout): (WI.TimelineOverviewGraph.prototype.get visible): Deleted. (WI.TimelineOverviewGraph.prototype.shown): Deleted. (WI.TimelineOverviewGraph.prototype.hidden): Deleted. * UserInterface/Views/CPUTimelineOverviewGraph.js: (WI.CPUTimelineOverviewGraph.prototype.layout): * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js: (WI.HeapAllocationsTimelineOverviewGraph.prototype.layout): * UserInterface/Views/LayoutTimelineOverviewGraph.js: (WI.LayoutTimelineOverviewGraph.prototype.layout): * UserInterface/Views/MediaTimelineOverviewGraph.js: (WI.MediaTimelineOverviewGraph.prototype.layout): * UserInterface/Views/MemoryTimelineOverviewGraph.js: (WI.MemoryTimelineOverviewGraph.prototype.layout): * UserInterface/Views/NetworkTimelineOverviewGraph.js: (WI.NetworkTimelineOverviewGraph.prototype.layout): * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js: (WI.RenderingFrameTimelineOverviewGraph.prototype.layout): * UserInterface/Views/ScriptTimelineOverviewGraph.js: (WI.ScriptTimelineOverviewGraph.prototype.layout): * UserInterface/Views/TimelineView.js: (WI.TimelineView.prototype.needsLayout): Deleted. Add a special `hidden` instead of the previously inherited `visible` so that the existing logic for editing timeline instruments stays (mostly) the same. * UserInterface/Views/ApplicationCacheFrameContentView.js: (WI.ApplicationCacheFrameContentView): (WI.ApplicationCacheFrameContentView.prototype.attached): (WI.ApplicationCacheFrameContentView.prototype.detached): (WI.ApplicationCacheFrameContentView.prototype.layout): (WI.ApplicationCacheFrameContentView.prototype.updateStatus): (WI.ApplicationCacheFrameContentView.prototype.shown): Deleted. (WI.ApplicationCacheFrameContentView.prototype.closed): Deleted. (WI.ApplicationCacheFrameContentView.prototype._maybeUpdate): Deleted. (WI.ApplicationCacheFrameContentView.prototype._markDirty): Deleted. (WI.ApplicationCacheFrameContentView.prototype._updateStatus): Deleted. (WI.ApplicationCacheFrameContentView.prototype._update): Deleted. No need to maintain a separate "dirty" flag based on visibility since `attached`/`detached` are called whenever the view is added/removed to/from the DOM. * UserInterface/Debug/DebugContentView.js: (WI.DebugContentView.prototype.attached): Added. (WI.DebugContentView.prototype.detached): Added. (WI.DebugContentView.prototype.shown): Deleted. (WI.DebugContentView.prototype.hidden): Deleted. * UserInterface/Views/AnimationDetailsSidebarPanel.js: (WI.AnimationDetailsSidebarPanel.prototype.attached): Added. (WI.AnimationDetailsSidebarPanel.prototype.shown): Deleted. * UserInterface/Views/AuditTabContentView.js: (WI.AuditTabContentView.prototype.attached): Added. (WI.AuditTabContentView.prototype.detached): Added. (WI.AuditTabContentView.prototype.shown): Deleted. (WI.AuditTabContentView.prototype.hidden): Deleted. * UserInterface/Views/AuditTestContentView.js: (WI.AuditTestContentView.prototype.attached): Added. (WI.AuditTestContentView.prototype.detached): Added. (WI.AuditTestContentView.prototype.shown): Deleted. (WI.AuditTestContentView.prototype.hidden): Deleted. * UserInterface/Views/CPUTimelineView.js: (WI.CPUTimelineView.prototype.attached): Added. (WI.CPUTimelineView.prototype.shown): Deleted. * UserInterface/Views/CanvasSidebarPanel.js: (WI.CanvasSidebarPanel.prototype.attached): Added. (WI.CanvasSidebarPanel.prototype.detached): Added. (WI.CanvasSidebarPanel.prototype.shown): Deleted. (WI.CanvasSidebarPanel.prototype.hidden): Deleted. * UserInterface/Views/DOMTreeContentView.js: (WI.DOMTreeContentView.prototype.attached): (WI.DOMTreeContentView.prototype.detached): (WI.DOMTreeContentView.prototype.shown): Deleted. (WI.DOMTreeContentView.prototype.hidden): Deleted. * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView.prototype.attached): (WI.ElementsTabContentView.prototype.shown): Deleted. * UserInterface/Views/FontResourceContentView.js: (WI.FontResourceContentView.prototype.attached): (WI.FontResourceContentView.prototype.detached): (WI.FontResourceContentView.prototype.shown): Deleted. (WI.FontResourceContentView.prototype.hidden): Deleted. * UserInterface/Views/HeapSnapshotClusterContentView.js: (WI.HeapSnapshotClusterContentView.prototype.attached): Added. (WI.HeapSnapshotClusterContentView.prototype.shown): Deleted. * UserInterface/Views/HeapSnapshotContentView.js: (WI.HeapSnapshotContentView.prototype.attached): Added. (WI.HeapSnapshotContentView.prototype.detached): Added. (WI.HeapSnapshotContentView.prototype.shown): Deleted. (WI.HeapSnapshotContentView.prototype.hidden): Deleted. * UserInterface/Views/ImageResourceContentView.js: (WI.ImageResourceContentView.prototype.attached): Added. (WI.ImageResourceContentView.prototype.detached): Added. (WI.ImageResourceContentView.prototype.shown): Deleted. (WI.ImageResourceContentView.prototype.hidden): Deleted. * UserInterface/Views/LayerTreeDetailsSidebarPanel.js: (WI.LayerTreeDetailsSidebarPanel.prototype.attached): (WI.LayerTreeDetailsSidebarPanel.prototype.detached): Added. (WI.LayerTreeDetailsSidebarPanel.prototype.shown): Deleted. (WI.LayerTreeDetailsSidebarPanel.prototype.hidden): Deleted. * UserInterface/Views/Layers3DContentView.js: (WI.Layers3DContentView.prototype.attached): Added. (WI.Layers3DContentView.prototype.detached): Added. (WI.Layers3DContentView.prototype.shown): Deleted. (WI.Layers3DContentView.prototype.hidden): Deleted. * UserInterface/Views/LayersTabContentView.js: (WI.LayersTabContentView.prototype.attached): Added. (WI.LayersTabContentView.prototype.shown): Deleted. * UserInterface/Views/LayoutTimelineView.js: (WI.LayoutTimelineView.prototype.attached): Added. (WI.LayoutTimelineView.prototype.detached): Added. (WI.LayoutTimelineView.prototype.shown): Deleted. (WI.LayoutTimelineView.prototype.hidden): Deleted. * UserInterface/Views/LogContentView.js: (WI.LogContentView.prototype.attached): Added. (WI.LogContentView.prototype.showCustomFindBanner): (WI.LogContentView.prototype.get supportsSave): (WI.LogContentView.prototype.shown): Deleted. * UserInterface/Views/MemoryTimelineView.js: (WI.MemoryTimelineView.prototype.attached): Added. (WI.MemoryTimelineView.prototype.shown): Deleted. * UserInterface/Views/NavigationSidebarPanel.js: (WI.NavigationSidebarPanel.prototype.attached): Added. (WI.NavigationSidebarPanel.prototype.shown): Deleted. * UserInterface/Views/NetworkDetailView.js: (WI.NetworkDetailView.prototype.attached): Added. (WI.NetworkDetailView.prototype.shown): Deleted. (WI.NetworkDetailView.prototype.hidden): Deleted. * UserInterface/Views/NetworkResourceDetailView.js: (WI.NetworkResourceDetailView.prototype.attached): Added. (WI.NetworkResourceDetailView.prototype.shown): Deleted. * UserInterface/Views/OverviewTimelineView.js: (WI.OverviewTimelineView.prototype.attached): Added. (WI.OverviewTimelineView.prototype.shown): Deleted. * UserInterface/Views/RecordingContentView.js: (WI.RecordingContentView.prototype.attached): Added. (WI.RecordingContentView.prototype.detached): Added. (WI.RecordingContentView.prototype.shown): Deleted. (WI.RecordingContentView.prototype.hidden): Deleted. * UserInterface/Views/ResourceClusterContentView.js: (WI.ResourceClusterContentView.prototype.attached): Added. (WI.ResourceClusterContentView.prototype.shown): Deleted. * UserInterface/Views/ResourceHeadersContentView.js: (WI.ResourceHeadersContentView.prototype.detached): Added. (WI.ResourceHeadersContentView.prototype.hidden): Deleted. * UserInterface/Views/SearchTabContentView.js: (WI.SearchTabContentView.prototype.attached): Added. (WI.SearchTabContentView.prototype.shown): Deleted. * UserInterface/Views/ShaderProgramContentView.js: (WI.ShaderProgramContentView.prototype.attached): Added. (WI.ShaderProgramContentView.prototype.shown): Deleted. (WI.ShaderProgramContentView.prototype.hidden): Deleted. * UserInterface/Views/SidebarPanel.js: (WI.SidebarPanel.prototype.attached): Added. (WI.SidebarPanel.prototype.detached): Added. (WI.SidebarPanel.prototype.shown): Deleted. (WI.SidebarPanel.prototype.hidden): Deleted. * UserInterface/Views/SourceCodeTextEditor.js: (WI.SourceCodeTextEditor.prototype.attached): Added. (WI.SourceCodeTextEditor.prototype.detached): Added. (WI.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState): (WI.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled): (WI.SourceCodeTextEditor.prototype.shown): Deleted. (WI.SourceCodeTextEditor.prototype.hidden): Deleted. * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached): (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hidden): Deleted. * UserInterface/Views/SpreadsheetStyleProperty.js: (WI.SpreadsheetStyleProperty.prototype.detached): (WI.SpreadsheetStyleProperty.prototype.hidden): Deleted. * UserInterface/Views/StyleDetailsPanel.js: (WI.StyleDetailsPanel): (WI.StyleDetailsPanel.prototype.attached): (WI.StyleDetailsPanel.prototype.markAsNeedsRefresh): (WI.StyleDetailsPanel.prototype.nodeStylesRefreshed): (WI.StyleDetailsPanel.prototype._nodeStylesNeedsRefreshed): (WI.StyleDetailsPanel.prototype.shown): Deleted. (WI.StyleDetailsPanel.prototype.hidden): Deleted. * UserInterface/Views/TabContentView.js: (WI.TabContentView.prototype.attached): Added. (WI.TabContentView.prototype.restoreStateFromCookie): (WI.TabContentView.prototype.shown): Deleted. * UserInterface/Views/Table.js: (WI.Table.prototype.attached): Added. (WI.Table.prototype.restoreScrollPosition): Deleted. * UserInterface/Views/TextEditor.js: (WI.TextEditor.prototype.attached): Added. (WI.TextEditor.prototype.layout): (WI.TextEditor.prototype._revealPendingPositionIfPossible): (WI.TextEditor.prototype.get visible): Deleted. (WI.TextEditor.prototype.shown): Deleted. (WI.TextEditor.prototype.hidden): Deleted. * UserInterface/Views/TimelineDataGrid.js: (WI.TimelineDataGrid.prototype.detached): Added. (WI.TimelineDataGrid.prototype.shown): Deleted. (WI.TimelineDataGrid.prototype.hidden): Deleted. * UserInterface/Views/TimelineRecordingContentView.js: (WI.TimelineRecordingContentView.prototype.attached): Added. (WI.TimelineRecordingContentView.prototype.detached): Added. (WI.TimelineRecordingContentView.prototype.initialLayout): Added. (WI.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange): (WI.TimelineRecordingContentView.prototype._update): (WI.TimelineRecordingContentView.prototype._handleTimelineViewRecordSelected): (WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerShow): (WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerHide): (WI.TimelineRecordingContentView.prototype._handleTimelineViewNeedsEntireSelectedRange): (WI.TimelineRecordingContentView.prototype.shown): Deleted. (WI.TimelineRecordingContentView.prototype.hidden): Deleted. * UserInterface/Views/TimelineTabContentView.js: (WI.TimelineTabContentView.prototype.attached): Added. (WI.TimelineTabContentView.prototype.detached): Added. (WI.TimelineTabContentView.prototype._inspectorVisibilityChanged): (WI.TimelineTabContentView.prototype.shown): Deleted. (WI.TimelineTabContentView.prototype.hidden): Deleted. * UserInterface/Views/WebSocketContentView.js: (WI.WebSocketContentView.prototype.attached): Added. (WI.WebSocketContentView.prototype.detached): Added. (WI.WebSocketContentView.prototype.shown): Deleted. (WI.WebSocketContentView.prototype.hidden): Deleted. * UserInterface/Controllers/JavaScriptLogViewController.js: (WI.JavaScriptLogViewController.prototype._appendConsoleMessageView): Move logic inside `shown`/`hidden` to `attached`/`detached`. Use `isAttached` instead of `visible`. * UserInterface/Models/BackForwardEntry.js: (WI.BackForwardEntry.prototype.prepareToShow): (WI.BackForwardEntry.prototype.prepareToHide): * UserInterface/Views/AuditTestGroupContentView.js: (WI.AuditTestGroupContentView.prototype.attached): Added. (WI.AuditTestGroupContentView.prototype.detached): Added. (WI.AuditTestGroupContentView.prototype._addTest): (WI.AuditTestGroupContentView.prototype._handleTestGroupTestRemoved): (WI.AuditTestGroupContentView.prototype.shown): Deleted. (WI.AuditTestGroupContentView.prototype.hidden): Deleted. * UserInterface/Views/ChangesDetailsSidebarPanel.js: (WI.ChangesDetailsSidebarPanel.prototype.shown): Deleted. * UserInterface/Views/ClusterContentView.js: (WI.ClusterContentView.prototype.shown): Deleted. (WI.ClusterContentView.prototype.hidden): Deleted. * UserInterface/Views/CollectionContentView.js: (WI.CollectionContentView.prototype.addContentViewForItem): (WI.CollectionContentView.prototype.removeContentViewForItem): (WI.CollectionContentView.prototype.shown): Deleted. (WI.CollectionContentView.prototype.hidden): Deleted. * UserInterface/Views/ComputedStyleSection.js: (WI.ComputedStyleSection.prototype.hidden): Deleted. * UserInterface/Views/ContentBrowser.js: (WI.ContentBrowser.prototype.attached): Added. (WI.ContentBrowser.prototype.shown): Deleted. (WI.ContentBrowser.prototype.hidden): Deleted. * UserInterface/Views/ContentView.js: (WI.ContentView.prototype.get visible): Deleted. (WI.ContentView.prototype.set visible): Deleted. (WI.ContentView.prototype.shown): Deleted. (WI.ContentView.prototype.hidden): Deleted. * UserInterface/Views/ContentViewContainer.js: (WI.ContentViewContainer.prototype.showContentView): (WI.ContentViewContainer.prototype.showBackForwardEntryForIndex): (WI.ContentViewContainer.prototype.replaceContentView): (WI.ContentViewContainer.prototype.closeContentView): (WI.ContentViewContainer.prototype.attached): Added. (WI.ContentViewContainer.prototype.detached): Added. (WI.ContentViewContainer.prototype._disassociateFromContentView): (WI.ContentViewContainer.prototype._showEntry): (WI.ContentViewContainer.prototype.shown): Deleted. (WI.ContentViewContainer.prototype.hidden): Deleted. * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: (WI.GeneralStyleDetailsSidebarPanel.prototype.get minimumWidth): (WI.GeneralStyleDetailsSidebarPanel.prototype.attached): Added. (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel): (WI.GeneralStyleDetailsSidebarPanel.prototype.hidden): Deleted. (WI.GeneralStyleDetailsSidebarPanel.prototype.shown): Deleted. * UserInterface/Views/HeapAllocationsTimelineView.js: (WI.HeapAllocationsTimelineView.prototype.showHeapSnapshotList): (WI.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord): (WI.HeapAllocationsTimelineView.prototype.showHeapSnapshotDiff): (WI.HeapAllocationsTimelineView.prototype.shown): Deleted. (WI.HeapAllocationsTimelineView.prototype.hidden): Deleted. * UserInterface/Views/MediaTimelineView.js: (WI.MediaTimelineView.prototype.shown): Deleted. (WI.MediaTimelineView.prototype.hidden): Deleted. * UserInterface/Views/NetworkTabContentView.js: (WI.NetworkTabContentView.prototype.shown): Deleted. (WI.NetworkTabContentView.prototype.hidden): Deleted. * UserInterface/Views/NetworkTableContentView.js: (WI.NetworkTableContentView.prototype.detached): Added. (WI.NetworkTableContentView.prototype._hideDetailView): (WI.NetworkTableContentView.prototype._showDetailView): (WI.NetworkTableContentView.prototype.shown): Deleted. (WI.NetworkTableContentView.prototype.hidden): Deleted. * UserInterface/Views/NetworkTimelineView.js: (WI.NetworkTimelineView.prototype.shown): Deleted. (WI.NetworkTimelineView.prototype.hidden): Deleted. * UserInterface/Views/RenderingFrameTimelineView.js: (WI.RenderingFrameTimelineView.prototype.shown): Deleted. (WI.RenderingFrameTimelineView.prototype.hidden): Deleted. * UserInterface/Views/ScriptContentView.js: (WI.ScriptContentView.prototype.shown): Deleted. (WI.ScriptContentView.prototype.hidden): Deleted. * UserInterface/Views/ScriptDetailsTimelineView.js: (WI.ScriptDetailsTimelineView.prototype.shown): Deleted. (WI.ScriptDetailsTimelineView.prototype.hidden): Deleted. * UserInterface/Views/Sidebar.js: (WI.Sidebar.prototype.set collapsed): * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: (WI.SpreadsheetCSSStyleDeclarationSection.prototype.hidden): Deleted. * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: (WI.SpreadsheetRulesStyleDetailsPanel.prototype.hidden): Deleted. * UserInterface/Views/TextContentView.js: (WI.TextContentView.prototype.shown): Deleted. (WI.TextContentView.prototype.hidden): Deleted. * UserInterface/Views/TextResourceContentView.js: (WI.TextResourceContentView.prototype.shown): Deleted. (WI.TextResourceContentView.prototype.hidden): Deleted. Remove `shown`/`hidden` calls since that state is propagated to subviews by `WI.View` logic. 2020-11-12 Devin Rousso Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'target.DOMAgent.hideHighlight') https://bugs.webkit.org/show_bug.cgi?id=218836 Reviewed by Brian Burg. * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.hideDOMNodeHighlight): Some views eagerly call this when `detached`, possibly even before the `WI.mainTarget` has been established (i.e. it's still a `WI.MultiplexingBackendTarget`). Rather than add a specific check for the `WI.mainTarget`, just iterate over `WI.targets` and check each target since that's eventually what's going to need to be done anyways. 2020-11-12 Devin Rousso Web Inspector: REGRESSION(?): Graphics: cannot click on recording icon more than once https://bugs.webkit.org/show_bug.cgi?id=218834 Reviewed by Brian Burg. * UserInterface/Views/ContextMenuUtilities.js: (WI.addMouseDownContextMenuHandlers): Only ignore future `"mousedown"` events if the `WI.ContextMenu` actually has items. 2020-11-12 Devin Rousso Web Inspector: REGRESSION(?): Sources: WebSocket status not shown when organized By Path https://bugs.webkit.org/show_bug.cgi?id=218679 Reviewed by Brian Burg. * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel.prototype._addResource): Make sure to use `WI.WebSocketResourceTreeElement` for `WI.WebSocketResource`. 2020-11-11 John Wilander PCM: Change from ad-click-attribution to private-click-measurement (in all forms, including .well-known URL) https://bugs.webkit.org/show_bug.cgi?id=218730 Reviewed by Alex Christensen. Change to the official name of the proposed standard Private Click Measurement https://github.com/privacycg/private-click-measurement. This includes a change of the reporting URL from "/.well-known/ad-click-attribution/" to "/.well-known/private-click-measurement/". * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Main.js: * UserInterface/Models/ConsoleMessage.js: * UserInterface/Models/IssueMessage.js: (WI.IssueMessage): * UserInterface/Protocol/Legacy/14.0/InspectorBackendCommands.js: 2020-11-11 Brian Burg [Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing https://bugs.webkit.org/show_bug.cgi?id=217783 Reviewed by Devin Rousso. * UserInterface/Main.html: Add new files. * UserInterface/Controllers/AppControllerBase.js: (WI.AppControllerBase): (WI.AppControllerBase.prototype.get extensionController): Hang the extension controller off of the global singleton, as there can only be one. * UserInterface/Controllers/WebInspectorExtensionController.js: (WI.WebInspectorExtensionController): (WI.WebInspectorExtensionController.prototype.registerExtension): (WI.WebInspectorExtensionController.prototype.unregisterExtension): Added. For now, just keep the UUIDs in a map and log the result. * UserInterface/Models/WebInspectorExtension.js: (WI.WebInspectorExtension): (WI.WebInspectorExtension.prototype.get extensionID): (WI.WebInspectorExtension.prototype.get displayName): Added. This is a data object for now. * UserInterface/Protocol/InspectorFrontendAPI.js: (InspectorFrontendAPI.loadCompleted): (InspectorFrontendAPI.registerExtension): (InspectorFrontendAPI.unregisterExtension): Added. Forward invocations to the extension controller. 2020-11-10 Commit Queue Unreviewed, reverting r269660. https://bugs.webkit.org/show_bug.cgi?id=218786 Crashing in EWS iOS simulator bots Reverted changeset: "PCM: Change from ad-click-attribution to private-click- measurement (in all forms, including .well-known URL)" https://bugs.webkit.org/show_bug.cgi?id=218730 https://trac.webkit.org/changeset/269660 2020-11-10 John Wilander PCM: Change from ad-click-attribution to private-click-measurement (in all forms, including .well-known URL) https://bugs.webkit.org/show_bug.cgi?id=218730 Reviewed by Devin Rousso. Change to the official name of the proposed standard Private Click Measurement https://github.com/privacycg/private-click-measurement. This includes a change of the reporting URL from "/.well-known/ad-click-attribution/" to "/.well-known/private-click-measurement/". * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Main.js: * UserInterface/Models/ConsoleMessage.js: * UserInterface/Models/IssueMessage.js: (WI.IssueMessage): * UserInterface/Protocol/Legacy/14.0/InspectorBackendCommands.js: 2020-11-06 Devin Rousso Web Inspector: Sources: default breakpoint action should be evaluate https://bugs.webkit.org/show_bug.cgi?id=218674 Reviewed by Joseph Pecoraro. * UserInterface/Views/BreakpointPopover.js: (WI.BreakpointPopover.prototype._handleAddActionButtonClick): 2020-11-06 Truitt Savell Unreviewed, reverting r269486. Caused 50+ timeouts on Mac Debug WK2 Reverted changeset: "[Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing" https://bugs.webkit.org/show_bug.cgi?id=217783 https://trac.webkit.org/changeset/269486 2020-11-05 Brian Burg [Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing https://bugs.webkit.org/show_bug.cgi?id=217783 Reviewed by Devin Rousso. * UserInterface/Main.html: Add new files. * UserInterface/Controllers/AppControllerBase.js: (WI.AppControllerBase): (WI.AppControllerBase.prototype.get extensionController): Hang the extension controller off of the global singleton, as there can only be one. * UserInterface/Controllers/WebInspectorExtensionController.js: (WI.WebInspectorExtensionController): (WI.WebInspectorExtensionController.prototype.registerExtension): (WI.WebInspectorExtensionController.prototype.unregisterExtension): Added. For now, just keep the UUIDs in a map and log the result. * UserInterface/Models/WebInspectorExtension.js: (WI.WebInspectorExtension): (WI.WebInspectorExtension.prototype.get extensionID): (WI.WebInspectorExtension.prototype.get displayName): Added. This is a data object for now. * UserInterface/Protocol/InspectorFrontendAPI.js: (InspectorFrontendAPI.loadCompleted): (InspectorFrontendAPI.registerExtension): (InspectorFrontendAPI.unregisterExtension): Added. Forward invocations to the extension controller. 2020-11-05 Patrick Angle Web Inspector: REGRESSION(?): Sources: override banner is squished for large images https://bugs.webkit.org/show_bug.cgi?id=218196 Reviewed by Devin Rousso. Progressions made in https://trac.webkit.org/changeset/266695/webkit caused the image container to occupy the maximum amount of space possible, which caused the override banner to be squished and a scrollbar to appear. This is resolved by making sure the minimum dimensions of the image containers are 0, so that the container can be `flex-shrink`ed. * UserInterface/Views/ImageResourceContentView.css: (.content-view.resource.image > .img-container): 2020-11-04 David Kilzer WebKit should remove unused debug variant support Reviewed by Darin Adler. Remove support for building the debug variant since it is currently unused. We now set default values for the DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and STRIP_INSTALLED_PRODUCT variables. Also move these values out of the Xcode project into Base.xcconfig files using the [config=Debug] specifier so that these overrides are next to the definitions. Additional changes in behavior are noted below. * Configurations/Base.xcconfig: - Set up DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and STRIP_INSTALLED_PRODUCT the same as other WebKit projects. Previously dead code was always stripped in Debug builds. Previously symbols were never stripped in Release or Production builds. Previously Debug builds were built with -Os instead of -O0. * WebInspectorUI.xcodeproj/project.pbxproj: - Move DEBUG_DEFINES to Base.xcconfig. 2020-11-04 Devin Rousso Web Inspector: use weak collections for holding event listeners https://bugs.webkit.org/show_bug.cgi?id=196956 Reviewed by Brian Burg. Replace the `ListMultimap`/`LinkedList` with a `Multimap` for holding listener data: ``` Map> _listeners; ``` This preserves addition order while also not strongly holding any `thisObject` so they can be GCed (and remove the `listener` along with it). * UserInterface/Base/Object.js: (WI.Object.addEventListener): (WI.Object.singleFireEventListener): (WI.Object.awaitEvent): (WI.Object.removeEventListener): (WI.Object.prototype.singleFireEventListener): (WI.Object.prototype.removeEventListener): (WI.Object.prototype.dispatchEventToListeners.dispatch): (WI.Object.hasEventListeners): (WI.Object.activelyListeningObjectsWithPrototype): Added. (WI.Object.prototype.activelyListeningObjectsWithPrototype): Added. * UserInterface/Base/SearchUtilities.js: (WI.SearchUtilities.createSettings): (WI.SearchUtilities.createSettingsButton): * UserInterface/Base/Main.js: (WI.loaded): (WI.contentLoaded): * UserInterface/Models/Resource.js: (WI.Resource.prototype.requestContent): * UserInterface/Controllers/RuntimeManager.js: (WI.RuntimeManager): * UserInterface/Views/AuditTestCaseContentView.js: (WI.AuditTestCaseContentView.prototype.showRunningPlaceholder): * UserInterface/Views/AuditTestContentView.js: (WI.AuditTestContentView.prototype.showNoResultPlaceholder): * UserInterface/Views/AuditTestGroupContentView.js: (WI.AuditTestGroupContentView.prototype.showRunningPlaceholder): * UserInterface/Views/CodeMirrorEditor.js: (WI.CodeMirrorEditor.create): * UserInterface/Debug/Bootstrap.js: (WI.runBootstrapOperations): * UserInterface/Views/ConsoleDrawer.js: (WI.ConsoleDrawer): * UserInterface/Views/ConsoleMessageView.js: (WI.ConsoleMessageView.prototype.clearSessionState): (WI.ConsoleMessageView.prototype._appendSavedResultIndex): (WI.ConsoleMessageView.prototype._rootPropertyPathForObject): * UserInterface/Views/ContentBrowser.js: (WI.ContentBrowser): (WI.ContentBrowser.prototype.async handleFindNextShortcut): (WI.ContentBrowser.prototype.async handleFindPreviousShortcut): * UserInterface/Views/HeapSnapshotContentView.js: (WI.HeapSnapshotContentView): * UserInterface/Views/LogContentView.js: (WI.LogContentView): * UserInterface/Views/MediaTimelineOverviewGraph.js: (WI.MediaTimelineOverviewGraph.prototype._processRecord): * UserInterface/Views/NetworkDetailView.js: (WI.NetworkDetailView.prototype.initialLayout): * UserInterface/Views/ObjectTreeView.js: (WI.ObjectTreeView.prototype.addShowMoreIfNeeded): * UserInterface/Views/SearchSidebarPanel.js: (WI.SearchSidebarPanel): (WI.SearchSidebarPanel.prototype.closed): (WI.SearchSidebarPanel.prototype.performSearch): * UserInterface/Views/SettingEditor.js: (WI.SettingEditor.createForSetting): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createGeneralSettingsView): (WI.SettingsTabContentView.prototype._createConsoleSettingsView): (WI.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange): (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): (WI.SettingsTabContentView.prototype._createDebugSettingsView): * UserInterface/Views/ShaderProgramContentView.js: (WI.ShaderProgramContentView): * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype.closed): (WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline): * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): * UserInterface/Views/SpreadsheetStyleProperty.js: (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch): * UserInterface/Views/ThreadTreeElement.js: (WI.ThreadTreeElement.prototype._updateStatus): * UserInterface/Views/TimelineTreeElement.js: (WI.TimelineTreeElement.prototype._showCloseButton): Update callers of `WI.Object.prototype.addEventListener` to always pass a `thisObject`. This is especially important for inlined `listener`, as there needs to be a strong reference to some "longer lived" `thisObject` (which is held by a `WeakRef`) in order for the `listener` to not be GCed. * UserInterface/Models/DOMNodeStyles.js: (WI.DOMNodeStyles): (WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload): (WI.DOMNodeStyles.prototype._parseRulePayload): (WI.DOMNodeStyles.prototype._handleCSSStyleSheetContentDidChange): Added. (WI.DOMNodeStyles.prototype._styleSheetContentDidChange): Deleted. * UserInterface/Views/TimelineRecordingProgressView.js: (WI.TimelineRecordingProgressView): (WI.TimelineRecordingProgressView.prototype.set visible): (WI.TimelineRecordingProgressView.prototype._updateState): Use a global event listener instead of adding event listeners to specific objects as it's already likely that all the objects would be listened to anyways. * UserInterface/Models/DOMTree.js: (WI.DOMTree.prototype.disconnect): * UserInterface/Controllers/ApplicationCacheManager.js: (WI.ApplicationCacheManager.prototype.disable): * UserInterface/Controllers/CallFrameTreeController.js: (WI.CallFrameTreeController.prototype.disconnect): * UserInterface/Controllers/DOMStorageManager.js: (WI.DOMStorageManager.prototype.disable): * UserInterface/Controllers/DatabaseManager.js: (WI.DatabaseManager.prototype.disable): * UserInterface/Controllers/IndexedDBManager.js: (WI.IndexedDBManager.prototype.disable): * UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype.capturingStopped): * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js: (WI.ApplicationCacheDetailsSidebarPanel.prototype.closed): * UserInterface/Views/ApplicationCacheFrameContentView.js: (WI.ApplicationCacheFrameContentView.prototype.closed): * UserInterface/Views/AuditNavigationSidebarPanel.js: (WI.AuditNavigationSidebarPanel.prototype.closed): * UserInterface/Views/AuditTreeElement.js: (WI.AuditTreeElement.prototype.ondetach): * UserInterface/Views/CPUTimelineView.js: (WI.CPUTimelineView.prototype.closed): * UserInterface/Views/CanvasContentView.js: (WI.CanvasContentView.prototype.detached): * UserInterface/Views/CanvasOverviewContentView.js: (WI.CanvasOverviewContentView.prototype.detached): * UserInterface/Views/CanvasSidebarPanel.js: (WI.CanvasSidebarPanel.prototype.set canvas): (WI.CanvasSidebarPanel.prototype.set recording): (WI.CanvasSidebarPanel.prototype.hidden): * UserInterface/Views/ClusterContentView.js: (WI.ClusterContentView.prototype.closed): * UserInterface/Views/CollectionContentView.js: (WI.CollectionContentView.prototype.removeContentViewForItem): (WI.CollectionContentView.prototype.detached): * UserInterface/Views/ContentBrowserTabContentView.js: (WI.ContentBrowserTabContentView.prototype.hidden): (WI.ContentBrowserTabContentView.prototype.closed): * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: (WI.DOMNodeDetailsSidebarPanel.prototype.closed): * UserInterface/Views/DOMTreeContentView.js: (WI.DOMTreeContentView.prototype.closed): * UserInterface/Views/DOMTreeUpdater.js: (WI.DOMTreeUpdater.prototype.close): * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView.prototype.closed): * UserInterface/Views/FrameDOMTreeContentView.js: (WI.FrameDOMTreeContentView.prototype.closed): * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: (WI.GeneralStyleDetailsSidebarPanel.prototype.removeEventListeners): * UserInterface/Views/HeapAllocationsTimelineView.js: (WI.HeapAllocationsTimelineView): (WI.HeapAllocationsTimelineView.prototype.closed): * UserInterface/Views/ImageResourceContentView.js: (WI.ImageResourceContentView.prototype.closed): Deleted. * UserInterface/Views/InlineSwatch.js: (WI.InlineSwatch.prototype.didDismissPopover): * UserInterface/Views/LayoutTimelineView.js: (WI.LayoutTimelineView.prototype.closed): * UserInterface/Views/LocalResourceOverrideWarningView.js: (WI.LocalResourceOverrideWarningView.prototype.detached): * UserInterface/Views/MemoryTimelineView.js: (WI.MemoryTimelineView.prototype.closed): * UserInterface/Views/MultipleScopeBarItem.js: (WI.MultipleScopeBarItem.prototype.set scopeBarItems): * UserInterface/Views/NavigationSidebarPanel.js: (WI.NavigationSidebarPanel.prototype.closed): * UserInterface/Views/NetworkTimelineView.js: (WI.NetworkTimelineView.prototype.closed): * UserInterface/Views/OverviewTimelineView.js: (WI.OverviewTimelineView.prototype.closed): * UserInterface/Views/ProbeDetailsSidebarPanel.js: (WI.ProbeDetailsSidebarPanel.prototype.closed): * UserInterface/Views/QuickConsole.js: (WI.QuickConsole.prototype.closed): * UserInterface/Views/RecordingContentView.js: (WI.RecordingContentView.prototype._handleRecordingProcessedAction): * UserInterface/Views/RenderingFrameTimelineView.js: (WI.RenderingFrameTimelineView.prototype.closed): * UserInterface/Views/ResourceCollectionContentView.js: (WI.ResourceCollectionContentView.prototype.detached): (WI.ResourceCollectionContentView.prototype.contentViewRemoved): * UserInterface/Views/ResourceContentView.js: (WI.ResourceContentView.prototype.closed): * UserInterface/Views/ResourceDetailsSidebarPanel.js: (WI.ResourceDetailsSidebarPanel.prototype.set resource): (WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners): (WI.ResourceDetailsSidebarPanel.prototype._handleResourceInitiatedResourcesDidChange): Added. * UserInterface/Views/ResourceHeadersContentView.js: (WI.ResourceHeadersContentView.prototype.closed): * UserInterface/Views/ResourceSecurityContentView.js: (WI.ResourceSecurityContentView.prototype.closed): * UserInterface/Views/ResourceSizesContentView.js: (WI.ResourceSizesContentView.prototype.closed): * UserInterface/Views/ResourceTimingContentView.js: (WI.ResourceTimingContentView.prototype.closed): * UserInterface/Views/ScopeChainDetailsSidebarPanel.js: (WI.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection): (WI.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection): (WI.ScopeChainDetailsSidebarPanel.prototype.closed): * UserInterface/Views/ScriptContentView.js: (WI.ScriptContentView.prototype.closed): * UserInterface/Views/ScriptDetailsTimelineView.js: (WI.ScriptDetailsTimelineView.prototype.closed): * UserInterface/Views/ScriptProfileTimelineView.js: (WI.ScriptProfileTimelineView.prototype.closed): * UserInterface/Views/SourceCodeTextEditor.js: (WI.SourceCodeTextEditor.prototype.close): (WI.SourceCodeTextEditor.prototype._showPopover): (WI.SourceCodeTextEditor.prototype._showPopoverForObject): (WI.SourceCodeTextEditor.prototype._dismissPopover): (WI.SourceCodeTextEditor.prototype._trackPopoverEvents): Deleted. * UserInterface/Views/StorageSidebarPanel.js: (WI.StorageSidebarPanel.prototype.closed): * UserInterface/Views/TextResourceContentView.js: (WI.TextResourceContentView.prototype.closed): * UserInterface/Views/TimelineOverview.js: (WI.TimelineOverview.prototype.closed): * UserInterface/Views/TimelineRecordingContentView.js: (WI.TimelineRecordingContentView): (WI.TimelineRecordingContentView.prototype.closed): (WI.TimelineRecordingContentView.prototype._recordingUnloaded): * UserInterface/Views/TimelineRuler.js: (WI.TimelineRuler.prototype.clearMarkers): * UserInterface/Views/TimelineTabContentView.js: (WI.TimelineTabContentView.prototype.closed): * UserInterface/Views/TreeOutlineGroup.js: (WI.TreeOutlineGroup.prototype.itemRemoved): Replace the `removeEventListener(null, null, this)` pattern by instead having callers remove each event listener explicitly. This is a safer design as it can avoid situations where parent classes inadvertently remove event listeners added by subclasses. For objects with lots of event listeners this is also more efficient as it doesn't require as much iteration. * UserInterface/Views/RecordingActionTreeElement.js: (WI.RecordingActionTreeElement): (WI.RecordingActionTreeElement.prototype._handleValidityChanged): Use `singleFireEventListener` where possible. * UserInterface/Controllers/DebuggerManager.js: (WI.DebuggerManager.prototype.pause): (WI.DebuggerManager.prototype.resume): (WI.DebuggerManager.prototype.stepNext): (WI.DebuggerManager.prototype.stepOver): (WI.DebuggerManager.prototype.stepInto): (WI.DebuggerManager.prototype.stepOut): * UserInterface/Views/BreakpointTreeElement.js: (WI.BreakpointTreeElement.prototype.onattach): (WI.BreakpointTreeElement.prototype.ondetach): (WI.BreakpointTreeElement.prototype.get listenerSet): Deleted. * UserInterface/Views/DataGrid.js: (WI.DataGrid.prototype.insertColumn): (WI.DataGrid.prototype.removeColumn): * UserInterface/Views/JavaScriptBreakpointTreeElement.js: (WI.JavaScriptBreakpointTreeElement): (WI.JavaScriptBreakpointTreeElement.prototype.onattach): (WI.JavaScriptBreakpointTreeElement.prototype.ondetach): * UserInterface/Views/ProbeSetDataGrid.js: (WI.ProbeSetDataGrid): (WI.ProbeSetDataGrid.prototype.closed): (WI.ProbeSetDataGrid.prototype._setupData): (WI.ProbeSetDataGrid.prototype._teardownData): * UserInterface/Views/ProbeSetDetailsSection.js: (WI.ProbeSetDetailsSection): (WI.ProbeSetDetailsSection.prototype.closed): Remove the legacy `WI.EventListener` and `WI.EventListenerSet` as they basically do the same thing as `WI.Object` with extra steps. * UserInterface/Models/WebSocketResource.js: * UserInterface/Proxies/HeapSnapshotWorkerProxy.js: * UserInterface/Controllers/TargetManager.js: * UserInterface/Views/DataGridNode.js: (WI.DataGridNode.prototype.collapse): (WI.DataGridNode.prototype.expand): (WI.DataGridNode.prototype.reveal): (WI.DataGridNode.prototype.traverseNextNode): (WI.DataGridNode.prototype.traversePreviousNode): * UserInterface/Views/HeapSnapshotClassDataGridNode.js: (WI.HeapSnapshotClassDataGridNode): (WI.HeapSnapshotClassDataGridNode.prototype._populate): * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: (WI.HeapSnapshotInstanceDataGridNode): * UserInterface/Views/ProfileDataGridNode.js: (WI.ProfileDataGridNode): (WI.ProfileDataGridNode.prototype._populate): * UserInterface/Views/ProfileNodeDataGridNode.js: (WI.ProfileNodeDataGridNode): (WI.ProfileNodeDataGridNode.prototype._populate): * UserInterface/Views/TreeOutline.js: * UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js: (HeapSnapshotWorker.prototype.createSnapshot): Ensure that all event names are strings defined on the class `Event` object. * UserInterface/Views/Sidebar.js: (WI.Sidebar.prototype.set selectedSidebarPanel): Drive-by: fix an issue where `hidden` is called twice, once from the selected sidebar panel being changed and then again when that sidebar panel is removed. * .eslintrc: * UserInterface/Base/EventListener.js: Removed. * UserInterface/Base/EventListenerSet.js: Removed. * UserInterface/Base/LinkedList.js: Removed. * UserInterface/Base/ListMultimap.js: Removed. * UserInterface/Main.html: * UserInterface/Test.html: * UserInterface/TestStub.html: * Tools/SourceMaps/index.html: 2020-11-03 Devin Rousso Web Inspector: Elements: should have the option to Edit Breakpoint... or at least Reveal Breakpoint in Sources Tab https://bugs.webkit.org/show_bug.cgi?id=218366 Reviewed by Brian Burg. * UserInterface/Views/BreakpointPopover.js: (WI.BreakpointPopover.appendContextMenuItems): * UserInterface/Views/DOMTreeElement.js: (WI.DOMTreeElement.prototype.get statusImageElement): Added. (WI.DOMTreeElement.prototype._statusImageContextmenu): * UserInterface/Views/DOMTreeOutline.js: (WI.DOMTreeOutline.prototype.populateContextMenu): * UserInterface/Views/ContextMenuUtilities.js: (WI.appendContextMenuItemsForDOMNodeBreakpoints): Show an "Edit Breakpoint..." action (via `WI.BreakpointPopover.appendContextMenuItems`) when there is only one `WI.DOMBreakpoint` (if there are multiple then it would be confusing), otherwise using "Breakpoints" (plural) for the other actions. * UserInterface/Base/Main.js: (WI.showSourcesTab): * UserInterface/Views/EventListenerSectionGroup.js: (WI.EventListenerSectionGroup): * UserInterface/Views/SourceCodeTextEditor.js: (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu): * UserInterface/Views/SourcesTabContentView.js: (WI.SourcesTabContentView.prototype.revealAndSelectRepresentedObject): Added. (WI.SourcesTabContentView.prototype.revealAndSelectBreakpoint): Deleted. Rename `breakpointToSelect` to `representedObjectToSelect` for more flexibility in the case that there are multiple `WI.DOMBreakpoint` for the given `WI.DOMNode`, in which case we want to select the `WI.DOMNode` instead. * Localizations/en.lproj/localizedStrings.js: 2020-10-30 Nikita Vasilyev Web Inspector: Extra closing parenthesis added after var in styles panel https://bugs.webkit.org/show_bug.cgi?id=218295 Reviewed by Devin Rousso. * UserInterface/Views/SpreadsheetStyleProperty.js: (WI.SpreadsheetStyleProperty.prototype._addVariableTokens): Remove `contents.push(token)` which was adding `)`. The closing parenthesis that was already included in rawTokens above. Drive-by: rawTokens.slice() should never include `i` as the 2nd argument. `i` is an index of an item in the `tokens` - a different array. 2020-10-29 Federico Bucchi Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'value.truncate') https://bugs.webkit.org/show_bug.cgi?id=218061 Reviewed by Devin Rousso. * UserInterface/Views/DOMStorageContentView.js: (WI.DOMStorageContentView.prototype.itemUpdated): 2020-10-29 Federico Bucchi Web Inspector: update styles to use CSS properties with neutral directionality https://bugs.webkit.org/show_bug.cgi?id=217447 Reviewed by Devin Rousso. * UserInterface/Debug/UncaughtExceptionReporter.css: (.uncaught-exception-sheet): (.uncaught-exception-sheet h1 > img): (.uncaught-exception-sheet h2 > img): (.uncaught-exception-sheet dd): (.uncaught-exception-sheet ul): * UserInterface/Views/AuditNavigationSidebarPanel.css: (.content-view.tab.audit .content-view .reference-page-link-container): (body[dir=ltr] .content-view.tab.audit .content-view .reference-page-link-container): Deleted. (body[dir=rtl] .content-view.tab.audit .content-view .reference-page-link-container): Deleted. * UserInterface/Views/AuditTestCaseContentView.css: (.content-view.audit-test-case > header): (.content-view.audit-test-case > header h1 > img): (.content-view.audit-test-case > header > .metadata > .source): (.content-view.audit-test-case > header > .metadata > .duration): * UserInterface/Views/AuditTestContentView.css: (.content-view.audit-test > header): * UserInterface/Views/AuditTestGroupContentView.css: (.content-view.audit-test-group > header): (.content-view.audit-test-group > header > nav > .scope-bar > li:last-child): (.content-view.audit-test-group > header > nav > .scope-bar > li > img): (.content-view.audit-test-group > header > .percentage-pass): * UserInterface/Views/BezierEditor.css: (.bezier-editor > .bezier-preview-timing): * UserInterface/Views/BlackboxSettingsView.css: (.settings-view.blackbox > table > tbody td.remove-blackbox > .remove-blackbox-button): * UserInterface/Views/BoxModelDetailsSectionRow.css: (.details-section .row.box-model .box.border > .label): * UserInterface/Views/BoxShadowEditor.css: (.box-shadow-editor > table > tr > td): (.box-shadow-editor > table > tr.offset-x > td > svg): * UserInterface/Views/BreakpointActionView.css: (:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)): (.breakpoint-action-block-body > .description): * UserInterface/Views/BreakpointPopover.css: (.popover .edit-breakpoint-popover-content input:is(#edit-breakpoint-popover-ignore-count, #edit-breakpoint-popover-auto-continue)): (.popover .edit-breakpoint-popover-content > .reference-page-link-container): (body[dir=ltr] .popover .edit-breakpoint-popover-content > .reference-page-link-container): Deleted. (body[dir=rtl] .popover .edit-breakpoint-popover-content > .reference-page-link-container): Deleted. * UserInterface/Views/ButtonNavigationItem.css: (.navigation-bar .item.button.image-and-text > span): * UserInterface/Views/CPUTimelineOverviewGraph.css: (.timeline-overview-graph.cpu > .legend): (body[dir=ltr] .timeline-overview-graph.cpu > .legend): Deleted. (body[dir=rtl] .timeline-overview-graph.cpu > .legend): Deleted. * UserInterface/Views/CPUTimelineView.css: (.timeline-view.cpu > .content .subtitle > .info): (.timeline-view.cpu > .content > .details > .timeline-ruler): (.timeline-view.cpu > .content > .overview > .divider): (.timeline-view.cpu > .content > .overview .legend): (.timeline-view.cpu > .content > .overview .legend .swatch): (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .filter.active + .filter.active): (body[dir=ltr] .timeline-view.cpu > .content > .details > .timeline-ruler): Deleted. (body[dir=rtl] .timeline-view.cpu > .content > .details > .timeline-ruler): Deleted. (body[dir=ltr] .timeline-view.cpu > .content > .overview > .divider): Deleted. (body[dir=rtl] .timeline-view.cpu > .content > .overview > .divider): Deleted. * UserInterface/Views/CPUUsageCombinedView.css: (.cpu-usage-combined-view > .details): (.cpu-usage-combined-view > .details > .legend-container > .row > .swatch): (body[dir=ltr] .cpu-usage-combined-view > .details): Deleted. (body[dir=rtl] .cpu-usage-combined-view > .details): Deleted. * UserInterface/Views/CPUUsageView.css: (.cpu-usage-view > .details): (body[dir=ltr] .cpu-usage-view > .details): Deleted. (body[dir=rtl] .cpu-usage-view > .details): Deleted. * UserInterface/Views/CallFrameTreeElement.css: (.tree-outline .item.call-frame .status): (body[dir=rtl] .tree-outline .item.call-frame .status): (.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary): (.tree-outline .item.call-frame.async-boundary .icon): (.tree-outline .item.call-frame.async-boundary::after): (.tree-outline .item.call-frame.async-boundary::before): (body[dir=ltr] .tree-outline .item.call-frame .status): Deleted. * UserInterface/Views/CallFrameView.css: (.call-frame .icon): * UserInterface/Views/CanvasDetailsSidebarPanel.css: (.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul): * UserInterface/Views/CanvasOverviewContentView.css: (.content-view.canvas-overview > .content-view.canvas > footer > .view-related-items > img + img): (.content-view.canvas-overview > .content-view.canvas > footer .memory-cost): * UserInterface/Views/CheckboxNavigationItem.css: (.navigation-bar .item.checkbox label): * UserInterface/Views/ColorPicker.css: (.color-picker .slider): (.color-picker > .color-inputs > div + div): * UserInterface/Views/ComputedStyleSection.css: (.computed-style-section .computed-property-item .disclosure-button): * UserInterface/Views/ConsoleMessageView.css: (.console-message.expandable .console-top-level-message::before): * UserInterface/Views/CookiePopover.css: (.popover .cookie-popover-content > table > tr > td): * UserInterface/Views/CreateAuditPopover.css: (.popover .create-audit-content > .editor-wrapper > .reference-page-link): * UserInterface/Views/DOMNodeDetailsSidebarPanel.css: (.sidebar > .panel.dom-node-details .details-section.dom-node-associated-data > .content .row): * UserInterface/Views/DOMTreeContentView.css: (.content-view.dom-tree .tree-outline.dom): (.content-view.dom-tree.show-gutter .tree-outline.dom): (.content-view.dom-tree .tree-outline.dom li .status-image): (body[dir=rtl] .content-view.dom-tree .tree-outline.dom li .status-image): (body[dir=ltr] .content-view.dom-tree .tree-outline.dom li .status-image): Deleted. * UserInterface/Views/DOMTreeOutline.css: (.tree-outline.dom ol): (.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded): * UserInterface/Views/DataGrid.css: (.data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): (.data-grid td .icon): (.data-grid td .go-to-arrow): (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): Deleted. (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): Deleted. * UserInterface/Views/DetailsSection.css: (.details-section > .header): (.details-section > .header > label > input[type="checkbox"]): (.details-section > .header .go-to-arrow): (.details-section > .content > .group > .row.simple > .label): (.details-section > .content > .group > .row.simple > .value): (.details-section > .content > .group > .row.simple > .value .go-to-arrow): * UserInterface/Views/ErrorObjectView.css: (.error-object > .formatted-error::before): (.error-object .content): * UserInterface/Views/FilterBar.css: (.filter-bar > input[type="search"]): (:matches(.filter-bar, .search-bar) > input[type="search"]::-webkit-search-results-button): (:matches(.filter-bar, .search-bar) > .navigation-bar + input[type="search"]): (:matches(.filter-bar, .search-bar) > input[type="search"]:focus): (:matches(.filter-bar, .search-bar) > input[type="search"] + :empty): (:matches(.filter-bar, .search-bar) > input[type="search"] + .navigation-bar > .item.scope-bar:last-child): * UserInterface/Views/FindBanner.css: (.find-banner > :first-child): (.find-banner > :last-child): (.find-banner > input[type="search"]): (.find-banner > button.segmented): (.find-banner > button.segmented.previous-result): (.find-banner > button.segmented.next-result): (body[dir=ltr] .find-banner > button.segmented.next-result): (body[dir=rtl] .find-banner > button.segmented.next-result): (.find-banner > button.segmented.next-result > .glyph): (.find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container): (body[dir=ltr] .find-banner > button.segmented.previous-result): Deleted. (body[dir=rtl] .find-banner > button.segmented.previous-result): Deleted. * UserInterface/Views/FlexibleSpaceNavigationItem.css: (.navigation-bar .item.flexible-space.align-start > .item): (.navigation-bar .item.flexible-space.align-end > .item): * UserInterface/Views/FontResourceContentView.css: (.content-view.resource.font .preview > .line > .metric): * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule): (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle): (.panel.exclusive-presentation.details.css-style > .content > .rules): * UserInterface/Views/GraphicsOverviewContentView.css: (.content-view.graphics-overview > section > .header): * UserInterface/Views/HierarchicalPathComponent.css: (.hierarchical-path-component > :matches(.icon, .selector-arrows)): (.hierarchical-path-component > select): (.hierarchical-path-component > .separator): (.hierarchical-path-component.text-only): (body[dir=ltr] .hierarchical-path-component > select): Deleted. (body[dir=rtl] .hierarchical-path-component > select): Deleted. (body[dir=ltr] .hierarchical-path-component.text-only > select): Deleted. (body[dir=rtl] .hierarchical-path-component.text-only > select): Deleted. * UserInterface/Views/LayerTreeDetailsSidebarPanel.css: (.layer-tree-popover ul): * UserInterface/Views/Layers3DContentView.css: (.content-view.layers-3d .layer-info ul): * UserInterface/Views/LocalResourceOverridePopover.css: (.popover .local-resource-override-popover-content label.is-case-sensitive): (.popover .local-resource-override-popover-content .editor.status-text): * UserInterface/Views/LogContentView.css: (.content-view.log > .hidden-messages-banner > button): (.content-view.log > .hidden-messages-banner > .dismiss): (.console-group-title::before): (body[dir=rtl] .console-group-title::before): (body[dir=ltr] .content-view.log > .hidden-messages-banner > .dismiss): Deleted. (body[dir=rtl] .content-view.log > .hidden-messages-banner > .dismiss): Deleted. (body[dir=ltr] .console-group-title::before): Deleted. * UserInterface/Views/Main.css: (.go-to-link:not(.dont-float)): (@media (-webkit-device-pixel-ratio: 1) .reference-page-link): (.device-settings-content .container > * + *): (.device-settings-content label > input): (.device-settings-content > .reference-page-link-container): (body[dir=ltr] .device-settings-content > .reference-page-link-container): Deleted. (body[dir=rtl] .device-settings-content > .reference-page-link-container): Deleted. * UserInterface/Views/MemoryCategoryView.css: (.memory-category-view > .details): (body[dir=ltr] .memory-category-view > .details): Deleted. (body[dir=rtl] .memory-category-view > .details): Deleted. * UserInterface/Views/MemoryTimelineOverviewGraph.css: (.timeline-overview-graph.memory > .legend): (.timeline-overview-graph.memory .memory-pressure-event): (body[dir=ltr] .timeline-overview-graph.memory > .legend): Deleted. (body[dir=rtl] .timeline-overview-graph.memory > .legend): Deleted. (body[dir=ltr] .timeline-overview-graph.memory .memory-pressure-event): Deleted. (body[dir=rtl] .timeline-overview-graph.memory .memory-pressure-event): Deleted. * UserInterface/Views/MemoryTimelineView.css: (.timeline-view.memory > .content > .details > .timeline-ruler): (.timeline-view.memory > .content > .overview > .divider): (.timeline-view.memory .legend): (.timeline-view.memory .legend .swatch): (body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler): Deleted. (body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler): Deleted. (body[dir=ltr] .timeline-view.memory > .content > .overview > .divider): Deleted. (body[dir=rtl] .timeline-view.memory > .content > .overview > .divider): Deleted. * UserInterface/Views/NetworkTableContentView.css: (.content-view.tab.network > .content-browser > .navigation-bar .hierarchical-path .icon): (.content-view.network .network-table > .table .icon): (.network-table > .table.grouped .data-container .cell:not(.parent).name): (.network-table > .table.grouped .data-container .cell.child.name): (.network-table > .table .cell.domain > .lock): (.network-table > .table .cell.name > .status): (.network-table > .table :not(.header) .cell.waterfall): (.network-table > .statistics > .statistic > .text): (body[dir=ltr] .network-table > .table :not(.header) .cell.waterfall): Deleted. (body[dir=rtl] .network-table > .table :not(.header) .cell.waterfall): Deleted. * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css: (.object-tree-array-index .index-value .object-tree .tree-outline.object): (.object-tree-array-index .index-value .formatted-node .tree-outline.dom): * UserInterface/Views/ObjectTreePropertyTreeElement.css: (.item.object-tree-property.prototype-property + ol): * UserInterface/Views/ObjectTreeView.css: (.tree-outline.object ol): (.tree-outline.object li > button[disabled] + .indeterminate-progress-spinner): * UserInterface/Views/OpenResourceDialog.css: (.open-resource-dialog > .field): (.open-resource-dialog > .field::before): (.open-resource-dialog > .field > input): (.open-resource-dialog > .field > img): (.open-resource-dialog > .tree-outline .item): (body[dir=ltr] .open-resource-dialog > .field::before): Deleted. (body[dir=rtl] .open-resource-dialog > .field::before): Deleted. (body[dir=ltr] .open-resource-dialog > .field > img): Deleted. (body[dir=rtl] .open-resource-dialog > .field > img): Deleted. * UserInterface/Views/QuickConsole.css: (.quick-console > .navigation-bar .active-execution-context): (.quick-console > .navigation-bar .active-execution-context > .selector-arrows): (.quick-console > .navigation-bar .active-execution-context:not(.automatic)): * UserInterface/Views/RecordingActionTreeElement.css: (.item.recording-action:not(.initial-state)::before): (.tree-outline:not(.hide-disclosure-buttons) .item.recording-action:not(.initial-state, .parent) > .icon): * UserInterface/Views/RecordingStateDetailsSidebarPanel.css: (.sidebar > .panel.details.recording-state > .content .details-section > .header .source): * UserInterface/Views/ResourceDetailsSection.css: (.resource-details > section > .details): (.resource-details > section > .details > p): (.resource-details > section > .details > .pair): (.resource-details > section > .details > .pair > .key): (body[dir=ltr] .resource-details > section > .details): Deleted. (body[dir=rtl] .resource-details > section > .details): Deleted. * UserInterface/Views/ResourceSecurityContentView.css: (.resource-security .details > .show-certificate > .key > .error): * UserInterface/Views/ResourceSizesContentView.css: (.resource-sizes > .content > section.network .warning): * UserInterface/Views/ResourceTimingBreakdownView.css: (.resource-timing-breakdown > table > tr > td.time): * UserInterface/Views/ScopeBar.css: (.scope-bar > li.multiple > select): (.scope-bar > li.multiple > .arrows): (body[dir=ltr] .scope-bar > li.multiple > select): Deleted. (body[dir=rtl] .scope-bar > li.multiple > select): Deleted. * UserInterface/Views/SearchSidebarPanel.css: (.sidebar > .panel.navigation.search > .search-bar > .search-settings): * UserInterface/Views/SettingsTabContentView.css: (.content-view.tab.settings > .settings-view > .container button): (.content-view.tab.settings > .settings-view > .container > .title): (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): (.content-view.tab.settings > .settings-view > .container.reference > a): * UserInterface/Views/ShaderProgramContentView.css: (.content-view.shader-program > .shader.compute,): (body[dir=ltr] .content-view.shader-program > .shader.vertex:not(.shares-vertex-fragment-shader),): (body[dir=ltr] .content-view.shader-program > .shader.fragment,): * UserInterface/Views/SingleSidebar.css: (.single-sidebar.trailing > .resizer): (.single-sidebar.leading > .resizer): (body[dir=ltr] .single-sidebar.trailing > .resizer,): Deleted. (body[dir=ltr] .single-sidebar.leading > .resizer,): Deleted. * UserInterface/Views/SourcesNavigationSidebarPanel.css: (.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread): * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: (.spreadsheet-style-declaration-editor .property .select-variable-property): * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: (.spreadsheet-css-declaration .selector > .icon): (.spreadsheet-css-declaration .selector > .icon + *): (.spreadsheet-css-declaration .selector.style-attribute > span): * UserInterface/Views/SpringEditor.css: (.spring-editor > .spring-timing): (.spring-editor > .spring-timing::before): (.spring-editor > .spring-timing::after): (body[dir=ltr] .spring-editor > .spring-timing::before,): Deleted. (body[dir=ltr] .spring-editor > .spring-timing::after,): Deleted. * UserInterface/Views/TabBar.css: (.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))): (.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))): (body:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)),): (body:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden))): (body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover,): (body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover): (.tab-bar > .tabs > .item > .name): (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)),): Deleted. (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden)),): Deleted. (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted. (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover,): Deleted. * UserInterface/Views/Table.css: (.table > .header > :matches(.sort-ascending, .sort-descending)): (.table > .header > :matches(.sort-ascending, .sort-descending)::after): (.table > .header .cell:not(:first-child)::before): (body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)::after): Deleted. (body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)::after): Deleted. (body[dir=ltr] .table > .header .cell:not(:first-child)::before): Deleted. (body[dir=rtl] .table > .header .cell:not(:first-child)::before): Deleted. * UserInterface/Views/ThreadTreeElement.css: (.tree-outline > .item.thread + ol > .item.truncated-call-frames): (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon): * UserInterface/Views/TimelineOverview.css: (.timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)): (.timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)): (.timeline-overview > .scroll-container > .scroll-width-sizer): (body[dir=ltr] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)): Deleted. (body[dir=rtl] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)): Deleted. (body[dir=ltr] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)): Deleted. (body[dir=rtl] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)): Deleted. (body[dir=ltr] .timeline-overview > .scroll-container > .scroll-width-sizer): Deleted. (body[dir=rtl] .timeline-overview > .scroll-container > .scroll-width-sizer): Deleted. * UserInterface/Views/TimelineRecordBar.css: (.timeline-record-bar > img): (.timeline-record-bar > .segment): (body[dir=ltr] .timeline-record-bar > .segment:last-of-type): (body[dir=ltr] .timeline-record-bar > .segment): Deleted. (body[dir=rtl] .timeline-record-bar > .segment): Deleted. * UserInterface/Views/TimelineRecordingContentView.css: (.content-view.timeline-recording > .content-browser .recording-progress > .status > .indeterminate-progress-spinner): * UserInterface/Views/TimelineRuler.css: (.timeline-ruler > .header > .divider > .label): (.timeline-ruler > .markers > .marker): (.timeline-ruler > .markers > .marker::before): (.timeline-ruler > .markers > .marker::after): (.timeline-ruler > .shaded-area.left): (.timeline-ruler > .shaded-area.right): (body[dir=ltr] .timeline-ruler > .header > .divider > .label): Deleted. (body[dir=rtl] .timeline-ruler > .header > .divider > .label): Deleted. (body[dir=ltr] .timeline-ruler > .markers > .marker): Deleted. (body[dir=rtl] .timeline-ruler > .markers > .marker): Deleted. (body[dir=ltr] .timeline-ruler > .markers > .marker::before): Deleted. (body[dir=rtl] .timeline-ruler > .markers > .marker::before): Deleted. (body[dir=ltr] .timeline-ruler > .markers > .marker::after): Deleted. (body[dir=rtl] .timeline-ruler > .markers > .marker::after): Deleted. (body[dir=ltr] .timeline-ruler > .shaded-area.left,): Deleted. (body[dir=ltr] .timeline-ruler > .shaded-area.right,): Deleted. * UserInterface/Views/TreeOutline.css: (.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon): (.tree-outline .item .icon): (.tree-outline .item .status): * UserInterface/Views/TreeOutline.js: (WI.TreeOutline._generateStyleRulesIfNeeded): * UserInterface/Views/TypeTreeElement.css: (.item.type-tree-element.prototype): (.item.type-tree-element.prototype + ol): * UserInterface/Views/TypeTreeView.css: (.tree-outline.type): (.tree-outline.type ol): (.tree-outline.type li .empty-message): * UserInterface/Views/WebSocketContentView.css: (.web-socket.content-view > .data-grid .data-column > div): (.web-socket.content-view .icon): (body[dir=ltr] .web-socket.content-view .icon): Deleted. (body[dir=rtl] .web-socket.content-view .icon): Deleted. 2020-10-28 Federico Bucchi Web Inspector: Network: background color of rows from previous session is wrong https://bugs.webkit.org/show_bug.cgi?id=218058 Reviewed by Devin Rousso. * UserInterface/Views/NetworkTableContentView.css: (.network-table > .table li:not(.filler, .selected) .cell:not(.name, .current-session),): (.network-table > .table li:not(.filler, .selected) .cell:not(.current-session)): Deleted. 2020-10-27 Devin Rousso Web Inspector: truncate data URLs in the Resources sidebar and Headers panel https://bugs.webkit.org/show_bug.cgi?id=218262 Reviewed by Darin Adler. * UserInterface/Base/Main.js: (WI.createResourceLink): * UserInterface/Views/ResourceDetailsSidebarPanel.js: (WI.ResourceDetailsSidebarPanel.prototype._refreshURL): * UserInterface/Views/ResourceHeadersContentView.js: (WI.ResourceHeadersContentView.prototype._refreshSummarySection): 2020-10-27 Devin Rousso Web Inspector: Search: don't steal focus from the search field when shown https://bugs.webkit.org/show_bug.cgi?id=218260 Reviewed by Brian Burg. * UserInterface/Views/SearchSidebarPanel.js: (WI.SearchSidebarPanel.prototype.focusSearchField): (WI.SearchSidebarPanel.prototype.performSearch.createTreeElementForMatchObject): 2020-10-27 Devin Rousso Web Inspector: REGRESSION(r266669): Uncaught Exception: TypeError: node.nodeType is not a function. (In 'node.nodeType()', 'node.nodeType' is undefined) https://bugs.webkit.org/show_bug.cgi?id=218254 Reviewed by Joseph Pecoraro. r266669 changed `WI.DOMBreakpoint` to use `WI.DOMNode` instead of `DOM.NodeId`, meaning that `WI.DOMTreeContentView.prototype._updateBreakpointStatus` now expects a `WI.DOMNode`. * UserInterface/Views/DOMTreeContentView.js: (WI.DOMTreeContentView.prototype._domTreeElementAdded): 2020-10-26 Devin Rousso Web Inspector: console command line API should be exposed to breakpoint conditions/actions https://bugs.webkit.org/show_bug.cgi?id=218141 Reviewed by Brian Burg. * UserInterface/Controllers/CodeMirrorCompletionController.js: (WI.CodeMirrorCompletionController): (WI.CodeMirrorCompletionController.prototype.get mode): Added. (WI.CodeMirrorCompletionController.prototype.get delegate): Deleted. * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded): (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.shouldExposeEvent): Added. (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.shouldExposeException): Added. (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames): Introduce a `Mode` enum that can be fetched by completion providers to adjust functionality. * UserInterface/Views/BreakpointPopover.js: (WI.BreakpointPopover.appendContextMenuItems): (WI.BreakpointPopover.prototype.show): (WI.BreakpointPopover.prototype.breakpointActionViewCodeMirrorCompletionControllerMode): Added. (WI.BreakpointPopover.prototype.get codeMirrorCompletionControllerMode): Added. * UserInterface/Views/EventBreakpointPopover.js: (WI.EventBreakpointPopover.prototype.get codeMirrorCompletionControllerMode): Added. * UserInterface/Views/BreakpointActionView.js: (WI.BreakpointActionView.prototype._updateBody): Use a `Mode` that always exposes `$event`/`$exception` depending on the breakpoint type. * UserInterface/Views/ConsolePrompt.js: (WI.ConsolePrompt): Use a `Mode` that only exposes `$event`/`$exception` when paused for an event/exeption. * UserInterface/Views/ScopeChainDetailsSidebarPanel.js: (WI.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked): Use a `Mode` that always exposes `$event`/`$exception` since watch expressions track values over time, and may therefore not always have an `$event`/`$exception` set. * UserInterface/Views/TextEditor.js: (WI.TextEditor): Use the default `Mode` that never exposes `$event`/`$exception`. 2020-10-26 Patrick Angle Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'this._boxModelDiagramRow.minimumWidth') https://bugs.webkit.org/show_bug.cgi?id=218135 Reviewed by Brian Burg. minimumWidth may be retrieved before the ComputedStylesDetailsPanel has done its initial layout, which means the _boxModelDiagramRow will not have been initialized. In this case, we want to return 0 causing the absolute minimum width of a sidebar to be used for calculations instead. * UserInterface/Views/ComputedStyleDetailsPanel.js: (WI.ComputedStyleDetailsPanel.prototype.get minimumWidth): 2020-10-26 Patrick Angle Web Inspector: Change minimum width of #tab-browser to a more reasonable value https://bugs.webkit.org/show_bug.cgi?id=217998 Reviewed by Brian Burg. Adjusted the minimum width of the #tab-browser to be 200px, which is a more reasonable minimum usable width. Additionally, adjusted the threshold for which multiple sidebars are shown by 50px so that the size of the #tab-browser does not have to become its minimum width before hiding the additional sidebars. * UserInterface/Base/Main.js: * UserInterface/Views/Main.css: (#tab-browser): * UserInterface/Views/MultiSidebar.js: (WI.MultiSidebar.prototype._updateMinimumWidthForMultipleSidebars): 2020-10-23 Nikita Vasilyev Web Inspector: Typo in experimentalEnableStyelsJumpToVariableDeclaration https://bugs.webkit.org/show_bug.cgi?id=218119 Reviewed by Devin Rousso. Replace "Styels" with "Styles". * UserInterface/Base/Setting.js: * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): * UserInterface/Views/SpreadsheetStyleProperty.js: (WI.SpreadsheetStyleProperty.prototype._addVariableTokens): 2020-10-22 Devin Rousso Web Inspector: REGRESSION(r266074): Sources: icon for non-JavaScript breakpoints doesn't change when breakpoints are globally disabled https://bugs.webkit.org/show_bug.cgi?id=218064 Reviewed by Joseph Pecoraro. * UserInterface/Models/Breakpoint.js: (WI.Breakpoint.prototype.get resolved): Added. * UserInterface/Models/JavaScriptBreakpoint.js: (WI.JavaScriptBreakpoint.prototype.get resolved): Add `get resolved` to the base class based on `WI.debuggerManager.breakpointsEnabled`. Use it in the subclass as part of the result. * UserInterface/Views/BreakpointTreeElement.js: (WI.BreakpointTreeElement.prototype.updateStatus): (WI.BreakpointTreeElement.prototype._dataUpdated): * UserInterface/Views/BreakpointTreeElement.css: (.item.breakpoint .status > .status-image:not(.resolved)): Added. * UserInterface/Views/JavaScriptBreakpointTreeElement.css: (.item.breakpoint.javascript .status > .status-image): Deleted. (.item.breakpoint.javascript .status > .status-image.resolved): Deleted. * UserInterface/Views/JavaScriptBreakpointTreeElement.js: (WI.JavaScriptBreakpointTreeElement.prototype.updateStatus): Deleted. Eliminate unnecessary protected function now that all breakpoints have a `get resolved`. Drive-by: inline CSS class name constants. 2020-10-20 Devin Rousso Web Inspector: REGRESSION(r266074): Uncaught Exception: undefined is not an object (evaluating 'this._allListenersBreakpoint.disabled') https://bugs.webkit.org/show_bug.cgi?id=217992 Reviewed by Joseph Pecoraro. r266074 changed it such that `_allListenersBreakpoint` doesn't always exist, so check that it exists before getting a property from it. * UserInterface/Controllers/DOMDebuggerManager.js: (WI.DOMDebuggerManager.prototype.listenerBreakpointForEventName): 2020-10-20 Nikita Vasilyev REGRESSION(r268691): Web Inspector: WI.Sidebar.Event.CollapsedStateChanged is undefined https://bugs.webkit.org/show_bug.cgi?id=217939 Reviewed by Brian Burg. r268691 added an event listener for CollapsedStateChanged, which is undefined. * UserInterface/Base/Main.js: 2020-10-20 Philippe Normand Web Inspector: Add setScreenSizeOverride API to the Page agent https://bugs.webkit.org/show_bug.cgi?id=213242 Reviewed by Devin Rousso. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Main.js: (WI.loaded): Add a new drop-down menu allowing to override the device screen size. 2020-10-19 Patrick Angle Web Inspector: Support three-column pane arrangement in Elements Tab https://bugs.webkit.org/show_bug.cgi?id=217396 Reviewed by Devin Rousso. The new multiple-sidebar layout for the Elements tab (and any other tab for which it is enabled in the future) is achieved with a new WI.MultiSidebar, which is itself a WI.Sidebar and contains multiple new WI.SingleSidebar. SingleSidebar replaces usage of the former Sidebar in favor of Sidebar being a common base shared between the SingleSidebar and MultiSidebar. A MultiSidebar supports showing multiple sidebars, and makes that decision based on the user having enabled showing multiple sidebars and the `WI.SidebarPanel.prototype.allowExclusivePresentation` property on specific SidebarPanels. The MultiSidebar manages these sidebars and their presentation, with some added properties to manage the visibility of multiple sidebars. A MultiSidebar can display any number of sidebar panels simultaneously. A MultiSidebar will always have a `primarySidebar` (although it may be collapsed), which is where most panels will be presented. Additional panels that are marked as allowing exclusive presentation are laid out in natural language order when the `MultiSidebar`'s side is `Leading` and reverse order when it is `Trailing`. This allows the sidebar to remain conceptually anchored, so the `primarySidebar` in the set does not change locations when adding or removing other sidebars from the set. The presentation of more than the `primarySidebar` is dependant on the following conditions: 1. The tab (e.g. Elements Tab) must allow the three-panel layout. 2. At least one panel in the MultiSidebar must allow exclusive presentation (e.g. Styles when enabled in Experimental Settings). 3. There must be at least one other panel to keep in the primary sidebar. 4. There must be enough available space horizontally to satisfy the minimum width of both the `primarySidebar` and any sidebar panels that will be shown by themselves. This feature is behind an Experimental Feature setting, and is disabled by default. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/Main.js: Use new SingleSidebar and MultiSidebars, include each detail sidebar in maximum width calculations, and listen for both width and collapse events. * UserInterface/Base/Setting.js: Added setting for allowing Styles panel to be exclusive. * UserInterface/Main.html: * UserInterface/Views/ComputedStyleDetailsPanel.css: Hide shared elements between Styles and Computed when both are visible. (.multi-sidebar.showing-multiple > .sidebar > .panel.details.style-computed > .content > .pseudo-classes,): * UserInterface/Views/ElementsTabContentView.js: (WI.ElementsTabContentView.prototype.get allowMultipleDetailSidebars): * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: Show pseudo-class rules as if they were a navigation bar only when shown exclusively. Otherwise, still allow them to wrap like normal. (.panel.exclusive-presentation.details.css-style > .content > .pseudo-classes): (.panel.exclusive-presentation.details.css-style > .content > .pseudo-classes > .group): (.panel.exclusive-presentation.details.css-style > .content > .rules): (.sidebar > .panel.details.css-style.style-rules > .content ~ :matches(.options-container, .class-list-container)): Removed. * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: If showing exclusively, prevent wrapping pseudo-class rules by reporting their combined minimum width. (WI.GeneralStyleDetailsSidebarPanel.prototype.get minimumWidth): * UserInterface/Views/Main.css: (#tab-browser): Match existing assumption for minimum tab-browser width. (#details-sidebar): Match assumption for minimum sidebar width. * UserInterface/Views/MultiSidebar.css: Added. (.multi-sidebar): (.multi-sidebar.trailing): (.multi-sidebar.collapsed): * UserInterface/Views/MultiSidebar.js: A Sidebar subclass that manages multiple SingleSidebars, and dynamically presents them as space is available. (WI.MultiSidebar): (WI.MultiSidebar.prototype.get sidebars): (WI.MultiSidebar.prototype.get primarySidebar): (WI.MultiSidebar.prototype.get allowMultipleSidebars): (WI.MultiSidebar.prototype.set allowMultipleSidebars): (WI.MultiSidebar.prototype.get multipleSidebarsVisible): (WI.MultiSidebar.prototype.set multipleSidebarsVisible): (WI.MultiSidebar.prototype.addSidebar): (WI.MultiSidebar.prototype.removeSidebar): (WI.MultiSidebar.prototype.get selectedSidebarPanel): (WI.MultiSidebar.prototype.set selectedSidebarPanel): (WI.MultiSidebar.prototype.get collapsable): (WI.MultiSidebar.prototype.set collapsable): (WI.MultiSidebar.prototype.get minimumWidth): (WI.MultiSidebar.prototype.get width): (WI.MultiSidebar.prototype.didInsertSidebarPanel): (WI.MultiSidebar.prototype.didRemoveSidebarPanel): (WI.MultiSidebar.prototype.didSetCollapsed): (WI.MultiSidebar.prototype.get _canShowMultipleSidebars): (WI.MultiSidebar.prototype._updateMinimumWidthForMultipleSidebars): (WI.MultiSidebar.prototype.get _hasWidthForMultipleSidebars): (WI.MultiSidebar.prototype.get _hasSidebarPanelSupportingExclusive): (WI.MultiSidebar.prototype._updateMultipleSidebarLayout): (WI.MultiSidebar.prototype._canSidebarPanelBeExclusive): (WI.MultiSidebar.prototype._makeSidebarPanelExclusive): (WI.MultiSidebar.prototype._makeSidebarPanelNotExclusive): (WI.MultiSidebar.prototype._nonExclusiveIndexOfSidebarPanel): (WI.MultiSidebar.prototype._findSidebarForSidebarPanel): (WI.MultiSidebar.prototype._addSidebarEventListeners): (WI.MultiSidebar.prototype._removeSidebarEventListeners): (WI.MultiSidebar.prototype._handleSidebarPanelSelected): (WI.MultiSidebar.prototype._handleSidebarCollapsedStateDidChange): (WI.MultiSidebar.prototype._handleSidebarWidthDidChange): (WI.MultiSidebar.prototype._handleWindowResize): * UserInterface/Views/RulesStyleDetailsSidebarPanel.js: If enabled in settings, allow Styles panel to be its own sidebar. (WI.RulesStyleDetailsSidebarPanel.prototype.get allowExclusivePresentation): (WI.RulesStyleDetailsSidebarPanel): * UserInterface/Views/SettingsTabContentView.js: Add setting for showing the Styles panel as its own sidebar. (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): * UserInterface/Views/Sidebar.css: Moved navigation and resizing to SingleSidebar.css. (.sidebar): (.sidebar.collapsed): (.sidebar > .navigation-bar): Deleted. (.sidebar.has-navigation-bar > .panel): Deleted. (body[dir=ltr] .sidebar.right > .resizer,): Deleted. (body[dir=ltr] .sidebar.left > .resizer,): Deleted. (body[dir=ltr] .sidebar.left,): Deleted. (body[dir=ltr] .sidebar.right,): Deleted. * UserInterface/Views/Sidebar.js: Common base class for both SingleSidebar and MultiSidebar. Moved existing navigation and resizing behavior to SingleSidebar. (WI.Sidebar): (WI.Sidebar.get sidebarPanels): (WI.Sidebar.prototype.get side): (WI.Sidebar.prototype.addSidebarPanel): (WI.Sidebar.prototype.insertSidebarPanel): (WI.Sidebar.prototype.removeSidebarPanel): (WI.Sidebar.prototype.get selectedSidebarPanel): (WI.Sidebar.prototype.set selectedSidebarPanel): (WI.Sidebar.prototype.get collapsed): (WI.Sidebar.prototype.set collapsed): (WI.Sidebar.prototype.get collapsable): (WI.Sidebar.prototype.set collapsable): (WI.Sidebar.prototype.get minimumWidth): (WI.Sidebar.prototype.get maximumWidth): (WI.Sidebar.prototype.shouldInsertSidebarPanel): (WI.Sidebar.prototype.didInsertSidebarPanel): (WI.Sidebar.prototype.didRemoveSidebarPanel): (WI.Sidebar.prototype.willSetSelectedSidebarPanel): (WI.Sidebar.prototype.didSetSelectedSidebarPanel): (WI.Sidebar.prototype.didSetCollapsed): (WI.Sidebar.prototype._findSidebarPanel): (WI.Sidebar.prototype.get width): Deleted. (WI.Sidebar.prototype.set width): Deleted. (WI.Sidebar.prototype.get sidebarPanels): Deleted. (WI.Sidebar.prototype.findSidebarPanel): Deleted. (WI.Sidebar.prototype.resizerDragStarted): Deleted. (WI.Sidebar.prototype.resizerDragging): Deleted. (WI.Sidebar.prototype.resizerDragEnded): Deleted. (WI.Sidebar.prototype._recalculateWidth): Deleted. (WI.Sidebar.prototype._navigationItemSelected): Deleted. * UserInterface/Views/SidebarPanel.js: Support tracking exclusive display as well as enabling exclusive display. (WI.SidebarPanel): (WI.SidebarPanel.prototype.get exclusive): (WI.SidebarPanel.prototype.set exclusive): (WI.SidebarPanel.prototype.get allowExclusivePresentation): * UserInterface/Views/SingleSidebar.css: Moved navigation and resizing from Sidebar.css. (.single-sidebar > .navigation-bar): (.single-sidebar.has-navigation-bar > .panel): (body[dir=ltr] .single-sidebar.trailing > .resizer,): (body[dir=ltr] .single-sidebar.leading > .resizer,): (.single-sidebar.leading): (.single-sidebar.trailing): * UserInterface/Views/SingleSidebar.js: Added. Contains navigation and resizing previously in Sidebar.js. (WI.SingleSidebar): (WI.SingleSidebar.prototype.get allowResizingToCollapse): (WI.SingleSidebar.prototype.set allowResizingToCollapse): (WI.SingleSidebar.prototype.get minimumWidth): (WI.SingleSidebar.prototype.get width): (WI.SingleSidebar.prototype.set width): (WI.SingleSidebar.prototype.shouldInsertSidebarPanel): (WI.SingleSidebar.prototype.didInsertSidebarPanel): (WI.SingleSidebar.prototype.didRemoveSidebarPanel): (WI.SingleSidebar.prototype.willSetSelectedSidebarPanel): (WI.SingleSidebar.prototype.didSetSelectedSidebarPanel): (WI.SingleSidebar.prototype.didSetCollapsed): (WI.SingleSidebar.prototype.resizerDragStarted): (WI.SingleSidebar.prototype.resizerDragging): (WI.SingleSidebar.prototype.resizerDragEnded): (WI.SingleSidebar.prototype._recalculateWidth): (WI.SingleSidebar.prototype._handleNavigationItemSelected): * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css: The last rule row should not show a bottom border, otherwise a double-border is visible at the bottom of the sidebar. (.sidebar > .panel.details.css-style > .content > .rules > :nth-last-child(1 of .spreadsheet-css-declaration)): * UserInterface/Views/TabBrowser.js: Updated naming of handlers and added support for multiple detail sidebars. (WI.TabBrowser): (WI.TabBrowser._handleSidebarPanelSelected): (WI.TabBrowser.prototype._handleSidebarWidthDidChange): (WI.TabBrowser.prototype._handleMultiSidebarSidebarAdded): (WI.TabBrowser.prototype._showDetailsSidebarPanelsForTabContentView): (WI.TabBrowser._sidebarPanelSelected): Deleted. (WI.TabBrowser.prototype._sidebarCollapsedStateDidChange): Deleted. (WI.TabBrowser.prototype._sidebarWidthDidChange): Deleted. * UserInterface/Views/TabContentView.js: (WI.TabContentView.prototype.get allowMultipleDetailSidebars): 2020-10-16 Devin Rousso Web Inspector: REGRESSION(r266669): DOMBreakpoint.js:106:23: CONSOLE ASSERT ERROR domNode should not change once set https://bugs.webkit.org/show_bug.cgi?id=217865 Reviewed by Timothy Hatcher. * UserInterface/Models/DOMBreakpoint.js: (WI.DOMBreakpoint.prototype.set domNode): Adjust the assertion such that `null` is allowed if `_domNode` is already `null`. * UserInterface/Base/Utilities.js: (xor): Added. Global utility function for doing a non-bitwise or that returns `false` if both values are truthy/falsy and the truthy value if only one is truthy. 2020-10-16 Devin Rousso Web Inspector: REGRESSION(r266885): Controllers/ConsoleManager.js:177:27: CONSOLE ASSERT ERROR https://bugs.webkit.org/show_bug.cgi?id=217863 Reviewed by Timothy Hatcher. r266885 changed `Console.getLoggingChannels` to return any `Console.ChannelSource` that existed, rather than a hardcoded list. Remove the similarly hardcoded list in the frontend. * UserInterface/Controllers/ConsoleManager.js: (WI.ConsoleManager): (WI.ConsoleManager.prototype.initializeLogChannels): (WI.ConsoleManager.prototype.get logChannelSources): Deleted. * UserInterface/Views/LogContentView.js: (WI.LogContentView.prototype._messageAdded): 2020-10-16 Devin Rousso Web Inspector: REGRESSION(r266885): LoggingChannel.js:31:23: CONSOLE ASSERT ERROR https://bugs.webkit.org/show_bug.cgi?id=217864 Reviewed by Timothy Hatcher. r266885 changed `Console.getLoggingChannels` to return any `Console.ChannelSource` that existed, rather than a hardcoded list. Remove the similarly hardcoded list in the frontend. * UserInterface/Models/LoggingChannel.js: (WI.LoggingChannel): 2020-10-16 Devin Rousso Web Inspector: REGRESSION(r266480): line-based JavaScript breakpoint tree element titles also show the file name https://bugs.webkit.org/show_bug.cgi?id=217859 Reviewed by Timothy Hatcher. r266480 changed it such that `WI.BreakpointTreeElement` would only call `updateTitles` if the constructor was not provided a `title` while also adding a fallback for `title` in the constructor of `WI.JavaScriptBreakpointTreeElement`, ensuring that it would always be set by the time it reached `WI.BreakpointTreeElement`, meaning that `updateTitles` would never be called. Since `updateTitles` was only implemented by `WI.JavaScriptBreakpointTreeElement`, remove it from `WI.BreakpointTreeElement` and ensure that it is always called for non-special JavaScript breakpoints (in addition to whenever the `WI.SourceCodeLocation` changes). * UserInterface/Views/BreakpointTreeElement.js: (WI.BreakpointTreeElement.prototype.updateTitles): Deleted. * UserInterface/Views/JavaScriptBreakpointTreeElement.js: (WI.JavaScriptBreakpointTreeElement): (WI.JavaScriptBreakpointTreeElement.prototype._updateTitles): Added. (WI.JavaScriptBreakpointTreeElement.prototype._breakpointLocationDidChange): (WI.JavaScriptBreakpointTreeElement.prototype.updateTitles): Deleted. 2020-10-14 Devin Rousso Web Inspector: REGRESSION(r267148): new Big Sur styles are not used https://bugs.webkit.org/show_bug.cgi?id=217682 Reviewed by Brian Burg. r267148 changed `navigator.userAgent` from `11_0` to `10_15_7`. This breaks Web Inspector styling, which relied on this value to know what OS version it was running on in order to know which styles to use. * UserInterface/Base/Platform.js: * UserInterface/Views/Variables.css: (body.mac-platform): Added. (body.mac-platform:not(.sierra, .high-sierra)): Deleted. Use `InspectorFrontendHost.platformVersionName` instead of `navigator.userAgent`. Remove unnecessary platform version names and other unused data. * UserInterface/Base/Main.js: (WI.contentLoaded): (WI.undockedTitleAreaHeight): Added. * UserInterface/Views/Popover.js: (WI.Popover.prototype._update): Provide a way to get the undocked title area height for use in JavaScript calculations. * UserInterface/Controllers/HARBuilder.js: (WI.HARBuilder.creator): The `WI.Platform.version.build` hasn't changed in a long time, so just remove it. 2020-10-13 Devin Rousso Web Inspector: Sources: tab has wrong icon when paused if added after pause https://bugs.webkit.org/show_bug.cgi?id=217671 Reviewed by Brian Burg. * UserInterface/Views/SourcesTabContentView.js: (WI.SourcesTabContentView.tabInfo): 2020-10-13 Keith Rollin Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support https://bugs.webkit.org/show_bug.cgi?id=217649 Reviewed by Darin Adler. Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_ as "support for compiling WebKit against iOS SDKs". Support for the iOS part of this feature was later removed in several changes, including Bug 139212, Bug 139463 and Bug 144762. However, vestiges have remained for five or six years in the form of MACOSX_DEPLOYMENT_TARGET_macosx. The inclusion of the platform in MACOSX_DEPLOYMENT_TARGET is no longer needed and can be removed. This changes brings most projects in conformance with other projects that don't support including the platform in MACOSX_DEPLOYMENT_TARGET, including WebEditingTester, gtest, WebKitTestRunner, MiniBrowser, and TestWebKitAPI. Along the way, remove a couple of left-over references to macOS 10.16, and a couple of places where [sdk=macosx*] was still being used. With this change, initialization of MACOSX_DEPLOYMENT_TARGET should be consistent across all projects, with two exceptions: WebKitLauncher (which hardcodes it to 10.12) and libwebrtc's copy of googletest (which hardcodes it to 10.4). The reasons for these hard-coded values is not apparent, so leave them be. * Configurations/DebugRelease.xcconfig: 2020-10-12 Luming Yin [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building with Xcode 12 on macOS Big Sur SUs https://bugs.webkit.org/show_bug.cgi?id=217602 rdar://70194453 Reviewed by Darin Adler. The previous workaround turns out to be ineffective because we can't set the value of TARGET_MAC_OS_X_VERSION_MAJOR based on a previous value of itself. Introduce a new variable TARGET_MAC_OS_X_VERSION_MAJOR to determine whether we need to explicitly adjust MAC_OS_X_VERSION_MAJOR to 110000. * Configurations/DebugRelease.xcconfig: 2020-10-12 Luming Yin [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building with Xcode 12 on macOS Big Sur SUs https://bugs.webkit.org/show_bug.cgi?id=217602 rdar://70194453 Reviewed by Darin Adler. Due to a bug in Xcode (rdar://70185899), Xcode 12.0 and Xcode 12.1 Beta incorrectly includes the minor release number in MAC_OS_X_VERSION_MAJOR, which causes Debug and Release builds of WebKit to be misconfigured when building on macOS Big Sur SUs, leading to webpages failing to load. To work around the Xcode bug, when the MAC_OS_X_VERSION_MAJOR includes the minor version number, drop the minor version number by explicitly setting TARGET_MAC_OS_X_VERSION_MAJOR to 110000. Note: This change should be reverted after is resolved. * Configurations/DebugRelease.xcconfig: 2020-10-11 Luming Yin Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur or later https://bugs.webkit.org/show_bug.cgi?id=217594 rdar://70188497 Reviewed by Darin Adler. To ensure successful Mac Catalyst WebKit builds, strip the patch version from TARGET_MAC_OS_X_VERSION_MAJOR by using two `base:`s on MACOSX_DEPLOYMENT_TARGET. * Configurations/Base.xcconfig: 2020-10-11 Luming Yin Ignore deployment suffix and identifier when computing major OS version for macOS Big Sur and newer https://bugs.webkit.org/show_bug.cgi?id=217584 rdar://70168426 Reviewed by Darin Adler. Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions. Only use the deployment target base for macOS Big Sur and newer. Keep the manual definitions for legacy versions of macOS. * Configurations/Base.xcconfig: 2020-10-05 Federico Bucchi Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'error.message') https://bugs.webkit.org/show_bug.cgi?id=217232 Reviewed by Devin Rousso. Add optional chaining for error to check its existence before using error.message * UserInterface/Models/Resource.js: 2020-10-05 Devin Rousso Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'breakpoint.disabled = true') https://bugs.webkit.org/show_bug.cgi?id=217241 Reviewed by Brian Burg. * UserInterface/Controllers/DOMManager.js: (WI.DOMManager.prototype.removeBreakpointForEventListener): It's possible for there to not be a breakpoint for a given event listener. 2020-10-05 Devin Rousso Web Inspector: Sources: add a + to the Local Overrides section https://bugs.webkit.org/show_bug.cgi?id=217235 Reviewed by Brian Burg. * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype._populateCreateLocalOverrideContextMenu): Added. (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu): 2020-10-05 Devin Rousso Web Inspector: unable to create local override for resource that failed to load https://bugs.webkit.org/show_bug.cgi?id=217234 Reviewed by Brian Burg. * UserInterface/Models/Resource.js: (WI.Resource.prototype.async createLocalResourceOverride): Wrap the `WI.SourceCode.prototype.requestContent` call in a `try` in case the content is not able to be fetched. If so, determine the MIME from the URL and fall back to `""`. * UserInterface/Views/ResourceContentView.js: (WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent): (WI.ResourceContentView.prototype.async _getContentForLocalResourceOverrideFromFile): Drive-by: drop `initial` from the parameter name as it's not really necessary. * UserInterface/Views/TextResourceContentView.js: (WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Drive-by: include the `mimeType` and `base64Encoded` of the related `WI.Resource`. 2020-10-05 Devin Rousso Web Inspector: REGRESSION(?): cannot edit Event Breakpoint https://bugs.webkit.org/show_bug.cgi?id=217244 Reviewed by Brian Burg. * UserInterface/Models/EventBreakpoint.js: (WI.EventBreakpoint.get supportsEditing): (WI.EventBreakpoint.prototype.get editable): Move the specific listener breakpoint logic to the `prototype` function as `this` won't exist in the `static` function (not to mention it's not possible to create a specific listener breakpoint "at will" like it is for global event breakpoints). * UserInterface/Models/URLBreakpoint.js: (WI.URLBreakpoint.get supportsEditing): Added. (WI.URLBreakpoint.prototype.get editable): (WI.URLBreakpoint.get editable): Deleted. * UserInterface/Views/URLBreakpointPopover.js: (WI.URLBreakpointPopover.get supportsEditing): Drive-by: update naming to match `WI.EventBreakpoint`. 2020-10-05 Nikita Vasilyev Web Inspector: Make text selectable in CPU timeline content view https://bugs.webkit.org/show_bug.cgi?id=216999 Reviewed by Brian Burg. * UserInterface/Views/CPUTimelineView.css: (.timeline-view.cpu > .content > .overview .legend): * UserInterface/Views/CPUUsageCombinedView.css: (.cpu-usage-combined-view > .details): 2020-09-28 Devin Rousso Web Inspector: add checkbox to local override popover to allow it to skip the network https://bugs.webkit.org/show_bug.cgi?id=217031 Reviewed by Brian Burg. * UserInterface/Models/LocalResourceOverride.js: (WI.LocalResourceOverride): (WI.LocalResourceOverride.create): (WI.LocalResourceOverride.fromJSON): (WI.LocalResourceOverride.prototype.toJSON): (WI.LocalResourceOverride.prototype.get type): Added. (WI.LocalResourceOverride.prototype.saveIdentityToCookie): Introduce a `WI.LocalResourceOverride.Type` that is used when handling request/response interceptions to determined the `Network` command for continuing. * UserInterface/Controllers/NetworkManager.js: (WI.NetworkManager.supportsOverridingRequestsWithResponses): Added. (WI.NetworkManager.supportsOverridingResponses): Added. (WI.NetworkManager.prototype.initializeTarget): (WI.NetworkManager.prototype.addLocalResourceOverride): (WI.NetworkManager.prototype.removeLocalResourceOverride): (WI.NetworkManager.prototype.requestIntercepted): (WI.NetworkManager.prototype.responseIntercepted): (WI.NetworkManager.prototype._commandArgumentsForInterception): (WI.NetworkManager.prototype._addInterception): Added. (WI.NetworkManager.prototype._removeInterception): Added. (WI.NetworkManager.prototype._handleResourceOverrideDisabledChanged): (WI.NetworkManager.supportsLocalResourceOverrides): Deleted. Add logic for `Network.interceptRequestWithResponse` in `Network.requestIntercepted`. Drive-by: refactor common logic into member functions. * UserInterface/Views/LocalResourceOverridePopover.js: (WI.LocalResourceOverridePopover.prototype.get serializedData): (WI.LocalResourceOverridePopover.prototype.show): * UserInterface/Views/LocalResourceOverridePopover.css: (.popover .local-resource-override-popover-content .add-header + .reference-page-link-container): Added. (.popover .local-resource-override-popover-content .options td): Added. (.popover .local-resource-override-popover-content .reference-page-link-container): Deleted. Add an "Options" row containing a "[ ] Skip Network" checkbox for controlling whether `Network.interceptWithResponse` or `Network.interceptRequestWithResponse` is used. * UserInterface/Models/Resource.js: (WI.Resource.prototype.async createLocalResourceOverride): * UserInterface/Views/ContextMenuUtilities.js: (WI.appendContextMenuItemsForSourceCode): * UserInterface/Views/FontResourceContentView.js: (WI.FontResourceContentView.prototype.contentAvailable): * UserInterface/Views/ImageResourceContentView.js: (WI.ImageResourceContentView.prototype.contentAvailable): * UserInterface/Views/LocalResourceOverrideTreeElement.js: (WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover): * UserInterface/Views/OpenResourceDialog.js: (WI.OpenResourceDialog.prototype._addLocalResourceOverrides): * UserInterface/Views/ResourceContentView.js: (WI.ResourceContentView): (WI.ResourceContentView.prototype.closed): * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover): (WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride): (WI.SourcesNavigationSidebarPanel.prototype._removeResourceOverride): (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu): Rename `supportsLocalResourceOverrides` to `supportsOverridingResponses` for clarity. * Localizations/en.lproj/localizedStrings.js: 2020-09-25 Nikita Vasilyev Uncaught Exception: TypeError: null is not an object (evaluating 'this.listItemElement.classList') https://bugs.webkit.org/show_bug.cgi?id=216307 Reviewed by Brian Burg. * UserInterface/Views/DOMTreeUpdater.js: (WI.DOMTreeUpdater.prototype._updateModifiedNodes): Don't update the element if it hasn't been attached yet. It will use the latest data when attached. 2020-09-24 Nikita Vasilyev REGRESSION(r267379): Web Inspector: Sources navigation sidebar is empty every other time it's selected https://bugs.webkit.org/show_bug.cgi?id=216942 Reviewed by Brian Burg. * UserInterface/Views/Sidebar.js: (WI.Sidebar.prototype.insertSidebarPanel): insertSidebarPanel was exiting early when sidebarPanel.parentSidebar matched the current sidebar, creating a state when `this._sidebarPanels` is an empty array. 2020-09-22 Brian Burg [Cocoa] _WKInspectorDelegate should handle showing external resources https://bugs.webkit.org/show_bug.cgi?id=216334 Reviewed by Devin Rousso. Adapt to the rename of InspectorFrontendHost.{openInNewTab => openURLExternally}. * UserInterface/Base/Main.js: * UserInterface/Debug/UncaughtExceptionReporter.js: (sheetElement.innerHTML.div): * UserInterface/Protocol/InspectorFrontendAPI.js: * UserInterface/Views/ResourceTreeElement.js: (WI.ResourceTreeElement.prototype.ondblclick): 2020-09-21 Nikita Vasilyev Web Inspector: Uncaught Exception: Missing node for given nodeId https://bugs.webkit.org/show_bug.cgi?id=216067 Reviewed by Devin Rousso. * UserInterface/Views/ContentBrowserTabContentView.js: (WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels): Rewrite `showDetailsSidebarPanels` in such way that causes no more than one change of selectedSidebarPanel. Previously, `removeSidebarPanel` would cause the change of selectedSidebarPanel, resulting in showing a panel with outdated `this.domNode`. * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: Display a useful error with a relevant location instead of a generic Connection.js error. * UserInterface/Views/Sidebar.js: (WI.Sidebar.prototype.removeSidebarPanel): After removing a panel, don't select the nearest panel. There doesn't seem to be a useful case for it. The selected panel is determined at the removeSidebarPanel callsites. 2020-09-21 Patrick Angle Web Inspector: Timelines: remove "stop requested" marker https://bugs.webkit.org/show_bug.cgi?id=216423 Reviewed by Devin Rousso. Removed the "Stop Requested" timeline marker, which was made unneccesary in r267038 which makes the recording head marker stop at the moment the stop was requested, even if more time is required to complete the processing of incoming data. * UserInterface/Models/TimelineMarker.js: * UserInterface/Views/TimelineOverview.js: (WI.TimelineOverview): (WI.TimelineOverview.prototype._recordingReset): (WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged): * UserInterface/Views/TimelineRuler.css: (.timeline-ruler > .markers > .marker.current-time::after): (.timeline-ruler > .markers > .marker.stopping-time): Deleted. (.timeline-ruler > .markers > .marker:matches(.stopping-time, .current-time)::after): Deleted. (@media (prefers-color-scheme: dark) .timeline-ruler > .markers > .marker.stopping-time): Deleted. * UserInterface/Views/TimelineRuler.js: (WI.TimelineRuler.prototype.addMarker): 2020-09-14 Patrick Angle Web Inspector: Stop Recording in Timelines tab doesn't work reliably https://bugs.webkit.org/show_bug.cgi?id=216416 Reviewed by Devin Rousso. Improved UX surrounding stopping recordings. In the Frames view, the interface now shows a "Stopping Recording Timeline Data" message and disables the Stop Recording button as soon as the user has pressed the button to stop recording. For all timeline views, the Record/Continue/Stop buttons in the top-right are replaced with an indeterminate progress spinner while recording is being stopped to better indicate that all work has not completed yet. Lastly, the recording head now stops at the moment recording was stopped. After we have finished stopping the recording, the timeline is updated one more time to account for any records we receive after the moment the user requested recording to stop, instead of continously updating during the stopping phase, which made it appear that recording was instead continuing. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Main.html: Added `IndeterminateProgressSpinnerNavigationItem.css` and `IndeterminateProgressSpinnerNavigationItem.js`. * UserInterface/Views/ButtonNavigationItem.css: (.navigation-bar .item.button.image-only): * UserInterface/Views/IndeterminateProgressSpinnerNavigationItem.css: Added. (.navigation-bar .item.indeterminate-progress-spinner): (.navigation-bar .item.indeterminate-progress-spinner-item .indeterminate-progress-spinner): * UserInterface/Views/IndeterminateProgressSpinnerNavigationItem.js: Added. (WI.IndeterminateProgressSpinnerNavigationItem): * UserInterface/Views/TextNavigationItem.js: Drive-by fix for misplaced `assert`. (WI.TextNavigationItem): * UserInterface/Views/TimelineRecordingContentView.js: Don't advanced the recording head after the user requests recording to stop. (WI.TimelineRecordingContentView.prototype._updateTimes): (WI.TimelineRecordingContentView.prototype._updateTimelineViewTimes): * UserInterface/Views/TimelineRecordingProgressView.js: Listen to the TimelineManager to show different messages for Recording and Stopping, as well as disabling the Stop Recording button. (WI.TimelineRecordingProgressView): (WI.TimelineRecordingProgressView.prototype.set visible): (WI.TimelineRecordingProgressView.prototype._updateState): (WI.TimelineRecordingProgressView.prototype._handleTimelineCapturingStateChanged): * UserInterface/Views/TimelineTabContentView.js: Show a progress spinner while stopping recording. (WI.TimelineTabContentView): (WI.TimelineTabContentView.prototype._showRecordButton): (WI.TimelineTabContentView.prototype._showRecordStoppingSpinner): (WI.TimelineTabContentView.prototype._showContinueButton): (WI.TimelineTabContentView.prototype._updateNavigationBarButtons): (WI.TimelineTabContentView.prototype._handleTimelineCapturingStateChanged): * UserInterface/Views/Variables.css: New variable for navigation items with only an icon. (:root): 2020-09-14 Devin Rousso Web Inspector: docking buttons don't work when already docked if window is too small https://bugs.webkit.org/show_bug.cgi?id=216488 Reviewed by Timothy Hatcher. * UserInterface/Base/Main.js: (WI.updateDockingAvailability): (WI.updateDockedState): (WI._updateDockNavigationItems): Always be sure to update the docking navigation items when docking becomes unavailable instead of just forcing Web Inspector to undock as if Web Inspector is already undocked then none of the docking navigation items will be updated. This makes it so that the docking navigation items are hidden when docking becomes unavailable while undocked. 2020-09-12 Carlos Garcia Campos [GTK] REGRESSION(r266815): Several GTK API tests are timing out https://bugs.webkit.org/show_bug.cgi?id=216361 Reviewed by Adrian Perez de Castro. Add missing trailing ';'. * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: 2020-09-10 Devin Rousso Web Inspector: modernize generated backend protocol code https://bugs.webkit.org/show_bug.cgi?id=216302 Reviewed by Brian Burg. * UserInterface/Controllers/CSSManager.js: (WI.CSSManager.prototype.set forcedAppearance): Now that enums are processed before being passed to backend dispacher handlers, the `appearance` parameter of `Page.setForcedAppearance` must be marked `optional` as there's no way for it to accept an empty string, as that's not possible for an enum. As such, rework the frontend logic for invoking `Page.setForcedAppearance` to instead not provide an `appearance` parameter at all when wanting to "unset" it. * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createConsoleSettingsView): Now that all logging channels matching a `Console.ChannelSource` are returned instead of just the hardcoded list, check for a matching `WI.UIString` before showing a ` of group or test case] [ for name] (?) * UserInterface/Views/Main.css: (.navigation-item-help > .navigation-bar): (.message-text-view > .navigation-item-help + .navigation-item-help): Added. Add styles for when multiple navigation help items are used in the same message text view. * UserInterface/Views/Variables.css: (:root): (@media (prefers-color-scheme: dark) :root): Add `--filter-invert` to light mode too. * UserInterface/Base/Utilities.js: (HTMLInputElement.prototype.autosize): * UserInterface/Views/CanvasOverviewContentView.js: (WI.CanvasOverviewContentView): (WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize): (WI.CanvasOverviewContentView.get recordingAutoCaptureInputMargin): Deleted. * UserInterface/Views/CanvasOverviewContentView.css: (.navigation-bar > .item.canvas-recording-auto-capture > label > input): (.navigation-bar > .item.canvas-recording-auto-capture > label > input::-webkit-inner-spin-button): Deleted. Create a helper function for autosizing an ``. * UserInterface/Views/AuditTabContentView.js: (WI.AuditTabContentView): (WI.AuditTabContentView.prototype.initialLayout): Remove the back/foward arrows as they can get into an inconsistent state when editing. Drive-by: update the drop zone text for clarity. * UserInterface/Views/SearchSidebarPanel.js: (WI.SearchSidebarPanel.prototype.showDefaultContentView): Drive-by: add period to help text. * UserInterface/Main.html: * Localizations/en.lproj/localizedStrings.js: 2020-08-27 Carlos Garcia Campos [GTK] Include the run loop source name in frame rendering timeline https://bugs.webkit.org/show_bug.cgi?id=215847 Reviewed by Adrian Perez de Castro. Show the frame name if present in timeline panel. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype._processRecord): * UserInterface/Models/RenderingFrameTimelineRecord.js: (WI.RenderingFrameTimelineRecord): (WI.RenderingFrameTimelineRecord.prototype.get name): * UserInterface/Views/TimelineTabContentView.js: (WI.TimelineTabContentView.displayNameForRecord): 2020-08-26 Brian Burg Web Inspector: button for Inspector^2 doesn't work without setting default for DeveloperExtrasEnabled https://bugs.webkit.org/show_bug.cgi?id=215828 Reviewed by Devin Rousso. Drive-by: because the Inspector^2 button is text-only and has no .name element, the '2' button does not become dimmed when the window is inactive, unlike every other item in the tab bar. Fix this by coloring the text-only button similar to tab labels. * UserInterface/Debug/Bootstrap.css: (body.window-inactive .tab-bar > .navigation-bar .item.button.text-only): (.tab-bar > .navigation-bar .item.button.text-only): (.tab-bar > .navigation-bar .item.button.text-only:not(.selected):hover): (.tab-bar > .navigation-bar .item.button.text-only:not(.disabled).selected): (body.window-inactive .tab-bar > .navigation-bar .item.button.text-only:not(.disabled).selected >): 2020-08-26 Devin Rousso Web Inspector: REGRESSION(r266074): cannot edit JavaScript breakpoints https://bugs.webkit.org/show_bug.cgi?id=215860 Reviewed by Brian Burg. * UserInterface/Models/JavaScriptBreakpoint.js: (WI.JavaScriptBreakpoint.prototype.get editable): 2020-08-24 Devin Rousso Web Inspector: remove legacy code for replacing the Resources Tab and Debugger Tab with the Sources Tab https://bugs.webkit.org/show_bug.cgi?id=205826 Reviewed by Joseph Pecoraro. * UserInterface/Base/Main.js: (WI.loaded): 2020-08-24 Devin Rousso Web Inspector: allow event breakpoints to be configured https://bugs.webkit.org/show_bug.cgi?id=215362 Reviewed by Brian Burg. This allows developers to do things like: - only pause when `window.event.type` is a certain value - ignore the first N pauses - evaluate JavaScript whenever an event listener is invoked without pausing * UserInterface/Models/Breakpoint.js: (WI.Breakpoint): (WI.Breakpoint.prototype.toJSON): (WI.Breakpoint.prototype.get special): Added. (WI.Breakpoint.prototype.get removable): Added. (WI.Breakpoint.prototype.get editable): Added. (WI.Breakpoint.prototype.set condition): (WI.Breakpoint.prototype.get ignoreCount): (WI.Breakpoint.prototype.set ignoreCount): (WI.Breakpoint.prototype.get autoContinue): (WI.Breakpoint.prototype.set autoContinue): (WI.Breakpoint.prototype.get actions): (WI.Breakpoint.prototype.get probeActions): (WI.Breakpoint.prototype.cycleToNextMode): (WI.Breakpoint.prototype.createAction): (WI.Breakpoint.prototype.recreateAction): (WI.Breakpoint.prototype.removeAction): (WI.Breakpoint.prototype.clearActions): (WI.Breakpoint.prototype.remove): Added. (WI.Breakpoint.prototype.optionsToProtocol): Added. (WI.Breakpoint.prototype.breakpointActionDidChange): (WI.Breakpoint.fromJSON): Deleted. (WI.Breakpoint.prototype.get sourceCodeLocation): Deleted. (WI.Breakpoint.prototype.get contentIdentifier): Deleted. (WI.Breakpoint.prototype.get scriptIdentifier): Deleted. (WI.Breakpoint.prototype.get target): Deleted. (WI.Breakpoint.prototype.get identifier): Deleted. (WI.Breakpoint.prototype.set identifier): Deleted. (WI.Breakpoint.prototype.get resolved): Deleted. (WI.Breakpoint.prototype.set resolved): Deleted. (WI.Breakpoint.prototype.saveIdentityToCookie): Deleted. (WI.Breakpoint.prototype._isSpecial): Deleted. (WI.Breakpoint.prototype._sourceCodeLocationLocationChanged): Deleted. (WI.Breakpoint.prototype._sourceCodeLocationDisplayLocationChanged): Deleted. * UserInterface/Models/DOMBreakpoint.js: (WI.DOMBreakpoint): (WI.DOMBreakpoint.fromJSON): Added. (WI.DOMBreakpoint.prototype.remove): Added. (WI.DOMBreakpoint.prototype.toJSON): (WI.DOMBreakpoint.deserialize): Deleted. (WI.DOMBreakpoint.prototype.get disabled): Deleted. (WI.DOMBreakpoint.prototype.set disabled): Deleted. * UserInterface/Models/EventBreakpoint.js: (WI.EventBreakpoint): (WI.EventBreakpoint.fromJSON): Added. (WI.EventBreakpoint.prototype.get special): Added. (WI.EventBreakpoint.prototype.get editable): Added. (WI.EventBreakpoint.prototype.remove): Added. (WI.EventBreakpoint.prototype.saveIdentityToCookie): (WI.EventBreakpoint.prototype.toJSON): (WI.EventBreakpoint.deserialize): Deleted. (WI.EventBreakpoint.prototype.get disabled): Deleted. (WI.EventBreakpoint.prototype.set disabled): Deleted. * UserInterface/Models/JavaScriptBreakpoint.js: Copied from UserInterface/Models/Breakpoint.js. (WI.JavaScriptBreakpoint): (WI.JavaScriptBreakpoint.fromJSON): (WI.JavaScriptBreakpoint.prototype.toJSON): (WI.JavaScriptBreakpoint.prototype.get sourceCodeLocation): (WI.JavaScriptBreakpoint.prototype.get contentIdentifier): (WI.JavaScriptBreakpoint.prototype.get scriptIdentifier): (WI.JavaScriptBreakpoint.prototype.get target): (WI.JavaScriptBreakpoint.prototype.get special): Added. (WI.JavaScriptBreakpoint.prototype.get removable): Added. (WI.JavaScriptBreakpoint.prototype.get editable): Added. (WI.JavaScriptBreakpoint.prototype.get identifier): (WI.JavaScriptBreakpoint.prototype.set identifier): (WI.JavaScriptBreakpoint.prototype.get resolved): (WI.JavaScriptBreakpoint.prototype.set resolved): (WI.JavaScriptBreakpoint.prototype.remove): Added. (WI.JavaScriptBreakpoint.prototype.saveIdentityToCookie): (WI.JavaScriptBreakpoint.prototype._isSpecial): (WI.JavaScriptBreakpoint.prototype._sourceCodeLocationLocationChanged): (WI.JavaScriptBreakpoint.prototype._sourceCodeLocationDisplayLocationChanged): * UserInterface/Models/URLBreakpoint.js: (WI.URLBreakpoint): (WI.URLBreakpoint.fromJSON): Added. (WI.URLBreakpoint.prototype.get special): Added. (WI.URLBreakpoint.prototype.remove): Added. (WI.URLBreakpoint.prototype.toJSON): (WI.URLBreakpoint.deserialize): Deleted. (WI.URLBreakpoint.prototype.get disabled): Deleted. (WI.URLBreakpoint.prototype.set disabled): Deleted. Rename `WI.Breakpoint` to `WI.JavaScriptBreakpoint` and use `WI.Breakpoint` as a new common base class for all breakpoint types, allowing more logic to be shared (e.g. disabled state). Additionally, breakpoints are now able to - determine whether or not they're - special - removable - editable (i.e. configurable) - remove themselves without the caller needing to know what manager to consult with. * UserInterface/Controllers/DOMManager.js: (WI.DOMManager): (WI.DOMManager.supportsEventListenerBreakpointConfiguration): Added. (WI.DOMManager.prototype.setBreakpointForEventListener): (WI.DOMManager.prototype.removeBreakpointForEventListener): (WI.DOMManager.prototype._setEventBreakpoint): Added. (WI.DOMManager.prototype._removeEventBreakpoint): Added. (WI.DOMManager.prototype._handleEventBreakpointEditablePropertyChanged): Added. (WI.DOMManager.prototype._handleEventBreakpointActionsChanged): Added. (WI.DOMManager.prototype._updateEventBreakpoint): Deleted. Keep track of configuration changes for specific listener breakpoints. * UserInterface/Controllers/DOMDebuggerManager.js: (WI.DOMDebuggerManager): (WI.DOMDebuggerManager.prototype.initializeTarget): (WI.DOMDebuggerManager.prototype.addDOMBreakpoint): (WI.DOMDebuggerManager.prototype.removeDOMBreakpoint): (WI.DOMDebuggerManager.prototype.addEventBreakpoint): (WI.DOMDebuggerManager.prototype.removeEventBreakpoint): (WI.DOMDebuggerManager.prototype.addURLBreakpoint): (WI.DOMDebuggerManager.prototype.removeURLBreakpoint): (WI.DOMDebuggerManager.prototype._commandArgumentsForEventBreakpoint): Added. (WI.DOMDebuggerManager.prototype._setEventBreakpoint): Added. (WI.DOMDebuggerManager.prototype._removeEventBreakpoint): Added. (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): Added. (WI.DOMDebuggerManager.prototype._handleEventBreakpointEditablePropertyChanged): Added. (WI.DOMDebuggerManager.prototype._handleEventBreakpointActionsChanged): Added. (WI.DOMDebuggerManager.prototype.isBreakpointSpecial): Deleted. (WI.DOMDebuggerManager.prototype._updateEventBreakpoint): Deleted. Keep track of configuration changes for special event breakpoints. Store special event breakpoints inside `WI.objectStores.eventBreakpoints`. * UserInterface/Controllers/DebuggerManager.js: (WI.DebuggerManager): (WI.DebuggerManager.prototype.addBreakpoint): (WI.DebuggerManager.prototype.removeBreakpoint): (WI.DebuggerManager.prototype.addProbesForBreakpoint): Added. (WI.DebuggerManager.prototype.removeProbesForBreakpoint): Added. (WI.DebuggerManager.prototype.updateProbesForBreakpoint): Added. (WI.DebuggerManager.prototype._setBreakpoint): (WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange): (WI.DebuggerManager.prototype._handleBreakpointActionsDidChange): (WI.DebuggerManager.prototype.isBreakpointRemovable): Deleted. (WI.DebuggerManager.prototype.isBreakpointSpecial): Deleted. (WI.DebuggerManager.prototype.isBreakpointEditable): Deleted. (WI.DebuggerManager.prototype._debuggerBreakpointActionType): Deleted. (WI.DebuggerManager.prototype._debuggerBreakpointOptions): Deleted. (WI.DebuggerManager.prototype._addProbesForBreakpoint): Deleted. (WI.DebuggerManager.prototype._removeProbesForBreakpoint): Deleted. (WI.DebuggerManager.prototype._updateProbesForBreakpoint): Deleted. Replace `WI.Breakpoint` with `WI.JavaScriptBreakpoint`. Probes now support `WI.EventBreakpoint` in addition to `WI.JavaScriptBreakpoint`. * UserInterface/Controllers/BreakpointPopoverController.js: (WI.BreakpointPopoverController.prototype.appendContextMenuItems): (WI.BreakpointPopoverController.prototype._createPopoverContent): Allow any breakpoint instead of only `WI.JavaScriptBreakpoint`. Drive-by: the existing `ignoreCount` value wasn't being used to populate the ``. * UserInterface/Views/BreakpointTreeElement.js: (WI.BreakpointTreeElement.prototype.ondelete): (WI.BreakpointTreeElement.prototype.get listenerSet): Added. (WI.BreakpointTreeElement.prototype.updateStatus): Added. (WI.BreakpointTreeElement.prototype.updateTitles): Added. (WI.BreakpointTreeElement.prototype.get breakpoint): Deleted. (WI.BreakpointTreeElement.prototype.get filterableData): Deleted. (WI.BreakpointTreeElement.prototype._updateTitles): Deleted. (WI.BreakpointTreeElement.prototype._updateStatus): Deleted. (WI.BreakpointTreeElement.prototype._breakpointLocationDidChange): Deleted. * UserInterface/Views/BreakpointTreeElement.css: (.item.breakpoint .status > .status-image): (.item.breakpoint.paused .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.paused .icon): Added. (.item.breakpoint .status > .status-image.resolved): Deleted. (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.breakpoint.selected .status > .status-image.resolved): Deleted. (.item.breakpoint .subtitle.formatted-location): Deleted. (.breakpoint-debugger-statement-icon .icon): Deleted. (.breakpoint-exception-icon .icon): Deleted. (.breakpoint-assertion-icon .icon): Deleted. (.breakpoint-microtask-icon .icon): Deleted. (.breakpoint-paused-icon .icon): Deleted. (.breakpoint-generic-line-icon .icon): Deleted. (.breakpoint-generic-line-icon .icon > span): Deleted. (.data-updated.breakpoint-generic-line-icon .icon > span): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-debugger-statement-icon .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-exception-icon .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-assertion-icon .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-microtask-icon .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-paused-icon .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint-generic-line-icon .icon): Deleted. * UserInterface/Views/DOMBreakpointTreeElement.js: (WI.DOMBreakpointTreeElement): (WI.DOMBreakpointTreeElement.prototype.onattach): Deleted. (WI.DOMBreakpointTreeElement.prototype.ondetach): Deleted. (WI.DOMBreakpointTreeElement.prototype.ondelete): Deleted. (WI.DOMBreakpointTreeElement.prototype.onenter): Deleted. (WI.DOMBreakpointTreeElement.prototype.onspace): Deleted. (WI.DOMBreakpointTreeElement.prototype.populateContextMenu): Deleted. (WI.DOMBreakpointTreeElement.prototype._statusImageElementClicked): Deleted. (WI.DOMBreakpointTreeElement.prototype._statusImageElementFocused): Deleted. (WI.DOMBreakpointTreeElement.prototype._statusImageElementMouseDown): Deleted. (WI.DOMBreakpointTreeElement.prototype._toggleBreakpoint): Deleted. (WI.DOMBreakpointTreeElement.prototype._updateStatus): Deleted. * UserInterface/Views/DOMBreakpointTreeElement.css: (.item.breakpoint.dom.subtree-modified:not(.paused) .icon): Added. (.item.breakpoint.dom.attribute-modified:not(.paused) .icon): Added. (.item.breakpoint.dom.node-removed:not(.paused) .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.dom.subtree-modified:not(.paused) .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.dom.attribute-modified:not(.paused) .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.dom.node-removed:not(.paused) .icon): Added. (.breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon): Deleted. (.breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon): Deleted. (.breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon): Deleted. * UserInterface/Views/EventBreakpointTreeElement.js: (WI.EventBreakpointTreeElement): (WI.EventBreakpointTreeElement.prototype.onattach): Deleted. (WI.EventBreakpointTreeElement.prototype.ondetach): Deleted. (WI.EventBreakpointTreeElement.prototype.ondelete): Deleted. (WI.EventBreakpointTreeElement.prototype.onenter): Deleted. (WI.EventBreakpointTreeElement.prototype.onspace): Deleted. (WI.EventBreakpointTreeElement.prototype.populateContextMenu): Deleted. (WI.EventBreakpointTreeElement.prototype._statusImageElementClicked): Deleted. (WI.EventBreakpointTreeElement.prototype._statusImageElementFocused): Deleted. (WI.EventBreakpointTreeElement.prototype._statusImageElementMouseDown): Deleted. (WI.EventBreakpointTreeElement.prototype._toggleBreakpoint): Deleted. (WI.EventBreakpointTreeElement.prototype._updateStatus): Deleted. * UserInterface/Views/EventBreakpointTreeElement.css: (.item.breakpoint.event.animation-frame:not(.paused) .icon): Added. (.item.breakpoint.event.interval:not(.paused) .icon): Added. (.item.breakpoint.event.listener:not(.paused) .icon): Added. (.item.breakpoint.event.timeout:not(.paused) .icon): Added. (@media(prefers-color-scheme: dark) .item.breakpoint.event.animation-frame:not(.paused) .icon): Added. (@media(prefers-color-scheme: dark) .item.breakpoint.event.interval:not(.paused) .icon): Added. (@media(prefers-color-scheme: dark) .item.breakpoint.event.listener:not(.paused) .icon): Added. (@media(prefers-color-scheme: dark) .item.breakpoint.event.timeout:not(.paused) .icon): Added. (.breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon): Deleted. (.breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon): Deleted. (.breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon): Deleted. (.breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon): Deleted. (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon): Deleted. (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon): Deleted. (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon): Deleted. (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon): Deleted. * UserInterface/Views/JavaScriptBreakpointTreeElement.js: Copied from Source/WebInspectorUI/UserInterface/Views/BreakpointTreeElement.js. (WI.JavaScriptBreakpointTreeElement): (WI.JavaScriptBreakpointTreeElement.prototype.get filterableData): (WI.JavaScriptBreakpointTreeElement.prototype.updateStatus): Added. (WI.JavaScriptBreakpointTreeElement.prototype.updateTitles): Added. (WI.JavaScriptBreakpointTreeElement.prototype._breakpointLocationDidChange): * UserInterface/Views/JavaScriptBreakpointTreeElement.css: Copied from Source/WebInspectorUI/UserInterface/Views/BreakpointTreeElement.css. (.item.breakpoint.javascript .status > .status-image): Added. (.item.breakpoint.javascript .status > .status-image.resolved): Added. (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.breakpoint.javascript.selected .status > .status-image.resolved): Added. (.item.breakpoint.javascript .subtitle.formatted-location): Added. (.item.breakpoint.javascript.line .icon): Added. (.item.breakpoint.javascript.line .icon > span): Added. (.data-updated.item.breakpoint.javascript.line .icon > span): Added. (.item.breakpoint.javascript.debugger-statement .icon): Added. (.item.breakpoint.javascript.exception .icon): Added. (.item.breakpoint.javascript.assertion .icon): Added. (.item.breakpoint.javascript.microtask .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.javascript.line .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.javascript.debugger-statement .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.javascript.exception .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.javascript.assertion .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.javascript.microtask .icon): Added. * UserInterface/Views/URLBreakpointTreeElement.js: (WI.URLBreakpointTreeElement): (WI.URLBreakpointTreeElement.prototype.onattach): Deleted. (WI.URLBreakpointTreeElement.prototype.ondetach): Deleted. (WI.URLBreakpointTreeElement.prototype.ondelete): Deleted. (WI.URLBreakpointTreeElement.prototype.onenter): Deleted. (WI.URLBreakpointTreeElement.prototype.onspace): Deleted. (WI.URLBreakpointTreeElement.prototype.populateContextMenu): Deleted. (WI.URLBreakpointTreeElement.prototype._statusImageElementClicked): Deleted. (WI.URLBreakpointTreeElement.prototype._statusImageElementFocused): Deleted. (WI.URLBreakpointTreeElement.prototype._statusImageElementMouseDown): Deleted. (WI.URLBreakpointTreeElement.prototype._toggleBreakpoint): Deleted. (WI.URLBreakpointTreeElement.prototype._updateStatus): Deleted. * UserInterface/Views/URLBreakpointTreeElement.css: (.item.breakpoint.url .subtitle): Added. (.item.breakpoint.url:not(.paused) .icon): Added. (@media (prefers-color-scheme: dark) .item.breakpoint.url:not(.paused) .icon): Added. (.breakpoint.url .subtitle): Deleted. (.breakpoint.url:not(.breakpoint-paused-icon) .icon): Deleted. (@media (prefers-color-scheme: dark) .breakpoint.url:not(.breakpoint-paused-icon) .icon): Deleted. Rename `WI.BreakpointTreeElement` to `WI.JavaScriptBreakpointTreeElement` and use `WI.BreakpointTreeElement` as a new common base class for all breakpoint tree elements, allowing more logic and styles to be shared (e.g. disabled state). * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype.closed): (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement): (WI.SourcesNavigationSidebarPanel.prototype._compareJavaScriptBreakpointTreeElements): Added. (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint): (WI.SourcesNavigationSidebarPanel.prototype._removeAllBreakpoints): (WI.SourcesNavigationSidebarPanel.prototype._breakpointsBeneathTreeElement): (WI.SourcesNavigationSidebarPanel.prototype._addIssue): (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu.addToggleForSpecialEventBreakpoint): (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange): (WI.SourcesNavigationSidebarPanel.prototype._compareBreakpointTreeElements): Deleted. * UserInterface/Models/ProbeSet.js: (WI.ProbeSet): (WI.ProbeSet.prototype.createProbe): (WI.ProbeSet.prototype.willRemove): * UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype._processRecord): * UserInterface/Views/ProbeSetDetailsSection.js: (WI.ProbeSetDetailsSection): * UserInterface/Views/ProbeDetailsSidebarPanel.js: (WI.ProbeDetailsSidebarPanel.prototype.inspect): * UserInterface/Views/SourceCodeTextEditor.js: (WI.SourceCodeTextEditor): (WI.SourceCodeTextEditor.prototype.close): (WI.SourceCodeTextEditor.prototype.textEditorBreakpointAdded): * UserInterface/Views/TextResourceContentView.js: (WI.TextResourceContentView.prototype.get supplementalRepresentedObjects): (WI.TextResourceContentView.prototype._probeSetsChanged): Probes now support `WI.EventBreakpoint` in addition to `WI.JavaScriptBreakpoint`. * UserInterface/Views/ContentView.js: (WI.ContentView.createFromRepresentedObject): (WI.ContentView.resolvedRepresentedObjectForRepresentedObject): (WI.ContentView.isViewable): * UserInterface/Views/ContextMenuUtilities.js: (WI.appendContextMenuItemsForSourceCode): Replace `WI.Breakpoint` with `WI.JavaScriptBreakpoint`. * UserInterface/Views/DOMTreeContentView.js: (WI.DOMTreeContentView): Replace `WI.DOMBreakpoint` with `WI.Breakpoint`. * UserInterface/Views/EventListenerSectionGroup.js: (WI.EventListenerSectionGroup): * UserInterface/Views/EventListenerSectionGroup.css: (.event-listener-section > .content input[type="checkbox"] + .go-to-arrow): Added. (.event-listener-section > .content input[type="checkbox"]:not(:checked) + .go-to-arrow): Added. Add a go-to arrow next to the Breakpoint checkbox that reveals the `WI.EventBreakpoint` in the Sources Tab. * UserInterface/Views/BreakpointActionView.js: (WI.BreakpointActionView.prototype._appendActionButtonClicked): Drive-by: minor code cleanup. * UserInterface/Views/CallFrameTreeElement.js: (WI.CallFrameTreeElement.prototype.populateContextMenu): Drive-by: include source code location context menu items. * UserInterface/Base/Setting.js: * UserInterface/Main.html: * UserInterface/Test.html: 2020-08-24 Devin Rousso Web Inspector: remove "extra domains" concept now that domains can be added based on the debuggable type https://bugs.webkit.org/show_bug.cgi?id=201150 Reviewed by Brian Burg. * UserInterface/Base/Object.js: * UserInterface/Protocol/InspectorObserver.js: (WI.InspectorObserver.prototype.activateExtraDomains): * UserInterface/Protocol/Target.js: (WI.Target.prototype.activateExtraDomain): * UserInterface/Controllers/AppController.js: (WI.AppController.prototype.activateExtraDomains): * UserInterface/Controllers/AnimationManager.js: (WI.AnimationManager.prototype.activateExtraDomain): * UserInterface/Controllers/ApplicationCacheManager.js: (WI.ApplicationCacheManager.prototype.activateExtraDomain): * UserInterface/Controllers/CanvasManager.js: (WI.CanvasManager.prototype.activateExtraDomain): * UserInterface/Controllers/DOMStorageManager.js: (WI.DOMStorageManager.prototype.activateExtraDomain): * UserInterface/Controllers/DatabaseManager.js: (WI.DatabaseManager.prototype.activateExtraDomain): * UserInterface/Controllers/HeapManager.js: (WI.HeapManager.prototype.activateExtraDomain): * UserInterface/Controllers/IndexedDBManager.js: (WI.IndexedDBManager.prototype.activateExtraDomain): * UserInterface/Controllers/MemoryManager.js: (WI.MemoryManager.prototype.activateExtraDomain): * UserInterface/Controllers/NetworkManager.js: (WI.NetworkManager.prototype._extraDomainsActivated): * UserInterface/Controllers/TimelineManager.js: (WI.TimelineManager.prototype.activateExtraDomain): * UserInterface/Base/Main.js: (WI.activateExtraDomains): * UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel): (WI.SourcesNavigationSidebarPanel.prototype._handleExtraDomainsActivated): Add compatibility comments. * UserInterface/Protocol/InspectorBackend.js: (InspectorBackendClass): (InspectorBackend.Domain): Add FIXMEs. 2020-08-24 Devin Rousso Web Inspector: remove legacy code for replacing the Canvas Tab with the Graphics Tab https://bugs.webkit.org/show_bug.cgi?id=205827 Reviewed by Joseph Pecoraro. * UserInterface/Base/Main.js: (WI.loaded): 2020-08-24 Devin Rousso Web Inspector: Elements: Styles: don't show swatches for properties that aren't used/apply https://bugs.webkit.org/show_bug.cgi?id=215681 Reviewed by Brian Burg. * UserInterface/Views/SpreadsheetStyleProperty.js: (WI.SpreadsheetStyleProperty.prototype._renderValue): 2020-08-24 Devin Rousso Web Inspector: Elements: Styles: don't show non-inherited properties https://bugs.webkit.org/show_bug.cgi?id=215682 Reviewed by Brian Burg. * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get propertiesToRender): 2020-08-24 Devin Rousso Web Inspector: Elements: Styles: grey out properties that aren't used/apply https://bugs.webkit.org/show_bug.cgi?id=215680 Reviewed by Brian Burg. * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .name:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .name:not(:hover, .editing)): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(:hover, .editing)): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled):is(.invalid-name, .invalid-value, .other-vendor, .overridden) > .content > .name:not(.editing), body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled):is(.invalid-name, .invalid-value, .other-vendor, .overridden) > .content > .value-container > .value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled):is(.invalid-name, .invalid-value, .other-vendor, .overridden) > .content > .name:not(:hover, .editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled):is(.invalid-name, .invalid-value, .other-vendor, .overridden) > .content > .value-container > .value:not(:hover, .editing)): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(.editing) .token-link, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(:hover, .editing) .token-link): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(.editing) .token-string, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(:hover, .editing) .token-string): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(.editing) .token-comment, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled, .invalid-name, .invalid-value, .other-vendor, .overridden) > .content .value:not(:hover, .editing) .token-comment): Added. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .name:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .name:not(:hover, .editing)): Deleted. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(:hover, .editing)): Deleted. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(.editing) .token-link, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(:hover, .editing) .token-link): Deleted. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(.editing) .token-string, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(:hover, .editing) .token-string): Deleted. (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(.editing) .token-comment, body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:not(.disabled) > .content .value:not(:hover, .editing) .token-comment): Deleted. Add additional `:not`s to existing rules to ensure that they don't conflict with a new rule that changes the color of the `.name`/`.value` to grey when the property is not applied/used. 2020-08-14 Devin Rousso Web Inspector: Assertion Failed: Appended a string with newlines. This breaks the source map. https://bugs.webkit.org/show_bug.cgi?id=215494 Reviewed by Joseph Pecoraro. * UserInterface/Workers/Formatter/JSFormatter.js: (JSFormatter.prototype._insertComment): C-style comments can contain newlines, so use `appendStringWithPossibleNewlines`. 2020-08-14 Devin Rousso Web Inspector: Assertion Failed: removeEventListener cannot remove css-manager-style-sheet-added because it doesn't exist. https://bugs.webkit.org/show_bug.cgi?id=215495 Reviewed by Joseph Pecoraro. * UserInterface/Views/FrameTreeElement.js: (WI.FrameTreeElement.prototype.ondetach): Check `this.listItemElement`, which is equivalent to `WI.View.prototype.didInitialLayout` for `WI.TreeElement`. 2020-08-14 Devin Rousso Web Inspector: Assertion Failed: removeEventListener cannot remove frame-main-resource-did-change because it doesn't exist. https://bugs.webkit.org/show_bug.cgi?id=215496 Reviewed by Joseph Pecoraro. * UserInterface/Views/ChangesDetailsSidebarPanel.js: (WI.ChangesDetailsSidebarPanel.prototype.shown): (WI.ChangesDetailsSidebarPanel.prototype.attached): Added. (WI.ChangesDetailsSidebarPanel.prototype.detached): Move event listener to `attach`, which is guaranteed to be called before `detach`. 2020-08-14 Devin Rousso Web Inspector: use `WI.DropZoneView` instead of `handleFileDrop` https://bugs.webkit.org/show_bug.cgi?id=215493 Reviewed by Joseph Pecoraro. `WI.DropZoneView` indicates that things can be dropped, whereas `handleFileDrop` has no UI. * UserInterface/Base/Main.js: (WI.contentLoaded): (WI._handleDrop): Deleted. * UserInterface/Views/AuditTabContentView.js: (WI.AuditTabContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.AuditTabContentView.prototype.dropZoneHandleDrop): Added. (WI.AuditTabContentView.prototype.initialLayout): (WI.AuditTabContentView.prototype.async handleFileDrop): Deleted. * UserInterface/Views/GraphicsTabContentView.js: (WI.GraphicsTabContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.GraphicsTabContentView.prototype.dropZoneHandleDrop): Added. (WI.GraphicsTabContentView.prototype.initialLayout): (WI.GraphicsTabContentView.prototype.async handleFileDrop): Deleted. * UserInterface/Views/NetworkTabContentView.js: (WI.NetworkTabContentView.prototype.initialLayout): (WI.NetworkTabContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.NetworkTabContentView.prototype.dropZoneHandleDrop): Added. (WI.NetworkTabContentView.prototype.async handleFileDrop): Deleted. * UserInterface/Views/TimelineTabContentView.js: (WI.TimelineTabContentView.prototype.dropZoneShouldAppearForDragEvent): Added. (WI.TimelineTabContentView.prototype.dropZoneHandleDrop): Added. (WI.TimelineTabContentView.prototype.initialLayout): (WI.TimelineTabContentView.prototype.async handleFileDrop): Deleted. * UserInterface/Views/GraphicsOverviewContentView.js: (WI.GraphicsOverviewContentView.prototype.initialLayout): (WI.GraphicsOverviewContentView.prototype.dropZoneShouldAppearForDragEvent): Deleted. (WI.GraphicsOverviewContentView.prototype.dropZoneHandleDrop): Deleted. Remove this `WI.DropZoneView` as it's now handled by `WI.GraphicsTabContentView`. * Localizations/en.lproj/localizedStrings.js: 2020-08-14 Patrick Angle Web Inspector: add aria-label for [>>] overflow tab picker https://bugs.webkit.org/show_bug.cgi?id=215342 Reviewed by Devin Rousso. * UserInterface/Views/TabBar.js: Moved title for `tabPickerTabBarItem` to `title` attribute instead of the unused `displayName` argument (WI.TabBar): 2020-08-14 Patrick Angle REGRESSION (r265224): Web Inspector: LOCALIZED STRING NOT FOUND next to the Image checkbox in the Sources prefs panel https://bugs.webkit.org/show_bug.cgi?id=215387 Reviewed by Devin Rousso. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Base/LoadLocalizedStrings.js: (WI.repeatedUIString.showTransparencyGridTooltip): * UserInterface/Views/CanvasContentView.js: (WI.CanvasContentView): * UserInterface/Views/GraphicsOverviewContentView.js: (WI.GraphicsOverviewContentView): * UserInterface/Views/ImageResourceContentView.js: * UserInterface/Views/RecordingContentView.js: (WI.RecordingContentView): * UserInterface/Views/ResourceCollectionContentView.js: (WI.ResourceCollectionContentView): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createSourcesSettingsView): 2020-08-12 Devin Rousso Web Inspector: REGRESSION(r259170): text inputs in box-shadow editor push sliders offscreen https://bugs.webkit.org/show_bug.cgi?id=215436 Reviewed by Darin Adler. * UserInterface/Views/BoxShadowEditor.js: (WI.BoxShadowEditor.createInputRow): Make sure the inputs are `type="text"` so that CSS is able to distinguish them from sliders. 2020-08-11 Nikita Vasilyev Web Inspector: Clicking on sortable Table headers should expand vertical borders https://bugs.webkit.org/show_bug.cgi?id=215140 Reviewed by Devin Rousso. * UserInterface/Views/Table.css: (.table > .header .cell:not(:first-child):active::before,): 2020-08-11 Nikita Vasilyev Web Inspector: Dark Mode: Timelines: wrong background colors of even/odd items https://bugs.webkit.org/show_bug.cgi?id=214565 Reviewed by Darin Adler. * UserInterface/Views/TimelineOverview.css: (.timeline-overview.edit-instruments > .tree-outline.timelines .item:nth-child(even),): (.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:not(:first-child)): 2020-08-06 Nikita Vasilyev Web Inspector: Media & Animations timeline shouldn't shift when sorting https://bugs.webkit.org/show_bug.cgi?id=215085 Reviewed by Devin Rousso. * UserInterface/Views/DataGrid.css: (.data-grid): (.data-grid th): (.data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): * UserInterface/Views/TimelineDataGrid.css: (.data-grid.timeline th.graph-column > .timeline-ruler): Override padding defined in `.data-grid th > .header-cell-content`. (.data-grid.timeline th > .header-cell-content.timeline-ruler > .markers): (.data-grid.timeline th:matches(.sort-ascending, .sort-descending) > .header-cell-content.timeline-ruler:first-child::after): `.header-cell-content.timeline-ruler` is different from `.header-cell-content` in the sense that the former takes the entire height of DataGrid and has no padding. Place the chevron in the middle of `--data-grid-header-height`. 2020-08-05 Tim Horton Remove all references to non-existent 10.16 https://bugs.webkit.org/show_bug.cgi?id=215202 Reviewed by Wenson Hsieh. * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: 2020-08-04 Nikita Vasilyev Web Inspector: Use border-inline-start/end properties instead of border-left/right for DataGrid and Table https://bugs.webkit.org/show_bug.cgi?id=215138 Reviewed by Devin Rousso. Simplify LTR/RTL CSS code by using logical CSS properties. This patch doesn't introduce any visual changes. * UserInterface/Views/DataGrid.css: (.data-grid): (.data-grid th:not(:last-child) > .header-cell-content): (.data-grid:focus tr.selected td:not(:last-child)): (body[dir=ltr] .data-grid th:not(:last-child) > .header-cell-content): Deleted. (body[dir=rtl] .data-grid th:not(:last-child) > .header-cell-content): Deleted. (body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)): Deleted. (body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)): Deleted. * UserInterface/Views/NetworkDetailView.css: (.network-table.showing-detail .network-detail): (body[dir=ltr] .network-table.showing-detail .network-detail): Deleted. (body[dir=rtl] .network-table.showing-detail .network-detail): Deleted. * UserInterface/Views/TimelineDataGrid.css: (.data-grid.timeline td.graph-column): (body[dir=ltr] .data-grid.timeline td.graph-column): Deleted. (body[dir=rtl] .data-grid.timeline td.graph-column): Deleted. 2020-08-03 Nikita Vasilyev Web Inspector: Change DataGrid and Table styles to closer match macOS https://bugs.webkit.org/show_bug.cgi?id=214563 Reviewed by Devin Rousso. - Remove vertical borders from table contents and only keep them on the table headers. - Use 1px borders instead of hairline (0.5px) borders to closer match macOS. - Refactoring: add "sorted" CSS class on sorted header columns to replace `th:matches(.sort-ascending, .sort-descending)` that is used 10 times with `.sorted`. * UserInterface/Views/CPUTimelineView.css: (.timeline-view.cpu :matches(.area-chart, .stacked-area-chart) .markers > div): * UserInterface/Views/DataGrid.css: (.data-grid): --data-grid-column-border-start is no longer used, remove it. (.data-grid.inline): (.data-grid th): (.data-grid th > .header-cell-content): (body[dir=ltr] .data-grid th:not(:last-child) > .header-cell-content): (body[dir=rtl] .data-grid th:not(:last-child) > .header-cell-content): (.data-grid th.sortable:active): (.data-grid th:matches(.sort-ascending, .sort-descending)): (.data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child): (.data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): Remove styles that are no longer relevant because columns don't have vertical borders anymore. (.data-grid th.sort-ascending > .header-cell-content:first-child::after): (.data-grid th.sort-descending > .header-cell-content:first-child::after): (@media (prefers-color-scheme: dark) .data-grid th:matches(.sort-ascending, .sort-descending) > .header-cell-content:first-child::after): Don't change the background color of the sorted header cells to match macOS. (body[dir=ltr] .data-grid :matches(th, td):not(:last-child)): Deleted. (body[dir=rtl] .data-grid :matches(th, td):not(:last-child)): Deleted. (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child): Deleted. (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after): Deleted. (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after): Deleted. (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after): Deleted. (.data-grid th.sort-ascending > div:first-child::after): Deleted. (.data-grid th.sort-descending > div:first-child::after): Deleted. (.data-grid table:matches(.header, .data)): Deleted. (body[dir=ltr] .data-grid :matches(th, td):first-child): Deleted. (body[dir=rtl] .data-grid :matches(th, td):first-child): Deleted. (@media (-webkit-min-device-pixel-ratio: 2) .data-grid table:matches(.header, .data)): Deleted. (@media (-webkit-min-device-pixel-ratio: 2) .data-grid :matches(th, td):first-child): Deleted. (@media (prefers-color-scheme: dark) .data-grid th.sortable:active): Deleted. (@media (prefers-color-scheme: dark) .data-grid th.sort-ascending > div:first-child::after,): Deleted. * UserInterface/Views/DataGrid.js: (WI.DataGrid.prototype.insertColumn): * UserInterface/Views/NetworkDetailView.css: (body[dir=ltr] .network-table.showing-detail .network-detail): (body[dir=rtl] .network-table.showing-detail .network-detail): Now that columns don't have borders, add a vertical border to the Network details pane. * UserInterface/Views/NetworkTableContentView.css: (.network-table > .table .header .cell.waterfall:matches(.sort-ascending, .sort-descending)): (body[dir=ltr] .network-table > .table :not(.header) .cell.waterfall): (body[dir=rtl] .network-table > .table :not(.header) .cell.waterfall): Add a vertical border for the zeroth mark of the graph. * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: (.timeline-overview-graph.rendering-frame > .divider): * UserInterface/Views/Table.css: (.table): (.table > .header > .sortable:active): (.table > .header > :matches(.sort-ascending, .sort-descending)): (.table > .header .cell): (.table > .header .cell:not(:first-child)::before): (body[dir=ltr] .table > .header .cell:not(:first-child)::before): (body[dir=rtl] .table > .header .cell:not(:first-child)::before): (body[dir=ltr] .table .cell:not(:last-child)): Deleted. (body[dir=rtl] .table .cell:not(:last-child)): Deleted. (body[dir=ltr] .table .cell:first-child): Deleted. (body[dir=rtl] .table .cell:first-child): Deleted. (@media (prefers-color-scheme: dark) .table > .header > .sortable:active): Deleted. (@media (prefers-color-scheme: dark) .table > .header > :matches(.sort-ascending, .sort-descending)): Deleted. * UserInterface/Views/TimelineDataGrid.css: (.data-grid th.graph-column:matches(.sort-ascending, .sort-descending)): (.data-grid.timeline th.graph-column > .timeline-ruler): (body[dir=ltr] .data-grid.timeline td.graph-column): (body[dir=rtl] .data-grid.timeline td.graph-column): Add a vertical border for the zeroth mark of the graph. (.data-grid.timeline td.graph-column .timeline-record-bar): (@media (prefers-color-scheme: dark) .data-grid th:matches(.sort-ascending, .sort-descending)): Deleted. * UserInterface/Views/TimelineRuler.css: (.timeline-ruler > .header > .divider > .label): Reset font-weight from sorted column header. (.timeline-ruler > .markers > .divider): * UserInterface/Views/Variables.css: (:root): (@media (prefers-color-scheme: dark) :root): Use more precise color for --even-zebra-stripe-row-background-color. Drive-by: remove unused --border-color-dark variable. 2020-08-03 Brian Burg Web Inspector: "Show transparency grid" string needs to be disambiguated for localization https://bugs.webkit.org/show_bug.cgi?id=215101 Reviewed by Darin Adler. Add two different string keys with the same English translation. This is specifically needed for Portuguese, apparently. * Localizations/en.lproj/localizedStrings.js: * UserInterface/Views/CanvasContentView.js: (WI.CanvasContentView): * UserInterface/Views/GraphicsOverviewContentView.js: (WI.GraphicsOverviewContentView): * UserInterface/Views/ImageResourceContentView.js: * UserInterface/Views/RecordingContentView.js: (WI.RecordingContentView): * UserInterface/Views/ResourceCollectionContentView.js: (WI.ResourceCollectionContentView): * UserInterface/Views/SettingsTabContentView.js: (WI.SettingsTabContentView.prototype._createSourcesSettingsView): 2020-08-03 Devin Rousso Web Inspector: REGRESSION(r243301): Network: initiator column missing https://bugs.webkit.org/show_bug.cgi?id=215044 Reviewed by Brian Burg. * UserInterface/Views/NetworkTimelineView.js: (WI.NetworkTimelineView): 2020-07-30 Nikita Vasilyev REGRESSION (r?): Web Inspector: Timelines: blue border below selected timeline when in edit mode https://bugs.webkit.org/show_bug.cgi?id=214979 Reviewed by Devin Rousso. Color the top border after the selected item with the same background as the selected item. When editing, don't color that border with the selected item background. * UserInterface/Views/TimelineOverview.css: (.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),): (body:matches(.window-inactive, .window-docked-inactive) .timeline-overview:not(.edit-instruments) > .tree-outline.timelines .item.selected + .item): (body:not(.window-inactive, .window-docked-inactive) .timeline-overview:not(.edit-instruments) > .tree-outline.timelines:focus-within .item.selected + .item): (@media (prefers-color-scheme: dark) .timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)): (.timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. (body:not(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines:focus-within .item.selected + .item): Deleted. (@media (prefers-color-scheme: dark) .timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),): Deleted. (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. 2020-07-30 Devin Rousso Web Inspector: Add another Protocol Version (iOS 14.0) https://bugs.webkit.org/show_bug.cgi?id=214991 Reviewed by Brian Burg. * UserInterface/Protocol/Legacy/14.0/InspectorBackendCommands.js: Added. * Versions/Inspector-iOS-14.0.json: Added. 2020-07-30 Nikita Vasilyev Web Inspector: on Big Sur, match OS background, text, and border colors https://bugs.webkit.org/show_bug.cgi?id=214366 Reviewed by Devin Rousso. Refactoring: - Remove --background-color-code because it was always the same value as --background-color-content. - Replace commonly hardcoded `hsl(0, 0%, 97%)` background with --background-color-intermediate. * UserInterface/Views/AnimationDetailsSidebarPanel.css: (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles .CodeMirror): * UserInterface/Views/BoxShadowEditor.css: (.box-shadow-editor > table > tr > td > input[type="text"]): * UserInterface/Views/BreakpointActionView.css: (@media (prefers-color-scheme: dark) .breakpoint-action-eval-editor): * UserInterface/Views/BreakpointPopoverController.css: (.edit-breakpoint-popover-condition): * UserInterface/Views/ChangesDetailsSidebarPanel.css: (.sidebar > .panel.changes-panel .css-rule): * UserInterface/Views/ComputedStyleSection.css: (.computed-style-section .computed-property-item.expanded): (.computed-style-properties.details-section > .content,): * UserInterface/Views/ConsolePrompt.css: (.console-prompt): (.console-prompt > .CodeMirror-scroll): * UserInterface/Views/CookiePopover.css: (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"])): * UserInterface/Views/DetailsSection.css: (.details-section .details-section): (.details-section .details-section > .header): Refactor. --background-color-content is the same color value. (.details-section .details-section:not(.collapsed) > .header): Refactor. --border-color-secondary is the same color value. (.details-section > .content > .group:nth-child(even)): (.details-section > .content > .group > .row:matches(.empty, .text)): (@media (prefers-color-scheme: dark) .details-section > .header > label,): * UserInterface/Views/DividerNavigationItem.css: (.navigation-bar .item.divider): Don't use hairline dividers. MacOS Catalina and Big Sur don't use hairline borders. * UserInterface/Views/GraphicsOverviewContentView.css: (.content-view.graphics-overview > section > .header): (@media (prefers-color-scheme: dark) .content-view.graphics-overview): * UserInterface/Views/LocalResourceOverridePopover.css: (.popover .local-resource-override-popover-content .editor): * UserInterface/Views/LogContentView.css: (@media (prefers-color-scheme: dark) .console-messages): * UserInterface/Views/QuickConsole.css: (.quick-console): * UserInterface/Views/ScopeChainDetailsSidebarPanel.css: (@media (prefers-color-scheme: dark) .watch-expression-editor): * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: (.spreadsheet-css-declaration): (.spreadsheet-css-declaration.locked): * UserInterface/Views/SyntaxHighlightingDefaultTheme.css: (@media (prefers-color-scheme: dark) .cm-s-default,): * UserInterface/Views/TabBar.css: (body.big-sur.docked .tab-bar > .border.bottom): * UserInterface/Views/URLBreakpointPopover.css: (.popover .url-breakpoint-content > .editor-wrapper > .editor): * UserInterface/Views/Variables.css: (:root): Add --separator-color, which has the same semantics as `separator` color from Apple HIG (https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/#dynamic-system-colors). --border-color-secondary was only defined in the dark mode. Define it in the light mode, too. (body.window-inactive): Remove unused variable. (body.big-sur): (@media (prefers-color-scheme: dark) :root): (@media (prefers-color-scheme: dark) body.big-sur): (@media (prefers-color-scheme: dark) body.window-inactive): (body.window-inactive *): Remove unnecessarily greedy selector. 2020-07-30 Devin Rousso Web Inspector: only show scrollbars when needed https://bugs.webkit.org/show_bug.cgi?id=214980 Reviewed by Brian Burg. Prefer `overflow: auto;` instead of `overflow: scroll;` wherever possible, as when using a hardware mouse scrollbars are always shown for the latter, even when the content fits. * UserInterface/Debug/UncaughtExceptionReporter.css: (.sheet-container): * UserInterface/Views/AuditTestContentView.css: (.content-view-container > .content-view.audit-test): * UserInterface/Views/CanvasOverviewContentView.css: (.content-view.canvas-overview > .content-view.canvas.saved-recordings .tree-outline): * UserInterface/Views/CanvasSidebarPanel.css: (.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content): * UserInterface/Views/DOMEventsBreakdownView.css: (.waterfall-popover-content .dom-events-breakdown): * UserInterface/Views/DOMNodeEventsContentView.css: (.dom-node-details.dom-events): * UserInterface/Views/GraphicsOverviewContentView.css: (.content-view.graphics-overview): * UserInterface/Views/LocalRemoteObjectContentView.css: (.content-view.local-remote-object): * UserInterface/Views/NetworkResourceDetailView.css: (.content-view.resource-details): * UserInterface/Views/OpenResourceDialog.css: (.open-resource-dialog > .tree-outline): * UserInterface/Views/SourceCodeTextEditor.css: (.popover .debugger-popover-content > .body): * UserInterface/Views/CPUTimelineView.css: (.timeline-view.cpu): Added. (body .timeline-view.cpu): Deleted. * UserInterface/Views/MemoryTimelineView.css: (.timeline-view.memory): Added. (body .timeline-view.memory): Deleted. Although `!important` is kind of a "hack", adding `body` to the selector is more of a "hack" and is easier to unintentionally break. 2020-07-28 Brian Burg Web Inspector: REGRESSION(r255396): Audit: button to exit edit mode in main content area is missing border https://bugs.webkit.org/show_bug.cgi?id=214898 Reviewed by Devin Rousso. * UserInterface/Base/Main.js: codify that this function only accepts ButtonNavigationItems. Future developers, you'll need to adjust the CSS for non-button navigation items to work out. * UserInterface/Views/Main.css: (.navigation-item-help > .navigation-bar > .item.button): (.navigation-item-help > .navigation-bar > .item.button:not(.text-only)): (.navigation-item-help > .navigation-bar > .item.button.text-only): (.navigation-item-help > .navigation-bar > .item): Deleted. (.navigation-item-help > .navigation-bar > .item:not(.text-only)): Deleted. (.navigation-item-help > .navigation-bar > .item.text-only): Deleted. Split out the rules for text-only buttons. The regressing change added more specificity for the text + image case which made the border transparent and removed extra padding. Also add .button since we only expect buttons to be used in this context. 2020-07-28 Brian Burg REGRESSION(r262716) Web Inspector: start button is misaligned in Audit content view https://bugs.webkit.org/show_bug.cgi?id=214891 Reviewed by Devin Rousso. In r262716, a rendering defect related to flexbox was fixed. Web Inspector layout inadvertently relied on the defect. Now that it's fixed, a CSS rule is pushing the outline for navigation help buttons out of vertical alignment with surrounding textt. * UserInterface/Views/Main.css: (.navigation-item-help): Remove line-height. It was previously ignored due to a layout bug, and now its presence messes up vertical alignment. 2020-07-27 Nikita Vasilyev Web Inspector: Change default tab order to display most commonly used tabs first https://bugs.webkit.org/show_bug.cgi?id=212189 Reviewed by Timothy Hatcher. Changet the default tab order to: Elements, Console, Sources, Network, Timelines, Storage, Graphics, Layers, Audit. * UserInterface/Base/Main.js: (WI.loaded): 2020-07-22 Conrad Shultz Update macOS Version macros https://bugs.webkit.org/show_bug.cgi?id=214653 Reviewed by Tim Horton. * Configurations/Base.xcconfig: * Configurations/DebugRelease.xcconfig: * Configurations/Version.xcconfig: * Configurations/WebKitTargetConditionals.xcconfig: 2020-07-22 Brian Burg Web Inspector: Sources tab empty, sidebar nonfunctional https://bugs.webkit.org/show_bug.cgi?id=214611 Reviewed by Devin Rousso. This is caused when a subresource fails its initial load. This generates a networking IssueMessage without a source code location, which is not adequately handled. * UserInterface/Views/IssueTreeElement.js: (WI.IssueTreeElement.prototype._updateTitles): (WI.IssueTreeElement): If there is no sourceCodeLocation for the issue, then don't try to compute line numbers. 2020-07-21 Devin Rousso Web Inspector: unable to save files that are base64 encoded https://bugs.webkit.org/show_bug.cgi?id=214601 Reviewed by Brian Burg. * UserInterface/Models/SourceCode.js: (WI.SourceCode.prototype.get base64Encoded): Added. Expose if the current content is base64 encoded. The current content is already exposed. * UserInterface/Views/ContextMenuUtilities.js: (WI.appendContextMenuItemsForSourceCode): Include the base64 encoded state in the save data. 2020-07-21 Devin Rousso Web Inspector: Elements: Styles: don't blur the add class input when a class is added https://bugs.webkit.org/show_bug.cgi?id=214604 Reviewed by Brian Burg. * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: (WI.GeneralStyleDetailsSidebarPanel.prototype._addClassInputKeyPressed): (WI.GeneralStyleDetailsSidebarPanel.prototype._addClassInputBlur): (WI.GeneralStyleDetailsSidebarPanel.prototype._addClassFromInput): Added. * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: (.sidebar > .panel.details.css-style > .content ~ .class-list-container): Drive-by: don't show a scrollbar unless needed. 2020-07-21 Devin Rousso Web Inspector: REGRESSION(?): file names are not shown in the open resource dialog https://bugs.webkit.org/show_bug.cgi?id=214605 Reviewed by Brian Burg. When a `DocumentFragment` is added to a parent node, the children of the `DocumentFragment` are added as children of the parent instead of the `DocumentFragment` itself, effectively emptying the `DocumentFragment`, meaning that adding that `DocumentFragment` to a parent node again will basically do nothing as there are no children for that `DocumentFragment`. * UserInterface/Views/GeneralTreeElement.js: (WI.GeneralTreeElement.prototype._updateTitleElements): Because the `_mainTitleElement`/`_subtitleElement` is cleared (`removeChildren`), if the `_mainTitle`/`_subtitle` is a `DocumentFragment` nothing will be added due to the above. Instead, if the `_mainTitle`/`_subtitle` is a `DocumentFragment`, change it to be the `textContent` of the `_mainTitleElement`/`_subtitleElement` so that the above does not happen and so that future calls to `_updateTitleElements` won't make any changes the `_mainTitle`/`_subtitle` is now a `String` which matches the `textContent`. 2020-07-15 Nikita Vasilyev Web Inspector: Tab bar colors of undocked Inspector should match Safari in Big Sur https://bugs.webkit.org/show_bug.cgi?id=214163 Reviewed by Brian Burg. * UserInterface/Views/Main.css: (#undocked-title-area): (body.big-sur #undocked-title-area): (body:not(.big-sur) #undocked-title-area): (body.window-inactive #undocked-title-area): (@media (prefers-color-scheme: dark) body.big-sur #undocked-title-area): (@media (prefers-color-scheme: dark) body:not(.big-sur) #undocked-title-area): (@media (prefers-color-scheme: dark) body.big-sur.window-inactive #undocked-title-area): (@media (prefers-color-scheme: dark) body:not(.big-sur).window-inactive #undocked-title-area): * UserInterface/Views/TabBar.css: (.tab-bar): (body.big-sur .tab-bar): (body:not(.docked) .tab-bar): (body.big-sur:not(.docked) .tab-bar): (body:not(.big-sur):not(.docked) .tab-bar): (body.big-sur:not(.docked).window-inactive .tab-bar,): (.tab-bar > .border): (.tab-bar > .tabs > .item): (body:not(.docked) .tab-bar > .tabs > .item): (body.big-sur:not(.docked) .tab-bar > .tabs > .item): (body:not(.big-sur):not(.docked) .tab-bar > .tabs > .item): (body.big-sur:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): (body:not(.big-sur):not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): (body.big-sur:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): (body:not(.big-sur):not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): (body:not(.docked).window-inactive .tab-bar > .tabs > .item): (body.big-sur:not(.docked).window-inactive .tab-bar > .tabs > .item,): (body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): (.tab-bar > .tabs.animating.inserting-tab > .item.being-inserted): (.tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected): (@media (prefers-color-scheme: dark) body.big-sur .tab-bar,): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked) .tab-bar): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked) .tab-bar): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked) .tab-bar > .tabs > .item): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked).window-inactive .tab-bar,): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked).window-inactive .tab-bar > .tabs > .item): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked).window-inactive .tab-bar > .tabs > .item): (@media (prefers-color-scheme: dark) body.big-sur:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): (@media (prefers-color-scheme: dark) body:not(.big-sur):not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): 2020-07-13 Brian Burg Web Inspector: wrong bundle version being used for WebInspectorUI.framework in macOS Big Sur https://bugs.webkit.org/show_bug.cgi?id=214274 Reviewed by Tim Horton. * Configurations/Version.xcconfig: Make this match other Version.xcconfig after the changes in . 2020-07-09 Nikita Vasilyev Web Inspector: title bar of undocked inspector should be white in BigSur https://bugs.webkit.org/show_bug.cgi?id=214161 Reviewed by Brian Burg. Make the title bar white when the window is focused. When the window is unfocused, the title bar background is the same on Big Sur and Catalina. No changes were needed. * UserInterface/Views/Main.css: (#undocked-title-area): (body.big-sur #undocked-title-area): (body:not(.big-sur) #undocked-title-area): (@media (prefers-color-scheme: dark) #undocked-title-area): (@media (prefers-color-scheme: dark) body.big-sur #undocked-title-area): (@media (prefers-color-scheme: dark) body:not(.big-sur) #undocked-title-area): 2020-07-08 Christopher Reid Heap Snapshot Object Graph view doesn't get populated in some cases when inspecting a JSContext https://bugs.webkit.org/show_bug.cgi?id=214054 Reviewed by Devin Rousso. When JSContexts are created with a custom globalObjectClass, that object is an instance of CallbackGlobalObject and not GlobalObject so the view doesn't get populated. Add instances of CallbackGlobalObject to the Object Graph view as top level nodes. * UserInterface/Views/HeapSnapshotDataGridTree.js: 2020-07-07 Devin Rousso Web Inspector: Canvas: show an error message if unable to fetch shader source https://bugs.webkit.org/show_bug.cgi?id=213661 Reviewed by Brian Burg. * UserInterface/Views/ShaderProgramContentView.js: (WI.ShaderProgramContentView): (WI.ShaderProgramContentView.prototype._refreshContent): * UserInterface/Views/ShaderProgramContentView.css: (.content-view.shader-program > .spinner-container): Added. (.content-view.shader-program > .spinner-container > .indeterminate-progress-spinner): Added. 2020-07-03 Sam Weinig Add "-Wliteral-conversion" warning to Xcode based builds and fix the issues it finds https://bugs.webkit.org/show_bug.cgi?id=213931 Reviewed by Darin Adler. * Configurations/Base.xcconfig: Add -Wliteral-conversion. 2020-07-02 Nikita Vasilyev Web Inspector: Allow selecting text of Response (DOM Tree) https://bugs.webkit.org/show_bug.cgi?id=213617 Reviewed by Joseph Pecoraro. * UserInterface/Views/DOMTreeOutline.css: (.tree-outline.dom.non-selectable): 2020-07-01 Devin Rousso Web Inspector: add back support for 10.3.1 https://bugs.webkit.org/show_bug.cgi?id=213764 Reviewed by Brian Burg. * UserInterface/Controllers/NetworkManager.js: (WI.NetworkManager.prototype.initializeTarget): (WI.NetworkManager.prototype.webSocketWillSendHandshakeRequest): (WI.NetworkManager.prototype.markResourceRequestAsServedFromMemoryCache): Added. (WI.NetworkManager.prototype.resourceRequestDidReceiveResponse): * UserInterface/Models/Resource.js: (WI.Resource.prototype.legacyMarkServedFromMemoryCache): Added. (WI.Resource.prototype.legacyMarkServedFromDiskCache): Added. * UserInterface/Models/WebSocketResource.js: (WI.WebSocketResource.prototype.addFrame): * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js: Added. * UserInterface/Protocol/NetworkObserver.js: (WI.NetworkObserver.prototype.requestServedFromCache): Added. * UserInterface/Views/NetworkTableContentView.js: (WI.NetworkTableContentView): * UserInterface/Views/NetworkTimelineView.js: (WI.NetworkTimelineView): * UserInterface/Views/ResourceDetailsSidebarPanel.js: (WI.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse): * UserInterface/Views/WebSocketContentView.js: (WI.WebSocketContentView): (WI.WebSocketContentView.prototype._addRow): * Versions/Inspector-iOS-10.3.json: Added. 2020-06-30 Andy Estes [Xcode] Enable the "My Mac (Mac Catalyst)" destination in WebKit Xcode projects https://bugs.webkit.org/show_bug.cgi?id=213740 Reviewed by Darin Adler. * Configurations/Base.xcconfig: Set SUPPORTS_MACCATALYST to YES to tell Xcode that this project supports building for Mac Catalyst. 2020-06-23 Devin Rousso Web Inspector: add a tooltip to the icon of overridden resources to clarify meaning https://bugs.webkit.org/show_bug.cgi?id=213531 Reviewed by Brian Burg. * UserInterface/Views/LocalResourceOverrideWarningView.js: (WI.LocalResourceOverrideWarningView.prototype.initialLayout): * UserInterface/Views/ResourceHeadersContentView.js: (WI.ResourceHeadersContentView.prototype._responseSourceDisplayString): Rephrase "local resource override" to just "local override" to match the reference page name. * UserInterface/Views/NetworkTableContentView.js: (WI.NetworkTableContentView.prototype._populateNameCell.createIconElement): (WI.NetworkTableContentView.prototype._populateNameCell): (WI.NetworkTableContentView.prototype._populateTransferSizeCell): Add a `title` for the special transfer size cases, such as for `(local override)`. * UserInterface/Views/ResourceTreeElement.js: (WI.ResourceTreeElement.prototype._updateIcon): * UserInterface/Views/ResourceSizesContentView.js: (WI.ResourceSizesContentView.prototype.initialLayout): * UserInterface/Views/TimelineDataGridNode.js: (WI.TimelineDataGridNode.prototype.createCellContent): (WI.TimelineDataGridNode.prototype.generateIconTitle): Added. * UserInterface/Views/ResourceTimelineDataGridNode.js: (WI.ResourceTimelineDataGridNode.prototype.get data): (WI.ResourceTimelineDataGridNode.prototype.generateIconTitle): Added. Add a `title` to the overridden resource icon that clarifies the fact that the resource was overridden by a local override. * UserInterface/Views/LayoutTimelineDataGridNode.js: (WI.LayoutTimelineDataGridNode.prototype.get data): Cache the `initiatorCallFrame` in the `source` column as well as the `initiator` column, as it is used by the general timeline overview table. * UserInterface/Views/DataGridNode.js: (WI.DataGridNode.prototype.createCell): (WI.DataGridNode.prototype.generateIconTitle): Added. Provide a way to set a `title` on just the icon. * Localizations/en.lproj/localizedStrings.js: 2020-06-23 Devin Rousso Web Inspector: adjust height of undocked title area to match macOS Big Sur https://bugs.webkit.org/show_bug.cgi?id=213490 Reviewed by Brian Burg. * UserInterface/Views/Variables.css: (body.mac-platform.big-sur:not(.docked)): The title bar height is based on the close/minimize/maximize buttons, not the title text. 2020-06-23 Devin Rousso Keyframe animation doesn't 't show up in the Animations timeline https://bugs.webkit.org/show_bug.cgi?id=213441 Reviewed by Brian Burg. * UserInterface/Models/Animation.js: (WI.Animation): (WI.Animation.prototype._updateEffect): An `interationCount` of `Infinity` is not JSON serializable, so represent it as `-1` instead. * UserInterface/Models/MediaTimelineRecord.js: (WI.MediaTimelineRecord): * UserInterface/Views/MediaTimelineDataGridNode.js: (WI.MediaTimelineDataGridNode.prototype.createCellContent): (WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn): The DOM node may not be able to be instrumented if the timeline recording starts before the frontend has had a chance to request the main document, so it's possible for the DOM node to not be set. 2020-06-22 Devin Rousso Web Inspector: adjust height of undocked title area to match macOS Big Sur https://bugs.webkit.org/show_bug.cgi?id=213490 Reviewed by Timothy Hatcher. * UserInterface/Views/Variables.css: (body.mac-platform:not(.big-sur):not(.docked)): Added. (body.mac-platform.big-sur:not(.docked)): Added. (body.mac-platform:not(.docked)): Deleted. * UserInterface/Base/Platform.js: Add logic for detecting macOS Big Sur (and Catalina). 2020-06-22 Devin Rousso Web Inspector: Elements: Node: use a `WI.ContextMenu` instead of a `