| 2020-03-30 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: provide a way to log messages from the network process |
| https://bugs.webkit.org/show_bug.cgi?id=204775 |
| |
| Reviewed by Brian Burg. |
| |
| ITP can be influenced by multiple pages simultaneously, meaning that sending a console |
| message to the Web Inspector that's connected to the page that caused a change may not be |
| useful as developers often don't test in complete isolation. As such, having a way to |
| broadcast a console message to all Web Inspectors ensures that any changes caused by any |
| page are always able to be seen, no matter which page is being actively inspected. |
| |
| * UserInterface/Models/ConsoleMessage.js: |
| * UserInterface/Models/IssueMessage.js: |
| (WI.IssueMessage): |
| Add `ITPDebug` and `AdClickAttribution` message sources. |
| |
| 2020-03-30 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: the current time marker should always be on top |
| https://bugs.webkit.org/show_bug.cgi?id=209758 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TimelineRuler.css: |
| (.timeline-ruler > .markers): |
| (.timeline-ruler > .markers > .divider): |
| (.timeline-ruler > .markers > .marker): |
| (.timeline-ruler > .markers > .marker.current-time): |
| Move the `z-index` from the `.markers` container to each individual marker element so that |
| the `.marker.current-time` can override it. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| Add `--timeline-current-time-z-index` that is above `--timeline-record-z-index`. |
| |
| 2020-03-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: support editing cookie key/values from inspector |
| https://bugs.webkit.org/show_bug.cgi?id=31157 |
| <rdar://problem/19281523> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Models/Cookie.js: |
| (WI.Cookie): |
| (WI.Cookie.fromPayload): |
| (WI.Cookie.parseSetCookieResponseHeader): |
| (WI.Cookie.prototype.get session): Added. |
| (WI.Cookie.prototype.expirationDate): |
| (WI.Cookie.prototype.equals): Added. |
| (WI.Cookie.prototype.toProtocol): Added. |
| Add `session` value in addition to the existing `expires` value. Create helper methods for |
| comparing `WI.Cookie` objects and for using the `WI.Cookie` as a `Page.Cookie` type when |
| invoking protocol commands (right now just `Page.setCookie`). |
| |
| * UserInterface/Views/CookieStorageContentView.js: |
| (WI.CookieStorageContentView): |
| (WI.CookieStorageContentView.prototype.get navigationItems): |
| (WI.CookieStorageContentView.prototype.tableCellContextMenuClicked): |
| (WI.CookieStorageContentView.prototype.willDismissPopover): Added. |
| (WI.CookieStorageContentView.prototype.async _willDismissCookiePopover): Added. |
| (WI.CookieStorageContentView.prototype._handleSetCookieButtonClick): Added. |
| (WI.CookieStorageContentView.prototype._reloadCookies): |
| (WI.CookieStorageContentView.prototype._formatCookiePropertyForColumn): |
| Add a + navigation item that shows a popover for creating a new cookie. When contextmenu |
| clicking on a table row, add an "Edit" item that shows a popover for creating a new cookie |
| with the values from the existing cookie, which will "replace" (delete and set) the existing |
| cookie upon being dismissed. |
| |
| * UserInterface/Views/ResourceCookiesContentView.js: |
| (WI.ResourceCookiesContentView.prototype.tablePopulateCell): |
| If only use the `expires` value if `session` is not set. |
| |
| * UserInterface/Views/CookiePopover.js: Added. |
| (WI.CookiePopover): |
| (WI.CookiePopover.prototype.get serializedData): |
| (WI.CookiePopover.prototype.show.createRow): |
| (WI.CookiePopover.prototype.show.createInputRow): |
| (WI.CookiePopover.prototype.show): |
| (WI.CookiePopover.prototype._presentOverTargetElement): |
| (WI.CookiePopover.prototype._defaultExpires): |
| (WI.CookiePopover.prototype._parseExpires): |
| (WI.CookiePopover.prototype._handleInputKeyDown): |
| * UserInterface/Views/CookiePopover.css: Added. |
| (.popover .cookie-popover-content): |
| (.popover .cookie-popover-content > table): |
| (.popover .cookie-popover-content > table > tr > th): |
| (.popover .cookie-popover-content > table > tr > td): |
| (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"])): |
| (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"]).invalid): |
| (@media (prefers-color-scheme: dark) .popover .cookie-popover-content > table > tr > th): |
| Show an `<input>` (or `<select>`) for each configuration option when creating a cookie. |
| Hide the `<input>` for `expires` if the `<input type="checkbox">` for `session` is checked. |
| Indicate when the value in the `<input>` for `expires` is not a valid date. |
| |
| * UserInterface/Main.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-03-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: CSS: create visual editor for `box-shadow` |
| https://bugs.webkit.org/show_bug.cgi?id=208380 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Recognize `box-shadow` CSS properties in the Styles sidebar, parse the comma-separated list |
| value for individual box shadows, and create a `WI.InlineSwatch` for each. When clicked, |
| show a `WI.Popover` with a `WI.BoxShadowEditor`, which contains a table of editors: |
| |
| Offset X | <input type="text"> | [ 2D (X & Y) ] |
| Offset Y | <input type="text"> | [ Slider ] |
| Inset | <input type="checkbox"> | |
| Blur | <input type="text"> | <input type="range"> |
| Spread | <input type="text"> | <input type="range"> |
| [ ] |
| [ ] |
| [ full color picker ] |
| [ ] |
| [ ] |
| |
| |
| * UserInterface/Models/BoxShadow.js: Added. |
| (WI.BoxShadow): |
| (WI.BoxShadow.fromString): |
| (WI.BoxShadow.parseNumberComponent): |
| (WI.BoxShadow.prototype.get offsetX): |
| (WI.BoxShadow.prototype.get offsetY): |
| (WI.BoxShadow.prototype.get blurRadius): |
| (WI.BoxShadow.prototype.get spreadRadius): |
| (WI.BoxShadow.prototype.get inset): |
| (WI.BoxShadow.prototype.get color): |
| (WI.BoxShadow.prototype.copy): |
| (WI.BoxShadow.prototype.toString): |
| (WI.BoxShadow.prototype.toString.stringifyNumberComponent): |
| |
| * UserInterface/Models/CSSCompletions.js: |
| Add a `Set` of allowed CSS length units. |
| |
| * UserInterface/Views/BoxShadowEditor.js: Added. |
| (WI.BoxShadowEditor): |
| (WI.BoxShadowEditor.createInputRow): |
| (WI.BoxShadowEditor.createSlider): |
| (WI.BoxShadowEditor.prototype.get element): |
| (WI.BoxShadowEditor.prototype.get boxShadow): |
| (WI.BoxShadowEditor.prototype.set boxShadow): |
| (WI.BoxShadowEditor.prototype.handleEvent): |
| (WI.BoxShadowEditor.prototype._updateBoxShadow): |
| (WI.BoxShadowEditor.prototype._updateBoxShadowOffsetFromSliderMouseEvent): |
| (WI.BoxShadowEditor.prototype._determineShiftForEvent): |
| (WI.BoxShadowEditor.prototype._handleOffsetSliderSVGKeyDown): |
| (WI.BoxShadowEditor.prototype._handleOffsetSliderSVGMouseDown): |
| (WI.BoxShadowEditor.prototype._handleWindowMouseMove): |
| (WI.BoxShadowEditor.prototype._handleWindowMouseUp): |
| (WI.BoxShadowEditor.prototype._handleOffsetXInputInput): |
| (WI.BoxShadowEditor.prototype._handleOffsetXInputKeyDown): |
| (WI.BoxShadowEditor.prototype._handleOffsetYInputInput): |
| (WI.BoxShadowEditor.prototype._handleOffsetYInputKeyDown): |
| (WI.BoxShadowEditor.prototype._handleBlurRadiusInputInput): |
| (WI.BoxShadowEditor.prototype._handleBlurRadiusInputKeyDown): |
| (WI.BoxShadowEditor.prototype._handleBlurRadiusSliderInput): |
| (WI.BoxShadowEditor.prototype._handleSpreadRadiusInputInput): |
| (WI.BoxShadowEditor.prototype._handleSpreadRadiusInputKeyDown): |
| (WI.BoxShadowEditor.prototype._handleSpreadRadiusSliderInput): |
| (WI.BoxShadowEditor.prototype._handleInsetCheckboxChange): |
| (WI.BoxShadowEditor.prototype._handleColorChanged): |
| * UserInterface/Views/BoxShadowEditor.css: Added. |
| (.box-shadow-editor): |
| (.box-shadow-editor > table): |
| (.box-shadow-editor > table > tr > th): |
| (.box-shadow-editor > table > tr > td): |
| (.box-shadow-editor > table > tr > td > input[type="text"]): |
| (.box-shadow-editor > table > tr > td > input[type="range"]): |
| (.box-shadow-editor > table > tr > td > svg): |
| (.box-shadow-editor > table > tr > td > svg line.axis): |
| (.box-shadow-editor > table > tr > td > svg line:not(.axis)): |
| (.box-shadow-editor > table > tr > td > svg circle): |
| (@media (prefers-color-scheme: dark) .box-shadow-editor > table > tr > th): |
| |
| * UserInterface/Views/InlineSwatch.js: |
| (WI.InlineSwatch): |
| (WI.InlineSwatch.prototype._fallbackValue): |
| (WI.InlineSwatch.prototype._valueEditorValueDidChange): |
| * UserInterface/Views/InlineSwatch.css: |
| (.inline-swatch): |
| (.inline-swatch:not(.box-shadow), .inline-swatch.box-shadow:matches(:hover, :active)): Added. |
| (.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable)): Added. |
| (.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):hover): Added. |
| (.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):active): Added. |
| (.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable) > span): Added. |
| (@media (prefers-color-scheme: dark) .inline-swatch.box-shadow > svg): Added. |
| (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover): Deleted. |
| (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active): Deleted. |
| (.inline-swatch:matches(.bezier, .spring, .variable) > span): Deleted. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addGradientTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addColorTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addBoxShadowTokens): |
| (WI.SpreadsheetStyleProperty.prototype._resolveVariables): |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| * UserInterface/Views/ColorPicker.css: |
| (.color-picker): |
| Move `--color-picker-width` to `:root` so that `WI.BoxShadowEditor` can use it. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Images/BoxShadow.svg: Added. |
| |
| 2020-03-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r257759): Network: graph in Timing pane of selected resource is missing bars |
| https://bugs.webkit.org/show_bug.cgi?id=209525 |
| |
| Reviewed by Timothy Hatcher. |
| |
| `WI.ResourceTimingBreakdownView` uses the same CSS classes and DOM structure as the parent |
| `WI.NetworkTableContentView`, relying on the styles defined there for it's own styles. |
| |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.network-table > .table li:not(.filler, .selected) .cell:not(.current-session)): Added. |
| (.network-table .error): Added. |
| (.network-table .waterfall .block): Added. |
| (body[dir=ltr] .network-table .waterfall .block): Added. |
| (body[dir=rtl] .network-table .waterfall .block): Added. |
| (.network-table .waterfall .block.request,): Added. |
| (.network-table .waterfall .block.mouse-tracking): Added. |
| (.network-table .waterfall .block.filler): Added. |
| (.network-table .waterfall .block.redirect): Added. |
| (.network-table .waterfall .block.queue): Added. |
| (.network-table .waterfall .block.dns): Added. |
| (.network-table .waterfall .block.connect): Added. |
| (.network-table .waterfall .block.secure): Added. |
| (.network-table .waterfall .block.request): Added. |
| (.network-table .waterfall .block.response): Added. |
| (.network-table > .table li:not(.selected) .cell:not(.current-session)): Deleted. |
| (.network-table > .table .error): Deleted. |
| (.network-table > .table .waterfall .block): Deleted. |
| (body[dir=ltr] .network-table > .table .waterfall .block): Deleted. |
| (body[dir=rtl] .network-table > .table .waterfall .block): Deleted. |
| (.network-table > .table .waterfall .block.request,): Deleted. |
| (.network-table > .table .waterfall .block.mouse-tracking): Deleted. |
| (.network-table > .table .waterfall .block.filler): Deleted. |
| (.network-table > .table .waterfall .block.redirect): Deleted. |
| (.network-table > .table .waterfall .block.queue): Deleted. |
| (.network-table > .table .waterfall .block.dns): Deleted. |
| (.network-table > .table .waterfall .block.connect): Deleted. |
| (.network-table > .table .waterfall .block.secure): Deleted. |
| (.network-table > .table .waterfall .block.request): Deleted. |
| (.network-table > .table .waterfall .block.response): Deleted. |
| Drive-by: the `WI.Table` filler row should not be dimmed. |
| |
| * UserInterface/Views/ResourceTimingBreakdownView.css: |
| (.resource-timing-breakdown .waterfall .block): |
| |
| 2020-03-28 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Network: pressing RightArrow or LeftArrow unexpectedly changes panels |
| https://bugs.webkit.org/show_bug.cgi?id=209625 |
| <rdar://problem/60940609> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar.prototype._keyDown): |
| |
| 2020-03-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: should also escape the method when Copy as cURL |
| https://bugs.webkit.org/show_bug.cgi?id=209665 |
| <rdar://problem/58432154> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.generateCURLCommand): |
| (WI.Resource.prototype.generateCURLCommand.escapeStringPosix): |
| The method could be maliciously crafted, so we should also escape it (if needed). |
| |
| 2020-03-26 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add keyboard shortcut to tooltip of pinned tabs |
| https://bugs.webkit.org/show_bug.cgi?id=209640 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBarItem.js: |
| (WI.TabBarItem): |
| (WI.TabBarItem.prototype.get displayName): Added. |
| (WI.TabBarItem.prototype.set displayName): Added. |
| (WI.TabBarItem.prototype.set title): |
| (WI.TabBarItem.prototype.titleDidChange): Deleted. |
| * UserInterface/Views/GeneralTabBarItem.js: |
| (WI.GeneralTabBarItem.fromTabContentView): |
| (WI.GeneralTabBarItem.prototype.get displayName): Added. |
| (WI.GeneralTabBarItem.prototype.set displayName): Added. |
| (WI.GeneralTabBarItem.prototype.get title): Deleted. |
| (WI.GeneralTabBarItem.prototype.set title): Deleted. |
| * UserInterface/Views/PinnedTabBarItem.js: |
| (WI.PinnedTabBarItem): |
| (WI.PinnedTabBarItem.fromTabContentView): |
| (WI.PinnedTabBarItem.titleDidChange): Deleted. |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar > .tabs > .item > .name): Added. |
| (body.window-inactive .tab-bar > .tabs > .item > .name): Added. |
| (.tab-bar > .tabs > .item > .name > .content): Added. |
| (.tab-bar > .tabs > .item:not(.selected):hover > .name): Added. |
| (.tab-bar > .tabs > .item:not(.disabled).selected > .name): Added. |
| (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .name): Added. |
| (.tab-bar > .tabs > .item > .title): Deleted. |
| (body.window-inactive .tab-bar > .tabs > .item > .title): Deleted. |
| (.tab-bar > .tabs > .item > .title > .content): Deleted. |
| (.tab-bar > .tabs > .item:not(.selected):hover > .title): Deleted. |
| (.tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted. |
| (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted. |
| Separate the shown name of the tab (`displayName`) from the tooltip text (`title`). |
| |
| * UserInterface/Views/SearchTabContentView.js: |
| (WI.SearchTabContentView.tabInfo): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.tabInfo): |
| Move the current `title` value to `displayName` and add a new `title` value with the |
| keyboard shortcut in parenthesis. |
| |
| * UserInterface/Views/AuditTabContentView.js: |
| (WI.AuditTabContentView.tabInfo): |
| * UserInterface/Views/ConsoleTabContentView.js: |
| (WI.ConsoleTabContentView.tabInfo): |
| * UserInterface/Views/ElementsTabContentView.js: |
| (WI.ElementsTabContentView.tabInfo): |
| * UserInterface/Views/GraphicsTabContentView.js: |
| (WI.GraphicsTabContentView.tabInfo): |
| * UserInterface/Views/LayersTabContentView.js: |
| (WI.LayersTabContentView.tabInfo): |
| * UserInterface/Views/NetworkTabContentView.js: |
| (WI.NetworkTabContentView.tabInfo): |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView.tabInfo): |
| * UserInterface/Views/StorageTabContentView.js: |
| (WI.StorageTabContentView.tabInfo): |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView.tabInfo): |
| Use `displayName` instead of `title` since the name is shown in the UI. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| Make the Settings Tab shortcut public. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-03-26 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items |
| https://bugs.webkit.org/show_bug.cgi?id=209617 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar.prototype._keyDown): |
| Reverse direction for RTL mode. |
| |
| 2020-03-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r257791): event breakpoint icon should be [E] |
| https://bugs.webkit.org/show_bug.cgi?id=209434 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Images/TypeIcons.svg: |
| |
| * UserInterface/Views/PathComponentIcons.css: |
| (.snapshot-list-icon .icon): |
| (@media (prefers-color-scheme: dark) .snapshot-list-icon .icon): |
| Drive-by: make a separate "HeapSnapshotList" target so that it won't be affected if "Events" |
| is ever changed. |
| |
| 2020-03-23 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r257759, r258623): Web Inspector: Settings icon sometimes placed below the tab bar |
| https://bugs.webkit.org/show_bug.cgi?id=208603 |
| <rdar://problem/60108967> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.prototype.layout): |
| If the total width of all `WI.GeneralTabBarItem` is not an integer, it needs to be rounded |
| when compared to the width of the container `WI.TabBar`. This is be necessary because CSS |
| often rounds to the nearest pixel, meaning that `99.5px` would actually render as `100px`, |
| whereas `99.4px` would render as `99px`. |
| |
| * UserInterface/Views/TabBar.css: |
| (body:not(.docked) .tab-bar > .tabs:not(.calculate-width) > .item:not(.pinned)): Added. |
| (.tab-bar > .tabs.calculate-width > .item:not(.pinned)): Added. |
| (body:not(.docked) .tab-bar > .tabs > .item:not(.pinned)): Deleted. |
| (.tab-bar > .tabs.calculate-width > .item): Deleted. |
| When undocked, force all `WI.GeneralTabBarItem` to take up as little width as possible when |
| resizing so that if there isn't enough room for all of them, any that `flex-wrap` won't be |
| incorrectly perceived as needing a much larger width. |
| |
| * UserInterface/Debug/Bootstrap.css: |
| (.tab-bar > .navigation-bar .inspect-inspector): |
| Ensure that the "inspect inspector" navigation item has an integer pixel width. |
| |
| 2020-03-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: this._springEditor.removeListeners is not a function. (In 'this._springEditor.removeListeners()', 'this._springEditor.removeListeners' is undefined) |
| https://bugs.webkit.org/show_bug.cgi?id=209325 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/CodeMirrorSpringEditingController.js: |
| (WI.CodeMirrorSpringEditingController.prototype.popoverDidDismiss): Deleted. |
| |
| 2020-03-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Right side of assignment cannot be destructured (at QuickConsole.js:358:30) |
| https://bugs.webkit.org/show_bug.cgi?id=209388 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole.prototype._handleFramePageExecutionContextChanged): |
| |
| 2020-03-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r257380, r257759): focusing the inspected page when docked dims most of the interface |
| https://bugs.webkit.org/show_bug.cgi?id=209366 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/ButtonNavigationItem.css: |
| (body.window-inactive .navigation-bar .item.button > img): Added. |
| (body.window-inactive .navigation-bar .item.button.disabled > img): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Deleted. |
| * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: |
| (body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Deleted. |
| * UserInterface/Views/TabBar.css: |
| (body:not(.docked).window-inactive .tab-bar): Added. |
| (body.docked.window-inactive .tab-bar): Added. |
| (body.window-inactive .tab-bar > .border): Added. |
| (body.window-inactive .tab-bar > .navigation-bar > .item.divider): Added. |
| (body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added. |
| (body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body.window-inactive .tab-bar > .tabs > .item > .icon): Added. |
| (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added. |
| (body.window-inactive .tab-bar > .tabs > .item > .title): Added. |
| (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Added. |
| (body:not(.docked).window-inactive .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked).window-inactive .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked).window-inactive .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted. |
| (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Deleted. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted. |
| (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .icon): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .title): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Deleted. |
| (@media (prefers-color-scheme: dark) body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted. |
| * UserInterface/Views/TimelineRecordFrame.css: |
| (body.window-inactive .timeline-record-frame.selected): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Deleted. |
| * UserInterface/Views/TimelineRuler.css: |
| (body.window-inactive .timeline-ruler > .header > .divider): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Deleted. |
| * UserInterface/Views/Variables.css: |
| (body.window-inactive): Added. |
| (body.window-inactive *): Added. |
| (@media (prefers-color-scheme: dark) body.window-inactive): Added. |
| (@media (prefers-color-scheme: dark) body.window-inactive *): Added. |
| (body:matches(.window-inactive, .window-docked-inactive)): Deleted. |
| (body:matches(.window-inactive, .window-docked-inactive) *): Deleted. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Deleted. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Deleted. |
| Remove usage of `.window-docked-inactive` as we don't want the UI to change when the focus |
| switches between the inspected page and the docked Web Inspector area, which happens a lot. |
| |
| * UserInterface/Views/BreakpointTreeElement.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.breakpoint.selected .status > .status-image.resolved): Added. |
| (.tree-outline:focus .item.breakpoint.selected .status > .status-image.resolved): Deleted. |
| * UserInterface/Views/CallFrameTreeElement.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.call-frame.selected .status > .status-image): Added. |
| (.tree-outline:focus .item.call-frame.selected .status > .status-image): Deleted. |
| * UserInterface/Views/CanvasSidebarPanel.css: |
| (body:not(.window-inactive, .window-docked-inactive) .sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus-within .item.processing.selected .subtitle > progress): Added. |
| (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus .item.processing.selected .subtitle > progress): Deleted. |
| * UserInterface/Views/DOMTreeContentView.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted. |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted. |
| * UserInterface/Views/DOMTreeOutline.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.inspected-node.selected > span::after): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected *): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.selected::before): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.expanded.selected::before): Added. |
| (.tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Deleted. |
| (.tree-outline.dom:focus-within li.inspected-node.selected > span::after): Deleted. |
| (.tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Deleted. |
| (.tree-outline.dom:focus-within li.selected): Deleted. |
| (.tree-outline.dom:focus-within li.selected *): Deleted. |
| (.tree-outline.dom:focus-within li.parent.selected::before): Deleted. |
| (.tree-outline.dom:focus-within li.parent.expanded.selected::before): Deleted. |
| * UserInterface/Views/Main.css: |
| (:focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added. |
| (:focus .selected .go-to-arrow:active, .selected .go:focus-to-arrow:active): Added. |
| (@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added. |
| (:focus .selected .go-to-arrow): Deleted. |
| (:focus .selected .go-to-arrow:active): Deleted. |
| (@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow): Deleted. |
| * UserInterface/Views/RecordingActionTreeElement.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected::before): Added. |
| (.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Deleted. |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected::before): Deleted. |
| * UserInterface/Views/ResourceTreeElement.css: |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Added. |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Added. |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Deleted. |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Deleted. |
| * UserInterface/Views/ScriptDetailsTimelineView.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .alternate-subtitle): Added. |
| (.tree-outline:focus .item.selected .alternate-subtitle): Deleted. |
| * UserInterface/Views/SourceCodeTreeElement.css: |
| (.tree-outline .item .status > .toggle-script-blackbox, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Added. |
| (.tree-outline .item .status > .toggle-script-blackbox, .tree-outline:focus .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Deleted. |
| * UserInterface/Views/ThreadTreeElement.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within > .item.thread.selected .status-button.resume): Added. |
| (.tree-outline:focus > .item.thread.selected .status-button.resume): Deleted. |
| * UserInterface/Views/TimelineOverview.css: |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines:focus-within .item.selected + .item): Added. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| (.timeline-overview > .tree-outline.timelines :focus .item.selected + .item): Deleted. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| * UserInterface/Views/TreeElementStatusButton.css: |
| (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected > .status > .status-button): Added. |
| (:focus .item.selected > .status > .status-button): Deleted. |
| Fix cases where `:focus` was still being checked from the `WI.TreeOutline` instead of the |
| individual `WI.TreeElement`. We should be using `:focus-within`, but only if the window or |
| docked Web Inspector area is also focused. |
| |
| 2020-03-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r257835): close and undock buttons are shown in remote inspector |
| https://bugs.webkit.org/show_bug.cgi?id=209346 |
| |
| Reviewed by Timothy Hatcher. |
| |
| In the case of remote inspection, the frontend is told that docking is not available before |
| it is even shown (via `InspectorFrontendAPI.setDockingUnavailable`). Additionally, the |
| backend (`WebKit::RemoteWebInspectorUI`) never tells the frontend what dock side it actually |
| is (via `InspectorFrontendAPI.setDockSide`), as there would be no point, given that docking |
| is unavailable, meaning that the frontend must be undocked. |
| |
| Before r257835, the docking state held by `WI._dockConfiguration` and `WI.docked`, neither |
| of which would be set as described above. As a result, in `WI._updateDockNavigationItems` |
| `WI.docked` would be undefined, which is falsy, thereby causing all docking navigation items |
| to be hidden. After r257835, these were merged into one `WI.dockConfiguration`, which is |
| compared against `WI.DockConfiguration.Undocked` instead of just being falsy checked, |
| meaning it would result in `true` which would not hide all of the docking navigation items. |
| |
| Change the logic of `WI.updateDockingAvailability` such that if the frontend is told that |
| docking is unavailable, mark the `WI.dockConfiguration` as `WI.DockConfiguration.Undocked`. |
| This way, the frontend will always have a valid value for `WI.dockConfiguration`. |
| |
| Additionally, further leverage `InspectorFrontendHost.supportsDockSide` to only create the |
| docking navigation items that are actually supported by the host. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI.updateDockingAvailability): |
| (WI.resizeDockedFrameMouseDown): |
| (WI.dockedConfigurationSupportsSplitContentBrowser): |
| (WI._updateDockNavigationItems): |
| (WI._updateTabBarDividers): |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.get horizontalPadding): |
| (WI.TabBar.prototype.resetCachedWidths): Added. |
| When switching dock configurations, we need to reset the cached width of each tab bar item, |
| as otherwise, a large width cached when undocked can incorrectly be used when docked. |
| |
| * UserInterface/Views/TabBarItem.js: |
| (WI.TabBarItem.get horizontalMargin): |
| Replace negative checks of `WI.dockConfiguration` with positive ones that can't be fooled by |
| a falsy value. |
| |
| 2020-03-19 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: disabled buttons shouldn't be focusable |
| https://bugs.webkit.org/show_bug.cgi?id=208283 |
| <rdar://problem/59832150> |
| |
| Reviewed by Devin Rousso. |
| |
| Set tabIndex to "-1" when button becomes disabled. |
| |
| * UserInterface/Views/ActivateButtonNavigationItem.js: |
| (WI.ActivateButtonNavigationItem): |
| * UserInterface/Views/ButtonNavigationItem.js: |
| `_role` is defined in the parent class now. |
| |
| (WI.ButtonNavigationItem): |
| (WI.ButtonNavigationItem.prototype.set enabled): |
| (WI.ButtonNavigationItem.prototype.get tabbable): |
| (WI.ButtonNavigationItem.prototype._updateTabIndex): |
| * UserInterface/Views/RadioButtonNavigationItem.js: |
| (WI.RadioButtonNavigationItem.prototype.get tabbable): |
| (WI.RadioButtonNavigationItem): |
| |
| 2020-03-19 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: remove redundant code in TreeOutline.prototype.removeChildAtIndex |
| https://bugs.webkit.org/show_bug.cgi?id=209301 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype.removeChildAtIndex): |
| Check `suppressSelectSibling` once instead of three times. |
| |
| 2020-03-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: the width of `WI.TabBarItem` can change if the detached window is resized |
| https://bugs.webkit.org/show_bug.cgi?id=209200 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.prototype.layout): |
| (WI.TabBar.prototype.layout.measureWidth): Renamed from `measureItemWidth`. |
| When undocked, `WI.TabBarItem` grow to fill any available space. As a result, if a |
| `WI.TabBarItem` is added or removed, the width of all `WI.TabBarItem` will change. |
| Wait to measure widths until all `WI.TabBarItem` are un-hidden for the reason above. |
| |
| 2020-03-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: we should prefer showing "Preserve Log" over "Group Media Requests" |
| https://bugs.webkit.org/show_bug.cgi?id=209199 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView): |
| Change the `WI.NavigationItem.VisibilityPriority` of the various `WI.NavigationItem`: |
| High: |
| - URL filter |
| - resource type filter |
| - live/HAR view switcher |
| - disable resource caching toggle |
| Normal: |
| - Preserve Log checkbox |
| - clear button |
| Low: |
| - Group Media Requests checkbox |
| - HAR import/export buttons |
| This way, items that have alternate ways of being triggered (e.g. keyboard shortcuts) are |
| hidden first, and vica versa. |
| |
| 2020-03-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: hovering the title of an object preview popup for a DOM node doesn't highlight it |
| https://bugs.webkit.org/show_bug.cgi?id=209159 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._showPopoverForObject): |
| |
| 2020-03-17 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r257759): Web Inspector: Settings icon sometimes placed below the tab bar |
| https://bugs.webkit.org/show_bug.cgi?id=208603 |
| <rdar://problem/60108967> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.prototype.layout): |
| Don't take into account the width of the flexible space before or after the normal tab bar |
| items since they will shrink to fit (the container is using `display: flex;`). Instead, use |
| determine the available space by subtracting the width of every `WI.PinnedTabBarItem` from |
| the `realOffsetWidth` of the container, comparing against the sum of the `realOffsetWidth` |
| of all `WI.GeneralTabBarItem`. If the sum is greater than the available space, successively |
| mark items from the end (right in LTR, left in RTL) as hidden until the remaining will fit. |
| |
| 2020-03-16 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r257380): Web Inspector: deleting node causes TreeOutline to lose focus |
| https://bugs.webkit.org/show_bug.cgi?id=208364 |
| <rdar://problem/59871772> |
| |
| Reviewed by Devin Rousso. |
| |
| Maintain keyboard focus within TreeOutline when selection changes. |
| |
| * UserInterface/Views/TreeElement.js: |
| (WI.TreeElement.prototype.select): |
| |
| 2020-03-15 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Should not use variable-length-array (VLA) |
| https://bugs.webkit.org/show_bug.cgi?id=209043 |
| |
| Reviewed by Mark Lam. |
| |
| * Configurations/Base.xcconfig: |
| |
| 2020-03-10 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r253759): Web Inspector: Audits: results folder doesn't get selected by pressing Arrow Down key |
| https://bugs.webkit.org/show_bug.cgi?id=208679 |
| <rdar://problem/60108942> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/AuditNavigationSidebarPanel.js: |
| (WI.AuditNavigationSidebarPanel.prototype.initialLayout): |
| (WI.AuditNavigationSidebarPanel.prototype._handleAuditManagerEditingChanged): |
| We do actually want to prevent repeat selection, as we may end up attempting to select the |
| same `WI.TreeElement` twice due to the nature of `WI.SelectionController`, which would call |
| through to `WI.NavigationSidebarPanel.prototype.showDefaultContentView()` which deselects |
| any selected `WI.TreeElement`. Reselecting the previously selected `WI.TreeElement` when |
| exiting edit mode is much more of a special case than any of the ways for moving selection |
| to a `WI.FolderTreeElement`, so add logic just for that case instead of affecting the entire |
| `WI.TreeOutline`. When restoring the selection after leaving edit mode, if the currently |
| selected `WI.TreeElement` was also the previously selected `WI.TreeElement`, deselect and |
| reselect it so we're "reset" back to a fresh state. |
| |
| 2020-03-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: no way to expand/collapse sidebar sections with Tab navigation |
| https://bugs.webkit.org/show_bug.cgi?id=208562 |
| <rdar://problem/60028941> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/DetailsSection.css: |
| (.details-section > .header): |
| (.details-section > .header::before): |
| Increase the height of the clickble area so it matches the height |
| of the header section. |
| |
| (.details-section .header:focus): |
| (.details-section .header:focus::before): |
| Adjust the focus ring around the expand/collapse triangle so it has rounded corners. |
| |
| * UserInterface/Views/DetailsSection.js: |
| (WI.DetailsSection): |
| (WI.DetailsSection.prototype._headerElementClicked): |
| (WI.DetailsSection.prototype._headerElementMouseDown): |
| (WI.DetailsSection.prototype._headerElementKeyPress): |
| |
| 2020-03-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: scope bars should be focusable when navigating by pressing Tab |
| https://bugs.webkit.org/show_bug.cgi?id=208277 |
| <rdar://problem/59828111> |
| |
| Reviewed by Devin Rousso. |
| |
| Make resource type filter in the Network tab and message type filter in the Console tab focusable. |
| |
| * UserInterface/Views/AuditTestGroupContentView.css: |
| (.content-view.audit-test-group > header > nav): |
| (.content-view.audit-test-group > header > nav > .scope-bar): |
| Prevent outline of the focused scope bar item from clipping. |
| |
| * UserInterface/Views/ScopeBar.css: |
| (.scope-bar > li:focus): |
| (.scope-bar > li:focus::after,): |
| * UserInterface/Views/ScopeBar.js: |
| (WI.ScopeBar): |
| (WI.ScopeBar.prototype._handleKeyDown): |
| Make Arrow Left an Arrow Right keys move focus within the scope bar. |
| This matches the behavior of macOS radio buttons. |
| |
| * UserInterface/Views/ScopeBarItem.js: |
| (WI.ScopeBarItem.prototype.get scopeBar): |
| (WI.ScopeBarItem.prototype.set scopeBar): |
| (WI.ScopeBarItem.prototype.toggle): |
| (WI.ScopeBarItem.prototype._updateSelected): |
| (WI.ScopeBarItem.prototype._handleMouseDown): |
| |
| (WI.ScopeBarItem.prototype._handleKeyDown): |
| Allow to toggle focused scope bar item by pressing Space or Enter. |
| |
| 2020-03-06 Jon Davis <jond@apple.com> |
| |
| Fixed missing icons for WI.ThreadTreeElement and selected Heap Snapshots |
| https://bugs.webkit.org/show_bug.cgi?id=208719 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/InstrumentIcons.svg: Removed. |
| * UserInterface/Images/TypeIcons.svg: |
| * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css: |
| (.timeline-overview-graph.heap-allocations > img.snapshot.selected): |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.network-table > .table .cell.dom-node.name .icon): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > .breakpoints-container .tree-outline .item.event-target-window .icon): |
| (@media (prefers-color-scheme: dark) .sidebar > .panel.navigation.sources > .content > .breakpoints-container .tree-outline .item.event-target-window .icon): |
| * UserInterface/Views/ThreadTreeElement.css: |
| (.tree-outline > .item.thread .icon): |
| (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon): |
| (@media (prefers-color-scheme: dark) .tree-outline > .item.thread .icon): |
| (@media (prefers-color-scheme: dark) .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon): |
| * UserInterface/Views/TimelineIcons.css: |
| (.network-icon .icon): |
| (.script-icon .icon): |
| (.cpu-icon .icon): |
| (.memory-icon .icon): |
| (.heap-allocations-icon .icon): |
| (.layout-icon .icon): |
| (.rendering-frame-icon .icon): |
| (.media-icon .icon): |
| (@media (prefers-color-scheme: dark) .network-icon .icon): |
| (@media (prefers-color-scheme: dark) .script-icon .icon): |
| (@media (prefers-color-scheme: dark) .cpu-icon .icon): |
| (@media (prefers-color-scheme: dark) .memory-icon .icon): |
| (@media (prefers-color-scheme: dark) .heap-allocations-icon .icon): |
| (@media (prefers-color-scheme: dark) .layout-icon .icon): |
| (@media (prefers-color-scheme: dark) .rendering-frame-icon .icon): |
| (@media (prefers-color-scheme: dark) .media-icon .icon): |
| |
| 2020-03-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: annotate tab panels |
| https://bugs.webkit.org/show_bug.cgi?id=208542 |
| |
| Reviewed by Devin Rousso. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Main.js: |
| Remove `role=main` since it was providing very generic and not useful description to VoiceOver. |
| |
| 2020-03-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: can't leave Styles and Computed panels by pressing Tab |
| https://bugs.webkit.org/show_bug.cgi?id=208549 |
| <rdar://problem/60020149> |
| |
| Reviewed by Devin Rousso. |
| |
| Remove focus cycling inside of the Styles and Computed panels. |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown): |
| (WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown): |
| |
| 2020-03-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: the execution context picker is shown on pages with only one execution context if there are internal execution contexts |
| https://bugs.webkit.org/show_bug.cgi?id=208502 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole.prototype._updateActiveExecutionContextDisplay): |
| (WI.QuickConsole.prototype._handleEngineeringShowInternalExecutionContextsSettingChanged): |
| |
| 2020-03-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(?): Elements: unable to edit a tag name more than once |
| https://bugs.webkit.org/show_bug.cgi?id=208586 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype._insertInLastAttributePosition): |
| When inserting a new attribute, don't wipe out the existing DOM structure, which is required |
| in order for tag name editing to work (specifically having a `.html-tag-name` node). |
| |
| 2020-03-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: re-add `InspectorFrontendHost` support for moving the inspected window |
| https://bugs.webkit.org/show_bug.cgi?id=208555 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Partially revert r257759, as the design changed enough such that this code is still useful. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI.updateDockedState): |
| (WI.resizeDockedFrameMouseDown): Added. |
| (WI.moveUndockedWindowMouseDown): Added. |
| (WI.dockedConfigurationSupportsSplitContentBrowser): |
| (WI._windowFocused): |
| (WI._windowBlurred): |
| (WI._updateDockNavigationItems): |
| (WI._handleDockedResizerMouseDown): |
| (WI._handleUndockedTitleAreaMouseDown): |
| (WI._updateTabBarDividers): |
| (WI.setLayoutDirection): |
| Don't create tab bar navigation items for the various docking configurations if the platform |
| doesn't support that particular configuration. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar): |
| (WI.TabBar.get horizontalPadding): |
| (WI.TabBar.prototype._handleMouseDown): |
| (WI.TabBar.prototype._handleTabContainerMouseDown): Added. |
| (WI.TabBar.prototype._handleTabContainerClick): Added. |
| (WI.TabBar.prototype._handleTabContainerMouseLeave): Added. |
| (WI.TabBar.prototype._handleTabContainerContextMenu): Added. |
| (WI.TabBar.prototype._handleClick): Deleted. |
| (WI.TabBar.prototype._handleMouseLeave): Deleted. |
| (WI.TabBar.prototype._handleContextMenu): Deleted. |
| * UserInterface/Views/TabBar.css: |
| (body.docked.bottom .tab-bar > .tabs > .flexible-space): |
| Dragging on empty space in the tab bar should adjust Web Inspector's bottom docked height. |
| |
| * UserInterface/Views/TabBarItem.js: |
| (WI.TabBarItem.get horizontalMargin): |
| |
| 2020-03-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: the background of the navigation items in the tab bar doesn't match when unfocusing the window |
| https://bugs.webkit.org/show_bug.cgi?id=208538 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBar.css: |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:nth-child(2 of :not(.hidden)), body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden))): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:nth-child(2 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child): Deleted. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Deleted. |
| Use `nth-child` and `nth-last-child` instead of `:first-child` and `:last-child` now that |
| there are `.flexible-space` elements alongside tab bar items. |
| |
| (@media (prefers-color-scheme: dark) .tab-bar): |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body.docked .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted. |
| Ensure completely separate styles for `background-color` and `background-image` when `.docked` |
| vs when `:not(.docked)` so that they don't "bleed" into eachother. |
| |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): |
| (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar): |
| (.tab-bar > .navigation-bar > .item.group > .item): |
| (.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):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): |
| (.tab-bar > .tabs.static-layout > :matches(.flexible-space, .item)): |
| (.tab-bar > .tabs.animating.inserting-tab > .item.being-inserted): |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): |
| Drive-by: remove as many `!important` as possible to make future modification simpler. |
| |
| 2020-03-03 Jon Davis <jond@apple.com> |
| |
| Removed old raster icons for object types and resources |
| https://bugs.webkit.org/show_bug.cgi?id=208458 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/ApplicationCache.png: Removed. |
| * UserInterface/Images/ApplicationCache@2x.png: Removed. |
| * UserInterface/Images/ApplicationCacheManifest.png: Removed. |
| * UserInterface/Images/ApplicationCacheManifest@2x.png: Removed. |
| * UserInterface/Images/Assertion.svg: Removed. |
| * UserInterface/Images/AuditTestCase.svg: Removed. |
| * UserInterface/Images/AuditTestCaseResult.svg: Removed. |
| * UserInterface/Images/AuditTestGroup.svg: Removed. |
| * UserInterface/Images/AuditTestGroupResult.svg: Removed. |
| * UserInterface/Images/CPUInstrument.svg: Removed. |
| * UserInterface/Images/CallTrees.svg: Removed. |
| * UserInterface/Images/ClippingCSS.png: Removed. |
| * UserInterface/Images/ClippingCSS@2x.png: Removed. |
| * UserInterface/Images/ClippingCSSLarge.png: Removed. |
| * UserInterface/Images/ClippingCSSLarge@2x.png: Removed. |
| * UserInterface/Images/ClippingGeneric.png: Removed. |
| * UserInterface/Images/ClippingGeneric@2x.png: Removed. |
| * UserInterface/Images/ClippingGenericLarge.png: Removed. |
| * UserInterface/Images/ClippingGenericLarge@2x.png: Removed. |
| * UserInterface/Images/ClippingJS.png: Removed. |
| * UserInterface/Images/ClippingJS@2x.png: Removed. |
| * UserInterface/Images/ClippingJSLarge.png: Removed. |
| * UserInterface/Images/ClippingJSLarge@2x.png: Removed. |
| * UserInterface/Images/Cookie.png: Removed. |
| * UserInterface/Images/Cookie@2x.png: Removed. |
| * UserInterface/Images/DOMBreakpointAttributeModified.svg: Removed. |
| * UserInterface/Images/DOMBreakpointNodeRemoved.svg: Removed. |
| * UserInterface/Images/DOMBreakpointSubtreeModified.svg: Removed. |
| * UserInterface/Images/DOMCharacterData.svg: Removed. |
| * UserInterface/Images/DOMComment.svg: Removed. |
| * UserInterface/Images/DOMDocument.svg: Removed. |
| * UserInterface/Images/DOMDocumentType.svg: Removed. |
| * UserInterface/Images/DOMElement.svg: Removed. |
| * UserInterface/Images/DOMNode.svg: Removed. |
| * UserInterface/Images/DOMTextNode.svg: Removed. |
| * UserInterface/Images/Database.png: Removed. |
| * UserInterface/Images/Database@2x.png: Removed. |
| * UserInterface/Images/DatabaseTable.png: Removed. |
| * UserInterface/Images/DatabaseTable@2x.png: Removed. |
| * UserInterface/Images/DebuggerStatement.svg: Removed. |
| * UserInterface/Images/DocumentCSS.png: Removed. |
| * UserInterface/Images/DocumentCSS@2x.png: Removed. |
| * UserInterface/Images/DocumentCSSLarge.png: Removed. |
| * UserInterface/Images/DocumentCSSLarge@2x.png: Removed. |
| * UserInterface/Images/DocumentFont.png: Removed. |
| * UserInterface/Images/DocumentFont@2x.png: Removed. |
| * UserInterface/Images/DocumentFontLarge.png: Removed. |
| * UserInterface/Images/DocumentFontLarge@2x.png: Removed. |
| * UserInterface/Images/DocumentGL.png: Removed. |
| * UserInterface/Images/DocumentGL@2x.png: Removed. |
| * UserInterface/Images/DocumentGeneric.png: Removed. |
| * UserInterface/Images/DocumentGeneric@2x.png: Removed. |
| * UserInterface/Images/DocumentGenericLarge.png: Removed. |
| * UserInterface/Images/DocumentGenericLarge@2x.png: Removed. |
| * UserInterface/Images/DocumentImage.png: Removed. |
| * UserInterface/Images/DocumentImage@2x.png: Removed. |
| * UserInterface/Images/DocumentImageLarge.png: Removed. |
| * UserInterface/Images/DocumentImageLarge@2x.png: Removed. |
| * UserInterface/Images/DocumentJS.png: Removed. |
| * UserInterface/Images/DocumentJS@2x.png: Removed. |
| * UserInterface/Images/DocumentJSLarge.png: Removed. |
| * UserInterface/Images/DocumentJSLarge@2x.png: Removed. |
| * UserInterface/Images/DocumentMarkup.png: Removed. |
| * UserInterface/Images/DocumentMarkup@2x.png: Removed. |
| * UserInterface/Images/DocumentMarkupLarge.png: Removed. |
| * UserInterface/Images/DocumentMarkupLarge@2x.png: Removed. |
| * UserInterface/Images/EventBreakpointAnimationFrame.svg: Removed. |
| * UserInterface/Images/EventBreakpointInterval.svg: Removed. |
| * UserInterface/Images/EventBreakpointListener.svg: Removed. |
| * UserInterface/Images/EventBreakpointTimeout.svg: Removed. |
| * UserInterface/Images/EventListener.svg: Removed. |
| * UserInterface/Images/Events.svg: Removed. |
| * UserInterface/Images/Exception.svg: Removed. |
| * UserInterface/Images/FolderGeneric.png: Removed. |
| * UserInterface/Images/FolderGeneric@2x.png: Removed. |
| * UserInterface/Images/Function.svg: Removed. |
| * UserInterface/Images/HeapAllocationsInstrument.svg: Removed. |
| * UserInterface/Images/HeapSnapshot.svg: Removed. |
| * UserInterface/Images/HeapSnapshotDiff.svg: Removed. |
| * UserInterface/Images/HeapSnapshotInstances.svg: Removed. |
| * UserInterface/Images/HeapSnapshotObjectGraph.svg: Removed. |
| * UserInterface/Images/HeapSnapshotSelected.svg: Removed. |
| * UserInterface/Images/HeapSnapshotSummary.svg: Removed. |
| * UserInterface/Images/LayoutInstrument.svg: Removed. |
| * UserInterface/Images/LocalStorage.png: Removed. |
| * UserInterface/Images/LocalStorage@2x.png: Removed. |
| * UserInterface/Images/MediaInstrument.svg: Removed. |
| * UserInterface/Images/MemoryInstrument.svg: Removed. |
| * UserInterface/Images/Microtask.svg: Removed. |
| * UserInterface/Images/Native.svg: Removed. |
| * UserInterface/Images/NetworkInstrument.svg: Removed. |
| * UserInterface/Images/Object.svg: Removed. |
| * UserInterface/Images/PausedBreakpoint.svg: Removed. |
| * UserInterface/Images/Program.svg: Removed. |
| * UserInterface/Images/PseudoElement.svg: Removed. |
| * UserInterface/Images/Range.svg: Removed. |
| * UserInterface/Images/RangeLarge.svg: Removed. |
| * UserInterface/Images/Reflection.svg: Removed. |
| * UserInterface/Images/RenderingFrame.svg: Removed. |
| * UserInterface/Images/RenderingFramesInstrument.svg: Removed. |
| * UserInterface/Images/Request.svg: Removed. |
| * UserInterface/Images/Response.svg: Removed. |
| * UserInterface/Images/ScriptsInstrument.svg: Removed. |
| * UserInterface/Images/SessionStorage.png: Removed. |
| * UserInterface/Images/SessionStorage@2x.png: Removed. |
| * UserInterface/Images/Source.svg: Removed. |
| * UserInterface/Images/StyleRuleInheritedElement.svg: Removed. |
| * UserInterface/Images/TailDeletedFunction.svg: Removed. |
| * UserInterface/Images/Thread.svg: Removed. |
| * UserInterface/Images/TimelineRecordAPI.svg: Removed. |
| * UserInterface/Images/TimelineRecordAnimationFrame.svg: Removed. |
| * UserInterface/Images/TimelineRecordCSSAnimation.svg: Removed. |
| * UserInterface/Images/TimelineRecordCSSTransition.svg: Removed. |
| * UserInterface/Images/TimelineRecordComposite.svg: Removed. |
| * UserInterface/Images/TimelineRecordConsoleProfile.svg: Removed. |
| * UserInterface/Images/TimelineRecordEvent.svg: Removed. |
| * UserInterface/Images/TimelineRecordGarbageCollection.svg: Removed. |
| * UserInterface/Images/TimelineRecordLayout.svg: Removed. |
| * UserInterface/Images/TimelineRecordMediaElement.svg: Removed. |
| * UserInterface/Images/TimelineRecordPaint.svg: Removed. |
| * UserInterface/Images/TimelineRecordProbeSampled.svg: Removed. |
| * UserInterface/Images/TimelineRecordScriptEvaluated.svg: Removed. |
| * UserInterface/Images/TimelineRecordStyle.svg: Removed. |
| * UserInterface/Images/TimelineRecordTimer.svg: Removed. |
| * UserInterface/Images/TypeBigInt.svg: Removed. |
| * UserInterface/Images/TypeBoolean.svg: Removed. |
| * UserInterface/Images/TypeNull.svg: Removed. |
| * UserInterface/Images/TypeNumber.svg: Removed. |
| * UserInterface/Images/TypeObject.svg: Removed. |
| * UserInterface/Images/TypeRegex.svg: Removed. |
| * UserInterface/Images/TypeString.svg: Removed. |
| * UserInterface/Images/TypeSymbol.svg: Removed. |
| * UserInterface/Images/TypeUndefined.svg: Removed. |
| * UserInterface/Images/URLBreakpoint.svg: Removed. |
| * UserInterface/Images/WebSocket.png: Removed. |
| * UserInterface/Images/WebSocket@2x.png: Removed. |
| * UserInterface/Images/WebSocketLarge.png: Removed. |
| * UserInterface/Images/WebSocketLarge@2x.png: Removed. |
| * UserInterface/Images/WorkerScript.png: Removed. |
| * UserInterface/Images/WorkerScript@2x.png: Removed. |
| * UserInterface/Images/WorkerScriptLarge.png: Removed. |
| * UserInterface/Images/WorkerScriptLarge@2x.png: Removed. |
| |
| 2020-03-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: visual artifacts in the corner of selected tabs when docked in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=208498 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBar.css: |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) body.docked .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted. |
| The `background-color` set by `body.docked .tab-bar > .tabs > .item:not(.disabled).selected` |
| in light mode was also being applied in dark mode. When docked, don't use `background-image` |
| and instead exclusively use `background-color` so nothing is still applied. |
| |
| 2020-03-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Items in the toolbar take up to much vertical space |
| https://bugs.webkit.org/show_bug.cgi?id=204627 |
| <rdar://problem/59091905> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Merge the toolbar are and tab bar to waste less vertical space. |
| |
| Existing toolbar buttons have been moved to a space before the tab bar, and are only shown |
| when needed (e.g. only show the reload button when remotely inspecting). |
| |
| If there are any console warnings/errors, an icon for each type of message is shown between |
| the left buttons and the tabs, and each button's opacity is animated whenever a new message |
| is added. |
| |
| Whenever the debugger pauses, change the tab bar icon of the Sources Tab to an image that |
| includes paused iconography to help convey the debugger's state no matter which tab is |
| currently selected, just like the debugger dashboard. |
| |
| The dashboard network information has been moved to the Network Tab (described below). |
| |
| When undocked, the tab bar and all the content below it are pushed down by 22px to make room |
| for the system close/minimize/maximize buttons and the window title. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI._handleSettingsKeyboardShortcut): |
| (WI._tryToRestorePendingTabs): |
| (WI.isNewTabWithTypeAllowed): |
| (WI._openDefaultTab): Deleted. |
| (WI.showNewTabTab): Deleted. |
| * UserInterface/Views/Main.css: |
| (#undocked-title-area): Added. |
| (body.docked #undocked-title-area): Added. |
| (body.window-inactive #undocked-title-area): Added. |
| (#main): |
| (@keyframes tab-bar-console-item-pulse): Added. |
| (.tab-bar > .navigation-bar :matches(.console-warnings, .console-errors):not(.disabled).pulsing): Added. |
| (@media (prefers-color-scheme: dark) #undocked-title-area): Added. |
| (@media (prefers-color-scheme: dark) body.window-inactive #undocked-title-area): Added. |
| (body.docked.bottom): Deleted. |
| (body.docked.bottom #toolbar): Deleted. |
| (body.docked.bottom #toolbar .item:not(.flexible-space)): Deleted. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar): |
| (WI.TabBar.get horizontalPadding): Added. |
| (WI.TabBar.prototype.addNavigationItemBefore): Added. |
| (WI.TabBar.prototype.addNavigationItemAfter): Added. |
| (WI.TabBar.prototype.insertTabBarItem): |
| (WI.TabBar.prototype.insertTabBarItem.animateTabs): |
| (WI.TabBar.prototype.insertTabBarItem.removeStyles): |
| (WI.TabBar.prototype.removeTabBarItem): |
| (WI.TabBar.prototype.removeTabBarItem.animateTabs): |
| (WI.TabBar.prototype.removeTabBarItem.removeStyles): |
| (WI.TabBar.prototype.set selectedTabBarItem): |
| (WI.TabBar.prototype.get tabCount): Added. |
| (WI.TabBar.prototype.layout): |
| (WI.TabBar.prototype.layout.measureItemWidth): |
| (WI.TabBar.prototype.layout.recalculateItemWidths): |
| (WI.TabBar.prototype.didLayoutSubtree): Added. |
| (WI.TabBar.prototype._recordTabBarItemSizesAndPositions): |
| (WI.TabBar.prototype._recordTabBarItemSizesAndPositions.add): Added. |
| (WI.TabBar.prototype._applyTabBarItemSizesAndPositions): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose.animateTabs): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose.removeStyles): |
| (WI.TabBar.prototype._handleClick): |
| (WI.TabBar.prototype._handleMouseMoved): |
| (WI.TabBar.prototype._handleMouseMoved.inlineStyleValue): Added. |
| (WI.TabBar.prototype._handleMouseUp): |
| (WI.TabBar.prototype._handleMouseLeave): |
| (WI.TabBar.prototype._handleContextMenu): |
| (WI.TabBar.prototype.get saveableTabCount): Deleted. |
| (WI.TabBar.layout.forceItemHidden): Deleted. |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar): |
| (body:not(.docked) .tab-bar): Added. |
| (body.docked .tab-bar): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added. |
| (.tab-bar > .border): Added. |
| (.tab-bar > .border.top): Added. |
| (.tab-bar > .border.bottom): Added. |
| (body.docked.bottom .tab-bar > .border.top): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Added. |
| (.tab-bar > .navigation-bar): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))): Added. |
| (.tab-bar > .navigation-bar .item.divider): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Added. |
| (.tab-bar > .tabs): Added. |
| (body.docked .tab-bar .tabs): Added. |
| (.tab-bar > .tabs > .item): Added. |
| (body:not(.docked) .tab-bar > .tabs > .item): Added. |
| (body:not(.docked) .tab-bar > .tabs > .item:not(.pinned)): Added. |
| (body.docked .tab-bar > .tabs > .item): Added. |
| (.tab-bar > .tabs.calculate-width > .item): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Added. |
| (.tab-bar > .tabs > .item.pinned): Added. |
| (body.docked .tab-bar > .tabs > .item.pinned): Added. |
| (body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body.docked .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added. |
| (body.docked .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover, body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover + .item, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover): Added. |
| (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:last-child:not(.selected, .disabled):hover, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover + .item): Added. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (.tab-bar > .tabs > .item > .flex-space): Added. |
| (.tab-bar > .tabs > .item > .icon): Added. |
| (.tab-bar > .tabs > .item.pinned > .icon): Added. |
| (.tab-bar > .tabs > .item:not(.selected):hover > .icon): Added. |
| (.tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added. |
| (.tab-bar > .tabs > .item.disabled > .icon): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .icon): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added. |
| (.tab-bar > .tabs > .item > .title): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .title): Added. |
| (.tab-bar > .tabs > .item > .title > .content): Added. |
| (.tab-bar > .tabs:not(.animating) > .item:not(.selected):hover > .title): Added. |
| (.tab-bar > .tabs > .item:not(.disabled).selected > .title): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .title): Added. |
| (.tab-bar > .tabs.static-layout): Added. |
| (.tab-bar > .tabs.static-layout > :matches(.flexible-space, .item)): Added. |
| (.tab-bar > .tabs.animating.closing-tab > .item): Added. |
| (.tab-bar > .tabs.animating:matches(.expanding-tabs, .inserting-tab) > .item): Added. |
| (.tab-bar > .tabs.animating.inserting-tab > .item.being-inserted): Added. |
| (body:not(.docked) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added. |
| (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added. |
| (.tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body.docked.bottom .tab-bar > .border.top): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item): Added. |
| (@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added. |
| (@media (prefers-color-scheme: dark) body.docked .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): Added. |
| (@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item > .icon): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover > .icon): Added. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added. |
| (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added. |
| (body.window-inactive .tab-bar): Deleted. |
| (.tab-bar > .top-border): Deleted. |
| (body.window-inactive .tab-bar > .top-border): Deleted. |
| (.tab-bar > .item): Deleted. |
| (.tab-bar.calculate-width > .item): Deleted. |
| (body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),): Deleted. |
| (body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),): Deleted. |
| (.tab-bar > .item.pinned): Deleted. |
| (.tab-bar > .item.pinned.tab-picker): Deleted. |
| (.tab-bar > .item:not(.disabled).selected): Deleted. |
| (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover): Deleted. |
| (body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted. |
| (body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted. |
| (body.window-inactive .tab-bar > .item): Deleted. |
| (body[dir=ltr].window-inactive .tab-bar > .item): Deleted. |
| (body[dir=rtl].window-inactive .tab-bar > .item): Deleted. |
| (body.window-inactive .tab-bar > .item.selected): Deleted. |
| (.tab-bar > .item > .close): Deleted. |
| (body:not(.window-inactive) .tab-bar > .item:hover > .close): Deleted. |
| (body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close): Deleted. |
| (.tab-bar.single-tab > .item.default-tab > .close): Deleted. |
| (.tab-bar > .item > .close:hover): Deleted. |
| (.tab-bar > .item > .close:active): Deleted. |
| (.tab-bar > .item > .flex-space): Deleted. |
| (.tab-bar > .item.ephemeral > .flex-space:last-child): Deleted. |
| (.tab-bar > .item > .icon): Deleted. |
| (.tab-bar > .item.pinned > .icon): Deleted. |
| (.tab-bar > .item.selected > .icon): Deleted. |
| (.tab-bar > .item.disabled > .icon): Deleted. |
| (@media not (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon): Deleted. |
| (.tab-bar > .item > .title): Deleted. |
| (.tab-bar:not(.collapsed) > .item > .title): Deleted. |
| (.tab-bar > .item > .title > .content): Deleted. |
| (.tab-bar:not(.animating) > .item:not(.selected):hover > .title): Deleted. |
| (.tab-bar > .item.selected > .title): Deleted. |
| (.tab-bar.collapsed > .item): Deleted. |
| (.tab-bar.collapsed > .item:not(.pinned) > .icon): Deleted. |
| (.tab-bar.collapsed > .item > .flex-space): Deleted. |
| (.tab-bar.collapsed > .item > .close): Deleted. |
| (.tab-bar.collapsed > .item:hover > .close): Deleted. |
| (.tab-bar.collapsed > .item.ephemeral:hover > .icon): Deleted. |
| (.tab-bar.collapsed > .item.ephemeral:hover > .title): Deleted. |
| (.tab-bar.static-layout): Deleted. |
| (.tab-bar.static-layout > .item): Deleted. |
| (.tab-bar.animating.closing-tab > .item): Deleted. |
| (.tab-bar.animating:matches(.expanding-tabs, .inserting-tab) > .item): Deleted. |
| (.tab-bar.animating.inserting-tab > .item.being-inserted): Deleted. |
| (.tab-bar.dragging-tab > .item.selected,): Deleted. |
| (body.window-inactive .tab-bar.dragging-tab > .item.selected,): Deleted. |
| (.tab-bar.dragging-tab > .item.selected): Deleted. |
| (@media (prefers-color-scheme: dark) .tab-bar > .item): Deleted. |
| (@media (prefers-color-scheme: dark) .tab-bar > .item > .title): Deleted. |
| (@media (prefers-color-scheme: dark) .tab-bar > .item:not(.disabled).selected): Deleted. |
| (@media (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected):hover): Deleted. |
| (@media (prefers-color-scheme: dark) .tab-bar > .item > .close,): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item.selected): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item > .title): Deleted. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView): |
| (WI.NetworkTableContentView.prototype.reset): |
| (WI.NetworkTableContentView.prototype.tablePopulateCell): |
| (WI.NetworkTableContentView.prototype._changeCollection): |
| (WI.NetworkTableContentView.prototype.initialLayout): |
| (WI.NetworkTableContentView.prototype.processHAR): |
| (WI.NetworkTableContentView.prototype._processPendingEntries): |
| (WI.NetworkTableContentView.prototype._updateEntryForResource): |
| (WI.NetworkTableContentView.prototype._mainResourceDidChange): |
| (WI.NetworkTableContentView.prototype._handleResourceSizeDidChange): Added. |
| (WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange): |
| (WI.NetworkTableContentView.prototype._handleResourceAdded): |
| (WI.NetworkTableContentView.prototype._handleFrameWasAdded): |
| (WI.NetworkTableContentView.prototype._entryForResource): |
| (WI.NetworkTableContentView.prototype._updateStatistics): Added. |
| (WI.NetworkTableContentView.prototype._updateStatistic): Added. |
| (WI.NetworkTableContentView.prototype._startUpdatingLoadTimeStatistic): Added. |
| (WI.NetworkTableContentView.prototype._stopUpdatingLoadTimeStatistic): Added. |
| (WI.NetworkTableContentView.prototype._updateLoadTimeStatistic): Added. |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.content-view.network .network-table): Added. |
| (.network-table > .statistics): Added. |
| (.network-table > .statistics > .statistic): Added. |
| (.network-table > .statistics > .statistic[hidden]): Added. |
| (.network-table > .statistics > .statistic > .icon): Added. |
| (.network-table > .statistics > .statistic > .text): Added. |
| Add a fixed row below the network table that contains statistics information based on the |
| current shown collection (e.g. live data vs HAR): |
| - number of domains |
| - number of resources |
| - total resource size |
| - total transfer size |
| - number of redirects |
| - time to load |
| NOTE: elided renaming CSS changes. |
| |
| * UserInterface/Views/TabBrowser.js: |
| (WI.TabBrowser.prototype.addTabForContentView): |
| (WI.TabBrowser.prototype.closeTabForContentView): |
| (WI.TabBrowser.prototype._tabBarItemSelected): |
| (WI.TabBrowser.prototype._tabBarItemRemoved): |
| |
| * UserInterface/Views/TabContentView.js: |
| (WI.TabContentView.shouldPinTab): Added. |
| * UserInterface/Views/AuditTabContentView.js: |
| (WI.AuditTabContentView): |
| (WI.AuditTabContentView.tabInfo): |
| * UserInterface/Views/CanvasTabContentView.js: |
| (WI.CanvasTabContentView): |
| (WI.CanvasTabContentView.tabInfo): |
| * UserInterface/Views/ConsoleTabContentView.js: |
| (WI.ConsoleTabContentView): |
| (WI.ConsoleTabContentView.tabInfo): |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| (WI.ContentBrowserTabContentView): |
| * UserInterface/Views/ElementsTabContentView.js: |
| (WI.ElementsTabContentView): |
| (WI.ElementsTabContentView.tabInfo): |
| * UserInterface/Views/LayersTabContentView.js: |
| (WI.LayersTabContentView): |
| (WI.LayersTabContentView.tabInfo): |
| * UserInterface/Views/NetworkTabContentView.js: |
| (WI.NetworkTabContentView): |
| (WI.NetworkTabContentView.tabInfo): |
| * UserInterface/Views/SearchTabContentView.js: |
| (WI.SearchTabContentView): |
| (WI.SearchTabContentView.tabInfo): |
| (WI.SearchTabContentView.shouldPinTab): Added. |
| (WI.SearchTabContentView.shouldSaveTab): Added. |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView): |
| (WI.SettingsTabContentView.tabInfo): |
| (WI.SettingsTabContentView.shouldPinTab): Added. |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView): |
| (WI.SourcesTabContentView.tabInfo): |
| (WI.SourcesTabContentView.prototype._handleDebuggerPaused): Added. |
| (WI.SourcesTabContentView.prototype._handleDebuggerResumed): Added. |
| * UserInterface/Views/StorageTabContentView.js: |
| (WI.StorageTabContentView): |
| (WI.StorageTabContentView.tabInfo): |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView): |
| (WI.TimelineTabContentView.tabInfo): |
| * UserInterface/Views/TabBarItem.js: |
| (WI.TabBarItem): |
| (WI.TabBarItem.get horizontalMargin): Added. |
| (WI.TabBarItem.prototype.get element): |
| (WI.TabBarItem.prototype.get representedObject): |
| (WI.TabBarItem.prototype.set disabled): |
| (WI.TabBarItem.prototype.get hidden): Added. |
| (WI.TabBarItem.prototype.set hidden): Added. |
| (WI.TabBarItem.prototype.set representedObject): Deleted. |
| (WI.TabBarItem.prototype.get isDefaultTab): Deleted. |
| (WI.TabBarItem.prototype.set isDefaultTab): Deleted. |
| * UserInterface/Views/GeneralTabBarItem.js: |
| (WI.GeneralTabBarItem.fromTabContentView): Added. |
| (WI.GeneralTabBarItem): Deleted. |
| (WI.GeneralTabBarItem.fromTabInfo): Deleted. |
| (WI.GeneralTabBarItem.prototype.get isEphemeral): Deleted. |
| (WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted. |
| * UserInterface/Views/PinnedTabBarItem.js: |
| (WI.PinnedTabBarItem): |
| (WI.PinnedTabBarItem.fromTabContentView): Added. |
| (WI.PinnedTabBarItem.titleDidChange): |
| (WI.PinnedTabBarItem.fromTabInfo): Deleted. |
| (WI.PinnedTabBarItem.prototype.titleDidChange): Deleted. |
| (WI.PinnedTabBarItem.prototype._handleContextMenuEvent): Deleted. |
| Simplify how tab bar items are created. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar.prototype.get sizesToFit): |
| (WI.NavigationBar.prototype.addNavigationItem): |
| (WI.NavigationBar.prototype.insertNavigationItem): |
| * UserInterface/Views/SizesToFitNavigationBar.js: Removed. |
| * UserInterface/Views/Sidebar.js: |
| (WI.Sidebar): |
| * UserInterface/Views/GraphicsOverviewContentView.js: |
| (WI.GraphicsOverviewContentView.prototype.initialLayout): |
| Support marking `sizesToFit` during construction, instead of having to make a subclass. |
| |
| * UserInterface/Views/ButtonNavigationItem.js: |
| (WI.ButtonNavigationItem): |
| (WI.ButtonNavigationItem.prototype.get imageType): Added. |
| (WI.ButtonNavigationItem.prototype.set imageType): Added. |
| (WI.ButtonNavigationItem.prototype._update): |
| * UserInterface/Views/ButtonNavigationItem.css: |
| (.tab-bar > .navigation-bar .item.button.image-and-text > span): Added. |
| (.navigation-bar .item.button > img): Added. |
| (.navigation-bar .item.button.disabled > img): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Added. |
| (@media (prefers-color-scheme: dark) .navigation-bar .item.button.disabled > img): Added. |
| Allow `WI.ButtonNavigationItem` to use an `<img>` instead of an `<svg>` for it's image. This |
| is to work around a compositing bug <https://webkit.org/b/207022>. |
| |
| * UserInterface/Views/GroupNavigationItem.js: |
| (WI.GroupNavigationItem.prototype.get hidden): Added. |
| (WI.GroupNavigationItem.prototype.set hidden): Added. |
| (WI.GroupNavigationItem.prototype.get additionalClassNames): Added. |
| Add a special case where this item is considered `hidden` if all sub-items are also `hidden`. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| (body:matches(.window-inactive, .window-docked-inactive)): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) *): Added. |
| (body:not(.docked)): Added. |
| (@media (prefers-color-scheme: dark) :root): |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Added. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Added. |
| (body.window-inactive): Deleted. |
| (body.window-inactive *): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive *): Deleted. |
| Replace `--toolbar-height` with `--undocked-title-area-height`, which is set when docked. |
| Define `--tab-bar-height` in terms of `--navigation-bar-height` so they share the same value. |
| |
| * UserInterface/Views/DividerNavigationItem.css: |
| (.navigation-bar .item.divider): |
| (@media (prefers-color-scheme: dark)): |
| Simplify the CSS in order to better support being used in the tab bar. |
| |
| * UserInterface/Views/FlexibleSpaceNavigationItem.css: |
| (.navigation-bar .item.flexible-space): |
| (.navigation-bar .item.flexible-space.align-start > .item): |
| (.navigation-bar .item.flexible-space.align-end > .item): |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space): Deleted. |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item): Deleted. |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item): Deleted. |
| Remove toolbar styles. |
| |
| * UserInterface/Controllers/ConsoleManager.js: |
| (WI.ConsoleManager): |
| (WI.ConsoleManager.prototype.get warningCount): Added. |
| (WI.ConsoleManager.prototype.get errorCount): Added. |
| (WI.ConsoleManager.prototype.messageWasAdded): |
| (WI.ConsoleManager.prototype.messagesCleared): |
| (WI.ConsoleManager.prototype.messageRepeatCountUpdated): |
| (WI.ConsoleManager.prototype._incrementMessageLevelCount): Added. |
| (WI.ConsoleManager.prototype._delayedMessagesCleared): |
| Keep track of the count of warnings and errors so that they can be used to determine when to |
| show Console button navigation items in the tab bar. |
| |
| * UserInterface/Views/DOMTreeContentView.css: |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added. |
| (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted. |
| (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted. |
| * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Added. |
| (body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Deleted. |
| * UserInterface/Views/TimelineOverview.css: |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| * UserInterface/Views/TimelineRecordFrame.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Added. |
| (body.window-inactive .timeline-record-frame.selected): Deleted. |
| * UserInterface/Views/TimelineRuler.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Added. |
| (body.window-inactive .timeline-ruler > .header > .divider): Deleted. |
| Add selectors for `.window-docked-inactive` everywhere that `.window-inactive` exists. |
| |
| * UserInterface/Base/Setting.js: |
| Remove new tab bar experimental setting. |
| |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| (WI.runBootstrapOperations.applyDumpMessagesState): |
| (WI.runBootstrapOperations.updateDebugUI): |
| |
| * UserInterface/Main.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Views/ActivateButtonToolbarItem.js: Removed. |
| * UserInterface/Views/ButtonToolbarItem.js: Removed. |
| * UserInterface/Views/ButtonToolbarItem.css: Removed. |
| * UserInterface/Views/ControlToolbarItem.js: Removed. |
| * UserInterface/Views/ControlToolbarItem.css: Removed. |
| * UserInterface/Views/Toolbar.js: Removed. |
| * UserInterface/Views/Toolbar.css: Removed. |
| Remove toolbar related code now that it has been merged into the tab bar. |
| |
| * UserInterface/Models/DebuggerDashboard.js: Removed. |
| * UserInterface/Models/DefaultDashboard.js: Removed. |
| * UserInterface/Views/DashboardContainerView.js: Removed. |
| * UserInterface/Views/DashboardContainerView.css: Removed. |
| * UserInterface/Views/DashboardView.js: Removed. |
| * UserInterface/Views/DebuggerDashboardView.js: Removed. |
| * UserInterface/Views/DebuggerDashboardView.css: Removed. |
| * UserInterface/Views/DefaultDashboardView.js: Removed. |
| * UserInterface/Views/DefaultDashboardView.css: Removed. |
| Remove dashboard related code now that it has been merged into the tab bar. |
| |
| * UserInterface/Views/LegacyTabBar.js: Removed. |
| * UserInterface/Views/NewTabContentView.js: Removed. |
| * UserInterface/Views/NewTabContentView.css: Removed. |
| * UserInterface/Images/NewTab.svg: Removed. |
| * UserInterface/Images/NewTabPlus.svg: Removed. |
| * UserInterface/Images/SearchResults.svg: Removed. |
| Remove the lebacy tab bar in favor of the new tab bar. |
| |
| 2020-03-02 Jon Davis <jond@apple.com> |
| |
| Updated breakpoint and search type icons |
| https://bugs.webkit.org/show_bug.cgi?id=208453 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/ApplicationCacheManifest.svg: |
| * UserInterface/Images/ClippingIcons.svg: |
| * UserInterface/Images/DocumentIcons.svg: |
| * UserInterface/Images/FolderGeneric.svg: |
| * UserInterface/Images/InstrumentIcons.svg: |
| * UserInterface/Images/NavigationItemNetworkOverride.svg: |
| * UserInterface/Images/Origin.svg: |
| * UserInterface/Images/TableIcons.svg: |
| * UserInterface/Images/TypeIcons.svg: |
| * UserInterface/Views/BreakpointTreeElement.css: |
| (.breakpoint-debugger-statement-icon .icon): |
| (.breakpoint-generic-line-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-debugger-statement-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-generic-line-icon .icon): |
| * UserInterface/Views/EventBreakpointTreeElement.css: |
| (.breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon): |
| (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-animation-frame:not(.breakpoint-paused-icon) .icon): |
| (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon): |
| (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-listener:not(.breakpoint-paused-icon) .icon): |
| (@media(prefers-color-scheme: dark) .breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon): |
| * UserInterface/Views/FolderIcon.css: |
| (.tree-outline .folder-icon.selected:focus .icon): |
| (.tree-outline .origin-icon.selected:focus .icon): |
| (.tree-outline:focus .folder-icon.selected .icon): Deleted. |
| (.tree-outline:focus .origin-icon.selected .icon): Deleted. |
| * UserInterface/Views/RecordingActionTreeElement.css: |
| (.item.recording-action > .icon): |
| (@media (prefers-color-scheme: dark) .item.recording-action > .icon): |
| |
| 2020-03-02 Jon Davis <jond@apple.com> |
| |
| Update the resource override button icon |
| https://bugs.webkit.org/show_bug.cgi?id=208459 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/NavigationItemNetworkOverride.svg: |
| |
| 2020-02-28 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r257411): Web Inspector: Can't add a breakpoint by pressing the plus button |
| https://bugs.webkit.org/show_bug.cgi?id=208359 |
| <rdar://problem/59870712> |
| |
| Reviewed by Brian Burg. |
| |
| In r257411 I added event.stop() (which is a shortcut for event.preventDefault() and |
| event.stopImmediatePropagation()) to mousedown handler. Calling event.stopImmediatePropagation() |
| prevented other mousedown event handlers from running. |
| |
| This patch no longer calls event.stopImmediatePropagation(). |
| |
| * UserInterface/Views/ButtonNavigationItem.js: |
| (WI.ButtonNavigationItem.prototype._handleMouseDown): |
| |
| 2020-02-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: allow use of dark mode theme independently from system-wide theme |
| https://bugs.webkit.org/show_bug.cgi?id=186308 |
| <rdar://problem/40785895> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createGeneralSettingsView): |
| Create a setting for controlling/preserving the theme of the frontend UI. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI.contentLoaded): |
| Apply the created setting when Web Inspector is opened or if its value changes. |
| |
| * UserInterface/Views/SettingEditor.js: |
| (WI.SettingEditor.prototype._createEditorElement): |
| Allow horizontal dividers in `<select>` setting editors. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-02-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: localize the placeholder "Header" and "value" when editing a local override |
| https://bugs.webkit.org/show_bug.cgi?id=208276 |
| <rdar://problem/59763619> |
| |
| Reviewed by Brian Burg. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype.show): |
| |
| 2020-02-26 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION: (257410) [ macOS ] inspector/network/client-blocked-load.html is failing |
| https://bugs.webkit.org/show_bug.cgi?id=208251 |
| <rdar://problem/59812765> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode): |
| The test failed because it expected `url` to be an empty string (`""`) instead of `null`. |
| Use the given `url` parameter exactly as provided instead of trying to add a fallback in the |
| case of a falsy value. Given the prevalence of usage of `WI.SourceCode`, it's better to |
| match the existing behavior of before r257410 than change it and risk other subtle bugs. |
| |
| 2020-02-25 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: AXI: buttons should be focusable when navigating by pressing Tab |
| https://bugs.webkit.org/show_bug.cgi?id=208163 |
| <rdar://problem/59745448> |
| |
| Reviewed by Brian Burg. |
| |
| Buttons now accessible with Tab navigation. The focused button has the native focus outline. |
| |
| Clicking on the button does NOT move the focus. For example, when you're focused on the |
| console prompt, clicking on the icon to hide the right sidebar keeps you focused where |
| you were — the console prompt. This behavior matches macOS. |
| |
| Convert WI.NavigationItem with role=button from `<div>` to `<button>` elements. |
| Button elements have implicit tabIndex=0. When focused, pressing Space or Enter |
| triggers "click" event. |
| |
| * UserInterface/Views/ActivateButtonNavigationItem.js: |
| (WI.ActivateButtonNavigationItem.prototype.set activated): |
| Add "aria-pressed" and "aria-label" attributes for VoiceOver. |
| |
| * UserInterface/Views/ButtonNavigationItem.css: |
| (.navigation-bar .item.button:not(.image-only):focus,): |
| (.navigation-bar .item.button.image-only:focus): |
| (.navigation-bar .item.button:not(.disabled):matches(.activate.activated, .radio.selected) > .glyph): |
| (.navigation-bar .item.button:not(.disabled):active:matches(.activate.activated, .radio.selected) > .glyph): |
| Before this patch, focused button looked the same as activated buttons. |
| For example, the focused (non-active) bullseye icon looked exactly the |
| same as unfocused active bullseye icon, which was misleading. |
| |
| * UserInterface/Views/ButtonNavigationItem.js: |
| (WI.ButtonNavigationItem): |
| (WI.ButtonNavigationItem.prototype._mouseClicked): |
| (WI.ButtonNavigationItem.prototype._handleMouseDown): |
| Clicking on a button shouldn't move focus. For example, when you're focused on the console prompt, |
| clicking on the icon to hide the right sidebar should keep you focused where you were - the console prompt. |
| |
| (WI.ButtonNavigationItem.prototype._handleKeyDown): |
| * UserInterface/Views/ButtonToolbarItem.css: |
| (.toolbar .item.button): |
| Adjust outline offset to remove the gap between the outline and the border of the button. |
| |
| (.toolbar .item.button:not(.disabled).activate.activated): |
| (@media (prefers-color-scheme: dark) body:not(.window-inactive) .toolbar .item.button:not(.disabled).activate.activated > .glyph): |
| * UserInterface/Views/ControlToolbarItem.css: |
| (.toolbar .item.control:focus): |
| (.toolbar .item.control:focus > .glyph): |
| Draw the outline around the X (close button) glyph, not the button itself (which is much wider than the glyph). |
| |
| * UserInterface/Views/NavigationBar.css: |
| (.navigation-bar .item): |
| (.navigation-bar .item:focus): |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar): |
| "focus" and "blur" events don't bubble. These event handlers didn't capture the event. |
| |
| (WI.NavigationBar.prototype._mouseDown): |
| (WI.NavigationBar.prototype._keyDown): |
| * UserInterface/Views/NavigationItem.js: |
| (WI.NavigationItem): |
| * UserInterface/Views/RadioButtonNavigationItem.css: |
| (.navigation-bar .item.radio.button:focus): |
| * UserInterface/Views/Toolbar.css: |
| (.toolbar .item): |
| |
| 2020-02-25 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: safari app extension isolated worlds and injected files use the extension's identifier instead of its name |
| https://bugs.webkit.org/show_bug.cgi?id=206911 |
| <rdar://problem/58026635> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/BrowserManager.js: Added. |
| (WI.BrowserManager): |
| (WI.BrowserManager.prototype.initializeTarget): |
| (WI.BrowserManager.prototype.enable): |
| (WI.BrowserManager.prototype.disable): |
| (WI.BrowserManager.prototype.isExtensionScheme): |
| (WI.BrowserManager.prototype.extensionNameForId): |
| (WI.BrowserManager.prototype.extensionNameForURL): |
| * UserInterface/Protocol/BrowserObserver.js: Added. |
| (WI.BrowserObserver.prototype.extensionsEnabled): |
| (WI.BrowserObserver.prototype.extensionsDisabled): |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.get BrowserAgent): Added. |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| * UserInterface/Main.html: |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| * UserInterface/Test.html: |
| Add an observer and manager for the `Browser` domain. |
| |
| * UserInterface/Protocol/MultiplexingBackendTarget.js: |
| (WI.MultiplexingBackendTarget): |
| (WI.MultiplexingBackendTarget.prototype.initialize): |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager.prototype.initializeTarget): Added. |
| The `Browser` agent lives in the UIProcess alongside the `Target` agent (meaning there |
| should only be one per debuggable rather than one per target) and as such is not routed |
| through the `Target` agent. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole.prototype._displayNameForExecutionContext): |
| Attempt to match the execution context name against any known extension identifier, and |
| use the extension's display name if one is found. |
| |
| * UserInterface/Base/URLUtilities.js: |
| (WI.displayNameForHost): |
| Attempt to match the host against any known extension identifier, and use the extension's |
| display name if one is found. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._addStyleSheet): |
| (WI.SourcesNavigationSidebarPanel.prototype._addScript): |
| * UserInterface/Base/Utilities.js: |
| (isWebKitExtensionScheme): Deleted. |
| * .eslintrc: |
| Use `WI.BrowserManager.prototype.isExtensionScheme` instead of the global function. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode): |
| (WI.SourceCode.prototype.get url): Added. |
| (WI.SourceCode.prototype.get urlComponents): Added. |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet): |
| (WI.CSSStyleSheet.prototype.get injected): |
| (WI.CSSStyleSheet.prototype.get url): Deleted. |
| (WI.CSSStyleSheet.prototype.get urlComponents): Deleted. |
| * UserInterface/Models/Resource.js: |
| (WI.Resource): |
| (WI.Resource.prototype.get url): Deleted. |
| (WI.Resource.prototype.get urlComponents): Deleted. |
| * UserInterface/Models/Script.js: |
| (WI.Script): |
| (WI.Script.prototype.get url): Deleted. |
| (WI.Script.prototype.get urlComponents): Deleted. |
| All subclasses of `WI.SourceCode` have separate `get url` and `get urlComponents` functions, |
| so unify them in the common superclass so that it's guaranteed to exist. |
| |
| 2020-02-25 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: move code for debug outlined focus element to the Debug folder so it isn't shipped |
| https://bugs.webkit.org/show_bug.cgi?id=208217 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI.contentLoaded.setFocusDebugOutline): Deleted. |
| * UserInterface/Views/Main.css: |
| (body.focus-debug *:focus): Deleted. |
| |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| (WI.runBootstrapOperations.setFocusDebugOutline): Added. |
| * UserInterface/Debug/Bootstrap.css: Added. |
| (body.focus-debug *:focus): |
| |
| * UserInterface/Main.html: |
| |
| 2020-02-25 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: VoiceOver should read "Console prompt" when focusing on it |
| https://bugs.webkit.org/show_bug.cgi?id=208028 |
| <rdar://problem/59641238> |
| |
| Reviewed by Brian Burg. |
| |
| Before this change, VoiceOver read "edit text blank" when focusing on the console prompt. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Views/ConsolePrompt.js: |
| (WI.ConsolePrompt): |
| |
| 2020-02-25 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: VoiceOver: TreeOutline does not correctly indicate selected item |
| https://bugs.webkit.org/show_bug.cgi?id=207968 |
| |
| Reviewed by Brian Burg. |
| |
| Previously, the entire TreeOutline's DOM element had focus. With this patch, |
| selected item DOM element has focus instead. When clicking on the treeElement, |
| set tabIndex to 0 and focus on it. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom): Fix indentation. |
| |
| (.tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): |
| (.tree-outline.dom:not(.non-selectable) li.hovered:not(.selected) .selection-area): |
| (.tree-outline.dom:focus-within li.inspected-node.selected > span::after): |
| (.tree-outline.dom li): |
| Remove outline - selection is already indicated by the background. |
| |
| (.tree-outline.dom:focus-within li.selected .pseudo-class-indicator): |
| (.tree-outline.dom:focus-within li.selected): |
| (.tree-outline.dom:focus-within li.selected *): |
| (.tree-outline.dom:focus-within li.parent.selected::before): |
| (.tree-outline.dom:focus-within li.parent.expanded.selected::before): |
| * UserInterface/Views/DOMTreeOutline.js: |
| * UserInterface/Views/TreeElement.js: |
| (WI.TreeElement.prototype._attach): |
| (WI.TreeElement.prototype.collapse): |
| (WI.TreeElement.prototype.expand): |
| (WI.TreeElement.prototype.select): |
| (WI.TreeElement.prototype.deselect): |
| (WI.TreeElement.prototype.focus): |
| (WI.TreeElement.prototype.unfocus): |
| * UserInterface/Views/TreeOutline.css: |
| (.tree-outline .item.selected:focus .disclosure-button): |
| (.tree-outline .item.selected.expanded:focus .disclosure-button): |
| (.tree-outline .item.selected:focus): |
| (.tree-outline .item.selected:focus .subtitle): |
| (.tree-outline:not(.large) .item.selected:focus .status .indeterminate-progress-spinner): |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype._treeKeyDown): |
| (WI.TreeOutline.prototype._handleMouseDown): |
| |
| 2020-02-19 Jon Davis <jond@apple.com> |
| |
| Fixed object trees using the wrong theme of type icon |
| https://bugs.webkit.org/show_bug.cgi?id=207980 |
| |
| Reviewed by Darin Adler. |
| |
| * UserInterface/Views/ObjectTreePropertyTreeElement.css: |
| (.object-tree-property.boolean > .icon): |
| (.object-tree-property.function > .icon): |
| (.object-tree-property.number > .icon): |
| (.object-tree-property.bigint > .icon): |
| (.object-tree-property.object > .icon): |
| (.object-tree-property.object.null > .icon): |
| (.object-tree-property.object.node > .icon): |
| (.object-tree-property.regex > .icon): |
| (.object-tree-property.string > .icon): |
| (.object-tree-property.symbol > .icon): |
| (.object-tree-property.accessor > .icon,): |
| (.object-tree-property.had-error > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.boolean > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.function > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.number > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.bigint > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object.null > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object.node > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.regex > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.string > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.symbol > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.accessor > .icon,): |
| (@media (prefers-color-scheme: dark) .object-tree-property.had-error > .icon): |
| |
| 2020-02-17 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Add "outline focused element" debug setting |
| https://bugs.webkit.org/show_bug.cgi?id=207819 |
| <rdar://problem/59489993> |
| |
| Reviewed by Timothy Hatcher. |
| |
| When debugging accessibility issues of Web Inspector, it's helpful |
| to know what element is focused. Many elements have `outline: none` |
| and no clear indication of what's focused. |
| |
| Add a debug setting to display a bright purple outline for all focused |
| elements. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/Main.css: |
| (body.focus-debug *:focus): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createDebugSettingsView): |
| |
| 2020-02-17 Jon Davis <jond@apple.com> |
| |
| Update resource, type, and instrument icons for light, dark, and override colors |
| https://bugs.webkit.org/show_bug.cgi?id=207587 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Images/ApplicationCacheManifest.svg: Added. |
| * UserInterface/Images/Beacon.svg: |
| * UserInterface/Images/ClippingIcons.svg: Added. |
| * UserInterface/Images/Cookie.svg: Added. |
| * UserInterface/Images/Database.svg: Added. |
| * UserInterface/Images/DocumentIcons.svg: Added. |
| * UserInterface/Images/FolderGeneric.svg: Added. |
| * UserInterface/Images/InstrumentIcons.svg: Added. |
| * UserInterface/Images/Origin.svg: |
| * UserInterface/Images/Stopwatch.svg: |
| * UserInterface/Images/TableIcons.svg: Added. |
| * UserInterface/Images/TypeIcons.svg: Added. |
| * UserInterface/Views/AuditTreeElement.css: |
| (.audit.test-case .icon): |
| (.audit.test-group .icon): |
| (.audit.test-case-result .icon): |
| (.audit.test-group-result .icon): |
| (@media (prefers-color-scheme: dark) .audit.test-case .icon): |
| (@media (prefers-color-scheme: dark) .audit.test-group .icon): |
| (@media (prefers-color-scheme: dark) .audit.test-case-result .icon): |
| (@media (prefers-color-scheme: dark) .audit.test-group-result .icon): |
| * UserInterface/Views/BreakpointTreeElement.css: |
| (.breakpoint-exception-icon .icon): |
| (.breakpoint-assertion-icon .icon): |
| (.breakpoint-microtask-icon .icon): |
| (.breakpoint-paused-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-exception-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-assertion-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-microtask-icon .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-paused-icon .icon): |
| * UserInterface/Views/CallFrameIcons.css: |
| (.program-icon .icon): |
| (.function-icon .icon): |
| (.event-listener-icon .icon): |
| (.native-icon .icon): |
| (.tail-deleted .icon): |
| (@media (prefers-color-scheme: dark) .program-icon .icon): |
| (@media (prefers-color-scheme: dark) .function-icon .icon): |
| (@media (prefers-color-scheme: dark) .event-listener-icon .icon): |
| (@media (prefers-color-scheme: dark) .native-icon .icon): |
| (@media (prefers-color-scheme: dark) .tail-deleted .icon): |
| * UserInterface/Views/CanvasSidebarPanel.css: |
| (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon): |
| (@media (prefers-color-scheme: dark) .sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon): |
| * UserInterface/Views/DOMBreakpointTreeElement.css: |
| (.breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon): |
| * UserInterface/Views/DOMNodeTreeElement.css: |
| (.tree-outline .item.dom-node .icon): |
| (@media (prefers-color-scheme: dark) .tree-outline .item.dom-node .icon): |
| * UserInterface/Views/FolderIcon.css: |
| (.folder-icon .icon): |
| (.tree-outline:focus .folder-icon.selected .icon): |
| (.origin-icon .icon): |
| (.tree-outline:focus .origin-icon.selected .icon): |
| (@media (prefers-color-scheme: dark) .folder-icon .icon): |
| (@media (prefers-color-scheme: dark) .origin-icon .icon): |
| * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css: |
| (.timeline-overview-graph.heap-allocations > img.snapshot): |
| (@media (prefers-color-scheme: dark) .timeline-overview-graph.heap-allocations > img.snapshot): |
| * UserInterface/Views/HeapAllocationsTimelineView.css: |
| (.timeline-view.heap-allocations > .data-grid td .icon.heap-snapshot): |
| (@media (prefers-color-scheme: dark) .timeline-view.heap-allocations > .data-grid td .icon.heap-snapshot): |
| * UserInterface/Views/HeapSnapshotInstancesContentView.css: |
| (.heap-snapshot .icon): |
| (.heap-snapshot .icon.native): |
| (.heap-snapshot .icon.boolean): |
| (.heap-snapshot .icon.function): |
| (.heap-snapshot .icon.number): |
| (.heap-snapshot .icon.bigint): |
| (.heap-snapshot .icon.object): |
| (.heap-snapshot .icon.node): |
| (.heap-snapshot .icon.regex): |
| (.heap-snapshot .icon.string): |
| (.heap-snapshot .icon.symbol): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.native): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.boolean): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.function): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.number): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.bigint): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.object): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.node): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.regex): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.string): |
| (@media (prefers-color-scheme: dark) .heap-snapshot .icon.symbol): |
| * UserInterface/Views/IdleTreeElement.css: |
| (.details-section.call-stack .idle .icon): |
| (@media (prefers-color-scheme: dark) .details-section.call-stack .idle .icon): |
| * UserInterface/Views/LayerDetailsSidebarPanel.css: |
| (.panel.details.layer .name-column .icon): |
| (.panel.details.layer tr.reflection .name-column .icon): |
| (.panel.details.layer tr.pseudo-element .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer tr.reflection .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer tr.pseudo-element .name-column .icon): |
| * UserInterface/Views/LayerTreeDetailsSidebarPanel.css: |
| (.panel.details.layer-tree .name-column .icon): |
| (.panel.details.layer-tree tr.reflection .name-column .icon): |
| (.panel.details.layer-tree tr.pseudo-element .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer-tree .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer-tree tr.reflection .name-column .icon): |
| (@media (prefers-color-scheme: dark) .panel.details.layer-tree tr.pseudo-element .name-column .icon): |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.network-table > .table li:not(.selected) .cell:not(.current-session)): |
| (.network-table > .table .cell.dom-node.name .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint-assertion-icon .icon): |
| (@media (prefers-color-scheme: dark) .network-table > .table .cell.dom-node.name .icon): |
| (.network-table .cell.dom-node.name .icon): Deleted. |
| * UserInterface/Views/ObjectTreePropertyTreeElement.css: |
| (.object-tree-property.boolean > .icon): |
| (.object-tree-property.function > .icon): |
| (.object-tree-property.number > .icon): |
| (.object-tree-property.bigint > .icon): |
| (.object-tree-property.object > .icon): |
| (.object-tree-property.object.null > .icon): |
| (.object-tree-property.object.node > .icon): |
| (.object-tree-property.regex > .icon): |
| (.object-tree-property.string > .icon): |
| (.object-tree-property.symbol > .icon): |
| (.object-tree-property.accessor > .icon,): |
| (.object-tree-property.had-error > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.boolean > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.function > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.number > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.bigint > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object.null > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.object.node > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.regex > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.string > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.symbol > .icon): |
| (@media (prefers-color-scheme: dark) .object-tree-property.accessor > .icon,): |
| (@media (prefers-color-scheme: dark) .object-tree-property.had-error > .icon): |
| * UserInterface/Views/PathComponentIcons.css: |
| (.request-icon .icon): |
| (.response-icon .icon): |
| (.heap-snapshot-summary-icon .icon): |
| (.heap-snapshot-instances-icon .icon): |
| (.heap-snapshot-object-graph-icon .icon): |
| (.dom-element-icon .icon): |
| (.dom-pseudo-element-icon .icon): |
| (.dom-text-node-icon .icon): |
| (.dom-comment-icon .icon): |
| (.dom-document-type-icon .icon): |
| (.dom-document-icon .icon): |
| (.dom-character-data-icon .icon): |
| (.dom-node-icon .icon): |
| (.object-icon .icon): |
| (.function-icon .icon): |
| (.native-icon .icon): |
| (.program-icon .icon): |
| (.events-icon .icon): |
| (.call-trees-icon .icon): |
| (.snapshot-list-icon .icon): |
| (.snapshot-diff-icon .icon): |
| (.image-icon .icon): |
| (.source-icon .icon): |
| (@media (prefers-color-scheme: dark) .request-icon .icon): |
| (@media (prefers-color-scheme: dark) .response-icon .icon): |
| (@media (prefers-color-scheme: dark) .heap-snapshot-summary-icon .icon): |
| (@media (prefers-color-scheme: dark) .heap-snapshot-instances-icon .icon): |
| (@media (prefers-color-scheme: dark) .heap-snapshot-object-graph-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-element-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-pseudo-element-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-text-node-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-comment-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-document-type-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-document-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-character-data-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-node-icon .icon): |
| (@media (prefers-color-scheme: dark) .object-icon .icon): |
| (@media (prefers-color-scheme: dark) .function-icon .icon): |
| (@media (prefers-color-scheme: dark) .native-icon .icon): |
| (@media (prefers-color-scheme: dark) .program-icon .icon): |
| (@media (prefers-color-scheme: dark) .events-icon .icon): |
| (@media (prefers-color-scheme: dark) .call-trees-icon .icon): |
| (@media (prefers-color-scheme: dark) .snapshot-list-icon .icon): |
| (@media (prefers-color-scheme: dark) .snapshot-diff-icon .icon): |
| (@media (prefers-color-scheme: dark) .source-icon .icon): |
| * UserInterface/Views/ProfileView.css: |
| (.profile > .data-grid td .icon.function-icon): |
| (.profile > .data-grid td .icon.native-icon): |
| (.profile > .data-grid td .icon.program-icon): |
| (@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.function-icon): |
| (@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.native-icon): |
| (@media (prefers-color-scheme: dark) .profile > .data-grid td .icon.program-icon): |
| * UserInterface/Views/ResourceIcons.css: |
| (.resource-icon .icon): |
| (.resource-icon.override .icon): |
| (.resource-icon.resource-type-document .icon): |
| (.resource-icon.resource-type-document.override .icon): |
| (.resource-icon.resource-type-image .icon): |
| (.resource-icon.resource-type-image.override .icon): |
| (.resource-icon.resource-type-font .icon): |
| (.resource-icon.resource-type-font.override .icon): |
| (:matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): |
| (:matches(.resource-icon.resource-type-style-sheet.override, .style-sheet-icon.override) .icon): |
| (.resource-icon.resource-type-script .icon): |
| (.resource-icon.resource-type-script.override .icon): |
| (.anonymous-script-icon .icon): |
| (.source-map-resource.resource-icon .icon): |
| (.source-map-resource.resource-icon.resource-type-style-sheet .icon): |
| (.source-map-resource.resource-icon.resource-type-script .icon): |
| (.script.worker-icon .icon): |
| (.script.worker-icon.override .icon): |
| (.resource-icon.resource-type-websocket .icon): |
| (.resource-icon.resource-type-ping .icon,): |
| (.resource-icon.resource-type-range .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.override .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-document .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-document.override .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-image .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-image.override .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-font .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-font.override .icon): |
| (@media (prefers-color-scheme: dark) :matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): |
| (@media (prefers-color-scheme: dark) :matches(.resource-icon.resource-type-style-sheet.override, .style-sheet-icon.override) .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-script .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-script.override .icon): |
| (@media (prefers-color-scheme: dark) .anonymous-script-icon .icon): |
| (@media (prefers-color-scheme: dark) .source-map-resource.resource-icon .icon): |
| (@media (prefers-color-scheme: dark) .source-map-resource.resource-icon.resource-type-style-sheet .icon): |
| (@media (prefers-color-scheme: dark) .source-map-resource.resource-icon.resource-type-script .icon): |
| (@media (prefers-color-scheme: dark) .script.worker-icon .icon): |
| (@media (prefers-color-scheme: dark) .script.worker-icon.override .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-websocket .icon): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-ping .icon,): |
| (@media (prefers-color-scheme: dark) .resource-icon.resource-type-range .icon): |
| (.large .resource-icon .icon): Deleted. |
| (.large .resource-icon.resource-type-document .icon): Deleted. |
| (.large .resource-icon.resource-type-image .icon): Deleted. |
| (.large .resource-icon.resource-type-font .icon): Deleted. |
| (.large :matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): Deleted. |
| (.large .resource-icon.resource-type-script .icon): Deleted. |
| (.large .anonymous-script-icon .icon): Deleted. |
| (.large .source-map-resource.resource-icon .icon): Deleted. |
| (.large .source-map-resource.resource-icon.resource-type-style-sheet .icon): Deleted. |
| (.large .source-map-resource.resource-icon.resource-type-script .icon): Deleted. |
| (.large .script.worker-icon .icon): Deleted. |
| (.large .resource-icon.resource-type-websocket .icon): Deleted. |
| (.large .resource-icon.resource-type-range .icon): Deleted. |
| * UserInterface/Views/SearchIcons.css: |
| (.dom-match-element-icon .icon): |
| (.dom-match-text-node-icon .icon): |
| (.dom-match-comment-icon .icon): |
| (.dom-match-document-type-icon .icon): |
| (.dom-match-character-data-icon .icon): |
| (.dom-match-node-icon .icon): |
| (.source-code-match .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-element-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-text-node-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-comment-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-document-type-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-character-data-icon .icon): |
| (@media (prefers-color-scheme: dark) .dom-match-node-icon .icon): |
| (@media (prefers-color-scheme: dark) .source-code-match .icon): |
| * UserInterface/Views/StorageIcons.css: |
| (.application-cache-manifest .icon): |
| (.application-cache-frame .icon): |
| (.cookie-icon .icon): |
| (.local-storage-icon .icon): |
| (.session-storage-icon .icon): |
| (.database-icon .icon): |
| (.database-table-icon .icon): |
| (@media (prefers-color-scheme: dark) .application-cache-manifest .icon): |
| (@media (prefers-color-scheme: dark) .application-cache-frame .icon): |
| (@media (prefers-color-scheme: dark) .local-storage-icon .icon): |
| (@media (prefers-color-scheme: dark) .session-storage-icon .icon): |
| (@media (prefers-color-scheme: dark) .database-icon .icon): |
| (@media (prefers-color-scheme: dark) .database-table-icon .icon): |
| * UserInterface/Views/StyleRuleIcons.css: |
| (.author-style-rule-icon .icon): |
| (.author-style-rule-icon.pseudo-selector .icon): |
| (.user-style-rule-icon .icon): |
| (.user-style-rule-icon.pseudo-selector .icon): |
| (.user-agent-style-rule-icon .icon): |
| (.user-agent-style-rule-icon.pseudo-selector .icon): |
| (.inspector-style-rule-icon .icon): |
| (.inspector-style-rule-icon.pseudo-selector .icon): |
| (.inherited-style-rule-icon .icon): |
| (.inherited-element-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .author-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .author-style-rule-icon.pseudo-selector .icon): |
| (@media (prefers-color-scheme: dark) .user-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .user-style-rule-icon.pseudo-selector .icon): |
| (@media (prefers-color-scheme: dark) .user-agent-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .user-agent-style-rule-icon.pseudo-selector .icon): |
| (@media (prefers-color-scheme: dark) .inspector-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .inspector-style-rule-icon.pseudo-selector .icon): |
| (@media (prefers-color-scheme: dark) .inherited-style-rule-icon .icon): |
| (@media (prefers-color-scheme: dark) .inherited-element-style-rule-icon .icon): |
| * UserInterface/Views/TimelineIcons.css: |
| (.network-icon .icon): |
| (.script-icon .icon): |
| (.cpu-icon .icon): |
| (.memory-icon .icon): |
| (.heap-allocations-icon .icon): |
| (.layout-icon .icon): |
| (.rendering-frame-icon .icon): |
| (.media-icon .icon): |
| (.stopwatch-icon .icon): |
| (.style-record .icon): |
| (.layout-record .icon): |
| (.paint-record .icon): |
| (.composite-record .icon): |
| (.rendering-frame-record .icon): |
| (.api-record .icon): |
| (.evaluated-record .icon): |
| (.event-record .icon): |
| (.probe-record .icon): |
| (.console-profile-record .icon): |
| (.garbage-collection-profile-record .icon): |
| (.timer-record .icon): |
| (.animation-frame-record .icon): |
| (.css-animation-record .icon): |
| (.css-transition-record .icon): |
| (.media-element-record .icon): |
| (.heap-snapshot-record .icon): |
| (@media (prefers-color-scheme: dark) .network-icon .icon): |
| (@media (prefers-color-scheme: dark) .script-icon .icon): |
| (@media (prefers-color-scheme: dark) .cpu-icon .icon): |
| (@media (prefers-color-scheme: dark) .memory-icon .icon): |
| (@media (prefers-color-scheme: dark) .heap-allocations-icon .icon): |
| (@media (prefers-color-scheme: dark) .layout-icon .icon): |
| (@media (prefers-color-scheme: dark) .rendering-frame-icon .icon): |
| (@media (prefers-color-scheme: dark) .media-icon .icon): |
| (@media (prefers-color-scheme: dark) .stopwatch-icon .icon): |
| (@media (prefers-color-scheme: dark) .style-record .icon): |
| (@media (prefers-color-scheme: dark) .layout-record .icon): |
| (@media (prefers-color-scheme: dark) .paint-record .icon): |
| (@media (prefers-color-scheme: dark) .composite-record .icon): |
| (@media (prefers-color-scheme: dark) .rendering-frame-record .icon): |
| (@media (prefers-color-scheme: dark) .api-record .icon): |
| (@media (prefers-color-scheme: dark) .evaluated-record .icon): |
| (@media (prefers-color-scheme: dark) .event-record .icon): |
| (@media (prefers-color-scheme: dark) .probe-record .icon): |
| (@media (prefers-color-scheme: dark) .console-profile-record .icon): |
| (@media (prefers-color-scheme: dark) .garbage-collection-profile-record .icon): |
| (@media (prefers-color-scheme: dark) .timer-record .icon): |
| (@media (prefers-color-scheme: dark) .animation-frame-record .icon): |
| (@media (prefers-color-scheme: dark) .css-animation-record .icon): |
| (@media (prefers-color-scheme: dark) .css-transition-record .icon): |
| (@media (prefers-color-scheme: dark) .media-element-record .icon): |
| (@media (prefers-color-scheme: dark) .heap-snapshot-record .icon): |
| * UserInterface/Views/URLBreakpointTreeElement.css: |
| (.breakpoint.url:not(.breakpoint-paused-icon) .icon): |
| (@media (prefers-color-scheme: dark) .breakpoint.url:not(.breakpoint-paused-icon) .icon): |
| |
| 2020-02-14 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: VoiceOver doesn't read selected panel tab |
| https://bugs.webkit.org/show_bug.cgi?id=207735 |
| <rdar://problem/59445157> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar): |
| (WI.NavigationBar.prototype._mouseDown): |
| (WI.NavigationBar.prototype._mouseUp): |
| Navigation bar itself shouldn't receive focus - its items should. |
| |
| * UserInterface/Views/RadioButtonNavigationItem.js: |
| (WI.RadioButtonNavigationItem): |
| "tab" was passed as a label by mistake. VoiceOver read every tab as "tab" instead of it's actual label. |
| |
| (WI.RadioButtonNavigationItem.prototype.set selected): |
| When clicking on a tab, focus on it so VoiceOver could read it. |
| |
| 2020-02-14 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Bezier editor popover should be strictly LTR |
| https://bugs.webkit.org/show_bug.cgi?id=206968 |
| <rdar://problem/59007065> |
| |
| Reviewed by Timothy Hatcher. |
| |
| webkitConvertPointFromPageToNode does not work correctly with the zoom level other than 1. |
| Replace all uses of webkitConvertPointFromPageToNode with getBoundingClientRect. |
| |
| * UserInterface/Models/Geometry.js: |
| (WI.Point.fromEventInElement): |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare.prototype._updateColorForMouseEvent): |
| * UserInterface/Views/GradientSlider.js: |
| (WI.GradientSlider.prototype._updateShadowKnob): |
| * UserInterface/Views/Slider.js: |
| (WI.Slider.prototype._localPointForEvent): |
| (WI.Slider): |
| |
| 2020-02-12 Pavel Feldman <pavel.feldman@gmail.com> |
| |
| Web Inspector: encode binary web socket frames using base64 |
| https://bugs.webkit.org/show_bug.cgi?id=207448 |
| |
| Previous representation of binary frames is lossy using fromUTF8WithLatin1Fallback, |
| this patch consistently encodes binary data using base64. |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Models/WebSocketResource.js: |
| (WI.WebSocketResource.prototype.addFrame): |
| |
| 2020-02-11 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector RTL: Elements closing tag is reversed |
| https://bugs.webkit.org/show_bug.cgi?id=207214 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Wrap text nodes in `unicode-bidi: isolate-override`. From MDN: |
| |
| isolate-override: |
| This keyword applies the isolation behavior of the isolate |
| keyword to the surrounding content and the override behavior |
| of the bidi-override keyword to the inner content. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom li > span > .html-text-node): |
| |
| 2020-02-09 Keith Rollin <krollin@apple.com> |
| |
| Re-enable LTO for ARM builds |
| https://bugs.webkit.org/show_bug.cgi?id=207402 |
| <rdar://problem/49190767> |
| |
| Reviewed by Sam Weinig. |
| |
| Bug 190758 re-enabled LTO for Production builds for x86-family CPUs. |
| Enabling it for ARM was left out due to a compiler issue. That issue |
| has been fixed, and so now we can re-enable LTO for ARM. |
| |
| * Configurations/Base.xcconfig: |
| |
| 2020-02-07 Jon Lee <jonlee@apple.com> |
| |
| Web Inspector: Revert slim toolbar |
| https://bugs.webkit.org/show_bug.cgi?id=207422 |
| |
| Reviewed by Timothy Hatcher. |
| |
| The slim toolbar needs a little more work before landing. |
| |
| This patch reverts r255547, r255557, r255890, r255892, r255893, r255901, r255980. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Main.js: |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Controllers/ConsoleManager.js: |
| * UserInterface/Debug/Bootstrap.js: |
| * UserInterface/Images/NewTab.svg: Added. |
| * UserInterface/Images/NewTabPlus.svg: Added. |
| * UserInterface/Images/Origin.svg: |
| * UserInterface/Images/SearchResults.svg: Added. |
| * UserInterface/Images/SourcesPaused.svg: Removed. |
| * UserInterface/Main.html: |
| * UserInterface/Models/DebuggerDashboard.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css. |
| * UserInterface/Models/DefaultDashboard.js: Added. |
| * UserInterface/Views/ActivateButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css. |
| * UserInterface/Views/AuditTabContentView.js: |
| * UserInterface/Views/ButtonNavigationItem.css: |
| * UserInterface/Views/ButtonNavigationItem.js: |
| * UserInterface/Views/ButtonToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css. |
| * UserInterface/Views/ButtonToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css. |
| * UserInterface/Views/ConsoleTabContentView.js: |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| * UserInterface/Views/ControlToolbarItem.css: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css. |
| * UserInterface/Views/ControlToolbarItem.js: Copied from Source/WebInspectorUI/UserInterface/Views/DividerNavigationItem.css. |
| * UserInterface/Views/DOMTreeContentView.css: |
| * UserInterface/Views/DashboardContainerView.css: Added. |
| * UserInterface/Views/DashboardContainerView.js: Added. |
| * UserInterface/Views/DashboardView.js: Copied from Source/WebInspectorUI/UserInterface/Views/PinnedTabBarItem.js. |
| * UserInterface/Views/DebuggerDashboardView.css: Added. |
| * UserInterface/Views/DebuggerDashboardView.js: Added. |
| * UserInterface/Views/DefaultDashboardView.css: Added. |
| * UserInterface/Views/DefaultDashboardView.js: Added. |
| * UserInterface/Views/DividerNavigationItem.css: |
| * UserInterface/Views/ElementsTabContentView.js: |
| * UserInterface/Views/FlexibleSpaceNavigationItem.css: |
| * UserInterface/Views/GeneralTabBarItem.js: |
| * UserInterface/Views/GraphicsTabContentView.js: |
| * UserInterface/Views/GroupNavigationItem.js: |
| * UserInterface/Views/LayersTabContentView.js: |
| * UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js. |
| * UserInterface/Views/Main.css: |
| * UserInterface/Views/NavigationBar.js: |
| * UserInterface/Views/NetworkDetailView.css: |
| * UserInterface/Views/NetworkTabContentView.js: |
| * UserInterface/Views/NetworkTableContentView.css: |
| * UserInterface/Views/NetworkTableContentView.js: |
| * UserInterface/Views/NewTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineOverviewGraph.css. |
| * UserInterface/Views/NewTabContentView.js: Added. |
| * UserInterface/Views/PinnedTabBarItem.js: |
| * UserInterface/Views/QuickConsole.js: |
| * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: |
| * UserInterface/Views/SearchTabContentView.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| * UserInterface/Views/Sidebar.js: |
| * UserInterface/Views/SizesToFitNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/FlexibleSpaceNavigationItem.css. |
| * UserInterface/Views/SourcesTabContentView.js: |
| * UserInterface/Views/StorageTabContentView.js: |
| * UserInterface/Views/TabBar.css: |
| * UserInterface/Views/TabBar.js: |
| * UserInterface/Views/TabBarItem.js: |
| * UserInterface/Views/TabBrowser.js: |
| * UserInterface/Views/TabContentView.js: |
| * UserInterface/Views/TimelineOverview.css: |
| * UserInterface/Views/TimelineRecordFrame.css: |
| * UserInterface/Views/TimelineRuler.css: |
| * UserInterface/Views/TimelineTabContentView.js: |
| * UserInterface/Views/Toolbar.css: Added. |
| * UserInterface/Views/Toolbar.js: Added. |
| * UserInterface/Views/Variables.css: |
| |
| 2020-02-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Add another Protocol Version (iOS 13.4) |
| https://bugs.webkit.org/show_bug.cgi?id=207213 |
| <rdar://problem/52846208> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Protocol/Legacy/13.4/InspectorBackendCommands.js: Added. |
| * Versions/Inspector-iOS-13.4.json: Added. |
| |
| 2020-02-06 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Web Inspector][WinCairo] Selecting an error message in Console causes "TypeError: selection.focusNode.closest is not a function." |
| https://bugs.webkit.org/show_bug.cgi?id=207248 |
| |
| Reviewed by Devin Rousso. |
| |
| r242174 replaced Node.enclosingNodeOrSelfWithClass with |
| Element.closest. However, selection.focusNode isn't necessarily an |
| Element, but can be a Text node. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._mousemove): Use selection.focusNode.parentElement.closest |
| if selection.focusNode is not a instance of Element. |
| |
| 2020-02-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r249831): Sources: endless spinner when trying to view a resource |
| https://bugs.webkit.org/show_bug.cgi?id=207346 |
| <rdar://problem/59209016> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Workers/Formatter/HTMLParser.js: |
| (HTMLParser.prototype._parseAttr): |
| Attributes are allowed to contain "/". |
| https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-value-state |
| |
| 2020-02-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(?): Search: selecting a DOM node search result switches to the Elements Tab |
| https://bugs.webkit.org/show_bug.cgi?id=207322 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TabBrowser.js: |
| (WI.TabBrowser.prototype._tabBarItemSelected): |
| The Search Tab is marked such that it isn't saved to `WI._openTabsSetting`, as otherwise |
| more than one Search Tab could be added to the tab bar (one from the setting and one from |
| the default pinned tab). It is also marked as being pinned, however, meaning that we know it |
| will always be in the tab bar, even if we also know it won't be in `WI._openTabsSetting`. As |
| such, we should update it's position in the `_recentTabContentViews` list so that we can use |
| it when showing represented objects (if able) via `bestTabContentViewForRepresentedObject`. |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: the height of the undocked title area shouldn't change when zoomed |
| https://bugs.webkit.org/show_bug.cgi?id=207228 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI.contentLoaded.updateZoomFactorCSSVariable): Added. |
| Save the zoom factor as a number in a CSS variable on the `<body>`. |
| |
| * UserInterface/Views/Variables.css: |
| (body.mac-platform:not(.docked)): Added. |
| (body:not(.docked)): Deleted. |
| Divide the default `22px` by the current zoom factor so that it cancels out when rendered. |
| Make it so that the undocked title area is only shown on macOS <https://webkit.org/b/204627#c47> |
| |
| 2020-02-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Some cookie table column headers should not be localizable |
| https://bugs.webkit.org/show_bug.cgi?id=206920 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Keep headers that match cookie directives always in English. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Views/CookieStorageContentView.js: |
| (WI.CookieStorageContentView.prototype.initialLayout): |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: slightly increase the horizontal padding around scope bar items |
| https://bugs.webkit.org/show_bug.cgi?id=207321 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/ScopeBar.css: |
| (.scope-bar): |
| (body[dir=ltr] .scope-bar > li.multiple > select): |
| (body[dir=rtl] .scope-bar > li.multiple > select): |
| * UserInterface/Views/RadioButtonNavigationItem.css: |
| (.navigation-bar .item.radio.button.text-only): |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Tab Bar: move window management items to the left and don't show reload/download unless remotely inspecting |
| https://bugs.webkit.org/show_bug.cgi?id=207318 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Move the window management buttons to the left side to match the system look/feel. |
| |
| Hide the reload/download buttons when inspecting locally, as there are other ways of |
| reloading the inspected page or downloading a Web Archive. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI._updateDockNavigationItems): |
| (WI._updateReloadTabBarButton): |
| (WI._updateDownloadTabBarButton): |
| (WI._updateInspectModeTabBarButton): |
| (WI._updateTabBarDividers): Added. |
| (WI._updateConsoleTabBarButtons): |
| |
| * UserInterface/Debug/Bootstrap.js: |
| (updateDebugUI): |
| (WI.runBootstrapOperations): |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: the resource detail view cuts off the bottom statistics bar |
| https://bugs.webkit.org/show_bug.cgi?id=207320 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| Add a `--network-statistics-height` variable. |
| |
| * UserInterface/Views/NetworkDetailView.css: |
| (.network-detail): |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.network-table > .statistics): |
| Use the `--network-statistics-height` variable to make sure the statistics row and the |
| details view for the selected network entry don't overlap. |
| Drive-by: center the content of the statistics row to better match the system look/feel. |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: increase the height of the tab bar to match other navigation bars |
| https://bugs.webkit.org/show_bug.cgi?id=207317 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| Define `--tab-bar-height` in terms of `--navigation-bar-height` so they share the same value. |
| |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar > .tabs > .item): |
| (.tab-bar > .tabs > .item.pinned): |
| (.tab-bar > .tabs > .item.pinned.tab-picker): Deleted. |
| Increase the width to match the `--tab-bar-height` so that pinned tab bar items are square. |
| |
| 2020-02-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Dragging handles in the easing popover selects sidebar text |
| https://bugs.webkit.org/show_bug.cgi?id=207316 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/BezierEditor.js: |
| (WI.BezierEditor.prototype._handleMousedown): |
| |
| 2020-02-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: add a special breakpoint for controlling whether `debugger` statements pause |
| https://bugs.webkit.org/show_bug.cgi?id=206818 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| (WI.DebuggerManager.prototype.async initializeTarget): |
| (WI.DebuggerManager.prototype.get debuggerStatementsBreakpoint): Added. |
| (WI.DebuggerManager.prototype.isBreakpointRemovable): |
| (WI.DebuggerManager.prototype._breakpointDisabledStateDidChange): |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement): |
| (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint): |
| |
| * UserInterface/Views/BreakpointTreeElement.css: |
| (.breakpoint-debugger-statement-icon .icon): Added. |
| * UserInterface/Images/DebuggerStatement.svg: Added. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-02-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Bezier editor popover should be strictly LTR |
| https://bugs.webkit.org/show_bug.cgi?id=206968 |
| <rdar://problem/59007065> |
| |
| Reviewed by Timothy Hatcher. |
| |
| - Don't mirror the coordinate system. |
| - Don't reverste the order of the cubic bezier values, e.g. `cubic-bezier(0, 0.5, 1, 0.5)`. |
| |
| * UserInterface/Views/BezierEditor.css: |
| (90%): |
| (to): |
| (body[dir=ltr] .bezier-editor): Deleted. |
| (body[dir=rtl] .bezier-editor): Deleted. |
| (body[dir=rtl] .bezier-editor > .bezier-container): Deleted. |
| * UserInterface/Views/BezierEditor.js: |
| |
| 2020-02-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix the inspector files combination after r255547 |
| |
| * UserInterface/Main.html: Remove Views/SizesToFitNavigationBar.js that was removed in r255547 |
| |
| 2020-02-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: move the items in the toolbar into the tab bar to save vertical space |
| https://bugs.webkit.org/show_bug.cgi?id=204627 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Merge the toolbar are and tab bar to waste less vertical space. |
| |
| The inspect, download, reload, and device settings buttons are pinned before the tabs. |
| |
| If there are any console warnings/errors, an icon for each type of message is shown between |
| the left buttons and the tabs, and each button's opacity is animated whenever a new message |
| is added. |
| |
| Whenever the debugger pauses, change the tab bar icon of the Sources Tab to an image that |
| includes paused iconography (||) to help convey the debugger's state no matter which tab is |
| currently selected, just like the debugger dashboard. |
| |
| The docking configuration, debug, and close buttons are pinned after the tabs. |
| |
| The dashboard network information has been moved to the Network Tab (described below). |
| |
| When undocked, the tab bar and all the content below it are pushed down by 22px to make room |
| for the system close/minimize/maximize buttons and the window title. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI._handleSettingsKeyboardShortcut): |
| (WI._tryToRestorePendingTabs): |
| (WI.isNewTabWithTypeAllowed): |
| (WI._openDefaultTab): Deleted. |
| (WI.showNewTabTab): Deleted. |
| * UserInterface/Views/Main.css: |
| (#undocked-title-area): Added. |
| (body.docked #undocked-title-area): Added. |
| (body.window-inactive #undocked-title-area): Added. |
| (#main): |
| (@keyframes tab-bar-console-item-pulse): Added. |
| (.tab-bar > .navigation-bar :matches(.console-warnings, .console-errors):not(.disabled).pulsing): Added. |
| (@media (prefers-color-scheme: dark) #undocked-title-area): Added. |
| (@media (prefers-color-scheme: dark) body.window-inactive #undocked-title-area): Added. |
| (body.docked.bottom): Deleted. |
| (body.docked.bottom #toolbar): Deleted. |
| (body.docked.bottom #toolbar .item:not(.flexible-space)): Deleted. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar): |
| (WI.TabBar.prototype.addNavigationItemBefore): Added. |
| (WI.TabBar.prototype.addNavigationItemAfter): Added. |
| (WI.TabBar.prototype.insertTabBarItem): |
| (WI.TabBar.prototype.insertTabBarItem.animateTabs): |
| (WI.TabBar.prototype.insertTabBarItem.removeStyles): |
| (WI.TabBar.prototype.removeTabBarItem): |
| (WI.TabBar.prototype.removeTabBarItem.animateTabs): |
| (WI.TabBar.prototype.removeTabBarItem.removeStyles): |
| (WI.TabBar.prototype.set selectedTabBarItem): |
| (WI.TabBar.prototype.get tabCount): Added. |
| (WI.TabBar.prototype.layout): |
| (WI.TabBar.prototype.didLayoutSubtree): Added. |
| (WI.TabBar.prototype._recordTabBarItemSizesAndPositions): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose.animateTabs): |
| (WI.TabBar.prototype._finishExpandingTabsAfterClose.removeStyles): |
| (WI.TabBar.prototype._handleClick): |
| (WI.TabBar.prototype._handleMouseMoved): |
| (WI.TabBar.prototype._handleMouseUp): |
| (WI.TabBar.prototype._handleMouseLeave): |
| (WI.TabBar.prototype._handleContextMenu): |
| (WI.TabBar.prototype.get saveableTabCount): Deleted. |
| (WI.TabBar.layout.forceItemHidden): Deleted. |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar): |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Added. |
| (.tab-bar > .border): Added. |
| (.tab-bar > .border.top): Added. |
| (.tab-bar > .border.bottom): Added. |
| (body.docked.bottom .tab-bar > .border.top): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Added. |
| (@media (-webkit-max-device-pixel-ratio: 1) body.docked:matches(.right, .left):not(.window-docked-inactive) .tab-bar > .border.top): Added. |
| (@media (-webkit-min-device-pixel-ratio: 2) body.docked:matches(.right, .left):not(.window-docked-inactive) .tab-bar > .border.top): Added. |
| (.tab-bar > .tabs > .item): |
| (.tab-bar > .tabs > .item:not(.disabled).selected): |
| (.tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover): |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): |
| (.tab-bar > .navigation-bar): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))): Added. |
| (.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))): Added. |
| (.tab-bar > .navigation-bar .item.divider): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Added. |
| (.tab-bar > .tabs): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Added. |
| (.tab-bar > .tabs.dragging-tab > .item.selected, .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), .tab-bar > .tabs.animating.closing-tab > .item.selected): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item.selected, body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item.selected): Added. |
| (@media (prefers-color-scheme: dark) body.docked.bottom .tab-bar > .border.top): Added. |
| (@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected): |
| (body:not(.window-inactive) .tab-bar.single-tab > .item.default-tab:hover > .close): Deleted. |
| (.tab-bar.single-tab > .item.default-tab > .close): Deleted. |
| (body[dir=ltr].window-inactive .tab-bar > .item): Deleted. |
| (body[dir=rtl].window-inactive .tab-bar > .item): Deleted. |
| NOTE: elided renaming CSS changes. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView): |
| (WI.NetworkTableContentView.prototype.reset): |
| (WI.NetworkTableContentView.prototype.tablePopulateCell): |
| (WI.NetworkTableContentView.prototype._changeCollection): |
| (WI.NetworkTableContentView.prototype.initialLayout): |
| (WI.NetworkTableContentView.prototype.processHAR): |
| (WI.NetworkTableContentView.prototype._processPendingEntries): |
| (WI.NetworkTableContentView.prototype._updateEntryForResource): |
| (WI.NetworkTableContentView.prototype._mainResourceDidChange): |
| (WI.NetworkTableContentView.prototype._handleResourceSizeDidChange): Added. |
| (WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange): |
| (WI.NetworkTableContentView.prototype._handleResourceAdded): |
| (WI.NetworkTableContentView.prototype._handleFrameWasAdded): |
| (WI.NetworkTableContentView.prototype._entryForResource): |
| (WI.NetworkTableContentView.prototype._updateStatistics): Added. |
| (WI.NetworkTableContentView.prototype._updateStatistic): Added. |
| (WI.NetworkTableContentView.prototype._startUpdatingLoadTimeStatistic): Added. |
| (WI.NetworkTableContentView.prototype._stopUpdatingLoadTimeStatistic): Added. |
| (WI.NetworkTableContentView.prototype._updateLoadTimeStatistic): Added. |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.network-table > .statistics): Added. |
| (.network-table > .statistics > .statistic): Added. |
| (.network-table > .statistics > .statistic[hidden]): Added. |
| (.network-table > .statistics > .statistic > .icon): Added. |
| (.network-table > .statistics > .statistic > .text): Added. |
| (@media (prefers-color-scheme: dark) .network-table > .statistics > .statistic.domain-count > .icon): Added. |
| Add a fixed row below the network table that contains statistics information based on the |
| current shown collection (e.g. live data vs HAR): |
| - number of domains |
| - number of resources |
| - total resource size |
| - total transfer size |
| - number of redirects |
| - time to load |
| Slightly dim entries for previous sessions if Preserve Log is checked, since the statistics |
| data is calculated from the current session. |
| NOTE: elided renaming CSS changes. |
| |
| * UserInterface/Views/TabBrowser.js: |
| (WI.TabBrowser.prototype.addTabForContentView): |
| (WI.TabBrowser.prototype.closeTabForContentView): |
| (WI.TabBrowser.prototype._tabBarItemSelected): |
| (WI.TabBrowser.prototype._tabBarItemRemoved): |
| |
| * UserInterface/Views/TabContentView.js: |
| (WI.TabContentView.shouldPinTab): Added. |
| * UserInterface/Views/AuditTabContentView.js: |
| (WI.AuditTabContentView): |
| (WI.AuditTabContentView.tabInfo): |
| * UserInterface/Views/CanvasTabContentView.js: |
| (WI.CanvasTabContentView): |
| (WI.CanvasTabContentView.tabInfo): |
| * UserInterface/Views/ConsoleTabContentView.js: |
| (WI.ConsoleTabContentView): |
| (WI.ConsoleTabContentView.tabInfo): |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| (WI.ContentBrowserTabContentView): |
| * UserInterface/Views/ElementsTabContentView.js: |
| (WI.ElementsTabContentView): |
| (WI.ElementsTabContentView.tabInfo): |
| * UserInterface/Views/LayersTabContentView.js: |
| (WI.LayersTabContentView): |
| (WI.LayersTabContentView.tabInfo): |
| * UserInterface/Views/NetworkTabContentView.js: |
| (WI.NetworkTabContentView): |
| (WI.NetworkTabContentView.tabInfo): |
| * UserInterface/Views/SearchTabContentView.js: |
| (WI.SearchTabContentView): |
| (WI.SearchTabContentView.tabInfo): |
| (WI.SearchTabContentView.shouldPinTab): Added. |
| (WI.SearchTabContentView.shouldSaveTab): Added. |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView): |
| (WI.SettingsTabContentView.tabInfo): |
| (WI.SettingsTabContentView.shouldPinTab): Added. |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView): |
| (WI.SourcesTabContentView.tabInfo): |
| (WI.SourcesTabContentView.prototype._handleDebuggerPaused): Added. |
| (WI.SourcesTabContentView.prototype._handleDebuggerResumed): Added. |
| * UserInterface/Views/StorageTabContentView.js: |
| (WI.StorageTabContentView): |
| (WI.StorageTabContentView.tabInfo): |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView): |
| (WI.TimelineTabContentView.tabInfo): |
| * UserInterface/Views/TabBarItem.js: |
| (WI.TabBarItem): |
| (WI.TabBarItem.prototype.get element): |
| (WI.TabBarItem.prototype.get representedObject): |
| (WI.TabBarItem.prototype.set disabled): |
| (WI.TabBarItem.prototype.get hidden): Added. |
| (WI.TabBarItem.prototype.set hidden): Added. |
| (WI.TabBarItem.prototype.set representedObject): Deleted. |
| (WI.TabBarItem.prototype.get isDefaultTab): Deleted. |
| (WI.TabBarItem.prototype.set isDefaultTab): Deleted. |
| * UserInterface/Views/GeneralTabBarItem.js: |
| (WI.GeneralTabBarItem.fromTabContentView): Added. |
| (WI.GeneralTabBarItem.fromTabInfo): Deleted. |
| * UserInterface/Views/PinnedTabBarItem.js: |
| (WI.PinnedTabBarItem): |
| (WI.PinnedTabBarItem.fromTabContentView): Added. |
| (WI.PinnedTabBarItem.titleDidChange): |
| (WI.PinnedTabBarItem.fromTabInfo): Deleted. |
| (WI.PinnedTabBarItem.prototype.titleDidChange): Deleted. |
| (WI.PinnedTabBarItem.prototype._handleContextMenuEvent): Deleted. |
| Simplify how tab bar items are created. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar.prototype.get sizesToFit): |
| (WI.NavigationBar.prototype.addNavigationItem): |
| (WI.NavigationBar.prototype.insertNavigationItem): |
| * UserInterface/Views/SizesToFitNavigationBar.js: Removed. |
| * UserInterface/Views/Sidebar.js: |
| (WI.Sidebar): |
| Support marking `sizesToFit` during construction, instead of having to make a subclass. |
| |
| * UserInterface/Views/ButtonNavigationItem.js: |
| (WI.ButtonNavigationItem): |
| (WI.ButtonNavigationItem.prototype.get imageType): Added. |
| (WI.ButtonNavigationItem.prototype.set imageType): Added. |
| (WI.ButtonNavigationItem.prototype._update): |
| * UserInterface/Views/ButtonNavigationItem.css: |
| (.tab-bar > .navigation-bar .item.button.image-and-text > span): Added. |
| (.navigation-bar .item.button > img): Added. |
| (.navigation-bar .item.button.disabled > img): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Added. |
| (@media (prefers-color-scheme: dark) .navigation-bar .item.button.disabled > img): Added. |
| Allow `WI.ButtonNavigationItem` to use an `<img>` instead of an `<svg>` for it's image. This |
| is to work around a compositing bug <https://webkit.org/b/207022>. |
| |
| * UserInterface/Views/GroupNavigationItem.js: |
| (WI.GroupNavigationItem.prototype.get hidden): Added. |
| (WI.GroupNavigationItem.prototype.set hidden): Added. |
| (WI.GroupNavigationItem.prototype.get additionalClassNames): Added. |
| Add a special case where this item is considered `hidden` if all sub-items are also `hidden`. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| (body:matches(.window-inactive, .window-docked-inactive)): Added. |
| (body:matches(.window-inactive, .window-docked-inactive) *): Added. |
| (body:not(.docked)): Added. |
| (@media (prefers-color-scheme: dark) :root): |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Added. |
| (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Added. |
| (body.window-inactive): Deleted. |
| (body.window-inactive *): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive): Deleted. |
| (@media (prefers-color-scheme: dark) body.window-inactive *): Deleted. |
| Replace `--toolbar-height` with `--undocked-title-area-height`, which is set when docked. |
| |
| * UserInterface/Views/DividerNavigationItem.css: |
| (.navigation-bar .item.divider): |
| (@media (prefers-color-scheme: dark)): |
| Simplify the CSS in order to better support being used in the tab bar. |
| |
| * UserInterface/Views/FlexibleSpaceNavigationItem.css: |
| (.navigation-bar .item.flexible-space): |
| (.navigation-bar .item.flexible-space.align-start > .item): |
| (.navigation-bar .item.flexible-space.align-end > .item): |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space): Deleted. |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item): Deleted. |
| (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item): Deleted. |
| Remove toolbar styles. |
| |
| * UserInterface/Controllers/ConsoleManager.js: |
| (WI.ConsoleManager): |
| (WI.ConsoleManager.prototype.get warningCount): Added. |
| (WI.ConsoleManager.prototype.get errorCount): Added. |
| (WI.ConsoleManager.prototype.messageWasAdded): |
| (WI.ConsoleManager.prototype.messagesCleared): |
| (WI.ConsoleManager.prototype.messageRepeatCountUpdated): |
| (WI.ConsoleManager.prototype._incrementMessageLevelCount): Added. |
| (WI.ConsoleManager.prototype._delayedMessagesCleared): |
| Keep track of the count of warnings and errors so that they can be used to determine when to |
| show Console button navigation items in the tab bar. |
| |
| * UserInterface/Views/DOMTreeContentView.css: |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Added. |
| (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added. |
| (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted. |
| (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted. |
| * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Added. |
| (body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Deleted. |
| * UserInterface/Views/TimelineOverview.css: |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added. |
| (.timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted. |
| * UserInterface/Views/TimelineRecordFrame.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Added. |
| (body.window-inactive .timeline-record-frame.selected): Deleted. |
| * UserInterface/Views/TimelineRuler.css: |
| (body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Added. |
| (body.window-inactive .timeline-ruler > .header > .divider): Deleted. |
| Add selectors for `.window-docked-inactive` everywhere that `.window-inactive` exists. |
| |
| * UserInterface/Base/Setting.js: |
| Remove new tab bar experimental setting. |
| |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| (WI.runBootstrapOperations.applyDumpMessagesState): |
| (WI.runBootstrapOperations.updateDebugUI): |
| |
| * UserInterface/Images/Origin.svg: |
| Add `id="root"` so this can be used with `WI.ImageUtilities.useSVGSymbol`. |
| |
| * UserInterface/Main.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Views/ActivateButtonToolbarItem.js: Removed. |
| * UserInterface/Views/ButtonToolbarItem.js: Removed. |
| * UserInterface/Views/ButtonToolbarItem.css: Removed. |
| * UserInterface/Views/ControlToolbarItem.js: Removed. |
| * UserInterface/Views/ControlToolbarItem.css: Removed. |
| * UserInterface/Views/Toolbar.js: Removed. |
| * UserInterface/Views/Toolbar.css: Removed. |
| Remove toolbar related code now that it has been merged into the tab bar. |
| |
| * UserInterface/Models/DebuggerDashboard.js: Removed. |
| * UserInterface/Models/DefaultDashboard.js: Removed. |
| * UserInterface/Views/DashboardContainerView.js: Removed. |
| * UserInterface/Views/DashboardContainerView.css: Removed. |
| * UserInterface/Views/DashboardView.js: Removed. |
| * UserInterface/Views/DebuggerDashboardView.js: Removed. |
| * UserInterface/Views/DebuggerDashboardView.css: Removed. |
| * UserInterface/Views/DefaultDashboardView.js: Removed. |
| * UserInterface/Views/DefaultDashboardView.css: Removed. |
| Remove dashboard related code now that it has been merged into the tab bar. |
| |
| * UserInterface/Views/LegacyTabBar.js: Removed. |
| * UserInterface/Views/NewTabContentView.js: Removed. |
| * UserInterface/Views/NewTabContentView.css: Removed. |
| * UserInterface/Images/NewTab.svg: Removed. |
| * UserInterface/Images/NewTabPlus.svg: Removed. |
| * UserInterface/Images/SearchResults.svg: Removed. |
| Remove the lebacy tab bar in favor of the new tab bar. |
| |
| 2020-01-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add instrumentation for showing existing Web Animations |
| https://bugs.webkit.org/show_bug.cgi?id=205434 |
| <rdar://problem/28328087> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/AnimationManager.js: Added. |
| (WI.AnimationManager): |
| (WI.AnimationManager.prototype.get domains): |
| (WI.AnimationManager.prototype.activateExtraDomain): |
| (WI.AnimationManager.prototype.initializeTarget): |
| (WI.AnimationManager.prototype.get animationCollection): |
| (WI.AnimationManager.prototype.get supported): |
| (WI.AnimationManager.prototype.enable): |
| (WI.AnimationManager.prototype.disable): |
| (WI.AnimationManager.prototype.animationCreated): |
| (WI.AnimationManager.prototype.effectChanged): |
| (WI.AnimationManager.prototype.targetChanged): |
| (WI.AnimationManager.prototype.animationDestroyed): |
| (WI.AnimationManager.prototype._handleMainResourceDidChange): |
| * UserInterface/Protocol/AnimationObserver.js: |
| (WI.AnimationObserver.prototype.animationCreated): Added. |
| (WI.AnimationObserver.prototype.effectChanged): Added. |
| (WI.AnimationObserver.prototype.targetChanged): Added. |
| (WI.AnimationObserver.prototype.animationDestroyed): Added. |
| |
| * UserInterface/Models/AnimationCollection.js: Added. |
| (WI.AnimationCollection): |
| (WI.AnimationCollection.prototype.get animationType): |
| (WI.AnimationCollection.prototype.get displayName): |
| (WI.AnimationCollection.prototype.objectIsRequiredType): |
| (WI.AnimationCollection.prototype.animationCollectionForType): |
| (WI.AnimationCollection.prototype.itemAdded): |
| (WI.AnimationCollection.prototype.itemRemoved): |
| (WI.AnimationCollection.prototype.itemsCleared): |
| Similar to `WI.ResourceCollection`, create a subclass of `WI.Collection` that maintains it's |
| own sub-`WI.AnimationCollection`s for each type of `WI.Animation.Type`. |
| |
| * UserInterface/Models/Animation.js: Added. |
| (WI.Animation): |
| (WI.Animation.fromPayload): |
| (WI.Animation.displayNameForAnimationType): |
| (WI.Animation.displayNameForPlaybackDirection): |
| (WI.Animation.displayNameForFillMode): |
| (WI.Animation.resetUniqueDisplayNameNumbers): |
| (WI.Animation.prototype.get animationId): |
| (WI.Animation.prototype.get backtrace): |
| (WI.Animation.prototype.get animationType): |
| (WI.Animation.prototype.get startDelay): |
| (WI.Animation.prototype.get endDelay): |
| (WI.Animation.prototype.get iterationCount): |
| (WI.Animation.prototype.get iterationStart): |
| (WI.Animation.prototype.get iterationDuration): |
| (WI.Animation.prototype.get timingFunction): |
| (WI.Animation.prototype.get playbackDirection): |
| (WI.Animation.prototype.get fillMode): |
| (WI.Animation.prototype.get keyframes): |
| (WI.Animation.prototype.get displayName): |
| (WI.Animation.prototype.requestEffectTarget): |
| (WI.Animation.prototype.effectChanged): |
| (WI.Animation.prototype.targetChanged): |
| (WI.Animation.prototype._updateEffect): |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.resolveAnimation): Added. |
| |
| * UserInterface/Views/GraphicsTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js. |
| (WI.GraphicsTabContentView): |
| (WI.GraphicsTabContentView.tabInfo): |
| (WI.GraphicsTabContentView.isTabAllowed): |
| (WI.GraphicsTabContentView.prototype.get type): |
| (WI.GraphicsTabContentView.prototype.showRepresentedObject): Added. |
| (WI.GraphicsTabContentView.prototype.canShowRepresentedObject): |
| (WI.GraphicsTabContentView.prototype.closed): |
| (WI.GraphicsTabContentView.prototype.attached): |
| (WI.GraphicsTabContentView.prototype.detached): |
| (WI.GraphicsTabContentView.prototype.initialLayout): Added. |
| (WI.GraphicsTabContentView.prototype._handleOverviewTreeOutlineSelectionDidChange): Added. |
| * UserInterface/Views/GraphicsTabContentView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.css. |
| Rename the Canvas Tab to Graphics Tab and display four sections: |
| - Canvases |
| - Web Animations |
| - CSS Animations |
| - CSS Transitions |
| |
| * UserInterface/Views/CanvasSidebarPanel.js: |
| (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject): |
| Only appear if a `WI.Canvas` or `WI.Recording` is selected. |
| |
| * UserInterface/Views/GraphicsOverviewContentView.js: Added. |
| (WI.GraphicsOverviewContentView): |
| (WI.GraphicsOverviewContentView.prototype.get supplementalRepresentedObjects): |
| (WI.GraphicsOverviewContentView.prototype.get navigationItems): |
| (WI.GraphicsOverviewContentView.prototype.attached): |
| (WI.GraphicsOverviewContentView.prototype.detached): |
| (WI.GraphicsOverviewContentView.prototype.initialLayout): |
| (WI.GraphicsOverviewContentView.prototype.dropZoneShouldAppearForDragEvent): |
| (WI.GraphicsOverviewContentView.prototype.dropZoneHandleDrop): |
| (WI.GraphicsOverviewContentView.prototype._handleRefreshButtonClicked): |
| (WI.GraphicsOverviewContentView.prototype._handleShowGridButtonClicked): |
| (WI.GraphicsOverviewContentView.prototype._handleShowImageGridSettingChanged): |
| (WI.GraphicsOverviewContentView.prototype._handleImportButtonNavigationItemClicked): |
| (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSelectedItemChanged): |
| (WI.GraphicsOverviewContentView.prototype._handleOverviewViewSupplementalRepresentedObjectsDidChange): |
| (WI.GraphicsOverviewContentView.prototype._handleClick): |
| * UserInterface/Views/GraphicsOverviewContentView.css: Added. |
| (.content-view.graphics-overview): |
| (.content-view.graphics-overview > section): |
| (.content-view.graphics-overview > section:not(:first-child)): |
| (.content-view.graphics-overview > section > .header): |
| (.content-view.graphics-overview > section:not(:first-of-type) > .header): |
| (.content-view.graphics-overview > section > .header > h1): |
| (.content-view.graphics-overview > section > .header > .navigation-bar): |
| (.content-view.graphics-overview > .content-view.canvas-overview): |
| (@media (prefers-color-scheme: light) .content-view.graphics-overview): |
| (@media (prefers-color-scheme: light) .content-view.graphics-overview > section > .header): |
| Add sticky headers for each of the sections described above. |
| |
| * UserInterface/Views/AnimationCollectionContentView.js: Added. |
| (WI.AnimationCollectionContentView): |
| (WI.AnimationCollectionContentView.prototype.handleRefreshButtonClicked): |
| (WI.AnimationCollectionContentView.prototype.contentViewAdded): |
| (WI.AnimationCollectionContentView.prototype.contentViewRemoved): |
| (WI.AnimationCollectionContentView.prototype.detached): |
| (WI.AnimationCollectionContentView.prototype._handleContentViewMouseEnter): |
| (WI.AnimationCollectionContentView.prototype._handleContentViewMouseLeave): |
| * UserInterface/Views/AnimationCollectionContentView.css: Added. |
| (.content-view.animation-collection): |
| |
| * UserInterface/Views/AnimationContentView.js: Added. |
| (WI.AnimationContentView): |
| (WI.AnimationContentView.get previewHeight): |
| (WI.AnimationContentView.prototype.handleRefreshButtonClicked): |
| (WI.AnimationContentView.prototype.initialLayout): |
| (WI.AnimationContentView.prototype.layout): |
| (WI.AnimationContentView.prototype.sizeDidChange): |
| (WI.AnimationContentView.prototype.attached): |
| (WI.AnimationContentView.prototype.detached): |
| (WI.AnimationContentView.prototype._refreshSubtitle): |
| (WI.AnimationContentView.prototype._refreshPreview.addTitle): |
| (WI.AnimationContentView.prototype._refreshPreview): |
| (WI.AnimationContentView.prototype._handleEffectChanged): |
| (WI.AnimationContentView.prototype._handleTargetChanged): |
| (WI.AnimationContentView.prototype._populateAnimationTargetButtonContextMenu): |
| * UserInterface/Views/AnimationContentView.css: Added. |
| (.content-view.animation): |
| (.content-view.animation.selected): |
| (.content-view.animation > header): |
| (.content-view.animation > header > .titles): |
| (.content-view.animation > header > .titles > .title): |
| (.content-view.animation > header > .titles > .subtitle): |
| (.content-view.animation > header > .titles > .subtitle:not(:empty)::before): |
| (.content-view.animation > header > .navigation-bar): |
| (.content-view.animation:hover > header > .navigation-bar): |
| (.content-view.animation > .preview): |
| (.content-view.animation > .preview > svg): |
| (body[dir=rtl] .content-view.animation > .preview > svg): |
| (.content-view.animation > .preview > svg rect): |
| (.content-view.animation > .preview > svg > .delay line): |
| (.content-view.animation > .preview > svg > .active path): |
| (.content-view.animation > .preview > svg > .active circle): |
| (.content-view.animation > .preview > svg > .active line): |
| (.content-view.animation > .preview > span): |
| (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .title): |
| (@media (prefers-color-scheme: dark) .content-view.animation > header > .titles > .subtitle): |
| (@media (prefers-color-scheme: dark) .content-view.animation > .preview): |
| Visualize the start/end delay and keyframes of the given animation as a series of bezier |
| curves separated by markers. |
| |
| * UserInterface/Views/AnimationDetailsSidebarPanel.js: Added. |
| (WI.AnimationDetailsSidebarPanel): |
| (WI.AnimationDetailsSidebarPanel.prototype.inspect): |
| (WI.AnimationDetailsSidebarPanel.prototype.get animation): |
| (WI.AnimationDetailsSidebarPanel.prototype.set animation): |
| (WI.AnimationDetailsSidebarPanel.prototype.initialLayout): |
| (WI.AnimationDetailsSidebarPanel.prototype.layout): |
| (WI.AnimationDetailsSidebarPanel.prototype._refreshIdentitySection): |
| (WI.AnimationDetailsSidebarPanel.prototype._refreshEffectSection): |
| (WI.AnimationDetailsSidebarPanel.prototype._refreshBacktraceSection): |
| (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationEffectChanged): |
| (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationTargetChanged): |
| (WI.AnimationDetailsSidebarPanel.prototype._handleDetailsSectionCollapsedStateChanged): |
| * UserInterface/Views/AnimationDetailsSidebarPanel.css: Added. |
| (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .header > .subtitle): |
| (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): |
| (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles): |
| (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section .row.styles .CodeMirror): |
| (.sidebar > .panel.details.animation > .content > .details-section.animation-keyframes .details-section): |
| Show collected information about the selected animation, its effect, and its target. |
| |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager): |
| (WI.CanvasManager.prototype.get canvasCollection): Added. |
| (WI.CanvasManager.prototype.disable): |
| (WI.CanvasManager.prototype.canvasAdded): |
| (WI.CanvasManager.prototype.canvasRemoved): |
| (WI.CanvasManager.prototype._saveRecordings): Added. |
| (WI.CanvasManager.prototype._mainResourceDidChange): |
| (WI.CanvasManager.prototype.get canvases): Deleted. |
| (WI.CanvasManager.prototype._removeCanvas): Deleted. |
| Rather than have the `WI.CanvasTabContentView` mainain the `WI.CanvasCollection` and have to |
| listen for events from the `WI.CanvasManager`, just have the `WI.CanvasManager` hold on to |
| it instead and provide a getter for it. |
| |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView): |
| (WI.CanvasOverviewContentView.prototype.get navigationItems): |
| (WI.CanvasOverviewContentView.prototype.handleRefreshButtonClicked): |
| (WI.CanvasOverviewContentView.prototype.contentViewAdded): |
| (WI.CanvasOverviewContentView.prototype.contentViewRemoved): |
| (WI.CanvasOverviewContentView.prototype.attached): |
| (WI.CanvasOverviewContentView.prototype.detached): |
| (WI.CanvasOverviewContentView.prototype._addSavedRecording): |
| (WI.CanvasOverviewContentView.prototype.hidden): Deleted. |
| (WI.CanvasOverviewContentView.prototype.get _itemMargin): Deleted. |
| (WI.CanvasOverviewContentView.prototype._refreshPreviews): Deleted. |
| (WI.CanvasOverviewContentView.prototype._updateNavigationItems): Deleted. |
| (WI.CanvasOverviewContentView.prototype._showGridButtonClicked): Deleted. |
| (WI.CanvasOverviewContentView.prototype._updateShowImageGrid): Deleted. |
| * UserInterface/Views/CanvasOverviewContentView.css: |
| (.content-view.canvas-overview): |
| (.content-view.canvas-overview > .content-view.canvas): |
| (@media (prefers-color-scheme: dark) .content-view.canvas-overview): Deleted. |
| |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView): |
| (WI.CanvasContentView.prototype.handleRefreshButtonClicked): Added. |
| (WI.CanvasContentView.prototype.dropZoneShouldAppearForDragEvent): Added. |
| (WI.CanvasContentView.prototype.dropZoneHandleDrop): Added. |
| (WI.CanvasContentView.prototype.initialLayout): |
| (WI.CanvasContentView.prototype.attached): |
| (WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): |
| (WI.CanvasContentView.prototype.shown): Deleted. |
| Move the "Log Canvas Context" to be the first item in the canvas element button context menu. |
| Drive-by: add a `WI.DropZoneView` for when recording JSON files are dragged on top. |
| |
| * UserInterface/Views/CanvasContentView.css: |
| Drive-by: drop `:not(.tab)` from all selectors since the Canvas Tab doesn't exist anymore. |
| |
| * UserInterface/Views/CollectionContentView.js: |
| (WI.CollectionContentView): |
| (WI.CollectionContentView.prototype.get selectedItem): Added. |
| (WI.CollectionContentView.prototype.set selectedItem): Added. |
| (WI.CollectionContentView.prototype.addContentViewForItem): |
| (WI.CollectionContentView.prototype.removeContentViewForItem): |
| (WI.CollectionContentView.prototype.showContentPlaceholder): |
| (WI.CollectionContentView.prototype.initialLayout): |
| (WI.CollectionContentView.prototype._selectItem): |
| (WI.CollectionContentView.prototype._handleClick): Added. |
| (WI.CollectionContentView.prototype.setSelectedItem): Deleted. |
| * UserInterface/Views/CollectionContentView.css: |
| (.content-view.collection > .placeholder:not(.message-text-view)): Added. |
| (.content-view.collection .resource.image img): Deleted. |
| (.content-view.collection .resource.image img:hover): Deleted. |
| When selection is enabled, clicking outside of any of the content views should dismiss the |
| current selection. Clients should also be able to get the currently selected item. |
| |
| * UserInterface/Views/DetailsSectionSimpleRow.js: |
| (WI.DetailsSectionSimpleRow.prototype.set value): |
| Ensure that `0` is considered as a valid value. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI.contentLoaded): |
| (WI.tabContentViewClassForRepresentedObject): |
| * UserInterface/Views/ContentView.js: |
| (WI.ContentView.createFromRepresentedObject): |
| (WI.ContentView.isViewable): |
| Allow `WI.Animation` to be viewable. |
| |
| * UserInterface/Views/Main.css: |
| (.navigation-item-help): Added. |
| (.navigation-item-help > .navigation-bar): Added. |
| (.navigation-item-help > .navigation-bar > .item): Added. |
| (.message-text-view .navigation-item-help): Deleted. |
| (.message-text-view .navigation-item-help .navigation-bar): Deleted. |
| (.message-text-view .navigation-item-help .navigation-bar > .item): Deleted. |
| Allow `WI.createNavigationItemHelp` to be used independently of `WI.createMessageTextView`. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.nodeForId): |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager.prototype.animationTrackingUpdated): |
| * UserInterface/Models/AuditTestCaseResult.js: |
| (WI.AuditTestCaseResult.async fromPayload): |
| Add a fallback so callers don't need to. |
| |
| * UserInterface/Views/ResourceCollectionContentView.js: |
| (WI.ResourceCollectionContentView): |
| * UserInterface/Views/ResourceCollectionContentView.css: |
| (.content-view.resource-collection > .resource.image img): Added. |
| (.content-view.resource-collection > .resource.image img:hover): Added. |
| Drive-by: move these styles to the right file and make them more specific. |
| |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.displayNameForContextType): |
| * UserInterface/Models/Recording.js: |
| (WI.Recording.displayNameForRecordingType): Added. |
| Drive-by: fix localized strings. |
| |
| * UserInterface/Views/RecordingContentView.css: |
| Drive-by: drop `:not(.tab)` from all selectors since the Recording Tab doesn't exist anymore. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Images/Graphics.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/Canvas.svg. |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Test.html: |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| |
| * UserInterface/Test/TestHarness.js: |
| (TestHarness.prototype.expectEmpty): Added. |
| (TestHarness.prototype.expectNotEmpty): Added. |
| (TestHarness.prototype._expectationMessageFormat): |
| (TestHarness.prototype._expectedValueFormat): |
| Add utility function for checking whether the given value is empty: |
| - Array `length === 0` |
| - String `length === 0` |
| - Set `size === 0` |
| - Map `size === 0` |
| - Object `isEmptyObject` |
| Any other type will automatically fail, as non-objects can't be "empty" (e.g. `42`). |
| |
| 2020-01-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: don't use `:matches(:before, :after)` after r255059 |
| https://bugs.webkit.org/show_bug.cgi?id=206848 |
| |
| Reviewed by Antti Koivisto. |
| |
| * UserInterface/Views/SpringEditor.css: |
| (.spring-editor > .spring-timing::before, .spring-editor > .spring-timing::after): Added. |
| (.spring-editor > .spring-timing:matches(::before, ::after)): Deleted. |
| |
| 2020-01-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: unable to evaluate in the isolated world of content scripts injected by safari app extensions |
| https://bugs.webkit.org/show_bug.cgi?id=206110 |
| <rdar://problem/16945643> |
| |
| Reviewed by Timothy Hatcher, Joseph Pecoraro, and Brian Burg. |
| |
| In addition to evaluating in subframe execution contexts, add the ability for Web Inspector |
| to evaluate in non-normal isolated worlds. |
| |
| * UserInterface/Models/ExecutionContext.js: |
| (WI.ExecutionContext): |
| (WI.ExecutionContext.typeFromPayload): Added. |
| (WI.ExecutionContext.prototype.get type): Added. |
| (WI.ExecutionContext.prototype.get isPageContext): Deleted. |
| |
| * UserInterface/Models/ExecutionContextList.js: |
| (WI.ExecutionContextList.prototype.add): |
| * UserInterface/Models/Frame.js: |
| (WI.Frame.prototype.addExecutionContext): |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.executionContextCreated): |
| The `Normal` execution context (of which there should only be one) is considered the "page" |
| execution context. |
| |
| * UserInterface/Protocol/DirectBackendTarget.js: |
| (WI.DirectBackendTarget): |
| * UserInterface/Protocol/PageTarget.js: |
| (WI.PageTarget): |
| * UserInterface/Protocol/WorkerTarget.js: |
| (WI.WorkerTarget): |
| Default to a `Normal` execution context. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole): |
| (WI.QuickConsole.prototype._displayNameForExecutionContext): Added. |
| (WI.QuickConsole.prototype._resolveDesiredActiveExecutionContext): Added. |
| (WI.QuickConsole.prototype._setActiveExecutionContext): Added. |
| (WI.QuickConsole.prototype._updateActiveExecutionContextDisplay): Added. |
| (WI.QuickConsole.prototype._populateActiveExecutionContextNavigationItemContextMenu): Added. |
| (WI.QuickConsole.prototype._handleConsoleSavedResultAliasSettingChanged): Added. |
| (WI.QuickConsole.prototype._handleEngineeringShowInternalExecutionContextsSettingChanged): Added. |
| (WI.QuickConsole.prototype._handleFramePageExecutionContextChanged): Added. |
| (WI.QuickConsole.prototype._handleFrameExecutionContextsCleared): Added. |
| (WI.QuickConsole.prototype._handleDebuggerActiveCallFrameDidChange): Added. |
| (WI.QuickConsole.prototype._handleActiveExecutionContextChanged): Added. |
| (WI.QuickConsole.prototype._handleTransitionPageTarget): Added. |
| (WI.QuickConsole.prototype._handleTargetRemoved): Added. |
| (WI.QuickConsole.prototype._handleInspectedNodeChanged): Added. |
| (WI.QuickConsole.prototype._updateStyles): |
| (WI.QuickConsole.prototype.get navigationBar): Deleted. |
| (WI.QuickConsole.prototype._pageTargetTransitioned): Deleted. |
| (WI.QuickConsole.prototype._initializeMainExecutionContextPathComponent): Deleted. |
| (WI.QuickConsole.prototype.layout): Deleted. |
| (WI.QuickConsole.prototype._preferredNameForFrame): Deleted. |
| (WI.QuickConsole.prototype._selectExecutionContext): Deleted. |
| (WI.QuickConsole.prototype._updateAutomaticExecutionContextPathComponentTooltip): Deleted. |
| (WI.QuickConsole.prototype._executionContextPathComponentsToDisplay): Deleted. |
| (WI.QuickConsole.prototype._rebuildExecutionContextPathComponents): Deleted. |
| (WI.QuickConsole.prototype._framePageExecutionContextsChanged): Deleted. |
| (WI.QuickConsole.prototype._frameExecutionContextsCleared): Deleted. |
| (WI.QuickConsole.prototype._activeExecutionContextChanged): Deleted. |
| (WI.QuickConsole.prototype._createExecutionContextPathComponent): Deleted. |
| (WI.QuickConsole.prototype._compareExecutionContextPathComponents): Deleted. |
| (WI.QuickConsole.prototype._insertOtherExecutionContextPathComponent): Deleted. |
| (WI.QuickConsole.prototype._removeOtherExecutionContextPathComponent): Deleted. |
| (WI.QuickConsole.prototype._insertExecutionContextPathComponentForFrame): Deleted. |
| (WI.QuickConsole.prototype._removeExecutionContextPathComponentForFrame): Deleted. |
| (WI.QuickConsole.prototype._targetAdded): Deleted. |
| (WI.QuickConsole.prototype._targetRemoved): Deleted. |
| (WI.QuickConsole.prototype._pathComponentSelected): Deleted. |
| (WI.QuickConsole.prototype._pathComponentClicked): Deleted. |
| (WI.QuickConsole.prototype._debuggerActiveCallFrameDidChange): Deleted. |
| * UserInterface/Views/QuickConsole.css: |
| (.quick-console > .console-prompt): |
| (.quick-console > .navigation-bar): |
| (.quick-console > .navigation-bar .active-execution-context): Added. |
| (.quick-console > .navigation-bar .active-execution-context > .selector-arrows): Added. |
| (.quick-console > .navigation-bar .active-execution-context:not(.automatic)): Added. |
| (.quick-console > .navigation-bar .active-execution-context:not(.automatic) > .selector-arrows): Added. |
| (.quick-console .execution-context): Deleted. |
| (.quick-console > .navigation-bar > .hierarchical-path .execution-context): Deleted. |
| (.quick-console > .navigation-bar > .hierarchical-path .execution-context .separator): Deleted. |
| (.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context)): Deleted. |
| (.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context): Deleted. |
| (.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context .selector-arrows): Deleted. |
| Replace the `WI.HierarchicalPathNavigationItem` with a plain `WI.NavigationItem` that shows |
| a `WI.ContextMenu` with all valid execution contexts organized as follows: |
| |
| Auto - <display name for execution context of inspected DOM node> |
| ---------- |
| Main Frame Normal Execution Context |
| All User Exection Contexts for the Main Frame |
| All Internal Exection Contexts for the Main Frame (with the engineering setting) |
| Frames |
| Frame Normal Execution Context |
| All User Exection Contexts for the Frame |
| All Internal Exection Contexts for the Frame (with the engineering setting) |
| ... |
| Workers |
| Worker Execution Context |
| ... |
| |
| Everything is checkmark selectable other than the separator, "Frames", and "Workers". |
| |
| * UserInterface/Controllers/RuntimeManager.js: |
| (WI.RuntimeManager): |
| (WI.RuntimeManager.prototype._frameExecutionContextsCleared): Deleted. |
| Let the UI (`WI.QuickConsole`) decide when to automatically update the active execution |
| context when a frame is removed that owned the active execution context. |
| |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager.prototype.get workerTargets): Added. |
| (WI.TargetManager.prototype._terminatePageTarget): |
| Convenience function for getting the list of worker targets. |
| |
| * UserInterface/Views/GroupNavigationItem.js: |
| (WI.GroupNavigationItem.prototype.update): |
| (WI.GroupNavigationItem.prototype.didAttach): |
| Update the items whenever the group updates. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Views/SizesToFitNavigationBar.js: Renamed from Source/WebInspectorUI/UserInterface/Views/QuickConsoleNavigationBar.js. |
| (WI.SizesToFitNavigationBar): |
| (WI.SizesToFitNavigationBar.prototype.get sizesToFit): |
| Rename to allow for other use cases. |
| |
| * UserInterface/Views/ContextMenu.js: |
| (WI.ContextSubMenuItem.prototype.appendHeader): Added. |
| Convenience method for creating a disabled item. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createEngineeringSettingsView): |
| Create an engineering setting that controls whether `Internal` execution contexts are shown. |
| |
| * UserInterface/Test/InspectorProtocol.js: |
| (InspectorProtocol.addEventListener): |
| (InspectorProtocol.removeEventListener): Added. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-01-21 Keith Rollin <krollin@apple.com> |
| |
| Fix tvOS values in SUPPORTED_PLATFORMS |
| https://bugs.webkit.org/show_bug.cgi?id=206435 |
| <rdar://problem/58674587> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| A number of targets in WebKit have 'tvos' and 'tvsimulator' in |
| SUPPORTED_PLATFORMS. The correct values are 'appletvos' and |
| 'appletvsimulator'. These should be updated to the correct ones as the |
| wrong values prevent the tvOS run destination from being usable in the |
| UI to build for tvOS. |
| |
| * Configurations/Base.xcconfig: |
| |
| 2020-01-17 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Unchecking Enable Preview Features on Engineering and Preview builds does not affect WI.arePreviewFeaturesEnabled() |
| https://bugs.webkit.org/show_bug.cgi?id=204026 |
| |
| Reviewed by Brian Burg. |
| |
| Make `WI.arePreviewFeaturesEnabled()` return false when Enable Preview Features is unchecked. |
| |
| * UserInterface/Base/Setting.js: |
| (WI.canShowPreviewFeatures): |
| (WI.arePreviewFeaturesEnabled): |
| (WI.isTechnologyPreviewBuild): Deleted. |
| (WI.canShowPreviewFeatures): Added. |
| * UserInterface/Views/SettingsTabContentView.js: |
| |
| 2020-01-16 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add links to reference pages |
| https://bugs.webkit.org/show_bug.cgi?id=206309 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Main.js: |
| (WI._handleDeviceSettingsToolbarButtonClicked): |
| (WI.createReferencePageLink): Added. |
| * UserInterface/Views/Main.css: |
| (.reference-page-link): Added. |
| (.reference-page-link:active): Added. |
| (@media (-webkit-device-pixel-ratio: 1) .reference-page-link): Added. |
| (@media (prefers-color-scheme: dark) .reference-page-link): Added. |
| (@media (prefers-color-scheme: dark) .reference-page-link:active): Added. |
| (.device-settings-content): |
| (.device-settings-content > table): Added. |
| (.device-settings-content > table > tr > td:first-child): Added. |
| (.device-settings-content > .reference-page-link-container): Added. |
| (body[dir=ltr] .device-settings-content > .reference-page-link-container): Added. |
| (body[dir=rtl] .device-settings-content > .reference-page-link-container): Added. |
| (.device-settings-content > tr > td:first-child): Deleted. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.async createBootstrapScript): |
| |
| * UserInterface/Controllers/BreakpointPopoverController.js: |
| (WI.BreakpointPopoverController.prototype._createPopoverContent): |
| (WI.BreakpointPopoverController.prototype._popoverActionsCreateAddActionButton): |
| * UserInterface/Views/BreakpointPopoverController.css: |
| (.popover .edit-breakpoint-popover-content > table > tr > td.options): Added. |
| (.popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added. |
| (body[dir=ltr] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added. |
| (body[dir=rtl] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added. |
| (body[dir=ltr] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added. |
| (body[dir=rtl] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added. |
| * UserInterface/Views/EventBreakpointPopover.js: |
| (WI.EventBreakpointPopover.prototype.show): |
| * UserInterface/Views/EventBreakpointPopover.css: |
| (.popover .event-breakpoint-content .reference-page-link-container): Added. |
| * UserInterface/Views/URLBreakpointPopover.js: |
| (WI.URLBreakpointPopover.prototype.show): |
| * UserInterface/Views/URLBreakpointPopover.css: |
| (.popover .url-breakpoint-content .reference-page-link-container): Added. |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype.show): |
| * UserInterface/Views/LocalResourceOverridePopover.css: |
| (.popover .local-resource-override-popover-content .reference-page-link-container): Added. |
| (body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container): Added. |
| (body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container): Added. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype.initialLayout): |
| (WI.SettingsTabContentView.prototype._createGeneralSettingsView): |
| (WI.SettingsTabContentView.prototype._createElementsSettingsView): |
| (WI.SettingsTabContentView.prototype._createSourcesSettingsView): |
| (WI.SettingsTabContentView.prototype._createConsoleSettingsView): |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| (WI.SettingsTabContentView.prototype._createReferenceLink): Added. |
| * UserInterface/Views/SettingsTabContentView.css: |
| (.content-view.tab.settings): Added. |
| (.content-view.tab.settings .navigation-bar): Added. |
| (.content-view.tab.settings .navigation-bar.invisible): Added. |
| (.content-view.tab.settings .navigation-bar .item.radio.button.text-only): Added. |
| (.content-view.tab.settings .navigation-bar .item.radio.button.text-only:before): Added. |
| (.content-view.tab.settings .navigation-bar .item.radio.button.text-only.selected): Added. |
| (.content-view.tab.settings > .settings-view): Added. |
| (.content-view.tab.settings > .settings-view > .separator): Added. |
| (.content-view.tab.settings > .settings-view > .container): Added. |
| (.content-view.tab.settings > .settings-view > .container.hidden): Added. |
| (.content-view.tab.settings > .settings-view > .container-centered): Added. |
| (.content-view.tab.settings > .settings-view > .container button): Added. |
| (.content-view.tab.settings > .settings-view > .container > .title): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Added. |
| (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Added. |
| (.content-view.tab.settings > .settings-view > .container.reference): Added. |
| (.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link): Added. |
| (.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link > .go-to-arrow): Added. |
| (.content-view.settings .navigation-bar): Deleted. |
| (.content-view.settings .navigation-bar.invisible): Deleted. |
| (.content-view.settings .navigation-bar .item.radio.button.text-only): Deleted. |
| (.content-view.settings .navigation-bar .item.radio.button.text-only:before): Deleted. |
| (.content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted. |
| (.content-view.settings > .settings-view): Deleted. |
| (.content-view.settings > .settings-view > .separator): Deleted. |
| (.content-view.settings > .settings-view > .container): Deleted. |
| (.content-view.settings > .settings-view > .container.hidden): Deleted. |
| (.content-view.settings > .settings-view > .container-centered): Deleted. |
| (.content-view.settings > .settings-view > .container button): Deleted. |
| (.content-view.settings > .settings-view > .container > .title): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor input): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor select): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted. |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted. |
| (@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar): Deleted. |
| (@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted. |
| * UserInterface/Views/BlackboxSettingsView.js: |
| (WI.BlackboxSettingsView.prototype.initialLayout): |
| * UserInterface/Views/BlackboxSettingsView.css: |
| (.settings-view.blackbox > table > tbody td.url): Added. |
| (.settings-view.blackbox > table > tbody td.url > .CodeMirror): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-01-16 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: show the device settings menu when Web Inspector's debug mode is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=206311 |
| |
| Reviewed by Brian Burg. |
| |
| This only has an effect when Web Inspector is opened and the debug mode is enabled. If so, |
| the device settings toolbar icon will appear regardless of whether the inspected target is |
| a remote device or not. Disabling debug mode will not immediately remove the device settings |
| toolbar icon, but it will not reappear when Web Inspector is next opened (to allow for taking |
| screenshots and other such things). |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| |
| 2020-01-16 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r251487): Web Inspector: selected color in color picker has wrong lightness |
| https://bugs.webkit.org/show_bug.cgi?id=206202 |
| |
| Reviewed by Devin Rousso. |
| |
| Currently, tintedColor setter has two code paths: |
| - rgb2hsv convertion if the color is defined using color(...) syntax. |
| - HSL to HSV convertion for any other color. |
| |
| The latter was defined in the view, was untested, and incorrect. |
| This patch uses WI.Color.rgb2hsv convertion for all colors. This method is |
| already covered by tests. |
| |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare.prototype.set tintedColor): |
| |
| 2020-01-16 David Kilzer <ddkilzer@apple.com> |
| |
| Enable -Wconditional-uninitialized in WebInspectorUI, WebKitLegacy, WebKit projects |
| <https://webkit.org/b/206270> |
| <rdar://problem/58589767> |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/Base.xcconfig: |
| (WARNING_CFLAGS): Add -Wconditional-uninitialized switch. |
| |
| 2020-01-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: collapsing a virtualized folder in a `WI.TreeOutline` doesn't updated the DOM |
| https://bugs.webkit.org/show_bug.cgi?id=206302 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype._updateVirtualizedElements): |
| When collapsing a currently visible `WI.TreeElement`, it will still be in the cached set of |
| visible and attached `WI.TreeElement`s, meaning that `_updateVirtualizedElements` will early |
| return since it thinks that the same `WI.TreeElement` are being shown. Add another check to |
| ensure that it only thinks that if the same number of `WI.TreeElement` are visible. |
| |
| 2020-01-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: "Enable Local Override" and "Delete Local Override" are displayed twice in the contextual menu |
| https://bugs.webkit.org/show_bug.cgi?id=206184 |
| <rdar://problem/58409880> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| * UserInterface/Views/LocalResourceOverrideTreeElement.js: |
| (WI.LocalResourceOverrideTreeElement.prototype.populateContextMenu): |
| Add an expando flag that can be set by `WI.LocalResourceOverrideTreeElement` to ensure that |
| the local override context menu items aren't added again by `WI.ResourceTreeElement`. |
| |
| 2020-01-09 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: suggest "color()" when defining color in CSS value |
| https://bugs.webkit.org/show_bug.cgi?id=205976 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Models/CSSKeywordCompletions.js: |
| |
| 2020-01-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: not all injected scripts and style sheets are from extensions |
| https://bugs.webkit.org/show_bug.cgi?id=205955 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Base/Utilities.js: |
| (isWebKitExtensionScheme): Added. |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet.prototype.get injected): |
| * .eslintrc: |
| Move the logic for detecting an extension injected resource to its own function. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject): |
| (WI.SourcesNavigationSidebarPanel.prototype._addStyleSheet): |
| (WI.SourcesNavigationSidebarPanel.prototype._addScript): |
| Only show the Anonymous Style Sheets folder once the user tries to show a style sheet that |
| would be in it. |
| |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype.didPresentDialog): |
| (WI.OpenResourceDialog.prototype._addScriptsForTarget): |
| (WI.OpenResourceDialog.prototype._handleStyleSheetAdded): |
| (WI.OpenResourceDialog.prototype._handleStyleSheetRemoved): |
| Ignore anonymous scripts, and allow injected style sheets to be added after presenting. |
| |
| 2020-01-08 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Show RGBA input fields for p3 color picker |
| https://bugs.webkit.org/show_bug.cgi?id=203928 |
| <rdar://problem/56963805> |
| |
| Reviewed by Brian Burg. |
| |
| Display numeric input fields for colors defined via `color(...)` CSS syntax. |
| |
| * UserInterface/Controllers/CodeMirrorColorEditingController.js: |
| (WI.CodeMirrorColorEditingController.prototype.popoverWillPresent): |
| Remove unnecessary WI.ColorPicker.Event.FormatChanged event. |
| |
| * UserInterface/Views/ColorPicker.css: |
| (.color-picker > .color-inputs > div + div): |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker): |
| Don't append inputs of all possible color formats to DOM on instantiation. |
| |
| (WI.ColorPicker.prototype.set color): |
| (WI.ColorPicker.prototype.set enableColorComponentInputs): |
| (WI.ColorPicker.prototype._updateColor): |
| (WI.ColorPicker.prototype._updateColorGamut): |
| (WI.ColorPicker.prototype._createColorInputsIfNeeded): |
| (WI.ColorPicker.prototype._showColorComponentInputs): |
| (WI.ColorPicker.prototype._handleColorInputsContainerInput): |
| * UserInterface/Views/InlineSwatch.js: |
| Remove unnecessary WI.ColorPicker.Event.FormatChanged event. |
| |
| 2020-01-08 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION: (r254186) [ Mac ] inspector/css/add-rule.html is failing |
| https://bugs.webkit.org/show_bug.cgi?id=205938 |
| <rdar://problem/58413597> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet.prototype.get injected): |
| `scheme` can be `null`, so check that it exists before calling `String.prototype` functions. |
| |
| 2020-01-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: unable to edit or view the source of style sheets injected by safari app extensions |
| https://bugs.webkit.org/show_bug.cgi?id=205900 |
| <rdar://problem/57898773> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Remove the restrictions around `CSS.StyleSheetOrigin.User` style sheets, thereby allowing |
| Web Inspector to get the source information that is necessary to show the "resource" in the |
| Sources Tab. |
| |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet.prototype.get displayName): |
| (WI.CSSStyleSheet.prototype.get injected): Added. |
| (WI.CSSStyleSheet.prototype.get anonymous): Added. |
| |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype._parseRulePayload): |
| * UserInterface/Models/CSSRule.js: |
| (WI.CSSRule): |
| (WI.CSSRule.prototype.get editable): |
| (WI.CSSRule.prototype._selectorResolved): |
| Attempt to create a source code location for any style sheet with a source range, not just |
| for the Inspector Style Sheet. |
| |
| * UserInterface/Views/CSSStyleSheetTreeElement.js: |
| (WI.CSSStyleSheetTreeElement): |
| Instead of hardcoding "Inspector Style Sheet", use the associated `WI.CSSStyleSheet`'s info. |
| |
| * UserInterface/Views/FrameTreeElement.js: |
| (WI.FrameTreeElement): |
| (WI.FrameTreeElement.prototype.onattach): |
| (WI.FrameTreeElement.prototype.ondetach): |
| (WI.FrameTreeElement.prototype._styleSheetAdded): |
| (WI.FrameTreeElement.prototype._styleSheetRemoved): Added. |
| Ensure that only non-injected non-anonymous style sheets are shown under frames. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements): |
| (WI.SourcesNavigationSidebarPanel.prototype._addResource): |
| (WI.SourcesNavigationSidebarPanel.prototype._addStyleSheet): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetAdded): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetRemoved): Added. |
| Add "Extension Style Sheets", "Extra Style Sheets", and "Anonymous Style Sheets" folders, |
| just like for scripts, with a similar logic as to when style sheets are added to each. |
| |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog): |
| (WI.OpenResourceDialog.prototype.representedObjectIsValid): Added. |
| (WI.OpenResourceDialog.prototype._populateResourceTreeOutline): |
| (WI.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement): |
| (WI.OpenResourceDialog.prototype.didDismissDialog): |
| (WI.OpenResourceDialog.prototype.didPresentDialog): |
| (WI.OpenResourceDialog.prototype._removeResource): Added. |
| (WI.OpenResourceDialog.prototype._resourceWasRemoved): Added. |
| (WI.OpenResourceDialog.prototype._scriptAdded): |
| (WI.OpenResourceDialog.prototype._scriptRemoved): Added. |
| (WI.OpenResourceDialog.prototype._handleStyleSheetAdded): Added. |
| (WI.OpenResourceDialog.prototype._handleStyleSheetRemoved): Added. |
| Add any non-injected non-anonymous style sheets when populating the list of resources. |
| Drive-by: remove listings for any resources that are removed from the inspected page. |
| |
| * UserInterface/Views/ResourceTreeElement.js: |
| (WI.ResourceTreeElement.compareResourceTreeElements): |
| (WI.ResourceTreeElement.compareResourceTreeElements.resolvedType): Added. |
| Support comparisons against non-resource tree elements. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2020-01-07 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION: [ Mac Debug ] inspector/page/setBootstrapScript-main-frame.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=205807 |
| <rdar://problem/58344669> |
| |
| Reviewed by Dean Jackson. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.async createBootstrapScript): |
| (WI.NetworkManager.prototype._handleBootstrapScriptContentDidChange): |
| Ensure that `Page.setBootstrapScript` is called when restoring the bootstrap script from the |
| IndexedDB storage. Otherwise, in situations like when Web Inspector is first opened, we will |
| show the Inspector Bootstrap Script in the UI, but not actually set it on the inspected page. |
| |
| 2020-01-06 Yury Semikhatsky <yurys@chromium.org> |
| |
| REGRESSION: [ Mac wk2 ] http/tests/inspector/target/provisional-load-cancels-previous-load.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=205473 |
| <rdar://problem/58093690> |
| |
| The failure was due to attempts to add output to the test page which could be not fully |
| loaded after navigation. To make it deterministic it is now possible to keep provisional |
| navigation paused and to defer output until the test page is ready. |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.initialize): |
| (WI.Target.prototype._resumeIfPaused): extracted resume logic in a method that |
| can be overridden in the tests. |
| |
| * UserInterface/Test/FrontendTestHarness.js: |
| (FrontendTestHarness.prototype.deferOutputUntilTestPageIsReloaded): allow to pause |
| output when navigation is started via protocol commands rather than the test harness. |
| |
| 2020-01-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Color picker: make it keyboard accessible |
| https://bugs.webkit.org/show_bug.cgi?id=205572 |
| <rdar://problem/58169943> |
| |
| Reviewed by Brian Burg. |
| |
| For the color square, make up, down, left, and right keys move the crosshair. |
| |
| For the hue and opacity sliders: |
| - Pressing up and down keys should adjust the value by 1%. |
| - When holding Shift, up and down keys adjust the value by 10%. |
| |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker.prototype.focus): |
| * UserInterface/Views/ColorSquare.css: |
| (.color-square): |
| Match the border of the hue and opacity sliders. |
| |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare): |
| Make the color square focusable. |
| |
| (WI.ColorSquare.prototype._handleMousedown): |
| (WI.ColorSquare.prototype._handleKeyDown): |
| * UserInterface/Views/InlineSwatch.js: |
| * UserInterface/Views/Slider.css: |
| (.slider:focus): |
| * UserInterface/Views/Slider.js: |
| (WI.Slider): |
| (WI.Slider.prototype._handleMousedown): |
| Drive-by: right clicking the slider shouldn't move the thumb. |
| |
| (WI.Slider.prototype._handleKeyDown): |
| |
| 2020-01-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r218839): Web Inspector: Color picker: pressing Esc should hide color picker |
| https://bugs.webkit.org/show_bug.cgi?id=205570 |
| <rdar://problem/58169820> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole.prototype.set keyboardShortcutDisabled): |
| (WI.QuickConsole.prototype._toggleOrFocus): |
| Restore keyboardShortcutDisabled setter, which was removed in r218839 without any explanation. |
| |
| 2020-01-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: unable to see recording actions for WebGL canvases that have lots of shader programs |
| https://bugs.webkit.org/show_bug.cgi?id=205659 |
| |
| Reviewed by Brian Burg. |
| |
| Limit the height of the canvas and shader program tree a recording is selected. |
| |
| * UserInterface/Views/CanvasSidebarPanel.js: |
| (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar): |
| * UserInterface/Views/CanvasSidebarPanel.css: |
| (.sidebar > .panel.navigation.canvas.showing-recording > .content > .tree-outline.canvas): Added. |
| |
| 2019-12-21 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: add InspectedTargetTypes diagnostic event and related hooks |
| https://bugs.webkit.org/show_bug.cgi?id=205174 |
| <rdar://problem/57887953> |
| |
| Reviewed by Devin Rousso. |
| |
| This change adds a new diagnostic recorder that reports information about |
| inspected targets and their type / version information. |
| |
| * UserInterface/Base/DebuggableType.js: |
| (WI.DebuggableType.fromString): |
| Move the static parsing factory method to DebuggableType class. |
| |
| * UserInterface/Main.html: Add new files. |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): Add new diagnostic recorder. |
| |
| * UserInterface/Protocol/InspectorBackend.js: |
| (InspectorBackendClass.prototype.activateDomain): |
| Adapt to InspectorFrontendHost changes. |
| |
| * UserInterface/Test/TestAppController.js: |
| (WI.TestAppController): |
| * UserInterface/Controllers/AppController.js: |
| (WI.AppController): |
| Adapt to InspectorFrontendHost changes. |
| |
| 2019-12-20 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Gradient editor: opacity slider is too close to the right edge of the popover |
| https://bugs.webkit.org/show_bug.cgi?id=203643 |
| <rdar://problem/56762879> |
| |
| Reviewed by Devin Rousso. |
| |
| Replace absolute positioning in the color picker with static layout. |
| |
| * UserInterface/Views/ColorPicker.css: |
| (.color-picker .wrapper): |
| (.color-picker :matches(.color-square, .slider)): |
| (.color-picker .slider): |
| (.color-picker .hue): |
| (@media (color-gamut: p3) .color-picker.gamut-p3 > .hue): |
| (.color-picker > .color-inputs): |
| (.color-picker > .color-inputs > div): |
| (.color-picker > .color-inputs > div:not([hidden]) + div): |
| The 1st visible div should have no left margin even if it's preceded by a hidden div. |
| |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker): |
| (WI.ColorPicker.prototype._updateOpacitySlider): |
| * UserInterface/Views/GradientEditor.css: |
| (.gradient-editor.editing-color): |
| (.gradient-editor > .color-picker .slider): |
| * UserInterface/Views/GradientEditor.js: |
| (WI.GradientEditor): |
| * UserInterface/Views/Slider.css: |
| (.slider): |
| (.slider > img): |
| (body[dir=ltr] .slider > img): |
| (body[dir=rtl] .slider > img): |
| * UserInterface/Views/Slider.js: |
| (WI.Slider): |
| (WI.Slider.prototype.set value): |
| (WI.Slider.prototype.set knobY): |
| (WI.Slider.prototype.get maxY): |
| (WI.Slider.prototype.recalculateKnobY): |
| (WI.Slider.prototype._handleMousedown): |
| (WI.Slider.prototype._handleMousemove): |
| * UserInterface/Views/Variables.css: |
| (:root): |
| Convert WI.Slider to be vertical by default. WI.Slider used to define a hozirontal slider. |
| It is only used by the color picker, where it's vertical. The slider was rotated with CSS |
| transformation. This made it problematic to use in the static layout. |
| |
| 2019-12-20 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: convert some InspectorFrontendHost methods to getters |
| https://bugs.webkit.org/show_bug.cgi?id=205475 |
| |
| Reviewed by Devin Rousso. |
| |
| No reason for these to be method calls, so expose as getters / attributes instead. |
| |
| * UserInterface/Base/LoadLocalizedStrings.js: |
| * UserInterface/Base/Main.js: |
| * UserInterface/Base/ObjectStore.js: |
| (WI.ObjectStore.get _databaseName): |
| * UserInterface/Base/Platform.js: |
| * UserInterface/Base/Setting.js: |
| (WI.Setting._localStorageKey): |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| * UserInterface/Protocol/LoadInspectorBackendCommands.js: |
| |
| 2019-12-19 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Enable p3 color picker by default |
| https://bugs.webkit.org/show_bug.cgi?id=203931 |
| <rdar://problem/56965236> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/InlineSwatch.js: |
| |
| 2019-12-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: the clear console button is hidden at smaller widths |
| https://bugs.webkit.org/show_bug.cgi?id=205438 |
| |
| Reviewed by Brian Burg. |
| |
| Ever since r242604, we no longer "need" to show the text filter bar or message type scope |
| bar since new messages will show a warning banner that there's an active filter. Instead, we |
| should prefer showing the navigation items that control functionality that cannot be reached |
| anywhere else (visually), such as clearing the console or evaluating as a user gesture. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView): |
| Make the text find banner and type scope bar both low priority, the preserve log and |
| evaluate as user gesture toggles normal priority, and the clear log high priority. |
| |
| 2019-12-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Audit: exiting edit mode with the same selection as before entering edit mode doesn't reselect |
| https://bugs.webkit.org/show_bug.cgi?id=205435 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/AuditNavigationSidebarPanel.js: |
| (WI.AuditNavigationSidebarPanel.prototype.initialLayout): |
| Set `allowsRepeatSelection` so that selecting the previously selected tree element after |
| leaving edit mode will actually work. |
| |
| 2019-12-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: bezier keywords don't show a swatch |
| https://bugs.webkit.org/show_bug.cgi?id=205436 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens): |
| Check if the current token is a direct match with one of the timing function keywords. |
| |
| 2019-12-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Audit: importing a result with DOM nodes that don't match the inspected page appear as empty lines |
| https://bugs.webkit.org/show_bug.cgi?id=205437 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/AuditTestCaseContentView.js: |
| (WI.AuditTestCaseContentView.prototype.layout): |
| Call `refresh` on the `CodeMirror` instance after a timeout to give it a chance to be added |
| to the DOM tree. |
| |
| 2019-12-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: restrict showing paint flashing and compositing borders to the Web Inspector session |
| https://bugs.webkit.org/show_bug.cgi?id=205201 |
| |
| Reviewed by Timothy Hatcher. |
| |
| We often get bugs from users who turn on paint flashing or compositing borders, close Web |
| Inspector, reopen Web Inspector, and are then surprised when the page flashes red or these |
| borders exist all over the page. |
| |
| Given that the dark mode and print styles toggles are limited to the Web Inspector session, |
| we should make these have the same behavior. |
| |
| * UserInterface/Base/Main.js: |
| (WI.initializeTarget): |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Controllers/LayerTreeManager.js: |
| (WI.LayerTreeManager): Added. |
| (WI.LayerTreeManager.prototype.initializeTarget): |
| (WI.LayerTreeManager.supportsShowingPaintRects): Added. |
| (WI.LayerTreeManager.supportsVisibleCompositingBorders): Added. |
| (WI.LayerTreeManager.prototype.get showPaintRects): Added. |
| (WI.LayerTreeManager.prototype.set showPaintRects): Added. |
| (WI.LayerTreeManager.prototype.get compositingBordersVisible): Added. |
| (WI.LayerTreeManager.prototype.set compositingBordersVisible): Added. |
| (WI.LayerTreeManager.prototype.updateCompositingBordersVisibleFromPageIfNeeded): Added. |
| Use `WI.LayerTreeManager` to control the state of paint flashing and compositing borders, as |
| they're both related to the concept of layers. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype.shown): |
| (WI.DOMTreeContentView.prototype.closed): |
| (WI.DOMTreeContentView.prototype.attached): Added. |
| (WI.DOMTreeContentView.prototype.detached): Added. |
| (WI.DOMTreeContentView.prototype._handleCompositingBordersVisibleChanged): Added. |
| (WI.DOMTreeContentView.prototype._handleCompositingBordersButtonClicked): Added. |
| (WI.DOMTreeContentView.prototype._handleShowPaintRectsChanged): Added. |
| (WI.DOMTreeContentView.prototype._handlePaingFlashingButtonClicked): Added. |
| (WI.DOMTreeContentView.prototype._toggleCompositingBorders): Deleted. |
| (WI.DOMTreeContentView.prototype._togglePaintFlashing): Deleted. |
| (WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): Deleted. |
| (WI.DOMTreeContentView.prototype._showPaintRectsSettingChanged): Deleted. |
| |
| * UserInterface/Views/Layers3DContentView.js: |
| (WI.Layers3DContentView): |
| (WI.Layers3DContentView.prototype.shown): |
| (WI.Layers3DContentView.prototype.hidden): |
| (WI.Layers3DContentView.prototype.attached): Added. |
| (WI.Layers3DContentView.prototype.detached): Added. |
| (WI.Layers3DContentView.prototype._handleCompositingBordersVisibleChanged): Added. |
| (WI.Layers3DContentView.prototype._handleCompositingBordersButtonClicked): Added. |
| (WI.Layers3DContentView.prototype._handleShowPaintRectsChanged): Added. |
| (WI.Layers3DContentView.prototype._handlePaingFlashingButtonClicked): Added. |
| (WI.Layers3DContentView.prototype.closed): Deleted. |
| (WI.Layers3DContentView.prototype._showPaintRectsSettingChanged): Deleted. |
| (WI.Layers3DContentView.prototype._togglePaintFlashing): Deleted. |
| (WI.Layers3DContentView.prototype._updateCompositingBordersButtonState): Deleted. |
| (WI.Layers3DContentView.prototype._toggleCompositingBorders): Deleted. |
| |
| 2019-12-18 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: Runtime.enable reports duplicates (non existent) contexts |
| https://bugs.webkit.org/show_bug.cgi?id=204859 |
| |
| Reviewed by Devin Rousso. |
| |
| Assert that all contexts added to the list are unique. |
| |
| * UserInterface/Models/ExecutionContextList.js: |
| (WI.ExecutionContextList.prototype.add): |
| |
| 2019-12-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: remove the "Show/Hide Shadow DOM" navigation item |
| https://bugs.webkit.org/show_bug.cgi?id=205199 |
| |
| Reviewed by Timothy Hatcher. |
| |
| There's really no good reason to hide shadow DOM, especially for non-user-agent shadow trees. |
| The user has full control over whether to expand/collapse shadow trees (and their hosts), so |
| having a setting that entirely removes the shadow trees from view throughout Web Inspector |
| seems overkill. |
| |
| * UserInterface/Base/Setting.js: |
| |
| * UserInterface/Models/DOMNode.js: |
| (WI.DOMNode): |
| (WI.DOMNode.prototype.get nextSibling): |
| (WI.DOMNode.prototype.get previousSibling): |
| (WI.DOMNode.prototype.get children): |
| (WI.DOMNode.prototype.get childNodeCount): |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype.get navigationItems): |
| (WI.DOMTreeContentView.prototype.closed): |
| (WI.DOMTreeContentView.prototype._showShadowDOMSettingChanged): Deleted. |
| (WI.DOMTreeContentView.prototype._toggleShowsShadowDOMSetting): Deleted. |
| |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype.close): |
| (WI.DOMTreeOutline.prototype._revealAndSelectNode): |
| (WI.DOMTreeOutline.prototype._showShadowDOMSettingChanged): Deleted. |
| |
| * UserInterface/Views/LayerTreeDetailsSidebarPanel.js: |
| (WI.LayerTreeDetailsSidebarPanel.prototype.initialLayout): |
| (WI.LayerTreeDetailsSidebarPanel.prototype._updateDisplayWithLayers): |
| (WI.LayerTreeDetailsSidebarPanel.prototype._showShadowDOMSettingChanged): Deleted. |
| |
| * UserInterface/Images/ShadowDOM.svg: Removed. |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-12-11 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: add TabNavigation diagnostic event and related hooks |
| https://bugs.webkit.org/show_bug.cgi?id=205138 |
| <rdar://problem/57855456> |
| |
| Reviewed by Devin Rousso. |
| |
| This patch adds a new recorder for the TabNavigation diagnostic event. |
| |
| The bulk of this patch is to find all callsites that can possibly change the active |
| tab and annotate them with the type of interaction (tab click, link click, |
| keyboard shortcut, inspect, and others). This patch was developed through |
| trial and error by logging the diagnostic events and debugging any scenarios |
| where a tab navigation is not correctly annotated with the initiating interaction. |
| |
| * UserInterface/Main.html: Add new file. |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): Register new recorder. |
| (WI._handleSettingsKeyboardShortcut): Annotate as keyboard shortcut. |
| - Add options argument to most WI.show*Tab functions, and forward to the underlying |
| TabBrowser or TabBar calls. This allows initiatorHint to be used in these cases. |
| - Add other annotations to linkifyElement |
| |
| * UserInterface/Views/TabBrowser.js: |
| (WI.TabBrowser.prototype.showTabForContentView): |
| (WI.TabBrowser.prototype._tabBarItemSelected): |
| - Try to infer an initiator for the tab navigation from TabBrowser API arguments or from TabBar's event. |
| - Add an enum with TabNavigationInitiator values. |
| |
| * UserInterface/Base/DOMUtilities.js: |
| Clickable element links should be reported as link clicks. Add an annotation |
| so that it isn't reported as "Inspect" (due to going through DOMManager.inspectElement). |
| |
| * UserInterface/Controllers/CallFrameTreeController.js: |
| (WI.CallFrameTreeController): |
| (WI.CallFrameTreeController.prototype._showSourceCodeLocation): |
| This is mainly used by Canvas tab. Annotate call frame links as link clicks. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.inspectElement): |
| Accept an options argument. This is used to forward the initiatorHint to |
| the listener of this event, WI._domNodeWasInspected, so it can forward the |
| initiatorHint further on. |
| |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.setTimelineProfilingEnabled): |
| (InspectorFrontendAPI.showConsole): |
| (InspectorFrontendAPI.showResources): |
| (InspectorFrontendAPI.showTimelines): |
| (InspectorFrontendAPI.showMainResourceForFrame): |
| Annotate these as FrontendAPI calls. Mainly used by Develop menu items in Safari. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| (WI.appendContextMenuItemsForURL): |
| Annotate as context menu. |
| |
| * UserInterface/Views/DOMNodeTreeElement.js: |
| (WI.DOMNodeTreeElement): |
| (WI.DOMNodeTreeElement.prototype.populateContextMenu): |
| Annotate as context menu. |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype._buildTagDOM): |
| |
| |
| * UserInterface/Views/DefaultDashboardView.js: |
| (WI.DefaultDashboardView.prototype._resourcesItemWasClicked): |
| (WI.DefaultDashboardView.prototype._networkItemWasClicked): |
| (WI.DefaultDashboardView.prototype._timelineItemWasClicked): |
| (WI.DefaultDashboardView.prototype._consoleItemWasClicked): |
| Annotate as dashboard. |
| |
| * UserInterface/Views/LegacyTabBar.js: |
| (WI.LegacyTabBar.prototype.set selectedTabBarItem): |
| Include the inferred initiator in the event that is dispatched. |
| |
| (WI.LegacyTabBar.prototype.selectTabBarItemWithInitiator): |
| Added. This is a convenience method that temporarily sets the |
| initiator before invoking the setter (which reads the initator). |
| |
| (WI.LegacyTabBar.prototype._handleMouseDown): |
| (WI.LegacyTabBar.prototype._handleClick): |
| (WI.LegacyTabBar.prototype._handleNewTabClick): |
| Treat these as "tab clicks". |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.prototype.set selectedTabBarItem): |
| (WI.TabBar.prototype.selectTabBarItemWithInitiator): |
| (WI.TabBar.prototype._handleMouseDown): |
| (WI.TabBar.prototype._handleClick): |
| Changes from LegacyTabBar have been copied to this version, as it's a |
| drop-in replacement. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._showConsoleTab): |
| Treat the console chevron as a "button click". |
| |
| * UserInterface/Views/NewTabContentView.js: |
| (WI.NewTabContentView.prototype._createNewTabWithType): |
| Treat each tab button as a "button click". |
| |
| * UserInterface/Views/RecordingActionTreeElement.js: |
| (WI.RecordingActionTreeElement.prototype.populateContextMenu): |
| Annotate as context menu. |
| |
| * UserInterface/Views/ResourceTimelineDataGridNode.js: |
| (WI.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked): |
| Annotate as link click. |
| |
| * UserInterface/Views/SearchResultTreeElement.js: |
| (WI.SearchResultTreeElement): |
| (WI.SearchResultTreeElement.prototype.populateContextMenu): |
| Annotate as context menu. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu): |
| Annotate as context menu. |
| |
| (WI.SourceCodeTextEditor.prototype._showPopoverForObject.): |
| (WI.SourceCodeTextEditor.prototype._showPopoverForObject): |
| Annotate elements in popover as link click. |
| |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement): |
| (WI.SourceCodeTreeElement.prototype._handleToggleBlackboxedImageElementClicked): |
| Annotate as context menu. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._populateIconElementContextMenu): |
| Annotate as context menu. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype._setupJumpToSymbol): |
| Annotate as link click. |
| |
| 2019-12-15 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Remove -webkit-marquee. |
| https://bugs.webkit.org/show_bug.cgi?id=117769 |
| |
| Reviewed by Simon Fraser. |
| |
| * UserInterface/Models/CSSKeywordCompletions.js: |
| |
| 2019-12-12 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: Error: Can't make a ContentView for an unknown representedObject of type: CallFrame |
| https://bugs.webkit.org/show_bug.cgi?id=204823 |
| |
| Reviewed by Devin Rousso. |
| |
| If no type is stored in the cookie matching by type should fail. |
| |
| * UserInterface/Views/NavigationSidebarPanel.js: |
| (WI.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie.treeElementMatchesCookie): |
| (WI.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie): |
| |
| 2019-12-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251227): Uncaught Exception: undefined is not an object (evaluating 'target.DOMAgent.setInspectModeEnabled') |
| https://bugs.webkit.org/show_bug.cgi?id=205148 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.setTimelineProfilingEnabled): |
| (InspectorFrontendAPI.setElementSelectionEnabled): |
| If there are no targets available yet (`WI.targetsAvailable()`), then wait for targets to |
| be available (`WI.whenTargetsAvailable()`) before performing the intended logic, as the |
| `InspectorFrontendAPI` only waits for the backend connection to be established before |
| dispatching, meaning that there may not be a page target yet. Other `InspectorFrontendAPI` |
| functions don't need to be changed because they don't cause commands to be invoked. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.set inspectModeEnabled): |
| Drive-by: don't assume that inspect mode is disabled if an error is thrown. |
| |
| * UserInterface/Base/Main.js: |
| Drive-by: remove duplicate function `WI._toggleInspectMode` as it already exists. |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Console: unable to switch execution contexts |
| https://bugs.webkit.org/show_bug.cgi?id=205102 |
| <rdar://problem/57748393> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole): |
| Wait to initialize the main execution context path component until we actually have a main |
| execution context. |
| |
| (WI.QuickConsole.prototype._pageTargetTransitioned): |
| Remove unnecessary duplicate early return. |
| |
| (WI.QuickConsole.prototype._initializeMainExecutionContextPathComponent): |
| Restore the link to the next path component if the main execution context path component is |
| recreated when there already exist other execution contexts. |
| |
| (WI.QuickConsole.prototype._selectExecutionContext): |
| Remove unnecessary assertion. |
| |
| (WI.QuickConsole.prototype._removeExecutionContextPathComponentForFrame): |
| When the execution context of the main frame changes, recreate the main execution context |
| path component so it has the right `representedObject`. |
| |
| * UserInterface/Views/HierarchicalPathNavigationItem.js: |
| (WI.HierarchicalPathNavigationItem.prototype.update): |
| Only hide the tooltip if we're not `sizeToFit` as otherwise we never unhide it due to an |
| early return (`sizeToFit` just makes everything visible). |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: hovering over an invalid value while holding ⌘ doesn't change the color of the text |
| https://bugs.webkit.org/show_bug.cgi?id=205039 |
| |
| Reviewed by Brian Burg. |
| |
| Only apply a `color` or `-webkit-text-decoration-color` when either the ⌘ key is not pressed |
| or if the mouse is not actively hovering over the node when the ⌘ is pressed. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: |
| (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)): Added. |
| (.spreadsheet-style-declaration-editor > .property:not(.disabled) > .content > .value): Added. |
| (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)): Added. |
| (.spreadsheet-style-declaration-editor .property.disabled): |
| (.spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > *:not(.name, .value-container), .spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > .value-container > *:not(.value), body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > :matches(.name, value-container):not(.editing), body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > .value-container > value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > :matches(.name, value-container):not(:hover, .editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) > .content > .value-container > .value:not(:hover, .editing)): Added. |
| (.spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > *:not(.name, .value-container), .spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > .value-container > *:not(.value), body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > :matches(.name, .value-container):not(.editing), body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > .value-container > .value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > :matches(.name, .value-container):not(:hover, .editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property.invalid-name:not(.disabled) > .content > .value-container > .value:not(:hover, .editing)): Added. |
| (body:not(.meta-key-pressed) .spreadsheet-style-declaration-editor > .property.invalid-value:not(.disabled) > .content > .value:not(.editing), body.meta-key-pressed .spreadsheet-style-declaration-editor > .property.invalid-value:not(.disabled) > .content > .value:not(:hover, .editing)): Added. |
| (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): Added. |
| (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): Added. |
| (body.meta-key-pressed .spreadsheet-css-declaration:not(.locked) > .spreadsheet-style-declaration-editor > .property > .content :matches(.name, .value):not(.editing):hover): Added. |
| (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): Added. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .name): Deleted. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .value): Deleted. |
| (.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *): Deleted. |
| (.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled) .content > *): Deleted. |
| (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .content .value): Deleted. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-link): Deleted. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-string): Deleted. |
| (.meta-key-pressed .spreadsheet-css-declaration:not(.locked) :matches(.name, .value):not(.editing):hover): Deleted. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-comment): Deleted. |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r253173): Console: evaluating a command should automatically scroll to it's result |
| https://bugs.webkit.org/show_bug.cgi?id=205105 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView): |
| (WI.LogContentView.prototype.get scrollableElements): |
| (WI.LogContentView.prototype._updateMessagesSelection): |
| (WI.LogContentView.prototype._highlightSearchMatchAtIndex): |
| (WI.LogContentView.prototype.layout): Deleted. |
| (WI.LogContentView.prototype._ensureMessageIsVisible): Deleted. |
| (WI.LogContentView.prototype._positionForMessage): Deleted. |
| Now that this uses `display: flex;`, the actual scrollable element is the `messagesElement`, |
| so use that instead when manually setting the `scrollTop`. Use `scrollIntoViewIfNeeded` when |
| revealing search results instead of any custom scroll offset calculations. |
| |
| * UserInterface/Views/LogContentView.css: |
| (.content-view.log > .hidden-messages-banner): |
| Drive-by: ensure that the hidden messages banner doesn't shrink. |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: simplify the text of the script blackboxing context menu item |
| https://bugs.webkit.org/show_bug.cgi?id=205099 |
| |
| Reviewed by Brian Burg. |
| |
| "Blackbox script to ignore it when debugging" is a bit too long for a context menu item. |
| We should use something simpler, like "Blackbox Script". |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: replace all "Remove" context menu items with "Delete" to be consistent |
| https://bugs.webkit.org/show_bug.cgi?id=205098 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/BlackboxSettingsView.js: |
| (WI.BlackboxSettingsView.prototype._addRow): |
| * UserInterface/Views/BootstrapScriptTreeElement.js: |
| (WI.BootstrapScriptTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/BreakpointActionView.js: |
| (WI.BreakpointActionView): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| Drive-by: if a local override exists for the given source code, add an item for |
| enabling/disabling and deleting it. |
| * UserInterface/Views/LocalResourceOverrideTreeElement.js: |
| (WI.LocalResourceOverrideTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/ProbeSetDetailsSection.js: |
| (WI.ProbeSetDetailsSection): |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView): |
| * UserInterface/Views/ScopeChainDetailsSidebarPanel.js: |
| (WI.ScopeChainDetailsSidebarPanel.prototype._objectTreeElementAddContextMenuItems): |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-12-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Missing frame for given frameId (on techcrunch.com) |
| https://bugs.webkit.org/show_bug.cgi?id=205130 |
| <rdar://problem/57847699> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Controllers/ApplicationCacheManager.js: |
| (WI.ApplicationCacheManager.prototype._manifestForFrameLoaded): |
| A frame can go away between `ApplicationCache.getManifestForFrame` being called and the |
| response being received, so don't re-throw the error if the frontend no longer has a |
| matching `WI.Frame` for the given `frameId`. |
| |
| 2019-12-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251038): Elements: Computed: implicit shorthands are not shown when "Prefer Shorthands" is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=205035 |
| <rdar://problem/57773470> |
| |
| Reviewed by Brian Burg. |
| |
| The computed style treats most shorthand properties as "implicit", meaning that if "Prefer |
| Shorthands" is enabled, we won't show the shorthand properties unless "Show All" is also |
| enabled. The frontend can fix this by checking to see if there are any non-implicit longhand |
| values for each shorthand value, and therefore decide not to hide the "implicit" shorthand. |
| |
| * UserInterface/Views/ComputedStyleSection.js: |
| (WI.ComputedStyleSection.prototype.get propertiesToRender): |
| (WI.ComputedStyleSection.prototype.get propertiesToRender.hasNonImplicitLonghand): Added. |
| Drive-by: filter the list of properties to render before sorting them for performance. |
| |
| 2019-12-10 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r252523): Web Inspector: Styles: semicolon is wrongly positioned in multiline values |
| https://bugs.webkit.org/show_bug.cgi?id=205034 |
| <rdar://problem/57772846> |
| |
| Reviewed by Brian Burg. |
| |
| Wrap the value node in another `<span class="value-container">` so that the semicolon can be |
| included as part of the `display: inline-block;` when there are multiple lines in the value. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.update): |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: |
| (.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .value-container): Added. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .value): Deleted. |
| |
| 2019-12-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: there is a double border between the last rule and the class list area or filter area |
| https://bugs.webkit.org/show_bug.cgi?id=205040 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: |
| (.sidebar > .panel.details.css-style.style-rules > .content ~ :matches(.options-container, .class-list-container)): Added. |
| (.sidebar > .panel.details.css-style > .content ~ .options-container): |
| Use a CSS transform to move the class list area and filter area up when the Styles panel is |
| selected in the details sidebar of the Elements Tab. |
| |
| 2019-12-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r253167): Elements: class list toggle doesn't stay sticky to the bottom of the sidebar |
| https://bugs.webkit.org/show_bug.cgi?id=205033 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: |
| (.sidebar > .panel.details.css-style > .content): |
| Ensure that the main content of the sidebar panel takes up as much space as possible. |
| |
| 2019-12-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: this._objectTree.resetPropertyPath is not a function. (In 'this._objectTree.resetPropertyPath()', 'this._objectTree.resetPropertyPath' is undefined) |
| https://bugs.webkit.org/show_bug.cgi?id=205026 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.clearSessionState): |
| The `_objectTree` can also be an `WI.ErrorObjectView`, which doesn't have a property path. |
| |
| 2019-12-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Missing node for given nodeId |
| https://bugs.webkit.org/show_bug.cgi?id=204519 |
| |
| Reviewed by Timothy Hatcher. |
| |
| When a DOM node is removed from the main DOM tree, the `InspectorDOMAgent` invalidates the |
| `DOM.NodeId` that was previously assigned to that DOM node, meaning that any future commands |
| sent by the frontend with that `DOM.NodeId` will fail. |
| |
| Add logic to mark `WI.DOMNode` as being `destroyed` when this happens so the frontend can |
| decide to not invoke any commands with that `DOM.NodeId`. |
| |
| Many functions have also switched to expecting a `WI.DOMNode` instead of a `DOM.NodeId` or |
| have been moved to `WI.DOMNode.prototype` in order to also be able to use `destroyed`. |
| |
| This issue will eventually be mitigated by <https://webkit.org/b/189687>. |
| |
| * UserInterface/Models/DOMNode.js: |
| (WI.DOMNode): |
| (WI.DOMNode.prototype.get destroyed): Added. |
| (WI.DOMNode.prototype.get attached): |
| (WI.DOMNode.prototype.markDestroyed): Added. |
| (WI.DOMNode.prototype.setNodeName): |
| (WI.DOMNode.prototype.setNodeValue): |
| (WI.DOMNode.prototype.setAttribute): |
| (WI.DOMNode.prototype.setAttributeValue): |
| (WI.DOMNode.prototype.querySelector): Added. |
| (WI.DOMNode.prototype.querySelectorAll): Added. |
| (WI.DOMNode.prototype.highlight): Added. |
| (WI.DOMNode.prototype.getOuterHTML): |
| (WI.DOMNode.prototype.setOuterHTML): |
| (WI.DOMNode.prototype.removeNode): |
| (WI.DOMNode.prototype.getEventListeners): |
| |
| * UserInterface/Base/DOMUtilities.js: |
| (WI.bindInteractionsForNodeToElement): |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.buildHighlightConfig): |
| (WI.DOMManager.wrapClientCallback): |
| (WI.DOMManager.prototype._loadNodeAttributes): |
| (WI.DOMManager.prototype._setDocument): |
| (WI.DOMManager.prototype._unbind): |
| (WI.DOMManager.prototype.highlightDOMNodeList): |
| (WI.DOMManager.prototype.highlightSelector): |
| (WI.DOMManager.prototype.hideDOMNodeHighlight): |
| (WI.DOMManager.prototype.highlightDOMNodeForTwoSeconds): |
| (WI.DOMManager.prototype.set inspectModeEnabled): |
| (WI.DOMManager.prototype.setInspectedNode): |
| (WI.DOMManager.prototype.setEventListenerDisabled): |
| (WI.DOMManager.prototype._wrapClientCallback): Deleted. |
| (WI.DOMManager.prototype.querySelector): Deleted. |
| (WI.DOMManager.prototype.querySelectorAll): Deleted. |
| (WI.DOMManager.prototype.highlightDOMNode): Deleted. |
| (WI.DOMManager.prototype._buildHighlightConfig): Deleted. |
| * UserInterface/Models/AuditTestCaseResult.js: |
| (WI.AuditTestCaseResult.async fromPayload): |
| * UserInterface/Models/MediaTimelineRecord.js: |
| (WI.MediaTimelineRecord.async fromJSON): |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.resolveNode): |
| * UserInterface/Views/BoxModelDetailsSectionRow.js: |
| (WI.BoxModelDetailsSectionRow.prototype._highlightDOMNode): |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView.prototype._contentViewMouseEnter): |
| * UserInterface/Views/CanvasTreeElement.js: |
| (WI.CanvasTreeElement.prototype._handleMouseOver): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForDOMNode): |
| * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: |
| (WI.DOMNodeDetailsSidebarPanel.prototype.layout): |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView.prototype._domTreeSelectionDidChange): |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.get editable): |
| (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu): |
| * UserInterface/Views/DOMTreeElementPathComponent.js: |
| (WI.DOMTreeElementPathComponent.prototype.mouseOver): |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype.get editable): |
| (WI.DOMTreeOutline.prototype.populateContextMenu): |
| (WI.DOMTreeOutline.prototype._onmousemove): |
| (WI.DOMTreeOutline.prototype._ondragstart): |
| (WI.DOMTreeOutline.prototype._ondragover): |
| (WI.DOMTreeOutline.prototype._ondragleave): |
| (WI.DOMTreeOutline.prototype._ondragend): |
| (WI.DOMTreeOutline.prototype._hideElements): |
| * UserInterface/Views/FormattedValue.js: |
| (WI.FormattedValue.createElementForNodePreview): |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel.prototype.layout): |
| * UserInterface/Views/LayerDetailsSidebarPanel.js: |
| (WI.LayerDetailsSidebarPanel.prototype._dataGridMouseMove): |
| * UserInterface/Views/LayerTreeDetailsSidebarPanel.js: |
| (WI.LayerTreeDetailsSidebarPanel.prototype.layout): |
| (WI.LayerTreeDetailsSidebarPanel.prototype._highlightSelectedNode): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector): |
| |
| 2019-12-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: saving a file with the url "/" suggest the name "Untitled" |
| https://bugs.webkit.org/show_bug.cgi?id=204910 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/FileUtilities.js: |
| (WI.FileUtilities.save): |
| Allow callers to specify a `suggestedName` that is used if possible. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| (WI.appendContextMenuItemsForDOMNode): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype.get saveData): |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView.prototype.get saveData): |
| If the path of the selected source code is just "/", set the `suggestedName` to "index" and |
| use an extension derived from the MIME type (if able). |
| |
| * UserInterface/Controllers/AuditManager.js: |
| (WI.AuditManager.prototype.export): |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._handleContextMenu): |
| * UserInterface/Views/HeapSnapshotContentView.js: |
| (WI.HeapSnapshotContentView.prototype._exportSnapshot): |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype.get saveData): |
| (WI.LogContentView.prototype._handleContextMenuEvent): |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype._exportHAR): |
| * UserInterface/Views/RecordingContentView.js: |
| (WI.RecordingContentView.prototype._exportRecording): |
| (WI.RecordingContentView.prototype._exportReduction): |
| * UserInterface/Views/ScriptContentView.js: |
| (WI.ScriptContentView.prototype.get saveData): |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView.prototype.get saveData): |
| * UserInterface/Views/TextContentView.js: |
| (WI.TextContentView.prototype.get saveData): |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| (WI.TimelineRecordingContentView.prototype._exportTimelineRecording): |
| * UserInterface/Debug/ProtocolTrace.js: |
| (WI.ProtocolTrace.prototype.get saveData): |
| Prefer `suggestedName` vs `WI.FileUtilities.inspectorURLForFilename`, which is now always |
| called inside `WI.FileUtilities.save` anyways. |
| |
| 2019-12-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r252652): Local Overrides: creating a local override for a resource loaded before Web Inspector was opened shows NaN for the Status Code |
| https://bugs.webkit.org/show_bug.cgi?id=204965 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype.show): |
| Make sure to update the object that holds the resource's original data in addition to the |
| object that holds the current edited values. |
| Drive-by: update the popover once all of the `CodeMirror`s have updated to hide scrollbars. |
| |
| 2019-11-25 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: TabActivity diagnostic event should sample the active tab uniformly |
| https://bugs.webkit.org/show_bug.cgi?id=204531 |
| |
| Reviewed by Devin Rousso. |
| |
| Rewrite this class to use a uniform sampling approach. Every n seconds, a timer fires and |
| samples what the current tab is. If the last user interaction happened up to n seconds ago, |
| report a TabActivity diagnostic event. Keeping with the previous implementation, samples |
| are taken every n=60 seconds. |
| |
| To account for bias in the initial sample when Web Inspector is open, wait m seconds for |
| the first sample. This accounts for the time between opening Web Inspector and choosing the |
| desired tab. In my testing, m=10 is enough time to load Web Inspector and switch |
| immediately to a different tab. In that case, the initial tab would not be sampled as the |
| active tab even if the last user interaction (clicking tab bar) happened while the initial |
| tab was displayed. If the recorder's setup() method is called some time after Web Inspector is |
| opened, then the initial delay will shrink to ensure at least 10s has elapsed since the frontend |
| finished loading. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): Keep a timestamp of when the frontend finished loading. |
| |
| * UserInterface/Controllers/TabActivityDiagnosticEventRecorder.js: |
| (WI.TabActivityDiagnosticEventRecorder): |
| (WI.TabActivityDiagnosticEventRecorder.prototype.setup): |
| (WI.TabActivityDiagnosticEventRecorder.prototype.teardown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._startInitialDelayBeforeSamplingTimer): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._stopInitialDelayBeforeSamplingTimer): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._startEventSamplingTimer): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._stopEventSamplingTimer): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._sampleCurrentTabActivity): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._didObserveUserInteraction): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowFocus): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowBlur): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowKeyDown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowMouseDown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._didInteractWithTabContent): Deleted. |
| (WI.TabActivityDiagnosticEventRecorder.prototype._clearTabActivityTimeout): Deleted. |
| (WI.TabActivityDiagnosticEventRecorder.prototype._beginTabActivityTimeout): Deleted. |
| (WI.TabActivityDiagnosticEventRecorder.prototype._stopTrackingTabActivity): Deleted. |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleTabBrowserSelectedTabContentViewDidChange): Deleted. |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r242604): Console: unread indicator overlaps selection background of previous scope bar item |
| https://bugs.webkit.org/show_bug.cgi?id=204630 |
| |
| Reviewed by Timothy Hatcher. |
| |
| When a new message is added that is immediately filtered, such as from an existing filter or |
| previously selected scope bar items, rather than show a blinking circle next to the level of |
| the new message in the scope bar (which doesn't cover the case where there's a filter and |
| was often hard to notice), add a dismissable warning banner explaning that the message had |
| been filtered with a button to clear all filters. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView): |
| (WI.LogContentView.prototype.didAppendConsoleMessageView): |
| (WI.LogContentView.prototype._previousMessageRepeatCountUpdated): |
| (WI.LogContentView.prototype._logCleared): |
| (WI.LogContentView.prototype._messageSourceBarSelectionDidChange): |
| (WI.LogContentView.prototype._scopeBarSelectionDidChange): |
| (WI.LogContentView.prototype._filterMessageElements): |
| (WI.LogContentView.prototype._showHiddenMessagesBannerIfNeeded): Added. |
| (WI.LogContentView.prototype._markScopeBarItemUnread): Deleted. |
| (WI.LogContentView.prototype._markScopeBarItemForMessageLevelUnread): Deleted. |
| * UserInterface/Views/LogContentView.css: |
| (.content-view.log): |
| (.content-view.log > .hidden-messages-banner): Added. |
| (.content-view.log > .hidden-messages-banner > button): Added. |
| (.content-view.log > .hidden-messages-banner > .dismiss): Added. |
| (body[dir=ltr] .content-view.log > .hidden-messages-banner > .dismiss): Added. |
| (body[dir=rtl] .content-view.log > .hidden-messages-banner > .dismiss): Added. |
| (.console-messages): |
| (.log-scope-bar > li:not(.unread) > .indicator): Deleted. |
| (.log-scope-bar > li.unread > .indicator): Deleted. |
| (.log-scope-bar > li.unread:hover > .indicator): Deleted. |
| (.log-scope-bar > li.unread.evaluations > .indicator): Deleted. |
| (.log-scope-bar > li.unread.errors > .indicator): Deleted. |
| (.log-scope-bar > li.unread.warnings > .indicator): Deleted. |
| (.log-scope-bar > li.unread.logs > .indicator): Deleted. |
| (@keyframes unread-background-pulse): Deleted. |
| |
| * UserInterface/Views/FindBanner.js: |
| (WI.FindBanner): |
| (WI.FindBanner.prototype.clearAndBlur): Added. |
| (WI.FindBanner.prototype._clearAndBlur): Deleted. |
| Expose a public way to clear the find banner. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add WI.EngineeringSetting and WI.DebugSetting to avoid callsite checking |
| https://bugs.webkit.org/show_bug.cgi?id=204785 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Setting.js: |
| (WI.Setting.prototype.get defaultValue): Added. |
| (WI.EngineeringSetting.prototype.get value): Added. |
| (WI.EngineeringSetting.prototype.set value): Added. |
| (WI.DebugSetting.prototype.get value): Added. |
| (WI.DebugSetting.prototype.set value): Added. |
| (WI.Setting.prototype.get valueRespectingDebugUIAvailability): Deleted. |
| Only get/set the `_value` if the `WI.isEngineeringBuild`/`WI.isDebugUIEnabled()`. |
| |
| * UserInterface/Base/Main.js: |
| (WI.resolvedLayoutDirection): |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.prototype.findFunctionSourceCodeLocation): |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype._updateOwnerStyleText): |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.update): |
| * UserInterface/Proxies/HeapSnapshotEdgeProxy.js: |
| (WI.HeapSnapshotEdgeProxy.prototype.isPrivateSymbol): |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.supportsEditingUserAgentShadowTrees): |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.get knownNonResourceScripts): |
| (WI.DebuggerManager.prototype.debuggerDidPause): |
| (WI.DebuggerManager.prototype.scriptDidParse): |
| * UserInterface/Controllers/DiagnosticController.js: |
| (WI.DiagnosticController): |
| (WI.DiagnosticController.prototype._debugAutoLogDiagnosticEventsSettingDidChange): |
| (WI.DiagnosticController.prototype._updateRecorderStates): |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._appendLocationLink): |
| * UserInterface/Views/HeapSnapshotDataGridTree.js: |
| (WI.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel): |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype._addScriptsForTarget): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| (WI.SpreadsheetCSSStyleDeclarationEditor): |
| * UserInterface/Views/StackTraceView.js: |
| (WI.StackTraceView): |
| * UserInterface/Views/View.js: |
| (WI.View.prototype._layoutSubtree): |
| * UserInterface/Debug/UncaughtExceptionReporter.js: |
| (handleUncaughtExceptionRecord): |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: copying an evaluation result shouldn't include the saved variable index |
| https://bugs.webkit.org/show_bug.cgi?id=204906 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.toClipboardString): |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: the Classes toggle is drawn on top of other content with no other way of scrolling to it |
| https://bugs.webkit.org/show_bug.cgi?id=204690 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Use a vertical flexbox for the contents of sidebar panels instead of absolute positioning so |
| that the variable height Classes "drawer" can have it's own scroll area and doesn't take up |
| any space from the rest of the panel's contents. |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout): |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: |
| (.sidebar > .panel.details.css-style > .content): |
| (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)): |
| (.sidebar > .panel.details.css-style > .content ~ .options-container): |
| (.sidebar > .panel.details.css-style > .content ~ .class-list-container): |
| (.sidebar > .panel.details.css-style > .content.has-filter-bar): Deleted. |
| |
| * UserInterface/Views/Sidebar.css: |
| (.sidebar > .panel): |
| (.sidebar > .panel.selected): Deleted. |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Search: there should be some default content when there is no search string |
| https://bugs.webkit.org/show_bug.cgi?id=204631 |
| |
| Reviewed by Timothy Hatcher. |
| |
| It's very odd to switch to the Search Tab and find it completely empty, especially if you've |
| never used it before. |
| |
| Add basic "No Search String" and "No Search Results" text with a clickable help navigation |
| item that reveals and focuses the sidebar search input. |
| |
| * UserInterface/Views/SearchSidebarPanel.js: |
| (WI.SearchSidebarPanel.prototype.showDefaultContentView): Added. |
| (WI.SearchSidebarPanel.prototype.performSearch): |
| (WI.SearchSidebarPanel.prototype._handleDefaultContentViewSearchNavigationItemClicked): Added. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: move the "Add Breakpoint" context menu to be next to the blackboxing context menu item |
| https://bugs.webkit.org/show_bug.cgi?id=204833 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Both items are related to JavaScript debugging, so they should be closer together. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Support search on IndexedDB stores and indexes |
| https://bugs.webkit.org/show_bug.cgi?id=129208 |
| <rdar://problem/16142046> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Add filter bars to the navigation bars for `IndexedDB`, `LocalStorage`, and `SessionStorage`. |
| |
| * UserInterface/Views/StorageTabContentView.js: |
| (WI.StorageTabContentView.prototype.get canHandleFindEvent): Added. |
| (WI.StorageTabContentView.prototype.handleFindEvent): Added. |
| |
| * UserInterface/Views/DOMStorageContentView.js: |
| (WI.DOMStorageContentView): |
| (WI.DOMStorageContentView.prototype.get navigationItems): Added. |
| (WI.DOMStorageContentView.prototype.get canFocusFilterBar): Added. |
| (WI.DOMStorageContentView.prototype.focusFilterBar): Added. |
| (WI.DOMStorageContentView.prototype._handleFilterBarFilterDidChange): Added. |
| |
| * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js: |
| (WI.IndexedDatabaseObjectStoreContentView): |
| (WI.IndexedDatabaseObjectStoreContentView.prototype.get navigationItems): |
| (WI.IndexedDatabaseObjectStoreContentView.prototype.get canFocusFilterBar): Added. |
| (WI.IndexedDatabaseObjectStoreContentView.prototype.focusFilterBar): Added. |
| (WI.IndexedDatabaseObjectStoreContentView.prototype.dataGridMatchNodeAgainstCustomFilters): Added. |
| (WI.IndexedDatabaseObjectStoreContentView.prototype._handleFilterBarFilterDidChange): Added. |
| Check against the `textContent` of each cell for a given `WI.DataGridNode` to see if it |
| matches the filter text as all of the pieces of data are `WI.RemoteObject`s. |
| |
| * UserInterface/Views/FilterBar.css: |
| (.filter-bar): |
| * UserInterface/Views/NetworkTableContentView.css: |
| (.content-view.network .navigation-bar .filter-bar): Deleted. |
| Remove the `background-color` to let it match the background content. |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: pressing ⌘F when no network item is selected should focus the filter bar |
| https://bugs.webkit.org/show_bug.cgi?id=204862 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/NetworkTabContentView.js: |
| (WI.NetworkTabContentView.prototype.get canHandleFindEvent): Added. |
| (WI.NetworkTabContentView.prototype.handleFindEvent): Added. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype.get canFocusFilterBar): Added. |
| (WI.NetworkTableContentView.prototype.focusFilterBar): Added. |
| |
| 2019-12-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Quick Console: pressing ⌘F shows a second find banner |
| https://bugs.webkit.org/show_bug.cgi?id=204861 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype.get supportsCustomFindBanner): |
| |
| 2019-12-05 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix inspector/css test assertions after r253158 |
| https://bugs.webkit.org/show_bug.cgi?id=204924 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.displayNameForPseudoId): |
| |
| 2019-12-04 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: allow inspector to pause provisional page load and restore its state |
| https://bugs.webkit.org/show_bug.cgi?id=204170 |
| |
| Reviewed by Devin Rousso. |
| |
| All new targets are now automatically paused on start. For such provisional targets target |
| manager will run regular initilization code (enable agents etc.) and then resume loading of |
| the target. Responses and events from the target are defferred until the target is committed |
| and becomes current main target. When the target manager receives event that the provisional |
| target has been committed all accumulated protocol messages are replayed and going forward all |
| new missages will be dispatched as usual. |
| |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager): |
| (WI.TargetManager.prototype.targetCreated): |
| (WI.TargetManager.prototype.didCommitProvisionalTarget): |
| (WI.TargetManager.prototype.targetDestroyed): |
| (WI.TargetManager.prototype.dispatchMessageFromTarget): |
| (WI.TargetManager.prototype._createTarget): |
| (WI.TargetManager.prototype._checkAndHandlePageTargetTransition): |
| (WI.TargetManager.prototype._checkAndHandlePageTargetTermination): |
| * UserInterface/Protocol/Connection.js: |
| (InspectorBackend.Connection): |
| (InspectorBackend.Connection.prototype.addProvisionalMessage): |
| (InspectorBackend.Connection.prototype.dispatchProvisionalMessages): |
| * UserInterface/Protocol/MultiplexingBackendTarget.js: |
| (WI.MultiplexingBackendTarget.prototype.initialize): |
| * UserInterface/Protocol/PageTarget.js: |
| (WI.PageTarget): |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.initialize): |
| (WI.Target.prototype.get isProvisional): |
| (WI.Target.prototype.get isPaused): |
| (WI.Target.prototype.didCommitProvisionalTarget): |
| * UserInterface/Protocol/WorkerTarget.js: |
| |
| 2019-12-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: prefer non-blackboxed scripts when showing a source code location link |
| https://bugs.webkit.org/show_bug.cgi?id=204811 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Models/StackTrace.js: |
| (WI.StackTrace.prototype.get firstNonNativeNonAnonymousNotBlackboxedCallFrame): Added. |
| (WI.StackTrace.prototype.get firstNonNativeCallFrame): Deleted. |
| (WI.StackTrace.prototype.get firstNonNativeNonAnonymousCallFrame): Deleted. |
| Include logic to skip call frames that are blackboxed, unless there are no non-blackboxed |
| call frames, in which case fall back to the first non-native non-anonymous call frame. |
| Drive-by: remove unused function. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.render): |
| (WI.ConsoleMessageView.prototype.clearSessionState): Added. |
| (WI.ConsoleMessageView.prototype._appendLocationLink): |
| (WI.ConsoleMessageView.prototype._handleDebuggerBlackboxChanged): Added. |
| (WI.ConsoleMessageView.prototype.clearSavedVariableState): Deleted. |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._sessionStarted): |
| (WI.LogContentView.prototype._logCleared): |
| Listen for changes to the debugger blackbox to re-render the location link. |
| |
| * UserInterface/Views/StackTraceView.js: |
| (WI.StackTraceView): |
| * UserInterface/Views/CallFrameView.js: |
| (WI.CallFrameView): |
| * UserInterface/Views/CallFrameView.css: |
| (.call-frame.blackboxed > .title, .call-frame.blackboxed:not(:hover, :focus) > .subtitle): Added. |
| Add a constructor option to control whether blackboxed frames are indicated visually. |
| |
| 2019-12-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'navigationItem.parentNavigationBar') |
| https://bugs.webkit.org/show_bug.cgi?id=204830 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype._mainResourceDidChange): |
| When the main resource changes, make sure to clear the `_forcedAppearance` member variable. |
| This way, when the main `WI.DOMTreeContentView` reloads, it isn't left in an unknown state. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype._defaultAppearanceDidChange): |
| (WI.DOMTreeContentView.prototype._toggleAppearance): |
| Always create the Force Appearance navigation item, rather than destroying and recreating it |
| each time the page navigates. Instead, just update the tooltip (which was all that really |
| changed) whenever the default appearance changes. Depending on the timing of events during a |
| page navigation, `_forceAppearanceButtonNavigationItem` could be `null`. |
| |
| * UserInterface/Views/ActivateButtonNavigationItem.js: |
| (WI.ActivateButtonNavigationItem.prototype.set defaultToolTip): Added. |
| (WI.ActivateButtonNavigationItem.prototype.set activatedToolTip): Added. |
| Allow the various tooltips to be updated after creation. |
| |
| 2019-12-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: stopping time marker is permanently removed when the current recording is cleared |
| https://bugs.webkit.org/show_bug.cgi?id=204827 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TimelineOverview.js: |
| (WI.TimelineOverview.prototype._recordingReset): |
| Re-add the marker (and ensure that it's hidden) when the active recording is reset. |
| |
| 2019-12-02 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Provide UI to convert between sRGB and p3 color spaces |
| https://bugs.webkit.org/show_bug.cgi?id=203534 |
| <rdar://problem/56688523> |
| |
| Reviewed by Devin Rousso. |
| |
| Add context menus: |
| - "Convert to sRGB" and "Clamp to sRGB" for p3 colors, such as `color(display-p3 0 1 0)`. |
| - "Convert to Display-P3" for sRGB colors, such as `rgb(0, 255, 0)`. |
| |
| Shift-clicking the color swatch of sRGB colors now goes through the color function syntax as well. |
| Shift-clicking the color swatch of Display-P3 colors converts the color to sRGB when it can be lossless. |
| When the convertion cannot be lossless, Web Inspector beeps. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Utilities.js: |
| * UserInterface/Models/Color.js: |
| (WI.Color): |
| Introduce `_normalizedRGB` property, which stores rgb values from 0 to 1. |
| Previously, `_rgba` stored values from 0 to 1 for color function format, and from 0 to 255 otherwise. |
| That required format checks before every `rgb` value access and resulted in silent errors when |
| the values were in the wrong format. |
| |
| Store alpha as a separate property to simplify format conversion. Previously, alpha was duplicated between `_rgba` and `_hsla`. |
| |
| (WI.Color.displayP3toSRGB): |
| (WI.Color.srgbToDisplayP3): Added. |
| (WI.Color.prototype.nextFormat): |
| (WI.Color.prototype.get rgb): |
| (WI.Color.prototype.get hsl): |
| (WI.Color.prototype.get normalizedRGB): |
| (WI.Color.prototype.get rgba): |
| (WI.Color.prototype.get hsla): |
| (WI.Color.prototype.get normalizedRGBA): |
| (WI.Color.prototype.get gamut): |
| (WI.Color.prototype.set gamut): |
| (WI.Color.prototype.copy): |
| (WI.Color.prototype.isKeyword): |
| (WI.Color.prototype.isOutsideSRGB): Added. |
| (WI.Color.prototype.canBeSerializedAsShortHEX): |
| (WI.Color.prototype._toKeywordString): |
| (WI.Color.prototype._toShortHEXString): |
| (WI.Color.prototype._toHEXString): |
| (WI.Color.prototype._toShortHEXAlphaString): |
| (WI.Color.prototype._toHEXAlphaString): |
| (WI.Color.prototype._toRGBString): |
| (WI.Color.prototype._toRGBAString): |
| (WI.Color.prototype._toFunctionString): |
| Limit the values to 4 decimals. |
| |
| (WI.Color.prototype._toHSLString): |
| (WI.Color.prototype._toHSLAString): |
| (WI.Color.prototype._hslToRGB): |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker.prototype._updateColor): |
| (WI.ColorPicker.prototype._updateOpacitySlider): |
| * UserInterface/Views/ColorSquare.css: |
| (.color-square > .svg-root): |
| (.color-square > .svg-root > .srgb-edge): |
| (.color-square > .srgb-label): |
| (.color-square > .srgb-label:hover): |
| (.color-square > .srgb-label:hover + .svg-root > .srgb-edge): |
| (@media (-webkit-device-pixel-ratio: 1)): |
| (.color-square > .srgb-edge): |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare.prototype.set tintedColor): |
| (WI.ColorSquare.prototype._drawSRGBOutline): |
| (WI.ColorSquare): |
| |
| * UserInterface/Views/InlineSwatch.js: |
| (WI.InlineSwatch): |
| (WI.InlineSwatch.prototype._updateSwatch): |
| (WI.InlineSwatch.prototype._allowShiftClickColor): Added. |
| (WI.InlineSwatch.prototype._handleContextMenuEvent): |
| |
| 2019-12-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: the saved result value is still shown after page reload |
| https://bugs.webkit.org/show_bug.cgi?id=204532 |
| |
| Reviewed by Brian Burg. |
| |
| Add additional plumbing to remove any `.console-saved-variable` elements whenever a new |
| session is created, as well as reset the base of the property path to `this`. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._sessionStarted): |
| (WI.LogContentView.prototype._logCleared): |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.clearSavedVariableState): Added. |
| (WI.ConsoleMessageView.prototype.removeEventListeners): Deleted. |
| |
| * UserInterface/Views/ObjectTreeView.js: |
| (WI.ObjectTreeView.prototype.resetPropertyPath): Added. |
| |
| 2019-11-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'target.PageAgent.getCompositingBordersVisible') |
| https://bugs.webkit.org/show_bug.cgi?id=204473 |
| |
| Reviewed by Brian Burg. |
| |
| Change the definition of `WI.targetsAvailable` and `WI.whenTargetsAvailable` to instead |
| resolve based on when a page target is created, not the backend target, as the latter can |
| be a multiplexing target which only has a `Target` domain. |
| |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager.prototype._initializeBackendTarget): |
| (WI.TargetManager.prototype._initializePageTarget): |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| (WI.contentLoaded): |
| (WI.targetsAvailable): |
| (WI.whenTargetsAvailable): |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| (WI.contentLoaded): |
| (WI.targetsAvailable): |
| (WI.whenTargetsAvailable): |
| |
| * UserInterface/Views/SearchSidebarPanel.js: |
| (WI.SearchSidebarPanel.prototype.performSearch): |
| Only wait for targets if inspecting a web debuggable, as non-web debuggables don't have a |
| different page target vs the backend target (which is guaranteed to exist anyways). |
| |
| 2019-11-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251227): dashboard no longer shows page weight |
| https://bugs.webkit.org/show_bug.cgi?id=204528 |
| |
| Reviewed by Brian Burg. |
| |
| `WI.contentLoaded` adds the debuggable type as a class to the `<body>`. In r251227, the |
| "web" debuggable type was split into "page" and "web-page". Update the few selectors that |
| used the debuggable type to show/hide parts of the UI. |
| |
| * UserInterface/Views/DashboardContainerView.css: |
| (body:matches(.page, .web-page) .toolbar .dashboard-container): Added. |
| (body:not(.page, .web-page) .toolbar .dashboard-container): Added. |
| (body.web .toolbar .dashboard-container): Deleted. |
| (body:not(.web) .toolbar .dashboard-container): Deleted. |
| * UserInterface/Views/DefaultDashboardView.css: |
| (body:matches(.page, .web-page) .toolbar.collapsed .dashboard.default > :matches(.resourcesSize, .time, .logs)): Added. |
| (body:not(.page, .web-page) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Added. |
| (body.web .toolbar.collapsed .dashboard.default > :matches(.resourcesSize, .time, .logs)): Deleted. |
| (body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted. |
| |
| 2019-11-20 Brian Burg <bburg@apple.com> |
| |
| Web Inspector: add support for new kinds of diagnostic events |
| https://bugs.webkit.org/show_bug.cgi?id=204430 |
| |
| Reviewed by Devin Rousso. |
| |
| This patch restructures the existing DiagnosticController to support multiple |
| self-contained event recorders. The first such recorder is for the TabActivity |
| diagnostic event. More will be added later. |
| |
| Add two engineering settings: one which auto-logs diagnostic events to Inspector^2 console, |
| and another which forces DiagnosticController to be active or inactive regardless of |
| whether a diagnostic logging delegate is actually installed. This is for manual testing. |
| |
| This patch does not introduce any functionality changes to diagnostic event collection. |
| The TabActivityDiagnosticeventRecorder still needs some changes for it to sample correctly. |
| |
| New Test: inspector/unit-tests/diagnostic-controller.html |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| |
| * UserInterface/Controllers/DiagnosticController.js: |
| (WI.DiagnosticController): |
| (WI.DiagnosticController.prototype.set diagnosticLoggingAvailable): |
| (WI.DiagnosticController.prototype.addRecorder): |
| (WI.DiagnosticController.prototype.logDiagnosticEvent): |
| (WI.DiagnosticController.prototype._debugEnableDiagnosticLoggingSettingDidChange): |
| (WI.DiagnosticController.prototype._debugAutoLogDiagnosticEventsSettingDidChange): |
| (WI.DiagnosticController.prototype._updateRecorderStates): |
| (WI.DiagnosticController.supportsDiagnosticLogging): Deleted. |
| (WI.DiagnosticController.prototype.logDiagnosticMessage): Deleted. |
| (WI.DiagnosticController.prototype._didInteractWithTabContent): Deleted. |
| (WI.DiagnosticController.prototype._clearTabActivityTimeout): Deleted. |
| (WI.DiagnosticController.prototype._beginTabActivityTimeout): Deleted. |
| (WI.DiagnosticController.prototype._stopTrackingTabActivity): Deleted. |
| (WI.DiagnosticController.prototype._handleWindowFocus): Deleted. |
| (WI.DiagnosticController.prototype._handleWindowBlur): Deleted. |
| (WI.DiagnosticController.prototype._handleWindowKeyDown): Deleted. |
| (WI.DiagnosticController.prototype._handleWindowMouseDown): Deleted. |
| (WI.DiagnosticController.prototype._handleTabBrowserSelectedTabContentViewDidChange): Deleted. |
| Restructure DiagnosticController to be dumber. It holds on to a list of recorders and |
| turns them on and off. All event logging goes through one funnel method, which does not |
| use InspectorFrontendHost at all when running a Web Inspector layout test. |
| |
| * UserInterface/Controllers/DiagnosticEventRecorder.js: Added. |
| (WI.DiagnosticEventRecorder): |
| (WI.DiagnosticEventRecorder.prototype.get name): |
| (WI.DiagnosticEventRecorder.prototype.get active): |
| (WI.DiagnosticEventRecorder.prototype.set active): |
| (WI.DiagnosticEventRecorder.prototype.setup): |
| (WI.DiagnosticEventRecorder.prototype.teardown): |
| Add base class for all individual diagnostic event recorders. |
| |
| * UserInterface/Controllers/TabActivityDiagnosticEventRecorder.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/DiagnosticController.js. |
| (WI.TabActivityDiagnosticEventRecorder): |
| (WI.TabActivityDiagnosticEventRecorder.prototype.setup): |
| (WI.TabActivityDiagnosticEventRecorder.prototype.teardown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype.handleEvent): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._didInteractWithTabContent): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._clearTabActivityTimeout): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._beginTabActivityTimeout): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._stopTrackingTabActivity): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowFocus): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowBlur): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowKeyDown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowMouseDown): |
| (WI.TabActivityDiagnosticEventRecorder.prototype._handleTabBrowserSelectedTabContentViewDidChange): |
| Move all user activity tracking to here. Restructure so that the recorder can be |
| turned on and off (this adds/removes its listeners and timers). |
| |
| * UserInterface/Main.html: Add new files. |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.setDiagnosticLoggingAvailable): |
| Adjust the name, as WI.diagnosticController is no longer underscore-prefixed. |
| |
| * UserInterface/Base/Setting.js: |
| Add new settings. Add getter 'valueRespectingDebugUIAvailability' which only |
| returns default values for Debug/Engineering settings if DebugUI is not enabled. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createDebugSettingsView): |
| Add new settings to Settings Tab UI. |
| |
| 2019-11-21 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Outline sRGB-safe areas on P3 color picker |
| https://bugs.webkit.org/show_bug.cgi?id=203533 |
| <rdar://problem/56688057> |
| |
| Reviewed by Brian Burg. |
| |
| Visualize the edge of sRGB gamut as a white line. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Models/Color.js: |
| (WI.Color.displayP3toSRGB.multiplyMatrixByVector): |
| (WI.Color.displayP3toSRGB): |
| (WI.Color._toLinearLight): |
| (WI.Color._gammaCorrect): |
| Use equations from CSS Color Module Level 4. |
| |
| * UserInterface/Views/ColorSquare.css: |
| (.color-square): |
| (.color-square > .crosshair): |
| Place the crosshair above the sRGB edge line. |
| |
| (.color-square .svg-root): |
| (.color-square .srgb-edge): |
| (.color-square .srgb-label): |
| (.color-square .srgb-label:hover): |
| (.color-square .srgb-label:hover + .svg-root > .srgb-edge): |
| (@media (-webkit-device-pixel-ratio: 1)): |
| Make the optical weight of the line on non-retina screens the same as on retina screens. |
| |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare): |
| (WI.ColorSquare.prototype.set tintedColor): |
| (WI.ColorSquare.prototype._updateBaseColor): |
| (WI.ColorSquare.prototype._drawSRGBOutline): |
| |
| 2019-11-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: call frames from blackboxed scripts should be visually distinct |
| https://bugs.webkit.org/show_bug.cgi?id=204424 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Seeing "Deferred pause from blackboxed script" in the Pause Reason does indicate that |
| something in the Call Stack was blackboxed, but it doesn't clarify what was blackboxed. |
| |
| Given that the debugger effectively ignores blackboxed scripts, we should distinguish call |
| frames that were ignored so that it's clear how the current pause location was reached. |
| |
| * UserInterface/Views/CallFrameTreeElement.js: |
| (WI.CallFrameTreeElement): |
| (WI.CallFrameTreeElement.prototype.onattach): |
| * UserInterface/Views/CallFrameTreeElement.css: |
| (.tree-outline .item.call-frame.blackboxed:not(.selected)): Added. |
| Make blackboxed call frames 50% opaque when not selected. Add additional explanatory text to |
| the end of the tooltip when hovering blackboxed call frame tree elements. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement.prototype._updateToggleBlackboxImageElementState): |
| Update tooltip/contextmenu text to include "blacboxing" so functionality is clearer. |
| |
| * UserInterface/Models/SourceCodeLocation.js: |
| (WI.SourceCodeLocation.prototype.populateLiveDisplayLocationTooltip): |
| Allow a suffix to be added to the end of the live location. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-20 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: REGRESSION(r250618): main resource view is empty when pausing on inline 'debugger' statement |
| https://bugs.webkit.org/show_bug.cgi?id=204086 |
| |
| Reviewed by Devin Rousso. |
| |
| SourceCodeRevision.currentRevision doesn't create new revisions under the hood anymore. |
| This allows to avoid undesirable side effects when e.g. text editor tries to read current |
| content of the SourceCode which results in a new revision (with empty content). |
| New method editableRevision is introduced for applying changes to the resource while |
| keeping original content revision intact. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound): |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges): |
| (WI.CSSManager.prototype._resourceContentDidChange): |
| (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent): |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype.get currentRevision): |
| (WI.SourceCode.prototype.get editableRevision): |
| (WI.SourceCode.prototype.get content): |
| (WI.SourceCode.prototype.revisionContentDidChange): |
| * UserInterface/Views/FontResourceContentView.js: |
| (WI.FontResourceContentView.prototype.dropZoneHandleDrop): |
| * UserInterface/Views/ImageResourceContentView.js: |
| (WI.ImageResourceContentView.prototype.dropZoneHandleDrop): |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView.prototype._contentAvailable): |
| (WI.ResourceContentView.prototype._handleImportLocalResourceOverride): |
| * UserInterface/Views/ScriptContentView.js: |
| (WI.ScriptContentView.prototype._handleTextEditorContentDidChange): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype._textEditorContentDidChange): |
| |
| 2019-11-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Overrides: the placeholder for the MIME type, status code, and status text is the same as the placeholder URL |
| https://bugs.webkit.org/show_bug.cgi?id=204330 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype.get serializedData): |
| (WI.LocalResourceOverridePopover.prototype.show): |
| (WI.LocalResourceOverridePopover.prototype._createEditor): |
| * UserInterface/Views/LocalResourceOverridePopover.css: |
| (.popover .local-resource-override-popover-content .data-grid tr.header-content-type > :matches(.name-column, .value-column)): Added. |
| Replace the hardcoded `placeholder` with an optional `options` object that can include a |
| `placeholder` value, allowing each caller to customize what is shown. Disallow selecting the |
| "Content-Type" header since it's automatically populated, even if there is no set value for |
| the MIME type or URL (e.g. inferred from placeholders). |
| Drive-by: if a `CodeMirror` has no value, attempt to use it's placeholder instead. |
| Drive-by: replace generic `dataGrid` with more specific `this._headersDataGrid`, which is |
| more clear given how many `WI.DataGrid` are created by this class. |
| |
| * UserInterface/Views/DataGridNode.js: |
| (WI.DataGridNode.prototype.get selectable): |
| (WI.PlaceholderDataGridNode): |
| * UserInterface/Views/DataGrid.js: |
| (WI.DataGrid.createSortableDataGrid): |
| * UserInterface/Views/DOMStorageContentView.js: |
| (WI.DOMStorageContentView.prototype.itemAdded): |
| (WI.DOMStorageContentView.prototype._populate): |
| * UserInterface/Views/EditableDataGridNode.js: |
| (WI.EditableDataGridNode): Deleted. |
| * UserInterface/Views/HeapSnapshotClassDataGridNode.js: |
| (WI.HeapSnapshotClassDataGridNode): |
| * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: |
| (WI.HeapSnapshotInstanceDataGridNode): |
| * UserInterface/Views/HeapSnapshotInstanceFetchMoreDataGridNode.js: |
| (WI.HeapSnapshotInstanceFetchMoreDataGridNode): |
| * UserInterface/Views/ProfileDataGridNode.js: |
| (WI.ProfileDataGridNode): |
| * UserInterface/Views/RecordingStateDetailsSidebarPanel.js: |
| (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D): |
| (WI.RecordingStateDetailsSidebarPanel): |
| * UserInterface/Views/ResourceDetailsSidebarPanel.js: |
| (WI.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid.addDataGridNode): |
| * UserInterface/Views/TimelineDataGridNode.js: |
| (WI.TimelineDataGridNode): |
| Rework constructor of `WI.DataGridNode` to accept an `options`-style object as its second |
| parameter, instead of separate parameters for each configurable property. Now that this is |
| able to be done via a single parameter, add support for marking a `WI.DataGridNode` as not |
| being selectable. |
| |
| 2019-11-19 Brian Burg <bburg@apple.com> |
| |
| [Cocoa] Add _WKInspector SPI to set diagnostic logging delegate for a local Web Inspector |
| https://bugs.webkit.org/show_bug.cgi?id=204323 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.setDiagnosticLoggingAvailable): |
| Add a stub FrontendAPI method to be filled in later. |
| |
| 2019-11-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: copying multiple DOM nodes should copy more than just the last selected node |
| https://bugs.webkit.org/show_bug.cgi?id=204266 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView.prototype.async handleCopyEvent): Added. |
| (WI.DOMTreeContentView.prototype.handleCopyEvent): Deleted. |
| Call `DOM.getOuterHTML` for each selected DOM node and join the results with newlines. |
| |
| * UserInterface/Models/DOMNode.js: |
| (WI.DOMNode.prototype.getOuterHTML): |
| (WI.DOMNode.prototype.copyNode): Deleted. |
| (WI.DOMNode.prototype.copyNode.copy): Deleted. |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu): |
| (WI.DOMTreeElement.prototype._copyHTML): Deleted. |
| Simplify API surface. |
| |
| 2019-11-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Resource Overrides: allow substitution based on a url pattern |
| https://bugs.webkit.org/show_bug.cgi?id=202375 |
| |
| Reviewed by Brian Burg. |
| |
| Often, websites will load content with a timestamp-based URL query parameter for |
| cache-busting or logging purposes. If a developer is trying to override these resources (or |
| is trying to have an existing override also match these resources), they'd need to edit the |
| local override's URL to match in addition to editing the resource that loads it (e.g. change |
| the <script> in an HTML file), which can sometimes be tricky of the content is dynamically |
| loaded (e.g. an XHR with a non-hardcoded URL). |
| |
| Allowing for local overrides to be set using a regular expression pattern would help resolve |
| this limitation. |
| |
| * UserInterface/Models/LocalResourceOverride.js: |
| (WI.LocalResourceOverride): |
| (WI.LocalResourceOverride.create): |
| (WI.LocalResourceOverride.fromJSON): |
| (WI.LocalResourceOverride.prototype.toJSON): |
| (WI.LocalResourceOverride.prototype.get isCaseSensitive): Added. |
| (WI.LocalResourceOverride.prototype.get isRegex): Added. |
| (WI.LocalResourceOverride.prototype.matches): Added. |
| (WI.LocalResourceOverride.prototype.saveIdentityToCookie): |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager): |
| (WI.NetworkManager.prototype.initializeTarget): |
| (WI.NetworkManager.prototype.get localResourceOverrides): |
| (WI.NetworkManager.prototype.addLocalResourceOverride): |
| (WI.NetworkManager.prototype.removeLocalResourceOverride): |
| (WI.NetworkManager.prototype.localResourceOverrideForURL): |
| (WI.NetworkManager.prototype.responseIntercepted): |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover): |
| (WI.LocalResourceOverridePopover.prototype.get serializedData): |
| (WI.LocalResourceOverridePopover.prototype.show): |
| (WI.LocalResourceOverridePopover.prototype._createEditor): |
| |
| * UserInterface/Views/LocalResourceOverrideTreeElement.js: |
| (WI.LocalResourceOverrideTreeElement.prototype.get mainTitleText): Added. |
| (WI.LocalResourceOverrideTreeElement.prototype.onattach): |
| (WI.LocalResourceOverrideTreeElement.prototype.ondetach): |
| (WI.LocalResourceOverrideTreeElement.prototype.populateContextMenu): |
| (WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover): |
| |
| 2019-11-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: support multiline CSS property values |
| https://bugs.webkit.org/show_bug.cgi?id=203754 |
| <rdar://problem/56819044> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype.update): |
| (WI.CSSProperty.prototype._updateStyleText): |
| When the property is updated from the backend, find the first newline inside the value and |
| preserve the indent string so it can be re-added when updating the backend. |
| |
| * UserInterface/Views/SpreadsheetTextField.js: |
| (WI.SpreadsheetTextField.prototype._handleKeyDown): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: |
| (.spreadsheet-style-declaration-editor .property:not(.disabled) .value): |
| (.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .value): Added. |
| (.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .semicolon): Added. |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.updateStatus): |
| (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldAllowsNewlines): Added. |
| (WI.SpreadsheetStyleProperty.prototype._handleValueChange): |
| Support shift-enter when editing a CSS property's value to insert a newline. |
| |
| 2019-11-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: move the "Local Override..." creation context menu item from the Breakpoints section options menu to the Create Resource menu |
| https://bugs.webkit.org/show_bug.cgi?id=204178 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu): |
| If the Local Overrides section isn't already visible, show it. Use the Local Overrides title |
| as the anchor for the configuration popover. If there are no existing Local Overrides, show |
| placeholder "No Overrides" text temporarily. |
| |
| * UserInterface/Views/EventBreakpointPopover.js: |
| (WI.EventBreakpointPopover.prototype._showSuggestionsView): |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype._presentOverTargetElement): |
| * UserInterface/Views/URLBreakpointPopover.js: |
| (WI.URLBreakpointPopover.prototype._presentOverTargetElement): |
| Add some padding around the popover's anchor so the arrow doesn't overlap it. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Overrides: add context menu item to reveal the local override when a resource is loaded from it |
| https://bugs.webkit.org/show_bug.cgi?id=204206 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: "Style Sheet" appears twice in the resource type scope bar |
| https://bugs.webkit.org/show_bug.cgi?id=204172 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource): |
| (WI.Resource.prototype.updateForResponse): |
| Remove compatibility `WI.Resource.Type.Stylesheet` (which previously existed since the |
| protocol values for `Page.ResourceType` match the keys) and instead add compatibility cases |
| at the necessary callsites. |
| |
| 2019-11-13 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: "aqua" and "fuchsia" aren't detected as colors |
| https://bugs.webkit.org/show_bug.cgi?id=204085 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Models/Color.js: |
| |
| 2019-11-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Invalid type of argument 'eventName' for command 'DOMDebugger.setEventBreakpoint' call. It must be 'string' but it is 'object'. |
| https://bugs.webkit.org/show_bug.cgi?id=204176 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/EventBreakpointPopover.js: |
| (WI.EventBreakpointPopover.prototype.dismiss): |
| Only create the `WI.EventBreakpoint` if the <input> has a value. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype.addEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype.addURLBreakpoint): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissEventBreakpointPopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissURLBreakpointPopover): |
| Drive-by: if the configuration isn't valid (e.g. no breakpoint) or the breakpoint already |
| exists, beep. |
| |
| 2019-11-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Overrides: drop zone overlay doesn't take up the full content area |
| https://bugs.webkit.org/show_bug.cgi?id=204093 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/FontResourceContentView.css: |
| (.content-view.resource.font > :matches(.local-resource-override-label-view, .local-resource-override-warning-view):not([hidden]) ~ .drop-zone): Added. |
| (.content-view.resource.font > .drop-zone): Deleted. |
| * UserInterface/Views/ImageResourceContentView.css: |
| (.content-view.resource.image > :matches(.local-resource-override-label-view, .local-resource-override-warning-view):not([hidden]) ~ .drop-zone): Added. |
| (.content-view.resource.image > .drop-zone): Deleted. |
| |
| 2019-11-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: create/update local override drop zone shown in image collection view |
| https://bugs.webkit.org/show_bug.cgi?id=204097 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/CollectionContentView.js: |
| (WI.CollectionContentView): |
| (WI.CollectionContentView.prototype.get contentViewConstructorOptions): Added. |
| (WI.CollectionContentView.prototype.addContentViewForItem): |
| * UserInterface/Views/ResourceCollectionContentView.js: |
| (WI.ResourceCollectionContentView.prototype.get contentViewConstructorOptions): Added. |
| Provide a way to pass options when instantiating the content view from the constructor. |
| |
| * UserInterface/Views/ImageResourceContentView.js: |
| (WI.ImageResourceContentView.prototype.contentAvailable): |
| Support an optional object parameter that can be used to disable the `WI.DropZone`. |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251958): console prompt is automatically focused when page is reloaded |
| https://bugs.webkit.org/show_bug.cgi?id=203932 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Main.js: |
| (WI._restoreCookieForOpenTabs): |
| Only attempt to autofocus when Web Inspector is first opened. |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r250087): inspector/model/remote-object.html is timing out |
| https://bugs.webkit.org/show_bug.cgi?id=202934 |
| <rdar://problem/56270900> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/ObjectTreeView.js: |
| (WI.ObjectTreeView.addShowMoreIfNeeded): |
| Drive-by: ensure that the indeterminate progress spinner is added after the last button. |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r249451): missing "Reveal in DOM Tree" on nodes logged to the console |
| https://bugs.webkit.org/show_bug.cgi?id=203836 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForDOMNode): |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype.populateContextMenu): |
| DOM trees in the console are marked as being non-editable, which is intended to prevent |
| modifications (e.g. changing an attribute) from being made in the console as the DOM tree |
| there is not hooked up to the associated DOM agent. In r249451 however, this guard was over |
| expanded to include non-editing actions, like "Reveal in DOM Tree" and DOM breakpoints. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._handleContextMenuEvent): |
| Drive-by: add a separator before "Copy Selected" so it doesn't end up in the same group as |
| any "Collapse All" from a `WI.TreeOutline`. |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Resource Overrides: automatically show a file picker when attempting to create an override for non-text resources |
| https://bugs.webkit.org/show_bug.cgi?id=203917 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Since there's no way to edit non-text resources (e.g. images, fonts, etc.) in Web Inspector, |
| when creating a local override for non-text resources, default to showing a file picker and |
| creating a local override from the content and MIME type of whatever file is chosen. |
| |
| Still provide a way (shift-click) to create a local override for non-text resources from the |
| resource's contents, as that can be useful if the user just wants to change some headers. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.async createLocalResourceOverride): |
| |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView): |
| (WI.ResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added. |
| (WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added. |
| (WI.ResourceContentView.prototype.async _getContentForLocalResourceOverrideFromFile): Added. |
| (WI.ResourceContentView.prototype._handleCreateLocalResourceOverride): |
| (WI.ResourceContentView.prototype._handleImportLocalResourceOverride): |
| (WI.ResourceContentView.prototype.localResourceOverrideInitialContent): Deleted. |
| (WI.ResourceContentView.prototype.async _handleCreateLocalResourceOverride): Deleted. |
| |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype.get createLocalResourceOverrideTooltip): Added. |
| (WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent): Added. |
| (WI.TextResourceContentView.prototype.localResourceOverrideInitialContent): Deleted. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: add a marker for when a stop was requested |
| https://bugs.webkit.org/show_bug.cgi?id=203935 |
| |
| Reviewed by Timothy Hatcher. |
| |
| After r244195, the Web Inspector frontend doesn't stop updating the current time marker |
| until after it receives all of the corresponding `*.trackingComplete` events. This means |
| that sometimes, the current time marker can move far past the time at which the stop was |
| requested, such as if there's a blocking script. |
| |
| We should indicate where the stop was requested, as that is often right after a particular |
| issue is reproduced during a timeline recording, rather than have the user try to figure out |
| where they stopped. |
| |
| Only keep a marker for the last stop request, and hide the marker once capturing resumes. |
| |
| It's still useful to have the current time marker continue updating, as we should show all |
| the information we have about captured things, such as blocking scripts. |
| |
| * UserInterface/Views/TimelineOverview.js: |
| (WI.TimelineOverview): |
| (WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged): |
| |
| * UserInterface/Models/TimelineMarker.js: |
| * UserInterface/Views/TimelineRuler.js: |
| (WI.TimelineRuler.prototype.addMarker): |
| * UserInterface/Views/TimelineRuler.css: |
| (.timeline-ruler > .markers > .marker.stopping-time): Added. |
| (.timeline-ruler > .markers > .marker.current-time): |
| (.timeline-ruler > .markers > .marker:matches(.stopping-time, .current-time)::after): Added. |
| (@media (prefers-color-scheme: dark) .timeline-ruler > .markers > .marker.stopping-time): Added. |
| (.timeline-ruler > .markers > .marker.current-time::after): Deleted. |
| Make the current time marker always on top (`z-index`). |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251958): automatic console prompt focusing prevents any "space" shortcuts from working |
| https://bugs.webkit.org/show_bug.cgi?id=203939 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Main.js: |
| (WI.isShowingTimelineTab): Added. |
| (WI.isShowingAuditTab): Added. |
| (WI._restoreCookieForOpenTabs): |
| |
| 2019-11-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Unable to get object details - GlobalObject |
| https://bugs.webkit.org/show_bug.cgi?id=203930 |
| <rdar://problem/56960937> |
| |
| In r248286, calls to `Heap.snapshot`, `Heap.getPreview`, and `Heap.getRemoteObject` were |
| moved to the `WI.HeapManager` instead of being inside view code. During this move, extra |
| `WI.reportInternalError` calls were added, which wasn't entirely correct as it is fully |
| possible (and expected) that any of these commands are invoked with old heap snapshot nodes |
| that may no longer exist. As such, calling any error an "internal error" isn't strictly |
| correct, and instead should just be a log. Also, the frontend code that calls these commands |
| is able to handle errors, again because it is expected. |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/HeapManager.js: |
| (WI.HeapManager.prototype.snapshot): |
| (WI.HeapManager.prototype.getPreview): |
| (WI.HeapManager.prototype.getRemoteObject): |
| |
| 2019-11-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Display color picker for p3 colors |
| https://bugs.webkit.org/show_bug.cgi?id=203436 |
| <rdar://problem/56635062> |
| |
| Reviewed by Brian Burg. |
| |
| For p3 colors, display ColorSquare with display-p3 gamut. |
| Continue showing ColorSquare with sRGB gamut by default. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Models/Color.js: |
| (WI.Color): |
| (WI.Color.rgb2hsv): |
| (WI.Color.hsv2rgb.fraction): |
| (WI.Color.hsv2rgb): |
| (WI.Color.prototype.get hsla): |
| (WI.Color.prototype.isKeyword): |
| |
| * UserInterface/Views/ColorPicker.css: |
| (.color-picker > .hue): |
| (@media (color-gamut: p3)): |
| (.color-picker.gamut-p3 > .hue): |
| |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker.prototype._updateColor): |
| (WI.ColorPicker.prototype._updateOpacitySlider): |
| (WI.ColorPicker.prototype._handleFormatChange): |
| Introduce `gamut` parameter. Previously, the only available `gamut` was sRGB. |
| |
| * UserInterface/Views/ColorSquare.css: |
| (.color-square > .crosshair): |
| Update the crosshair style to look better for both light and dark backgrounds. |
| |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare): |
| (WI.ColorSquare.prototype.get tintedColor): |
| (WI.ColorSquare.prototype.set tintedColor): |
| (WI.ColorSquare.prototype._setCrosshairPosition): |
| (WI.ColorSquare.prototype._updateBaseColor): |
| (WI.ColorSquare.prototype._updateCrosshairBackground): |
| |
| * UserInterface/Views/InlineSwatch.js: |
| Make p3 color picker a preview (e.g. STP-only) feature. |
| |
| 2019-11-05 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Web Inspector: Layers: enable tab by default |
| https://bugs.webkit.org/show_bug.cgi?id=203833 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/ContextMenuUtilities.js: |
| * UserInterface/Views/LayersTabContentView.js: |
| (WI.LayersTabContentView.isTabAllowed): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| |
| 2019-11-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: "Toggle Visibility" does not work for element inside Shadow DOM |
| https://bugs.webkit.org/show_bug.cgi?id=202218 |
| <rdar://problem/55713078> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.toggleElementVisibility.inspectedPage_node_injectStyleAndToggleClass): |
| If the node is inside a shadow tree, store the `<style>` inside the shadow root instead of |
| always using `document.head`. |
| |
| 2019-11-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Add diagnostic logging for frontend feature usage |
| https://bugs.webkit.org/show_bug.cgi?id=203579 |
| <rdar://problem/56717410> |
| |
| Reviewed by Brian Burg. |
| |
| Add a `DiagnosticController` class for reporting Web Inspector telemetry. |
| The controller initially measures a single "TabActivity" data point, |
| which logs the active tab during the specified time interval (one minute). |
| If the UI is not active during the time interval, no logging takes place. |
| |
| The UI is considered to be active if mouse/keyboard interaction occurs |
| during the time interval, or the selected `TabContentView` changes. |
| |
| Original patch by Matt Baker <mattbaker@apple.com>. |
| |
| * UserInterface/Controllers/DiagnosticController.js: Added. |
| (WI.DiagnosticController): |
| (WI.DiagnosticController.supportsDiagnosticLogging): |
| (WI.DiagnosticController.prototype.logDiagnosticMessage): |
| (WI.DiagnosticController.prototype._didInteractWithTabContent): |
| (WI.DiagnosticController.prototype._clearTabActivityTimeout): |
| (WI.DiagnosticController.prototype._beginTabActivityTimeout): |
| (WI.DiagnosticController.prototype._stopTrackingTabActivity): |
| (WI.DiagnosticController.prototype._handleWindowFocus): |
| (WI.DiagnosticController.prototype._handleWindowBlur): |
| (WI.DiagnosticController.prototype._handleWindowKeyDown): |
| (WI.DiagnosticController.prototype._handleWindowMouseDown): |
| (WI.DiagnosticController.prototype._handleTabBrowserSelectedTabContentViewDidChange): |
| |
| * UserInterface/Main.html: |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: switching tabs should re-focus the previously focused element |
| https://bugs.webkit.org/show_bug.cgi?id=203744 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/TabBrowser.js: |
| (WI.TabBrowser.prototype._tabBarItemSelected): |
| (WI.TabBrowser.prototype._saveFocusedNodeForTabContentView): Added. |
| (WI.TabBrowser.prototype._restoreFocusedNodeForTabContentView): Added. |
| Store the `document.activeElement` on the `WI.TabContentView` and `.focus()` it after we're |
| done showing the newly selected tab, but only if there isn't already something focused. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar.prototype.set selectedTabBarItem): |
| * UserInterface/Views/LegacyTabBar.js: |
| (WI.LegacyTabBar.prototype.set selectedTabBarItem): |
| Include the previously selected tab bar item when dispatching selection change events. |
| |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| (WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject): |
| Don't omit focus when revealing represented objects. |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition |
| https://bugs.webkit.org/show_bug.cgi?id=203651 |
| <rdar://problem/56128726> |
| |
| Reviewed by Brian Burg. |
| |
| Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by |
| JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media |
| timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions |
| are created, started, delayed, iterated, canceled, or finished. |
| |
| * UserInterface/Protocol/AnimationObserver.js: Added. |
| (WI.AnimationObserver.prototype.trackingStart): |
| (WI.AnimationObserver.prototype.trackingUpdate): |
| (WI.AnimationObserver.prototype.trackingComplete): |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.get AnimationAgent): Added. |
| * UserInterface/Main.html: |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| * UserInterface/Test.html: |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| Add an Animation domain for handling the tracking of CSS Web Animations. |
| |
| * UserInterface/Models/MediaInstrument.js: |
| (WI.MediaInstrument.prototype.startInstrumentation): |
| (WI.MediaInstrument.prototype.stopInstrumentation): |
| (WI.MediaInstrument): |
| * UserInterface/Models/MediaTimeline.js: Added. |
| (WI.MediaTimeline.prototype.recordForTrackingAnimationId): |
| (WI.MediaTimeline.prototype.recordForMediaElementEvents): |
| (WI.MediaTimeline.prototype.reset): |
| (WI.MediaTimeline.prototype.addRecord): |
| * UserInterface/Models/MediaTimelineRecord.js: |
| (WI.MediaTimelineRecord): |
| (WI.MediaTimelineRecord.async fromJSON): |
| (WI.MediaTimelineRecord.prototype.toJSON): |
| (WI.MediaTimelineRecord.prototype.get trackingAnimationId): Added. |
| (WI.MediaTimelineRecord.prototype.get timestamps): Added. |
| (WI.MediaTimelineRecord.prototype.get activeStartTime): Added. |
| (WI.MediaTimelineRecord.prototype.get updatesDynamically): Added. |
| (WI.MediaTimelineRecord.prototype.get usesActiveStartTime): Added. |
| (WI.MediaTimelineRecord.prototype.get displayName): |
| (WI.MediaTimelineRecord.prototype.get subtitle): Added. |
| (WI.MediaTimelineRecord.prototype.saveIdentityToCookie): |
| (WI.MediaTimelineRecord.prototype.updateProgress): Added. |
| (WI.MediaTimelineRecord.prototype.addDOMEvent): Added. |
| (WI.MediaTimelineRecord.prototype.powerEfficientPlaybackStateChanged): Added. |
| (WI.MediaTimelineRecord.prototype._updateTimes): Added. |
| (WI.MediaTimelineRecord.fromJSON): Deleted. |
| (WI.MediaTimelineRecord.prototype.get domEvent): Deleted. |
| (WI.MediaTimelineRecord.prototype.get isPowerEfficient): Deleted. |
| * UserInterface/Models/Timeline.js: |
| (WI.Timeline.create): |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager): |
| (WI.TimelineManager.prototype.async processJSON): |
| (WI.TimelineManager.prototype.animationTrackingStarted): Added. |
| (WI.TimelineManager.prototype.animationTrackingUpdated): Added. |
| (WI.TimelineManager.prototype.animationTrackingCompleted): Added. |
| (WI.TimelineManager.prototype._updateAutoCaptureInstruments): |
| (WI.TimelineManager.prototype._handleDOMNodeDidFireEvent): |
| (WI.TimelineManager.prototype._handleDOMNodePowerEfficientPlaybackStateChanged): |
| Start/Stop tracking animations based on whether the Media & Animations timeline is enabled. |
| |
| * UserInterface/Views/MediaTimelineOverviewGraph.js: |
| (WI.MediaTimelineOverviewGraph): |
| (WI.MediaTimelineOverviewGraph.get maximumRowCount): Added. |
| (WI.MediaTimelineOverviewGraph.prototype.reset): |
| (WI.MediaTimelineOverviewGraph.prototype.layout): |
| (WI.MediaTimelineOverviewGraph.prototype.updateSelectedRecord): |
| (WI.MediaTimelineOverviewGraph.prototype._processRecord): Added. |
| (WI.MediaTimelineOverviewGraph.prototype._processRecord.compareByStartTime): Added. |
| (WI.MediaTimelineOverviewGraph.prototype._handleRecordAdded): |
| (WI.MediaTimelineOverviewGraph.prototype._handleTimesUpdated): Added. |
| (WI.MediaTimelineOverviewGraph.prototype.shown): Deleted. |
| (WI.MediaTimelineOverviewGraph.prototype.hidden): Deleted. |
| * UserInterface/Views/MediaTimelineOverviewGraph.css: |
| (.timeline-overview-graph.media): Added. |
| (.timeline-overview-graph.media > .graph-row): Added. |
| (.timeline-overview-graph.media > .graph-row > .timeline-record-bar): Added. |
| (.timeline-overview-graph.media > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added. |
| (.timeline-overview-graph.media:nth-child(even) > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added. |
| (.timeline-overview-graph.media > .timeline-record-bar): Deleted. |
| (.timeline-overview-graph.media > .timeline-record-bar > .segment): Deleted. |
| * UserInterface/Views/MediaTimelineView.js: |
| (WI.MediaTimelineView): |
| (WI.MediaTimelineView.prototype.shown): Added. |
| (WI.MediaTimelineView.prototype.hidden): Added. |
| (WI.MediaTimelineView.prototype.closed): |
| (WI.MediaTimelineView.prototype.reset): |
| (WI.MediaTimelineView.prototype.dataGridSortComparator): |
| (WI.MediaTimelineView.prototype.dataGridSortComparator.compareDOMNodes): |
| (WI.MediaTimelineView.prototype._processPendingRecords): |
| * UserInterface/Views/MediaTimelineDataGridNode.js: |
| (WI.MediaTimelineDataGridNode): |
| (WI.MediaTimelineDataGridNode.prototype.get data): |
| (WI.MediaTimelineDataGridNode.prototype.createCellContent): |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren): Added. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addReadySegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addDelaySegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addActiveSegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addFullScreenSegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPowerEfficientPlaybackSegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPausedSegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPlayingSegment): ADded. |
| (WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn): |
| (WI.MediaTimelineDataGridNode.prototype._createNameCellDocumentFragment): Added. |
| (WI.MediaTimelineDataGridNode.prototype.iconClassNames): Deleted. |
| |
| * UserInterface/Views/TimelineRecordBar.js: |
| (WI.TimelineRecordBar): |
| (WI.TimelineRecordBar.prototype.refresh): |
| (WI.TimelineRecordBar.prototype._handleClick): |
| * UserInterface/Views/TimelineRecordBar.css: |
| (.timeline-record-bar): |
| (.timeline-record-bar > :matches(img, .segment)): |
| (.timeline-record-bar > img): |
| (.timeline-record-bar > .segment): |
| (body[dir=ltr] .timeline-record-bar > .segment): |
| (body[dir=ltr] .timeline-record-bar > .segment:first-of-type): |
| (body[dir=ltr] .timeline-record-bar > .segment:last-of-type): |
| (body[dir=rtl] .timeline-record-bar > .segment): |
| (body[dir=rtl] .timeline-record-bar > .segment:first-of-type): |
| (body[dir=rtl] .timeline-record-bar > .segment:last-of-type): |
| (.timeline-record-bar > .segment:not(:last-of-type)): |
| (.timeline-record-bar.selected > .segment): |
| (.timeline-record-bar > .segment.inactive,): |
| (.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): |
| (:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment): |
| (:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment.inactive): |
| (:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): |
| (.timeline-record-bar.timeline-record-type-network > .segment): |
| (.timeline-record-bar.timeline-record-type-network > .segment.inactive): |
| (.timeline-record-bar.timeline-record-type-layout > .segment): |
| (.timeline-record-bar.timeline-record-type-layout.paint > .segment,): |
| (.timeline-record-bar.timeline-record-type-script > .segment): |
| (.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment,): |
| (.timeline-record-bar.timeline-record-type-media > .segment): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment.css-animation-ready): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment:matches(.css-animation-delay, .media-element-paused)): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-full-screen): |
| (.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-power-efficient-playback): |
| (body[dir=ltr] .timeline-record-bar > .segment.inactive,): Deleted. |
| (body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive),): Deleted. |
| (:focus .selected .timeline-record-bar > .segment): Deleted. |
| (:focus .selected .timeline-record-bar > .segment.inactive): Deleted. |
| (body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted. |
| (body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted. |
| Allow timeline record bars to be customized through a delegate callback. If provided, it |
| will be used instead of any default content. It is expected to return an array of objects, |
| each having a `startTime` number, `classNames` array, and `title` string. It can also have a |
| `endTime` number and an `image` string. If `endTime` is `NaN`, the record is unfinished. If |
| `image` is provided, an `<img>` will be used instead of a segment, allowing for markers. |
| |
| * UserInterface/Views/TimelineDataGridNode.js: |
| (WI.TimelineDataGridNode.prototype.createCellContent): |
| Add a default fallback for `WI.DOMNode` values. |
| |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView.displayNameForTimelineType): |
| (WI.TimelineTabContentView.iconClassNameForRecord): |
| (WI.TimelineTabContentView.displayNameForRecord): |
| * UserInterface/Views/TimelineRecordTreeElement.js: |
| * UserInterface/Views/TimelineIcons.css: |
| (.animation-frame-record .icon): |
| (.css-animation-record .icon): Added. |
| (.css-transition-record .icon): Added. |
| (.media-element-record .icon): Added. |
| (.animation-record .icon): Deleted. |
| (.dom-event-record .icon): Deleted. |
| (.dom-event-record.fullscreen .icon): Deleted. |
| (.power-efficient-playback-state-changed-record .icon): Deleted. |
| * UserInterface/Images/DOMEventFullscreen.svg: Removed. |
| * UserInterface/Images/EventCancel.svg: Added. |
| * UserInterface/Images/EventIteration.svg: Added. |
| * UserInterface/Images/EventPause.svg: |
| * UserInterface/Images/EventPlay.svg: |
| * UserInterface/Images/EventProcessing.svg: |
| * UserInterface/Images/EventStop.svg: |
| * UserInterface/Images/PowerEfficientPlaybackStateChanged.svg: Removed. |
| * UserInterface/Images/TimelineRecordAnimationFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordAnimation.svg. |
| * UserInterface/Images/TimelineRecordCSSAnimation.svg: Added. |
| * UserInterface/Images/TimelineRecordCSSTransition.svg: Added. |
| * UserInterface/Images/TimelineRecordMediaElement.svg: Added. |
| Add new media icons. |
| |
| * UserInterface/Models/TimelineRecording.js: |
| (WI.TimelineRecording.async import): Added. |
| (WI.TimelineRecording.import): Deleted. |
| * UserInterface/Models/TimelineRecord.js: |
| * UserInterface/Models/CPUTimelineRecord.js: |
| * UserInterface/Models/HeapAllocationsTimelineRecord.js: |
| (WI.HeapAllocationsTimelineRecord.async fromJSON): Added. |
| (WI.HeapAllocationsTimelineRecord.fromJSON): Deleted. |
| * UserInterface/Models/LayoutTimelineRecord.js: |
| * UserInterface/Models/MemoryTimelineRecord.js: |
| * UserInterface/Models/RenderingFrameTimelineRecord.js: |
| * UserInterface/Models/ResourceTimelineRecord.js: |
| * UserInterface/Models/ScriptTimelineRecord.js: |
| Make the importing of timeline records `async` so we can attempt to rehydrate the DOM nodes |
| of any media records (as well as wait for heap snapshots). |
| |
| * UserInterface/Models/DOMNode.js: |
| (WI.DOMNode): |
| (WI.DOMNode.prototype.isMediaElement): Added. |
| (WI.DOMNode.prototype._shouldListenForEventListeners): Deleted. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: default to focusing the console prompt if no other content is focused after opening Web Inspector |
| https://bugs.webkit.org/show_bug.cgi?id=203743 |
| |
| Reviewed by Eric Carlson and Brian Burg. |
| |
| * UserInterface/Base/Main.js: |
| (WI.isContentAreaFocused): Added. |
| (WI.isConsoleFocused): |
| (WI._focusChanged): |
| (WI._restoreCookieForOpenTabs): |
| |
| 2019-11-01 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Display color swatches for p3 colors |
| https://bugs.webkit.org/show_bug.cgi?id=203439 |
| <rdar://problem/56637250> |
| |
| Reviewed by Devin Rousso. |
| |
| Detect `color(display-p3 0 1 0)` as a color in the style editor. |
| |
| * UserInterface/Models/Color.js: |
| (WI.Color): |
| (WI.Color.fromString): |
| (WI.Color.prototype.copy): |
| (WI.Color.prototype.toString): |
| (WI.Color.prototype.isKeyword): |
| (WI.Color.prototype._toFunctionString): |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r249831): content view is empty if a breakpoint is hit in the main resource |
| https://bugs.webkit.org/show_bug.cgi?id=203722 |
| <rdar://problem/56802409> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype.get currentRevision): |
| (WI.SourceCode.prototype.revisionContentDidChange): |
| (WI.SourceCode.prototype._initializeCurrentRevisionIfNeeded): |
| (WI.SourceCode.prototype._processContent): |
| Don't wait to lazily clone the `originalRevision` and use it as the `currentRevision`. Some |
| listeners expect the `currentRevision` to already be set by the time this happens, so as |
| soon as the original revision's content is changed, clone it into the `currentRevision`. |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: tab isn't visible after removal of Debugger Tab and Resources Tab |
| https://bugs.webkit.org/show_bug.cgi?id=203719 |
| <rdar://problem/56802389> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| If the Debugger Tab identifier or Resources Tab identifier still exists in the list of open |
| tabs, remove both and replace the first one with the Sources Tab identifier. |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: make the default content of the Inspector Bootstrap Script a comment that explains how it works |
| https://bugs.webkit.org/show_bug.cgi?id=203704 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.async createBootstrapScript): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: Blackbox: hide icon is missing |
| https://bugs.webkit.org/show_bug.cgi?id=203727 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Images/Hide.svg: |
| `WI.ImageUtilities.useSVGSymbol` links directly to a specific part of the SVG resource based |
| on an `id` attribute (default to `#root` if not otherwise given). As a result, any `<style>` |
| that are not a child of that specific part won't be included, meaning that any CSS variables |
| used for controlling colors won't exist. Adding a fallback value to the `var()` for these |
| cases allows a specific part to be used without needing any surrounding styles. |
| |
| * UserInterface/Views/BlackboxSettingsView.css: |
| (.settings-view.blackbox > p > .toggle-script-blackbox): |
| Slightly adjust the size and vertical alignment to better match the surrounding text. |
| |
| 2019-11-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: enable line wrapping by default |
| https://bugs.webkit.org/show_bug.cgi?id=203726 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Base/Setting.js: |
| |
| 2019-10-31 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Color picker: incorrect saturation when selecting color on color square |
| https://bugs.webkit.org/show_bug.cgi?id=203695 |
| <rdar://problem/56793697> |
| |
| Reviewed by Matt Baker. |
| |
| The saturation component in HSV does NOT equal the saturation component in HSL. |
| Use the proper HSV to HSL conversion. |
| |
| * UserInterface/Models/Color.js: |
| (WI.Color.hsv2hsl): Added. |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare.prototype.get tintedColor): |
| (WI.ColorSquare.prototype.get _lightness): Deleted. |
| |
| 2019-10-31 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251038): Elements: Computed: variables are shown in the Properties section instead of in the Variables section |
| https://bugs.webkit.org/show_bug.cgi?id=203668 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.js: |
| (WI.ComputedStyleDetailsPanel.prototype.initialLayout): |
| * UserInterface/Views/ComputedStyleSection.js: |
| (WI.ComputedStyleSection): |
| (WI.ComputedStyleSection.prototype.set propertyVisibilityMode): Added. |
| (WI.ComputedStyleSection.prototype.get propertiesToRender): |
| Reintroduce the `propertyVisibilityMode` concept to `WI.ComputedStyleSection` so that the |
| Computed details panel can prevent CSS variables from being shown in the Properites section. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesToRender): |
| Replace `variable` getter with `isVariable` to match r251038. |
| |
| 2019-10-31 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOMDebugger: Node Removed breakpoints should fire whenever the node is removed from the main DOM tree, not just when it's removed from it's parent |
| https://bugs.webkit.org/show_bug.cgi?id=203349 |
| |
| Reviewed by Matt Baker. |
| |
| Replace `targetNode` (which was a `Runtime.RemoteObject`) with a `targetNodeId` (which is a |
| `DOM.NodeId`) when dispatching `DOMDebugger` pauses. Additionally, include the ancestor's |
| `DOM.NodeId` as the `targetNodeId` whenever an ancestor is removed that has a descendant |
| with a node removed DOM breakpoint. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-31 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: CONSOLE ERROR Shown panel style-rules must be visible |
| https://bugs.webkit.org/show_bug.cgi?id=203377 |
| |
| Reviewed by Devin Rousso. |
| |
| Fix assertion failure when opening elements panel with hidden details sidebar. |
| |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| (WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels): |
| * UserInterface/Views/Sidebar.js: |
| (WI.Sidebar.prototype.set selectedSidebarPanel): Only call shown() if the Sidebar |
| is not collapsed. It will anyway be called when the Sidebar is expanded. |
| |
| 2019-10-30 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: track WI.Script unique display name numbers per Page target |
| https://bugs.webkit.org/show_bug.cgi?id=203427 |
| |
| Reviewed by Devin Rousso. |
| |
| WI.Script now keeps track of last unique numbers via a static weak map keyed by |
| the Script's root target. So whenever new Page target is created all its scripts |
| will get unique display numbers from a new namespace. |
| |
| Parent target is now passed to each target constructor and allow to find host |
| page target for nested targets. Among other things WorkerConnection and |
| TargetConnection use parentTarget for dispatching events instead of creating |
| extra copy of the same data that is already stored in Target. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.globalObjectCleared): |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager.prototype.targetCreated): |
| (WI.TargetManager.prototype.didCommitProvisionalTarget): |
| (WI.TargetManager.prototype.targetDestroyed): |
| (WI.TargetManager.prototype.dispatchMessageFromTarget): |
| (WI.TargetManager.prototype._connectToTarget): |
| (WI.TargetManager.prototype._createTarget): |
| * UserInterface/Controllers/WorkerManager.js: |
| (WI.WorkerManager.prototype.workerCreated): |
| * UserInterface/Models/Script.js: |
| (WI.Script): |
| (WI.Script.prototype.get displayName): |
| (WI.Script.prototype._nextUniqueDisplayNameNumber): |
| (WI.Script.prototype._nextUniqueConsoleDisplayNameNumber): |
| (WI.Script.prototype._uniqueDisplayNameNumbersForRootTarget): |
| * UserInterface/Protocol/Connection.js: |
| (InspectorBackend.WorkerConnection.prototype.sendMessageToBackend): |
| (InspectorBackend.WorkerConnection): |
| (InspectorBackend.TargetConnection.prototype.sendMessageToBackend): |
| (InspectorBackend.TargetConnection): |
| * UserInterface/Protocol/DirectBackendTarget.js: |
| (WI.DirectBackendTarget): |
| * UserInterface/Protocol/MultiplexingBackendTarget.js: |
| (WI.MultiplexingBackendTarget): |
| * UserInterface/Protocol/PageTarget.js: |
| (WI.PageTarget): |
| * UserInterface/Protocol/Target.js: |
| (WI.Target): |
| (WI.Target.prototype.get parentTarget): |
| (WI.Target.prototype.get rootTarget): |
| * UserInterface/Protocol/WorkerTarget.js: |
| (WI.WorkerTarget): |
| |
| 2019-10-30 Eike Rathke <erack@redhat.com> |
| |
| Covscan: remove stray semicolon |
| https://bugs.webkit.org/show_bug.cgi?id=203622 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/CheckboxNavigationItem.js: |
| (WI.CheckboxNavigationItem.prototype.set label): |
| |
| 2019-10-29 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Opacity slider background doesn't update when when hue slider moves |
| https://bugs.webkit.org/show_bug.cgi?id=203593 |
| <rdar://problem/56723629> |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker.prototype.set color): |
| (WI.ColorPicker.prototype.colorSquareColorDidChange): |
| Remove unused function arguments. |
| |
| (WI.ColorPicker.prototype.sliderValueDidChange): |
| Update the background of the opacity slider when the hue slider changes. |
| |
| (WI.ColorPicker.prototype._updateOpacitySlider): Renamed from _updateSliders. |
| Drive-by: replace `var` with `let`. |
| |
| 2019-10-28 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Right-clicking in color picker should not select color |
| https://bugs.webkit.org/show_bug.cgi?id=203434 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ColorSquare.js: |
| (WI.ColorSquare.prototype._handleMousedown): |
| |
| 2019-10-28 Antoine Quint <graouts@apple.com> |
| |
| CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid value for times |
| https://bugs.webkit.org/show_bug.cgi?id=203484 |
| |
| Reviewed by Antti Koivisto. |
| |
| Use 0s instead of 0 in places where unitless times were used but shouldn't have been. |
| |
| * UserInterface/Views/FindBanner.css: |
| (.no-find-banner-transition:matches(.find-banner, .supports-find-banner)): |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar > .item > .close): |
| |
| 2019-10-25 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Styles: un-experimentalize showing rule icons |
| https://bugs.webkit.org/show_bug.cgi?id=203308 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector): |
| |
| 2019-10-24 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: assertion failure at GeneralStyleDetailsSidebarPanel.js:34:23 |
| https://bugs.webkit.org/show_bug.cgi?id=203376 |
| |
| Reviewed by Devin Rousso. |
| |
| Use class's prototype instead of class itself when doing instanceof check. |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel): |
| |
| 2019-10-24 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: CONSOLE ERROR removeEventListener cannot remove blackboxed-urls-changed because it doesn't exist. |
| https://bugs.webkit.org/show_bug.cgi?id=203372 |
| |
| Reviewed by Devin Rousso. |
| |
| Avoid console errors when opening source panel. |
| |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement.prototype._updateSourceCode): Only remove listener if it has |
| been added before. |
| |
| 2019-10-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: provide a way to inject "bootstrap" JavaScript into the page as the first script executed |
| https://bugs.webkit.org/show_bug.cgi?id=195847 |
| <rdar://problem/48950551> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When debugging webpages, it's often useful to be able to swizzle various functions in order |
| to add extra logs for when they're called (e.g. `Event.prototype.preventDefault`). Sometimes |
| this can be difficult, such as if the page saves a copy of the function and references that |
| instead, in which case it would be helpful to have a way to guarantee that the swizzled code |
| is the first thing evaluated after the context is created. |
| |
| This change adds support for that concept, which has been named Inspector Bootstrap Script. |
| Once created, it will be injected as the first user script to every new global object that |
| is created afterwards. Modifications to the Inspector Bootstrap Script take effect for all |
| new global objects created _after_ the modification happened. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager): |
| (WI.NetworkManager.supportsBootstrapScript): Added. |
| (WI.NetworkManager.get bootstrapScriptURL): Added. |
| (WI.NetworkManager.get bootstrapScriptSourceObjectStoreKey): Added. |
| (WI.NetworkManager.prototype.initializeTarget): |
| (WI.NetworkManager.prototype.get bootstrapScript): Added. |
| (WI.NetworkManager.prototype.get bootstrapScriptEnabled): Added. |
| (WI.NetworkManager.prototype.set bootstrapScriptEnabled): Added. |
| (WI.NetworkManager.prototype.async createBootstrapScript): Added. |
| (WI.NetworkManager.prototype.destroyBootstrapScript): Added. |
| (WI.NetworkManager.prototype._processServiceWorkerConfiguration): |
| (WI.NetworkManager.prototype._handleBootstrapScriptContentDidChange): Added. |
| |
| * UserInterface/Models/LocalScript.js: |
| (WI.LocalScript): |
| (WI.LocalScript.prototype.get editable): Added. |
| (WI.LocalScript.prototype.get supportsScriptBlackboxing): Added. |
| (WI.LocalScript.prototype.requestContentFromBackend): |
| (WI.LocalScript.prototype.handleCurrentRevisionContentChange): Added. |
| * UserInterface/Views/ScriptContentView.js: |
| (WI.ScriptContentView): |
| (WI.ScriptContentView.prototype._contentWillPopulate): |
| (WI.ScriptContentView.prototype._contentDidPopulate): |
| (WI.ScriptContentView.prototype._handleTextEditorContentDidChange): Added. |
| Support editing of `WI.LocalScript` that are specifically marked as such. |
| |
| * UserInterface/Models/Script.js: |
| (WI.Script): |
| (WI.Script.prototype.get displayName): |
| (WI.Script.prototype.get displayURL): |
| (WI.Script.prototype.isMainResource): |
| (WI.Script.prototype._resolveResource): |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.customPerformSearch): |
| (WI.SourceCodeTextEditor.prototype._createTypeTokenAnnotator): |
| (WI.SourceCodeTextEditor.prototype._createBasicBlockAnnotator): |
| Allow a `WI.Script` to not have an associated `WI.Target`, specifically for `WI.LocalScript`. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject): |
| (WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline): |
| (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements): |
| (WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._removeResourceOverride): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBootstrapScriptCreated): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBootstrapScriptDestroyed): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideAdded): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideRemoved): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed): |
| (WI.SourcesNavigationSidebarPanel.prototype._addLocalResourceOverride): Removed. |
| (WI.SourcesNavigationSidebarPanel.prototype._removeLocalResourceOverride): Removed. |
| Add an item in the create resource context menu for creating/focusing the bootstrap script. |
| |
| * UserInterface/Views/ScriptTreeElement.js: |
| (WI.ScriptTreeElement): |
| * UserInterface/Views/BootstrapScriptTreeElement.js: Added. |
| (WI.BootstrapScriptTreeElement): |
| (WI.BootstrapScriptTreeElement.prototype.onattach): |
| (WI.BootstrapScriptTreeElement.prototype.ondetach): |
| (WI.BootstrapScriptTreeElement.prototype.ondelete): |
| (WI.BootstrapScriptTreeElement.prototype.onspace): |
| (WI.BootstrapScriptTreeElement.prototype.canSelectOnMouseDown): |
| (WI.BootstrapScriptTreeElement.prototype.populateContextMenu): |
| (WI.BootstrapScriptTreeElement.prototype.updateStatus): |
| (WI.BootstrapScriptTreeElement.prototype._handleNetworkManagerBootstrapScriptToggled): |
| * UserInterface/Views/BootstrapScriptTreeElement.css: Added. |
| (.item.script.bootstrap .status > input[type="checkbox"]): |
| * UserInterface/Views/LocalResourceOverrideTreeElement.css: |
| (.item.resource.override .status > input[type="checkbox"]): Added. |
| (.item.resource.override .status > div): Removed. |
| Don't show the full bootstrap script URL. Instead, show "Inspector Bootstrap Script". |
| |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype.didPresentDialog): |
| Show the bootstrap script in the open resource dialog. |
| |
| * UserInterface/Base/Utilities.js: |
| (isWebInspectorBootstrapScript): Added. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.scriptDidFail): |
| |
| * UserInterface/Base/ObjectStore.js: |
| (WI.ObjectStore.static _open): |
| (WI.ObjectStore.prototype.async get): Added. |
| Add a generalized object store that can be used for one-off values that need the larger |
| storage capacity of `IndexedDB`. |
| |
| * .eslintrc: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-23 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: notify inspector when provisional page is created, committed and destroyed |
| https://bugs.webkit.org/show_bug.cgi?id=202704 |
| |
| Reviewed by Devin Rousso. |
| |
| Updated frontend code to understand provisional targets. For now there are |
| no changes frontend behavior, it will wait for the provisional target to commit |
| and will not send any commands to it before that. |
| |
| * UserInterface/Base/Main.js: Moved a bunch of methods shared between Main.js and Test.js |
| to TargetManager.js to keep them in sync. |
| * UserInterface/Controllers/TargetManager.js: |
| (WI.TargetManager): |
| (WI.TargetManager.prototype.removeTarget): |
| (WI.TargetManager.prototype.createMultiplexingBackendTarget): |
| (WI.TargetManager.prototype.createDirectBackendTarget): |
| (WI.TargetManager.prototype.targetCreated): |
| (WI.TargetManager.prototype.didCommitProvisionalTarget): |
| (WI.TargetManager.prototype.targetDestroyed): |
| (WI.TargetManager.prototype.dispatchMessageFromTarget): |
| (WI.TargetManager.prototype._checkAndHandlePageTargetTransition): |
| (WI.TargetManager.prototype._checkAndHandlePageTargetTermination): |
| (WI.TargetManager.prototype._initializeBackendTarget): |
| (WI.TargetManager.prototype._initializePageTarget): |
| (WI.TargetManager.prototype._transitionPageTarget): |
| (WI.TargetManager.prototype._terminatePageTarget): |
| (WI.TargetManager.prototype._resetMainExecutionContext): |
| (WI.TargetManager.prototype._redirectGlobalAgentsToConnection): |
| * UserInterface/Protocol/Connection.js: |
| (InspectorBackend.WorkerConnection.sendMessageToBackend): |
| (InspectorBackend.WorkerConnection): |
| (InspectorBackend.TargetConnection.sendMessageToBackend): |
| (InspectorBackend.TargetConnection): |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.destroy): Mark target as destroyed to distinguish expected command errors from |
| genuine failures. |
| |
| (WI.Target.prototype.isDestroyed): |
| * UserInterface/Protocol/TargetObserver.js: Since the front-end doesn't |
| send commands to the provisional targets yet, it has to ignore all activities |
| related to provisional pages. For that reason we need two sets to keep track of |
| - provisional pages that were destroyed and never committed |
| - old pages which were replaced by committed page and for which following targetDestroyed |
| event should be ignored |
| Better support for provisional targets will be added to frontend in a separate change. |
| (WI.TargetObserver): |
| (WI.TargetObserver.prototype.targetCreated): |
| (WI.TargetObserver.prototype.didCommitProvisionalTarget): For now convert the event into a subsequence |
| of targetDestroyed/targetCreated events which matches previous behavior. |
| |
| (WI.TargetObserver.prototype.targetDestroyed): |
| (WI.TargetObserver.prototype.dispatchMessageFromTarget): |
| * UserInterface/Test/Test.js: |
| (WI.transitionPageTarget): |
| (WI.terminatePageTarget): |
| |
| 2019-10-23 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Replace color wheel with square HSB color picker |
| https://bugs.webkit.org/show_bug.cgi?id=203169 |
| <rdar://problem/56449832> |
| |
| Reviewed by Devin Rousso. |
| |
| Replace the color wheel with a square HSB color picker. |
| |
| The square HSB color picker provides more precision for choosing saturation, |
| and it's more familiar to most web developers. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Views/ColorPicker.css: |
| (.color-picker): |
| (.color-picker > .hue): |
| (body[dir=ltr] .color-picker > .hue): |
| (body[dir=rtl] .color-picker > .hue): |
| * UserInterface/Views/ColorPicker.js: |
| (WI.ColorPicker): |
| (WI.ColorPicker.prototype.get colorSquare): |
| (WI.ColorPicker.prototype.set color): |
| (WI.ColorPicker.prototype.colorSquareColorDidChange): |
| (WI.ColorPicker.prototype.sliderValueDidChange): |
| (WI.ColorPicker.prototype._updateColor): |
| (WI.ColorPicker.prototype._updateSliders): |
| Add a hue slider. The new color picker has the hue slider instead of the brightness slider. |
| |
| * UserInterface/Views/ColorSquare.css: Renamed from Source/WebInspectorUI/UserInterface/Views/ColorWheel.css. |
| (.color-square): |
| (.color-square > .saturation-gradient): |
| (.color-square > .lightness-gradient): |
| (.color-square > .fill): |
| (.color-square > .crosshair): |
| * UserInterface/Views/ColorSquare.js: Added. |
| (WI.ColorSquare): |
| (WI.ColorSquare.prototype.get element): |
| (WI.ColorSquare.prototype.set dimension): |
| (WI.ColorSquare.prototype.get hue): |
| (WI.ColorSquare.prototype.set hue): |
| (WI.ColorSquare.prototype.get tintedColor): |
| (WI.ColorSquare.prototype.set tintedColor): |
| (WI.ColorSquare.prototype.get rawColor): |
| (WI.ColorSquare.prototype.handleEvent): |
| (WI.ColorSquare.prototype.get _saturation): |
| (WI.ColorSquare.prototype.get _brightness): |
| (WI.ColorSquare.prototype.get _lightness): |
| (WI.ColorSquare.prototype._handleMousedown): |
| (WI.ColorSquare.prototype._handleMousemove): |
| (WI.ColorSquare.prototype._handleMouseup): |
| (WI.ColorSquare.prototype._updateColorForMouseEvent): |
| (WI.ColorSquare.prototype._setCrosshairPosition): |
| (WI.ColorSquare.prototype._updateBaseColor): |
| * UserInterface/Views/ColorWheel.js: Removed. |
| * UserInterface/Views/GradientEditor.js: |
| (WI.GradientEditor): |
| |
| 2019-10-23 Yury Semikhatsky <yurys@chromium.org> |
| |
| Web Inspector: frontend tests should clear output before resending results |
| https://bugs.webkit.org/show_bug.cgi?id=203262 |
| |
| Reviewed by Devin Rousso. |
| |
| Inspector front-end tests will clear output log before resending teset results. This avoids |
| race between InspectorTest.testPageDidLoad event and TestPage.addResult calls that may have |
| already be sent to the new page after navigation. The latter events otherwise would be added |
| twice. |
| |
| * UserInterface/Test/FrontendTestHarness.js: |
| (FrontendTestHarness): |
| (FrontendTestHarness.prototype.testPageDidLoad): |
| (FrontendTestHarness.prototype.reloadPage): |
| (FrontendTestHarness.prototype.reportUnhandledRejection): |
| (FrontendTestHarness.prototype.reportUncaughtException): |
| (FrontendTestHarness.prototype._resendResults): Don't resend the results when the page is loaded |
| first time. |
| |
| 2019-10-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: keep the function/object name sticky in the object preview popover |
| https://bugs.webkit.org/show_bug.cgi?id=203259 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/SourceCodeTextEditor.css: |
| (.popover .debugger-popover-content): |
| (.popover .debugger-popover-content.expandable): Added. |
| (.popover .debugger-popover-content > .title): |
| (.popover .debugger-popover-content > .body): |
| (.popover .debugger-popover-content.formatted): Added. |
| (.popover .expandable): Deleted. |
| Use flexbox to ensure that only the function/object body is scrollable. |
| Adjust the min/max width/height to take less space for smaller objects. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._showPopoverWithFormattedValue): |
| Wrap formatted values in a `<div>` so we can apply special styling to them. |
| |
| 2019-10-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: content of function definition popover sometimes cut off |
| https://bugs.webkit.org/show_bug.cgi?id=203258 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails): |
| |
| 2019-10-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Sources: when editing style sheets, the content is sometimes suddenly replaced with the original content of the resource |
| https://bugs.webkit.org/show_bug.cgi?id=203235 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Each `WI.CSSStyleSheet` manages it's own state about when it should ignore events from the |
| backend telling it that it was modified, such as if the frontend caused the update. In these |
| cases, the `WI.CSSStyleSheet` itself was early-returning, but the `WI.CSSManager` wasn't, |
| meaning that the `WI.CSSManager` would then override the content even though the specific |
| `WI.CSSStyleSheet` knows that its content shouldn't update. To compound this issue, the |
| `WI.CSSManager` updates any `WI.CSSStyleSheet` using a `Throttler`, so any updates would be |
| further delayed (first by the protocol travel time) by this, leading to the timing based |
| intermittent issue. `WI.CSSStyleSheet` already exposes when it should be updated or not via |
| `WI.CSSStyleSheet.prototype.noteContentDidChange`. Rather than have `WI.CSSManager` just |
| call that function, it should examine the returned boolean to see if it should continue to |
| process the update, or if the `WI.CSSStyleSheet` knows that it should be ignored. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype.styleSheetChanged): |
| |
| 2019-10-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251227): Uncaught Exception: undefined is not an object (evaluating 'agent.enable') |
| https://bugs.webkit.org/show_bug.cgi?id=203208 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/AppController.js: |
| (WI.AppController.prototype.activateExtraDomains): |
| |
| 2019-10-21 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Provide a flag for technology preview builds |
| https://bugs.webkit.org/show_bug.cgi?id=203164 |
| <rdar://problem/56202164> |
| |
| Reviewed by Devin Rousso. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Test/Test.js: |
| * UserInterface/Base/Main.js: |
| * UserInterface/Base/Setting.js: |
| (WI.isTechnologyPreviewBuild): |
| (WI.arePreviewFeaturesEnabled): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| In non-TechnologyPreview builds, if there are Preview Features provide a |
| setting switch that can be used to match the TechnologyPreview features. |
| |
| 2019-10-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: replace all uses of `window.*Agent` with a target-specific call |
| https://bugs.webkit.org/show_bug.cgi?id=201149 |
| |
| Reviewed by Matt Baker. |
| |
| Most of these were changed in r251227, but a few appear to have slipped through the cracks. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.debuggerDidResume): |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._createTypeTokenAnnotator): |
| (WI.SourceCodeTextEditor.prototype._createBasicBlockAnnotator): |
| |
| 2019-10-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: allow WebKit engineers to edit UserAgent shadow trees |
| https://bugs.webkit.org/show_bug.cgi?id=203159 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.initializeTarget): |
| (WI.DOMManager.supportsEditingUserAgentShadowTrees): Added. |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.get editable): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForDOMNode): |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.get editable): |
| (WI.DOMTreeElement.prototype._startEditingTarget): |
| (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu): |
| |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel): |
| (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel): |
| (WI.GeneralStyleDetailsSidebarPanel.prototype._handleNodeChanged): Added. |
| * UserInterface/Views/StyleDetailsPanel.js: |
| (WI.StyleDetailsPanel.prototype.get supportsNewRule): Added. |
| (WI.StyleDetailsPanel.prototype.markAsNeedsRefresh): |
| (WI.StyleDetailsPanel.prototype.refresh): |
| * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.get supportsNewRule): Added. |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonClicked): |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonContextMenu): |
| Don't show the "Add Rule" button if the selected node is inside a UserAgent shadow tree. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createEngineeringSettingsView): |
| |
| 2019-10-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: $0 is shown for the wrong node when selecting elements in a user agent shadow tree |
| https://bugs.webkit.org/show_bug.cgi?id=203155 |
| |
| Reviewed by Matt Baker. |
| |
| Rather than naively using the last selected node (from `WI.TreeOutline`), we should wait |
| to see if the inspected page's DOM agent allows the selected node to be used as the |
| inspected node, and if so then to show the `$0`. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.setInspectedNode): |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype._handleInspectedNodeChanged): Added. |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom li.inspected-node > span::after): Added. |
| (.tree-outline.dom:focus li.inspected-node.selected > span::after): Added. |
| (.tree-outline.dom.show-last-selected li.last-selected > span::after): Deleted. |
| (.tree-outline.dom.show-last-selected:focus li.last-selected > span::after): Deleted. |
| |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype.selectionControllerSelectionDidChange): |
| |
| 2019-10-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r251254): Elements: forced pseudo-class indicator isn't visible for selected nodes |
| https://bugs.webkit.org/show_bug.cgi?id=203158 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom li > :not(.selection-area)): Added. |
| (.tree-outline.dom li > span): Deleted. |
| |
| 2019-10-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: selection shouldn't be dimmed by shadow trees |
| https://bugs.webkit.org/show_bug.cgi?id=203057 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom li .selection-area): |
| (.tree-outline.dom li > span): Added. |
| Don't force the `.selection-area` to be behind (`z-index: -1;`) the rest of the content, as |
| that also puts it behind any `background-color`. Instead, we should make all the content in |
| every `WI.DOMTreeElement` be above (`z-index: 1;`) the rest of the content, including the |
| `.selection-area` and any parent's `background-color`. |
| |
| 2019-10-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: updates when toggling resource caching should be sent to every connected target |
| https://bugs.webkit.org/show_bug.cgi?id=203025 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/Main.js: |
| (WI._resourceCachingDisabledSettingChanged): |
| |
| 2019-10-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: rework frontend agent construction to allow commands/events to be controlled by the related target's type |
| https://bugs.webkit.org/show_bug.cgi?id=200384 |
| <rdar://problem/53850352> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| `InspectorBackend.domains.${domain}` isn't a truly valid way to feature check, as it |
| indicates what's supported by the WebKit framework underlying whatever's currently being |
| inspected, not what the current inspection target supports. |
| |
| As an example, inspecting an iOS `JSContext` will still show `InspectorBackend.domains.DOM` |
| as the `DOMAgent` is supported by WebKit, even though `JSContext`s have no concept of the |
| DOM. In this example, however, `window.DOMAgent` would NOT exist, as the `availability` |
| check for the `DOM` domain wouldn't pass, meaning that the agent never gets connected. |
| |
| In order to do proper feature checking, `InspectorBackend.domains` needs to be accurate |
| depending on the debuggable type. Furthermore, each target underneath that debuggable needs |
| to be able to "choose" what commands/events are supported based on that target's type. |
| |
| This patch modifies how InspectorBackendCommands.js ties into `InspectorBackend`. Rather |
| than directly creating an `InspectorBackend.Agent` for each domain, we now create more of a |
| "blueprint" of the domain, and wait to actually create an `InspectorBackend.Agent` until we |
| have a `WI.Target` (and therefore an `InspectorBackend.Connection`). Each "concept" of the |
| protocol now directly maps to an object. |
| - InspectorBackend.Domain |
| - InspectorBackend.Command |
| - InspectorBackend.Event |
| - InspectorBackend.Dispatcher |
| When a `WI.Target` is created, it gets the list of `InspectorBackend.Domain` that support |
| that `WI.Target`'s type (specified in the protocol JSON files) and generates an |
| `InspectorBackend.Agent` for each, which in turn generates an `InspectorBackend.Callable` |
| for each supported `InspectorBackend.Command` and instantiates `InspectorBackend.Dispatcher`. |
| |
| Activating a `InspectorBackend.Domain` means it's visible for `InspectorBackend` feature |
| checking. This must be done this way for older ITML backends that will still appear as |
| "JSContext" targets and therefore go through the "extra domains" path. Ideally, the process |
| of registering a domain should be enough to activate it. <https://webkit.org/b/201150> |
| |
| Feature checking can now only be done via `hasDomain`, `hasCommand`, and `hasEvent` on |
| `InspectorBackend` or a specific `WI.Target`, and there are different implications for each: |
| - `InspectorBackend.hasDomain(DOM)` asks whether the `DOM` domain is supported by the |
| current debuggable, but says nothing about whether any `WI.Target` support `DOM`. |
| - `target.hasDomain("DOM")` asks whether the given `target` supports `DOM`, which is |
| limited by `InspectorBackend.hasDomain("DOM")`. |
| |
| Now that `InspectorBackend.Agent` is only created by a `WI.Target`, it's no longer valid to |
| write `window.DOMAgent`, as there is no "global" agent. All protocol logic _must_ go through |
| a `WI.Target`. <https://webkit.org/b/201149> |
| |
| Debuggable Types: |
| - JavaScript (JSC::JSGlobalObject) |
| - Page (WebCore::Page) |
| - ServiceWorker (WebCore::ServiceWorkerThreadProxy) |
| - WebPage (WebKit::WebPageProxy) |
| |
| Target Types: |
| - JavaScript (direct connection) |
| - Page (multi-target connection to any Worker) |
| - ServiceWorker (direct connection) |
| - WebPage (multi-target connection to 1+ Page) |
| - Worker (direct connection, only available for Page debuggables) |
| |
| * UserInterface/Base/DebuggableType.js: |
| * UserInterface/Base/TargetType.js: Copied from Source/WebInspectorUI/UserInterface/Base/DebuggableType.js. |
| * UserInterface/Protocol/Connection.js: |
| * UserInterface/Protocol/InspectorBackend.js: |
| |
| * UserInterface/Protocol/ApplicationCacheObserver.js: |
| * UserInterface/Protocol/CPUProfilerObserver.js: |
| * UserInterface/Protocol/CSSObserver.js: |
| * UserInterface/Protocol/CanvasObserver.js: |
| * UserInterface/Protocol/ConsoleObserver.js: |
| * UserInterface/Protocol/DOMObserver.js: |
| * UserInterface/Protocol/DOMStorageObserver.js: |
| * UserInterface/Protocol/DatabaseObserver.js: |
| * UserInterface/Protocol/DebuggerObserver.js: |
| * UserInterface/Protocol/HeapObserver.js: |
| * UserInterface/Protocol/InspectorObserver.js: |
| * UserInterface/Protocol/LayerTreeObserver.js: |
| * UserInterface/Protocol/MemoryObserver.js: |
| * UserInterface/Protocol/NetworkObserver.js: |
| * UserInterface/Protocol/PageObserver.js: |
| * UserInterface/Protocol/RuntimeObserver.js: |
| * UserInterface/Protocol/ScriptProfilerObserver.js: |
| * UserInterface/Protocol/TargetObserver.js: |
| * UserInterface/Protocol/TimelineObserver.js: |
| * UserInterface/Protocol/WorkerObserver.js: |
| All observers now extend from `InspectorBackend.Dispatcher` and have a separate instance for |
| each `InspectorBackend.Agent`, each having their own `_target`. |
| |
| * UserInterface/Protocol/Target.js: |
| * UserInterface/Protocol/DirectBackendTarget.js: |
| * UserInterface/Protocol/JavaScriptContextTarget.js: Removed. |
| * UserInterface/Protocol/MultiplexingBackendTarget.js: |
| * UserInterface/Protocol/PageTarget.js: |
| * UserInterface/Protocol/WorkerTarget.js: |
| Agents are now created per-target instead of copied from the "global" list. This means that |
| agents can have a different set of commands/events depending on the associated target. |
| |
| * UserInterface/Base/Main.js: |
| * UserInterface/Base/Utilities.js: |
| * UserInterface/Controllers/AppController.js: |
| * UserInterface/Controllers/AppControllerBase.js: |
| * UserInterface/Controllers/ApplicationCacheManager.js: |
| * UserInterface/Controllers/AuditManager.js: |
| * UserInterface/Controllers/BreakpointPopoverController.js: |
| * UserInterface/Controllers/CSSManager.js: |
| * UserInterface/Controllers/CanvasManager.js: |
| * UserInterface/Controllers/ConsoleManager.js: |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| * UserInterface/Controllers/DOMManager.js: |
| * UserInterface/Controllers/DOMStorageManager.js: |
| * UserInterface/Controllers/DatabaseManager.js: |
| * UserInterface/Controllers/DebuggerManager.js: |
| * UserInterface/Controllers/HeapManager.js: |
| * UserInterface/Controllers/IndexedDBManager.js: |
| * UserInterface/Controllers/JavaScriptLogViewController.js: |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| * UserInterface/Controllers/LayerTreeManager.js: |
| * UserInterface/Controllers/MemoryManager.js: |
| * UserInterface/Controllers/NetworkManager.js: |
| * UserInterface/Controllers/RuntimeManager.js: |
| * UserInterface/Controllers/TargetManager.js: |
| * UserInterface/Controllers/TimelineManager.js: |
| * UserInterface/Controllers/WorkerManager.js: |
| * UserInterface/Main.html: |
| * UserInterface/Models/AuditTestBase.js: |
| * UserInterface/Models/AuditTestCase.js: |
| * UserInterface/Models/AuditTestCaseResult.js: |
| * UserInterface/Models/CPUInstrument.js: |
| * UserInterface/Models/CPUTimelineRecord.js: |
| * UserInterface/Models/CSSCompletions.js: |
| * UserInterface/Models/CSSStyleSheet.js: |
| * UserInterface/Models/Canvas.js: |
| * UserInterface/Models/DOMNode.js: |
| * UserInterface/Models/DOMNodeStyles.js: |
| * UserInterface/Models/DOMStorageObject.js: |
| * UserInterface/Models/DOMTree.js: |
| * UserInterface/Models/DatabaseObject.js: |
| * UserInterface/Models/FPSInstrument.js: |
| * UserInterface/Models/GarbageCollection.js: |
| * UserInterface/Models/HeapAllocationsInstrument.js: |
| * UserInterface/Models/Instrument.js: |
| * UserInterface/Models/MediaInstrument.js: |
| * UserInterface/Models/MemoryInstrument.js: |
| * UserInterface/Models/MemoryPressureEvent.js: |
| * UserInterface/Models/MemoryTimelineRecord.js: |
| * UserInterface/Models/Recording.js: |
| * UserInterface/Models/Resource.js: |
| * UserInterface/Models/ScriptInstrument.js: |
| * UserInterface/Models/ScriptSyntaxTree.js: |
| * UserInterface/Models/ScriptTimelineRecord.js: |
| * UserInterface/Models/ShaderProgram.js: |
| * UserInterface/Models/SourceMapResource.js: |
| * UserInterface/Models/TimelineRecording.js: |
| * UserInterface/Protocol/RemoteObject.js: |
| * UserInterface/Test.html: |
| * UserInterface/Test/FrontendTestHarness.js: |
| * UserInterface/Test/Test.js: |
| * UserInterface/Test/TestAppController.js: |
| * UserInterface/Views/AuditNavigationSidebarPanel.js: |
| * UserInterface/Views/AuditTabContentView.js: |
| * UserInterface/Views/CanvasTabContentView.js: |
| * UserInterface/Views/ContextMenuUtilities.js: |
| * UserInterface/Views/CookieStorageContentView.js: |
| * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: |
| * UserInterface/Views/DOMTreeContentView.js: |
| * UserInterface/Views/ElementsTabContentView.js: |
| * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js: |
| * UserInterface/Views/Layers3DContentView.js: |
| * UserInterface/Views/LayersTabContentView.js: |
| * UserInterface/Views/LayoutTimelineView.js: |
| * UserInterface/Views/LogContentView.js: |
| * UserInterface/Views/NetworkTabContentView.js: |
| * UserInterface/Views/NetworkTableContentView.js: |
| * UserInterface/Views/NetworkTimelineView.js: |
| * UserInterface/Views/ObjectTreeView.js: |
| * UserInterface/Views/QuickConsole.js: |
| * UserInterface/Views/ResourceDetailsSidebarPanel.js: |
| * UserInterface/Views/ScriptClusterTimelineView.js: |
| * UserInterface/Views/ScriptDetailsTimelineView.js: |
| * UserInterface/Views/ScriptTreeElement.js: |
| * UserInterface/Views/SearchSidebarPanel.js: |
| * UserInterface/Views/SearchTabContentView.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| * UserInterface/Views/StorageTabContentView.js: |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| * UserInterface/Views/TimelineTabContentView.js: |
| * UserInterface/Views/Toolbar.js: |
| * UserInterface/Views/WebSocketContentView.js: |
| * UserInterface/Views/WorkerTreeElement.js: |
| Replace all instances of `window.DomainAgent` with `target.DomainAgent`, where `target` is |
| either derived from an associated model object or `WI.assumingMainTarget()`. |
| Split the `WI.DebuggableType.Web` debuggable type into `WI.DebuggableType.Page` (WebCore::Page) |
| and `WI.DebuggableType.WebPage` (WebKit::WebPageProxy). |
| |
| * UserInterface/Protocol/Legacy/*: |
| * Versions/*: |
| Update protocol files for older versions of iOS. |
| |
| * .eslintrc: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: prevent source mapped resources from being blackboxed |
| https://bugs.webkit.org/show_bug.cgi?id=203007 |
| |
| Reviewed by Matt Baker. |
| |
| Since source mapped resources are entirely a frontend concept, it doesn't make sense to |
| allow them to be blackboxed. |
| |
| * UserInterface/Models/SourceMapResource.js: |
| (WI.SourceMapResource.prototype.get supportsScriptBlackboxing): |
| |
| 2019-10-15 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Convert CSSRule selectorText setter to setSelectorText method because it's asynchronous |
| https://bugs.webkit.org/show_bug.cgi?id=202840 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Models/CSSRule.js: |
| (WI.CSSRule.prototype.setSelectorText): |
| (WI.CSSRule.prototype._selectorRejected): |
| (WI.CSSRule.prototype._selectorResolved): |
| Remove WI.CSSRule.Event.SelectorChanged event and since it wasn't used anywhere else. |
| |
| (WI.CSSRule): |
| (WI.CSSRule.prototype.set selectorText): Deleted. |
| (WI.CSSRule.prototype.setSelectorText): Added. |
| (WI.CSSRule.prototype._selectorRejected): Deleted. |
| (WI.CSSRule.Event.SelectorChanged): Deleted. |
| Remove `{valid: ...}` object since it wasn't used. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidCommit): |
| |
| 2019-10-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Local Resource Overrides: automatically create an image/font local override when dragging content over a non-overridden resource |
| https://bugs.webkit.org/show_bug.cgi?id=202957 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Since non-text resources aren't editable, some users of local resource overrides kept trying |
| to drag image/font files over the actual resource content view (not the local override), |
| which didn't do anything. Rather than having to click "Create Local Override" and then do a |
| drag/drop, we should support the "shorter" workflow of drag/drop over the actual resource. |
| |
| * UserInterface/Base/FileUtilities.js: |
| (WI.FileUtilities.import): Added. |
| (WI.FileUtilities.importText): |
| (WI.FileUtilities.importJSON): |
| (WI.FileUtilities.importData): Added. |
| (WI.FileUtilities.async readText): |
| (WI.FileUtilities.async readJSON): |
| (WI.FileUtilities.async readData): Added. |
| (WI.FileUtilities.async _read): Added. |
| Create utility functions for importing non-text content as data. |
| Drive-by: fix a bug in the `import*` functions where the `callback` would be bound on the |
| first call, meaning that since the `<input>` was cached for all calls, we'd only |
| ever use the first `callback` in subsequent calls. |
| |
| * UserInterface/Views/DropZoneView.js: |
| (WI.DropZoneView): |
| (WI.DropZoneView.prototype.set text): Added. |
| Support the text content of the drop zone changing after it's initialized. |
| |
| * UserInterface/Views/FontResourceContentView.js: |
| (WI.FontResourceContentView): |
| (WI.FontResourceContentView.prototype.contentAvailable): |
| (WI.FontResourceContentView.prototype.dropZoneHandleDragEnter): Added. |
| (WI.FontResourceContentView.prototype.dropZoneHandleDrop): |
| (WI.FontResourceContentView.prototype._handleLocalResourceContentDidChange): Added. |
| * UserInterface/Views/ImageResourceContentView.js: |
| (WI.ImageResourceContentView): |
| (WI.ImageResourceContentView.prototype.contentAvailable): |
| (WI.ImageResourceContentView.prototype.dropZoneHandleDragEnter): Added. |
| (WI.ImageResourceContentView.prototype.dropZoneHandleDrop): |
| (WI.ImageResourceContentView.prototype._handleLocalResourceContentDidChange): Added. |
| Support drag/drop on non-override image/font content views, which will create/update the |
| local resource override for that resource. |
| |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView): |
| (WI.ResourceContentView.prototype.get navigationItems): |
| (WI.ResourceContentView.prototype._handleImportLocalResourceOverride): Added. |
| When viewing a local resource override, add an "Import" navigation item for non-drag/drop |
| updating of the contents of the local resource override. This is also exposed for text-based |
| local resource overrides, since drag/drop inserts the contents of the file (if it's text), |
| which attempts to determine whether the dropped file is text or data based on the MIME type. |
| |
| * UserInterface/Views/AuditNavigationSidebarPanel.js: |
| (WI.AuditNavigationSidebarPanel.prototype._handleImportButtonNavigationItemClicked): |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView.prototype._handleImportButtonNavigationItemClicked): |
| * UserInterface/Views/CanvasSidebarPanel.js: |
| (WI.CanvasSidebarPanel.prototype._handleImportButtonNavigationItemClicked): |
| * UserInterface/Views/HeapAllocationsTimelineView.js: |
| (WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked): |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype._importHAR): |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| (WI.TimelineRecordingContentView.prototype._importButtonNavigationItemClicked): |
| Explicitly allow multiple files to be imported at the same time. |
| |
| * UserInterface/Base/BlobUtilities.js: |
| (WI.BlobUtilities.blobForContent): |
| Drive-by: remove extra `base64Encoded` argument when calling `decodeBase64ToBlob`, which |
| caused SVG-based image local resource overrides to show a broken image when |
| closing and reopening Web Inspector. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-14 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r250991): Sources: local resource overrides should be enabled when not in tests |
| https://bugs.webkit.org/show_bug.cgi?id=202944 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager): |
| |
| 2019-10-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: support pattern blackboxing |
| https://bugs.webkit.org/show_bug.cgi?id=198855 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Allow scripts to be blackboxed based on URL patterns (in addition to individual URLs) which |
| can be extremely useful when trying to step through unminified library/framework code. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| (WI.DebuggerManager.prototype.initializeTarget): |
| (WI.DebuggerManager.prototype.blackboxTypeForSourceCode): Added. |
| (WI.DebuggerManager.prototype.get blackboxPatterns): Added. |
| (WI.DebuggerManager.prototype.setShouldBlackboxScript): |
| (WI.DebuggerManager.prototype.setShouldBlackboxPattern): Added. |
| (WI.DebuggerManager.prototype.isScriptBlackboxed): Deleted. |
| Provide a separate path for setting URL pattern blackboxes, rather than an exact/given URL. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView): |
| (WI.SettingsTabContentView.prototype.selectBlackboxPattern): Added. |
| (WI.SettingsTabContentView.prototype.initialLayout): |
| (WI.SettingsTabContentView.prototype._createSourcesSettingsView): |
| * UserInterface/Views/BlackboxSettingsView.js: Added. |
| (WI.BlackboxSettingsView): |
| (WI.BlackboxSettingsView.prototype.selectBlackboxPattern): |
| (WI.BlackboxSettingsView.prototype.initialLayout): |
| (WI.BlackboxSettingsView.prototype._addRow): |
| * UserInterface/Views/BlackboxSettingsView.css: Added. |
| (.settings-view.blackbox > :matches(p, table)): |
| (.settings-view.blackbox > p): |
| (.settings-view.blackbox > * + p): |
| (.settings-view.blackbox > p:last-child): |
| (.settings-view.blackbox > p > .toggle-script-blackbox): |
| (.settings-view.blackbox > table): |
| (.settings-view.blackbox > table > thead th): |
| (.settings-view.blackbox > table > tbody td): |
| (.settings-view.blackbox > table > tbody td:not(.remove-blackbox)): |
| (.settings-view.blackbox > table :matches(th, td).url): |
| (.settings-view.blackbox > table > tbody td.url > .CodeMirror): |
| (.settings-view.blackbox > table :matches(th, td):matches(.case-sensitive, .remove-blackbox)): |
| (.settings-view.blackbox > table > tbody > tr:not(:hover) > td.remove-blackbox): |
| (.settings-view.blackbox > table > tbody td.remove-blackbox > .remove-blackbox-button): |
| Add a "Blackbox" pane that contains an editable table of pattern blackboxes, each having its |
| own row (code mirror for the URL regular expression and a checkbox for case sensitivity). |
| |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement.prototype.updateStatus): |
| (WI.SourceCodeTreeElement.prototype._updateSourceCode): |
| (WI.SourceCodeTreeElement.prototype._updateToggleBlackboxImageElementState): |
| (WI.SourceCodeTreeElement.prototype._handleToggleBlackboxedImageElementClicked): |
| * UserInterface/Views/SourceCodeTreeElement.css: |
| (.tree-outline .item .status > .toggle-script-blackbox, .tree-outline:focus .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Added. |
| (.tree-outline .item .status > .toggle-script-blackbox.pattern-blackboxed): Added. |
| (.tree-outline .item .status > .toggle-script-blackbox): Added. |
| (.tree-outline .item .status > .toggle-script-blackbox:not(.pattern-blackboxed)): Added. |
| (.tree-outline .item .status > .toggle-script-blackbox:not(.url-blackboxed, .pattern-blackboxed)): Added. |
| (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackbox, .tree-outline .item:not(:hover) .status > .toggle-script-blackbox:not(.pattern-blackboxed, .url-blackboxed)): Added. |
| (@media (prefers-color-scheme: dark) .tree-outline .item .status > .toggle-script-blackbox): Added. |
| (@media (prefers-color-scheme: dark) .tree-outline .item .status > .toggle-script-blackbox.pattern-blackboxed): Added. |
| (@media (prefers-color-scheme: dark) .tree-outline .item .status > .toggle-script-blackbox:not(.pattern-blackboxed)): Added. |
| (.tree-outline .item .status > .toggle-script-blackboxed): Deleted. |
| (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover) .status > .toggle-script-blackboxed:not(.blackboxed)): Deleted. |
| (.tree-outline:focus .item.selected .status > .toggle-script-blackboxed): Deleted. |
| (.tree-outline .item .status > .toggle-script-blackboxed.blackboxed): Deleted. |
| (@media (prefers-color-scheme: dark) .tree-outline .item .status > .toggle-script-blackboxed): Deleted. |
| * UserInterface/Views/ShaderProgramTreeElement.css: |
| (.tree-outline .item.shader-program .status > img): |
| (.tree-outline .item.shader-program:not(:hover, .disabled) .status > img): Added. |
| (.tree-outline .item.shader-program:not(.disabled) .status > img): Added. |
| (@media (prefers-color-scheme: dark) .tree-outline .item.shader-program .status > img): |
| (.tree-outline .item.shader-program:not(:hover, .selected, .disabled) .status > img): Deleted. |
| (.tree-outline:focus .item.shader-program.selected .status > img): Deleted. |
| (.tree-outline .item.shader-program.disabled .status > img): Deleted. |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| * UserInterface/Images/Hide.svg: |
| Use a slightly different style for the blackbox icon if the source code's URL matches a |
| blackbox pattern. Clicking on the blackbox icon in this state will show the Settings Tab. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI._handleSettingsKeyboardShortcut): Added. |
| (WI.showSettingsTab): Added. |
| (WI._showSettingsTab): Deleted. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Computed: show shorthand properties in addition to longhand ones |
| https://bugs.webkit.org/show_bug.cgi?id=200554 |
| |
| Reviewed by Matt Baker. |
| |
| Replace the "Show All [ ]" checkbox header option in the "Properties" section with a filter |
| icon that controls both "Show All" and "Prefer Shorthands", the latter of which will cause |
| any longhand properties to be hidden and their respective shorthands to be shown. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty): |
| (WI.CSSProperty.prototype.update): |
| (WI.CSSProperty.prototype.get isVariable): Added. |
| (WI.CSSProperty.prototype.get isShorthand): Added. |
| (WI.CSSProperty.prototype.get shorthandPropertyNames): Added. |
| (WI.CSSProperty.prototype.get variable): Deleted. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.js: |
| (WI.ComputedStyleDetailsPanel): |
| (WI.ComputedStyleDetailsPanel.prototype.applyFilter): |
| (WI.ComputedStyleDetailsPanel.prototype.initialLayout): |
| (WI.ComputedStyleDetailsPanel.prototype._computedStyleShowAllCheckboxValueChanged): Deleted. |
| * UserInterface/Views/ComputedStyleDetailsPanel.css: |
| (.sidebar > .panel.details.css-style > .content > .computed > .details-section): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed > .details-section > .content): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .spreadsheet-style-declaration-editor): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .property): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .property .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .property:not(:hover) .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables)): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property .go-to-arrow): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property:not(:hover) .go-to-arrow): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) > .content): Deleted. |
| |
| * UserInterface/Views/ComputedStyleSection.js: |
| (WI.ComputedStyleSection): |
| (WI.ComputedStyleSection.prototype.set showsShorthandsInsteadOfLonghands): Added. |
| (WI.ComputedStyleSection.prototype.get propertiesToRender): |
| (WI.ComputedStyleSection.prototype.set propertyVisibilityMode): Deleted. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.update): |
| (WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-10 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Local Resource Overrides: UI for overriding image and font resource content |
| https://bugs.webkit.org/show_bug.cgi?id=202016 |
| <rdar://problem/55541475> |
| |
| Reviewed by Devin Rousso. |
| |
| Extend SourceCodeRevision to be a (content, base64Encoded, mimeType) tuple and |
| make clients update the revision content more explicitly (`updateRevisionContent`). |
| This also includes `blobContent` as a more explicit way to get the content as |
| a Blob, which may not always be desired. |
| |
| Switch LocalResource use the originalRevision / currentRevision instead of |
| keeping its own localContent / localContentIsBase64Encoded properties. |
| |
| Introduce a `DropZoneView` to simplify handling of presenting a drop zone |
| over a specific element. And use it for the ImageResourceContentView for local |
| resource overrides to accept new content. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Main.html: |
| New strings and resources. |
| |
| * .eslintrc: |
| * UserInterface/Base/BlobUtilities.js: Added. |
| (WI.BlobUtilities.blobForContent): |
| (WI.BlobUtilities.decodeBase64ToBlob): |
| (WI.BlobUtilities.textToBlob): |
| (WI.BlobUtilities.blobAsText): |
| (WI.BlobUtilities): |
| * UserInterface/Base/FileUtilities.js: |
| (WI.FileUtilities.async.readDataURL): |
| (WI.FileUtilities): |
| * UserInterface/Base/MIMETypeUtilities.js: |
| (WI.fileExtensionForFilename): |
| (WI.fileExtensionForURL): |
| * UserInterface/Base/Utilities.js: |
| Move around or introduce some minor utilities. |
| |
| * UserInterface/Models/SourceCodeRevision.js: |
| (WI.SourceCodeRevision): |
| (WI.SourceCodeRevision.prototype.get sourceCode): |
| (WI.SourceCodeRevision.prototype.get content): |
| (WI.SourceCodeRevision.prototype.get base64Encoded): |
| (WI.SourceCodeRevision.prototype.get mimeType): |
| (WI.SourceCodeRevision.prototype.get blobContent): |
| (WI.SourceCodeRevision.prototype.updateRevisionContent): |
| (WI.SourceCodeRevision.prototype.copy): |
| (WI.SourceCodeRevision.prototype.set content): Deleted. |
| Data is now a (content, base64Encoded, mimeType) tuple. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.responseIntercepted): |
| (WI.NetworkManager.prototype._handleResourceContentDidChange): |
| (WI.NetworkManager.prototype._persistLocalResourceOverrideSoonAfterContentChange): Deleted. |
| This is now a unified resource content change path without anything special for |
| local resource overrides. |
| |
| * UserInterface/Models/LocalResource.js: |
| (WI.LocalResource.prototype.toJSON): |
| (WI.LocalResource.prototype.requestContentFromBackend): |
| (WI.LocalResource.prototype.handleCurrentRevisionContentChange): |
| (WI.LocalResource): |
| (WI.LocalResource.prototype.get localContent): Deleted. |
| (WI.LocalResource.prototype.get localContentIsBase64Encoded): Deleted. |
| (WI.LocalResource.prototype.hasContent): Deleted. |
| (WI.LocalResource.prototype.setContent): Deleted. |
| (WI.LocalResource.prototype.updateOverrideContent): Deleted. |
| Use originalRevision / currentRevision as appropriate. |
| |
| * UserInterface/Views/DropZoneView.css: Added. |
| (.drop-zone): |
| (.drop-zone.visible): |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/DropZoneView.js: Added. |
| (WI.DropZoneView): |
| (WI.DropZoneView.prototype.get delegate): |
| (WI.DropZoneView.prototype.get targetElement): |
| (WI.DropZoneView.prototype.set targetElement): |
| (WI.DropZoneView.prototype.initialLayout): |
| (WI.DropZoneView.prototype._startActiveDrag): |
| (WI.DropZoneView.prototype._stopActiveDrag): |
| (WI.DropZoneView.prototype._handleDragEnter): |
| (WI.DropZoneView.prototype._handleDragLeave): |
| (WI.DropZoneView.prototype._handleDragOver): |
| (WI.DropZoneView.prototype._handleDrop): |
| Simplified handling of a drop zone. |
| |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView.prototype.removeLoadingIndicator): |
| More safely remove children and subviews. |
| |
| (WI.ResourceContentView): |
| (WI.ResourceContentView.prototype.get resource): |
| (WI.ResourceContentView.prototype.get navigationItems): |
| (WI.ResourceContentView.prototype.localResourceOverrideInitialContent): |
| (WI.ResourceContentView.prototype.closed): |
| (WI.ResourceContentView.prototype.removeLoadingIndicator): |
| (WI.ResourceContentView.prototype._contentAvailable): |
| (WI.ResourceContentView.prototype._issueWasAdded): |
| (WI.ResourceContentView.prototype.async._handleCreateLocalResourceOverride): |
| (WI.ResourceContentView.prototype._handleRemoveLocalResourceOverride): |
| (WI.ResourceContentView.prototype._handleLocalResourceOverrideChanged): |
| (WI.ResourceContentView.prototype._mouseWasClicked): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView): |
| (WI.TextResourceContentView.prototype.get navigationItems): |
| (WI.TextResourceContentView.prototype.localResourceOverrideInitialContent): |
| (WI.TextResourceContentView.prototype._contentWillPopulate): |
| (WI.TextResourceContentView.prototype._contentDidPopulate): |
| (WI.TextResourceContentView.prototype._textEditorContentDidChange): |
| (WI.TextResourceContentView.prototype._shouldBeEditable): |
| (WI.TextResourceContentView.prototype.async._handleCreateLocalResourceOverride): Deleted. |
| (WI.TextResourceContentView.prototype._handleRemoveLocalResourceOverride): Deleted. |
| (WI.TextResourceContentView.prototype._handleLocalResourceOverrideChanged): Deleted. |
| Extract generalized local resource override properties into the ResourceContentView base class. |
| |
| * UserInterface/Views/FontResourceContentView.css: |
| (.content-view.resource.font): |
| (.content-view.resource.font > .drop-zone): |
| (.content-view.resource.font > .preview-container): |
| (.content-view.resource.font .preview): |
| * UserInterface/Views/FontResourceContentView.js: |
| (WI.FontResourceContentView): |
| (WI.FontResourceContentView.prototype.contentAvailable): |
| (WI.FontResourceContentView.prototype.shown): |
| (WI.FontResourceContentView.prototype.hidden): |
| (WI.FontResourceContentView.prototype.closed): |
| (WI.FontResourceContentView.prototype.layout): |
| (WI.FontResourceContentView.prototype._updatePreviewElement.createMetricElement): |
| (WI.FontResourceContentView.prototype._updatePreviewElement): |
| (WI.FontResourceContentView.prototype.dropZoneShouldAppearForDragEvent): |
| (WI.FontResourceContentView.prototype.dropZoneHandleDrop): |
| Create a drop zone that will update the font local resource override content. |
| |
| * UserInterface/Views/ImageResourceContentView.css: |
| (.content-view.resource.image): |
| (.content-view.resource.image > .drop-zone): |
| (.content-view.resource.image > .img-container): |
| (.content-view.resource.image img): |
| * UserInterface/Views/ImageResourceContentView.js: |
| (WI.ImageResourceContentView): |
| (WI.ImageResourceContentView.prototype.get navigationItems): |
| (WI.ImageResourceContentView.prototype.contentAvailable): |
| (WI.ImageResourceContentView.prototype.closed): |
| (WI.ImageResourceContentView.prototype.dropZoneShouldAppearForDragEvent): |
| (WI.ImageResourceContentView.prototype.dropZoneHandleDrop): |
| Create a drop zone that will update the image local resource override content. |
| |
| * UserInterface/Models/Script.js: |
| (WI.Script.prototype.get mimeType): |
| Seems like this should have a default value given there may not be a resource. |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: |
| (WI.LocalResourceOverridePopover.prototype.show): |
| Better handling here, since the utilities expects a number not a string. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.createObjectURL): |
| * UserInterface/Views/LocalResourceOverrideTreeElement.js: |
| (WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover): |
| Use currentRevision more appropriately. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype._processContent): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype._textEditorContentDidChange): |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound): |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges): |
| (WI.CSSManager.prototype._resourceContentDidChange): |
| (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent): |
| Update revision content more explicitly. |
| |
| 2019-10-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: enable tab by default |
| https://bugs.webkit.org/show_bug.cgi?id=202341 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| The experimental Sources Tab has progressed enough that it can be enabled by default. There |
| are some new features that are only available in the Sources Tab that are also ready to be |
| used (e.g. local resource overrides). |
| |
| * UserInterface/Main.html: |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.showResources): |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager): |
| (WI.NetworkManager.supportsLocalResourceOverrides): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForURL): |
| * UserInterface/Views/DefaultDashboardView.js: |
| (WI.DefaultDashboardView.prototype._resourcesItemWasClicked): |
| * UserInterface/Views/RecordingActionTreeElement.js: |
| (WI.RecordingActionTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/SearchResultTreeElement.js: |
| (WI.SearchResultTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._populateIconElementContextMenu): |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView.isTabAllowed): Deleted. |
| * UserInterface/Views/DebuggerSidebarPanel.css: Removed. |
| * UserInterface/Views/DebuggerSidebarPanel.js: Removed. |
| * UserInterface/Views/DebuggerTabContentView.js: Removed. |
| * UserInterface/Views/ResourceSidebarPanel.css: Removed. |
| * UserInterface/Views/ResourceSidebarPanel.js: Removed. |
| * UserInterface/Views/ResourcesTabContentView.js: Removed. |
| Remove the experimental setting, as well as code for the Resources Tab and the Debugger Tab. |
| |
| * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj: |
| * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters: |
| |
| 2019-10-09 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r250948): Web Inspector: Styles: CSS selector becomes gray after stopping editing without modifying it |
| https://bugs.webkit.org/show_bug.cgi?id=202781 |
| |
| Reviewed by Matt Baker. |
| |
| When not editing, CSS selectors that match the selected node are highlighted (black in the light mode, |
| white in the dark mode). When editing starts, span elements that provide highlighting get removed. |
| When editing stops, active selectors should get highlighted. |
| |
| r250948 stopped calling `_renderSelector` when selector wasn't modified. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidCommit): |
| * UserInterface/Views/SpreadsheetSelectorField.js: |
| (WI.SpreadsheetSelectorField.prototype._handleBlur): |
| |
| 2019-10-09 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Modifying CSS selector by pressing Enter or Tab causes 2 CSS.setRuleSelector backend calls |
| https://bugs.webkit.org/show_bug.cgi?id=202769 |
| <rdar://problem/56132166> |
| |
| Reviewed by Matt Baker. |
| |
| Previously, spreadsheetSelectorFieldDidChange would get called twice: |
| 1. On Enter or Tab key press. |
| 2. On blur event. |
| |
| With this patch, it only gets called on blur event. |
| |
| * UserInterface/Models/CSSRule.js: |
| (WI.CSSRule.prototype.set selectorText): |
| Remove dead code. Calling `_selectorResolved(true)` would cause an uncaught exception. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange): Removed. |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidCommit): Added. |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldWillNavigate): Added. |
| Split spreadsheetSelectorFieldDidChange into spreadsheetSelectorFieldDidCommit and spreadsheetSelectorFieldWillNavigate. |
| |
| * UserInterface/Views/SpreadsheetSelectorField.js: |
| (WI.SpreadsheetSelectorField): |
| (WI.SpreadsheetSelectorField.prototype.startEditing): |
| (WI.SpreadsheetSelectorField.prototype.stopEditing): |
| (WI.SpreadsheetSelectorField.prototype._handleBlur): |
| (WI.SpreadsheetSelectorField.prototype._handleKeyDown): |
| Add `_valueBeforeEditing` to check if the value was modified before the blur event. |
| Similar logic exists in SpreadsheetTextField. |
| |
| 2019-10-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: modifications to shader modules can be shared between vertex/fragment shaders |
| https://bugs.webkit.org/show_bug.cgi?id=202031 |
| |
| Reviewed by Dean Jackson. |
| |
| If the vertex and fragment shaders share the same source module for a WebGPU shader pipeline, |
| only display a single editable content view for that shader pipeline in the Canvas Tab. |
| |
| * UserInterface/Models/ShaderProgram.js: |
| (WI.ShaderProgram): |
| (WI.ShaderProgram.prototype.get sharesVertexFragmentShader): Added. |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.programCreated): |
| * UserInterface/Protocol/CanvasObserver.js: |
| (WI.CanvasObserver.prototype.programCreated): |
| |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView): |
| (WI.ShaderProgramContentView.prototype.shown): |
| (WI.ShaderProgramContentView.prototype.hidden): |
| (WI.ShaderProgramContentView.prototype._refreshContent): |
| * UserInterface/Views/ShaderProgramContentView.css: |
| (.content-view.shader-program > .shader.compute, .content-view.shader-program > .shader.vertex.shares-vertex-fragment-shader): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.vertex:not(.shares-vertex-fragment-shader), body[dir=rtl] .content-view.shader-program > .shader.fragment): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.fragment, body[dir=rtl] .content-view.shader-program > .shader.vertex:not(.shares-vertex-fragment-shader)): Added. |
| (.content-view.shader-program > .shader.compute): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .shader.vertex, body[dir=rtl] .content-view.shader-program > .shader.fragment): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .shader.fragment, body[dir=rtl] .content-view.shader-program > .shader.vertex): Deleted. |
| |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| Replace the vertex/fragment specific MIME types with a more general "render" MIME type. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-10-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: make it more obvious that the cards in the overview are clickable |
| https://bugs.webkit.org/show_bug.cgi?id=202680 |
| |
| Reviewed by Matt Baker. |
| |
| Add a slight darkening (or lightening when in dark mode) of the background behind the |
| content preview in the overview. |
| |
| * UserInterface/Views/CanvasOverviewContentView.css: |
| (.content-view.canvas-overview .content-view.canvas): |
| (.content-view.canvas-overview .content-view.canvas, .content-view.canvas-overview .content-view.canvas > .preview > img): Added. |
| (.content-view.canvas-overview .content-view.canvas.recording-active > .progress-view, .content-view.canvas-overview .content-view.canvas > .preview): |
| (.content-view.canvas-overview .content-view.canvas.recording-active > .progress-view:hover, .content-view.canvas-overview .content-view.canvas > .preview:hover): Added. |
| (@media (prefers-color-scheme: dark) .content-view.canvas-overview .content-view.canvas, .content-view.canvas-overview .content-view.canvas > .preview > img): Added. |
| (@media (prefers-color-scheme: dark) .content-view.canvas-overview .content-view.canvas.recording-active > .progress-view:hover, .content-view.canvas-overview .content-view.canvas > .preview:hover): Added. |
| |
| 2019-10-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: don't show an empty preview for WebGPU devices |
| https://bugs.webkit.org/show_bug.cgi?id=202679 |
| |
| Reviewed by Matt Baker. |
| |
| `HTMLCanvasElement.prototype.toDataURL` hasn't been hooked up for `GPUCanvasContext` yet, so |
| calling `Canvas.requestContent` with a `WebGPUDevice` won't give us any good results. |
| |
| As such, the Web Inspector frontend should show something slightly more actionable, such as |
| a more generic non-error "No Preview Available" message. |
| |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.supportsRequestContentForContextType): Added. |
| (WI.Canvas.prototype.requestContent): |
| |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView.prototype._showError): |
| |
| 2019-10-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: unable to click on overview path component when jumping directly to a shader |
| https://bugs.webkit.org/show_bug.cgi?id=202682 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/CanvasTabContentView.js: |
| (WI.CanvasTabContentView): |
| The `WI.TreeOutline` used for the hierarchical path components is actually held by the |
| Canvas Tab, not the Canvas navigation sidebar panel. As a result, if the hierarchical path |
| is changed by anything other than the hierarchical path itself (e.g. a selection in the |
| navigation sidebar, or clicking on the [gl] shader or [o_o] recording buttons in the |
| overview preview tile), the selection state of the `WI.TreeOutline` can get out of sync. In |
| this case, the `WI.TreeOutline` still thinks that "Overview" is selected because the change |
| in content view was triggered by something unrelated to the `WI.TreeOutline` (see above for |
| specific examples). The simple solution is to just allow repeat selection, as this is only |
| an issue here because the canvas navigation sidebar isn't always visible, as well as to |
| allow the "Overview" to be listed as the root path item. |
| |
| * UserInterface/Views/CanvasSidebarPanel.js: |
| (WI.CanvasSidebarPanel.prototype.updateRepresentedObjects): |
| If a `WI.Canvas` is one of the current represented objects, attempt to select it, even if |
| it matches the currently shown `WI.Canvas`. This covers the situation where the `WI.Canvas` |
| is selected via its hierarchical path component, ensuring that the selected item in the |
| navigation sidebar always matches the hierarchical path components. |
| |
| 2019-10-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: the navigation sidebar icon isn't inverted in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=202681 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/CanvasSidebarPanel.css: |
| (@media (prefers-color-scheme: dark) .sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas .icon): Added. |
| |
| * UserInterface/Views/CanvasTabContentView.css: |
| (@media (prefers-color-scheme: dark) .content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon): |
| Drive-by: slightly darken the Canvas Overview hierarchical path component icon so it better |
| matches the colors of the nearby canvas icons. |
| |
| 2019-10-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: enable the image transparency grid by default and create a checkbox for it |
| https://bugs.webkit.org/show_bug.cgi?id=202678 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Base/Setting.js: |
| Enable the "Show transparency grid" setting by default. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createSourcesSettingsView): |
| Add a checkbox for "Show transparency grid" in the "Sources" pane. |
| |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView): |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView): |
| * UserInterface/Views/ImageResourceContentView.js: |
| (WI.ImageResourceContentView): |
| * UserInterface/Views/RecordingContentView.js: |
| (WI.RecordingContentView): |
| * UserInterface/Views/ResourceCollectionContentView.js: |
| (WI.ResourceCollectionContentView): |
| * Localizations/en.lproj/localizedStrings.js: |
| Unify the tooltip string for all of the "Show transparency grid" navigation items. |
| |
| 2019-10-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: don't allow blackboxing of scripts that aren't finished loading or failed to load |
| https://bugs.webkit.org/show_bug.cgi?id=202376 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.get supportsScriptBlackboxing): |
| |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement.prototype.updateStatus): |
| |
| 2019-10-02 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Styles: for rules that don't match selected node, property values always show as invalid |
| https://bugs.webkit.org/show_bug.cgi?id=201571 |
| |
| Reviewed by Matt Baker. |
| |
| The gist of the bug: |
| - WI.CSSProperty is instantiated with `valid` false. |
| - CSSAgent.getMatchedStylesForNode never updates WI.CSSProperty instances because |
| the edited style does not in fact match the selected DOM node. A valid CSS property |
| is shown as invalid. |
| |
| To resolve this, WI.CSSProperty instances are now updated after editing |
| in the callback of `CSSAgent.setStyleText`. |
| |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype.changeStyleText): |
| (WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload): |
| Don't store `style` in `this._stylesMap` of WI.DOMNodeStyles when the style doesn't match the selected node. |
| |
| 2019-10-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r250149): changing CSS via the Styles details sidebar panel doesn't update the associated resource |
| https://bugs.webkit.org/show_bug.cgi?id=202446 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When updating the text of a `WI.CSSProperty` (or the selector of a `WI.CSSRule`) is updated, |
| Web Inspector will update the backend style sheet, which will notify the `WI.CSSManager` of |
| the change, without ever going through the associated `WI.SourceCode`. `WI.CSSManager` then |
| updates the content of the `WI.SourceCode` to reflect these changes, but at that point the |
| `WI.SourceCode` hadn't yet "moved" it's `currentRevision` forward of it's `originalRevision` |
| which means it would get overridden the first time the `WI.SourceCode` updates itself. |
| |
| Modify `WI.SourceCode` such that every path to get the `currentRevision` ensures that it is |
| "moved" forward before the `WI.SourceCodeRevision` value is returned. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype.get currentRevision): |
| (WI.SourceCode.prototype.get content): |
| (WI.SourceCode.prototype.revisionContentDidChange): |
| (WI.SourceCode.prototype._initializeCurrentRevisionIfNeeded): Added. |
| (WI.SourceCode.prototype._processContent): |
| |
| 2019-10-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: clicking on a breakpoint changes the path components to not match the script's path |
| https://bugs.webkit.org/show_bug.cgi?id=196450 |
| <rdar://problem/49488100> |
| |
| Reviewed by Matt Baker. |
| |
| When selecting any tree element that isn't in the resources tree outline, attempt to find |
| the corresponding tree element in the resources tree outline and silently select that as |
| well so that the hierarchical path component shows the right breadcrumb trail. |
| |
| If the tree element is for a `WI.Script` which has a corresponding `WI.Resource`, use the |
| `WI.Resource` instead. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): |
| |
| 2019-09-30 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: JS Formatter: unexpected newlines added inside template string expression |
| https://bugs.webkit.org/show_bug.cgi?id=202374 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Wrap every "add newline" with a check to see if the current node is inside a template |
| literal node. If so (and we aren't forcibly adding a newline), prevent the newline from |
| being added. |
| |
| * UserInterface/Workers/Formatter/JSFormatter.js: |
| (JSFormatter.prototype._appendNewline): Added. |
| (JSFormatter.prototype._insertNewlinesBeforeToken): |
| (JSFormatter.prototype._insertComment): |
| (JSFormatter.prototype._insertSameLineTrailingComments): |
| (JSFormatter.prototype._insertCommentsAndNewlines): |
| (JSFormatter.prototype._before): |
| (JSFormatter.prototype._after): |
| (JSFormatter.prototype._handleTokenAtNode): |
| (JSFormatter.prototype._exitNode): |
| (JSFormatter.prototype._afterProgram): |
| |
| 2019-09-30 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: shader type header is white in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=202253 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/ShaderProgramContentView.css: |
| (.content-view.shader-program > .shader > header > .shader-type): |
| (@media (prefers-color-scheme: dark) .content-view.shader-program > .shader > header > .shader-type): Added. |
| (@media (prefers-color-scheme: dark) .content-view.shader-program > .shader > header): Deleted. |
| (.content-view.shader-program > .shader > header > *): Deleted. |
| |
| 2019-09-26 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Include LocalResourceOverrides in the Open Resource dialog |
| https://bugs.webkit.org/show_bug.cgi?id=202023 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype._addScriptsForTarget): |
| Also walk the extraScriptCollection. Some Worker resource loads never |
| fully become resources. |
| |
| (WI.OpenResourceDialog.prototype.didPresentDialog): |
| (WI.OpenResourceDialog.prototype._addLocalResourceOverrides): |
| Include local resource override resources. |
| |
| (WI.OpenResourceDialog.prototype._populateResourceTreeOutline): |
| * Localizations/en.lproj/localizedStrings.js: |
| Include a subtitle for local resource overrides. |
| |
| * UserInterface/Views/OpenResourceDialog.css: |
| (.open-resource-dialog .tree-outline.large .item .titles .subtitle): |
| Improved subtitle styling. |
| |
| 2019-09-25 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: REGRESSION: Elements detail sidebar sometimes starts collapsed |
| https://bugs.webkit.org/show_bug.cgi?id=202057 |
| <rdar://problem/55572345> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ElementsTabContentView.js: |
| (WI.ElementsTabContentView.prototype.get detailsSidebarExpandedByDefault): |
| Default the Elements tab detail sidebar to be shown, not collapsed. |
| |
| * UserInterface/Views/TabContentView.js: |
| (WI.TabContentView): |
| (WI.TabContentView.prototype.get detailsSidebarExpandedByDefault): |
| Allow classes to specify whether or not their detail sidebar should |
| be expanded by default. |
| |
| 2019-09-25 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'WI.showDebugUISetting.addEventListener') |
| https://bugs.webkit.org/show_bug.cgi?id=202220 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype.initialLayout): |
| |
| 2019-09-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: WebGPU compute shaders aren't syntax highlighted |
| https://bugs.webkit.org/show_bug.cgi?id=202030 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| `CodeMirror.defineMIME` expects a "spec" object, which can't just be another MIME type. |
| Instead, get the "spec" of the defined "x-shader/x-vertex" and "x-shader/x-fragment" modes |
| and use that when defining MIMEs for the WebGPU shader pipeline modes. |
| |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView): |
| Get the `contextType` off of the shader's canvas, which is where it actually lives. |
| |
| 2019-09-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: show WebGPU shader pipelines |
| https://bugs.webkit.org/show_bug.cgi?id=201675 |
| <rdar://problem/55543450> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Show WebGPU shader pipelines ("programs") underneath each corresponding WebGPU device. |
| |
| Allow editing of attached shader modules for each WebGPU shader pipeline, but don't allow |
| highlighting/disabling, as WebGPU pipelines don't have those capabilities/concepts yet. |
| |
| * UserInterface/Protocol/CanvasObserver.js: |
| (WI.CanvasObserver.prototype.programCreated): |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.programCreated): |
| |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.prototype.nextShaderProgramDisplayNumberForProgramType): Added. |
| (WI.Canvas.prototype.nextShaderProgramDisplayNumber): Deleted. |
| |
| * UserInterface/Models/ShaderProgram.js: |
| (WI.ShaderProgram): |
| (WI.ShaderProgram.contextTypeSupportsProgramType): Added. |
| (WI.ShaderProgram.programTypeSupportsShaderType): Added. |
| (WI.ShaderProgram.prototype.get programType): Added. |
| (WI.ShaderProgram.prototype.get displayName): |
| (WI.ShaderProgram.prototype.set disabled): |
| (WI.ShaderProgram.prototype.requestShaderSource): |
| (WI.ShaderProgram.prototype.updateShader): |
| (WI.ShaderProgram.prototype.showHighlight): |
| (WI.ShaderProgram.prototype.hideHighlight): |
| (WI.ShaderProgram.prototype.requestVertexShaderSource): Deleted. |
| (WI.ShaderProgram.prototype.requestFragmentShaderSource): Deleted. |
| (WI.ShaderProgram.prototype.updateVertexShader): Deleted. |
| (WI.ShaderProgram.prototype.updateFragmentShader): Deleted. |
| (WI.ShaderProgram.prototype._requestShaderSource): Deleted. |
| (WI.ShaderProgram.prototype._updateShader): Deleted. |
| |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView): |
| (WI.ShaderProgramContentView.prototype.get navigationItems): Added. |
| (WI.ShaderProgramContentView.prototype.shown): |
| (WI.ShaderProgramContentView.prototype.hidden): |
| (WI.ShaderProgramContentView.prototype.get saveData): |
| (WI.ShaderProgramContentView.prototype._refreshContent): |
| (WI.ShaderProgramContentView.prototype._updateShader): |
| (WI.ShaderProgramContentView.prototype._contentDidChange): |
| * UserInterface/Views/ShaderProgramContentView.css: |
| (.content-view.shader-program > .shader): Added. |
| (.content-view.shader-program > .shader.compute): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.vertex,): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.fragment,): Added. |
| (.content-view.shader-program > .shader + .shader): Added. |
| (.content-view.shader-program > .shader > header > *): Added. |
| (.content-view.shader-program > .shader > header > .shader-type): Added. |
| (@media (prefers-color-scheme: dark) .content-view.shader-program > .shader > header): Added. |
| (.content-view.shader-program > .text-editor.shader): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader.vertex,): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader.fragment,): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader + .text-editor.shader): Deleted. |
| (body[dir=rtl] .content-view.shader-program > .text-editor.shader + .text-editor.shader): Deleted. |
| (.content-view.shader-program > .text-editor.shader > .type-title): Deleted. |
| (.content-view.shader-program > .text-editor.shader > .CodeMirror): Deleted. |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| |
| * UserInterface/Views/ShaderProgramTreeElement.js: |
| (WI.ShaderProgramTreeElement): |
| (WI.ShaderProgramTreeElement.prototype.onattach): |
| (WI.ShaderProgramTreeElement.prototype.ondetach): |
| (WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown): |
| (WI.ShaderProgramTreeElement.prototype.populateContextMenu): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-09-23 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Improve the Uncaught Exception View file a bug link |
| https://bugs.webkit.org/show_bug.cgi?id=201717 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Debug/UncaughtExceptionReporter.js: |
| Allow the link to be clicked. Use openInNewTab on click to also |
| bring the new tab to the foreground. Also update the content. |
| |
| 2019-09-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: HTML Formatter - better indentation/newline handling for self closing tags |
| https://bugs.webkit.org/show_bug.cgi?id=202036 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Workers/Formatter/HTMLFormatter.js: |
| (HTMLFormatter.prototype._before): |
| |
| 2019-09-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Remove BranchManager in favor of just using currentRevision |
| https://bugs.webkit.org/show_bug.cgi?id=202000 |
| |
| Reviewed by Devin Rousso. |
| |
| Remove BranchManager. The Branch concept never got fleshed out, and would |
| likely be too complex for the average case. Local Overrides are simpler. |
| In the interest of expanding Local Overrides to more content lets simply |
| by removing Branches. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Main.js: |
| (WI.loaded): |
| * UserInterface/Controllers/BranchManager.js: Removed. |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound): |
| (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges): |
| (WI.CSSManager.prototype._resourceContentDidChange): |
| (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent): |
| * UserInterface/Main.html: |
| * UserInterface/Models/Branch.js: Removed. |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype._processContent): |
| (WI.SourceCode): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype._textEditorContentDidChange): |
| |
| 2019-09-20 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r250114. |
| |
| Broke ~16 webgpu/ tests on Mojave wk2 |
| |
| Reverted changeset: |
| |
| "Web Inspector: Canvas: show WebGPU shader pipelines" |
| https://bugs.webkit.org/show_bug.cgi?id=201675 |
| https://trac.webkit.org/changeset/250114 |
| |
| 2019-09-19 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: searching in overrides doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=202020 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.customPerformSearch): |
| Do not go to agents for a local resource. Search locally in the TextEditor. |
| |
| 2019-09-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: show WebGPU shader pipelines |
| https://bugs.webkit.org/show_bug.cgi?id=201675 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Show WebGPU shader pipelines ("programs") underneath each corresponding WebGPU device. |
| |
| Allow editing of attached shader modules for each WebGPU shader pipeline, but don't allow |
| highlighting/disabling, as WebGPU pipelines don't have those capabilities/concepts yet. |
| |
| * UserInterface/Protocol/CanvasObserver.js: |
| (WI.CanvasObserver.prototype.programCreated): |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.programCreated): |
| |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.prototype.nextShaderProgramDisplayNumberForProgramType): Added. |
| (WI.Canvas.prototype.nextShaderProgramDisplayNumber): Deleted. |
| |
| * UserInterface/Models/ShaderProgram.js: |
| (WI.ShaderProgram): |
| (WI.ShaderProgram.contextTypeSupportsProgramType): Added. |
| (WI.ShaderProgram.programTypeSupportsShaderType): Added. |
| (WI.ShaderProgram.prototype.get programType): Added. |
| (WI.ShaderProgram.prototype.get displayName): |
| (WI.ShaderProgram.prototype.set disabled): |
| (WI.ShaderProgram.prototype.requestShaderSource): |
| (WI.ShaderProgram.prototype.updateShader): |
| (WI.ShaderProgram.prototype.showHighlight): |
| (WI.ShaderProgram.prototype.hideHighlight): |
| (WI.ShaderProgram.prototype.requestVertexShaderSource): Deleted. |
| (WI.ShaderProgram.prototype.requestFragmentShaderSource): Deleted. |
| (WI.ShaderProgram.prototype.updateVertexShader): Deleted. |
| (WI.ShaderProgram.prototype.updateFragmentShader): Deleted. |
| (WI.ShaderProgram.prototype._requestShaderSource): Deleted. |
| (WI.ShaderProgram.prototype._updateShader): Deleted. |
| |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView): |
| (WI.ShaderProgramContentView.prototype.get navigationItems): Added. |
| (WI.ShaderProgramContentView.prototype.shown): |
| (WI.ShaderProgramContentView.prototype.hidden): |
| (WI.ShaderProgramContentView.prototype.get saveData): |
| (WI.ShaderProgramContentView.prototype._refreshContent): |
| (WI.ShaderProgramContentView.prototype._updateShader): |
| (WI.ShaderProgramContentView.prototype._contentDidChange): |
| * UserInterface/Views/ShaderProgramContentView.css: |
| (.content-view.shader-program > .shader): Added. |
| (.content-view.shader-program > .shader.compute): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.vertex,): Added. |
| (body[dir=ltr] .content-view.shader-program > .shader.fragment,): Added. |
| (.content-view.shader-program > .shader + .shader): Added. |
| (.content-view.shader-program > .shader > header > *): Added. |
| (.content-view.shader-program > .shader > header > .shader-type): Added. |
| (@media (prefers-color-scheme: dark) .content-view.shader-program > .shader > header): Added. |
| (.content-view.shader-program > .text-editor.shader): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader.vertex,): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader.fragment,): Deleted. |
| (body[dir=ltr] .content-view.shader-program > .text-editor.shader + .text-editor.shader): Deleted. |
| (body[dir=rtl] .content-view.shader-program > .text-editor.shader + .text-editor.shader): Deleted. |
| (.content-view.shader-program > .text-editor.shader > .type-title): Deleted. |
| (.content-view.shader-program > .text-editor.shader > .CodeMirror): Deleted. |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| |
| * UserInterface/Views/ShaderProgramTreeElement.js: |
| (WI.ShaderProgramTreeElement): |
| (WI.ShaderProgramTreeElement.prototype.onattach): |
| (WI.ShaderProgramTreeElement.prototype.ondetach): |
| (WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown): |
| (WI.ShaderProgramTreeElement.prototype.populateContextMenu): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-09-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Better handling for large arrays and collections in Object Trees |
| https://bugs.webkit.org/show_bug.cgi?id=143589 |
| <rdar://problem/16135388> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Adds two buttons before the "Prototype" item in expanded object/collection previews: |
| - Show %d More |
| - Show All (%d More) |
| |
| The default `fetchCount` increment is `100`. The first button will only be shown if there |
| are more than `100` items remaining (haven't been shown). |
| |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.prototype.getPropertyDescriptors): |
| (WI.RemoteObject.prototype.getDisplayablePropertyDescriptors): |
| (WI.RemoteObject.prototype.getCollectionEntries): |
| (WI.RemoteObject.prototype.getOwnPropertyDescriptor.wrappedCallback): |
| (WI.RemoteObject.prototype._getProperties): Added. |
| (WI.RemoteObject.prototype._getDisplayableProperties): Added. |
| |
| * UserInterface/Views/ObjectTreeView.js: |
| (WI.ObjectTreeView): |
| (WI.ObjectTreeView.showMoreFetchCount): Added. |
| (WI.ObjectTreeView.addShowMoreIfNeeded): Added. |
| (WI.ObjectTreeView.prototype.update): |
| (WI.ObjectTreeView.prototype._updateChildren): |
| (WI.ObjectTreeView.prototype._updateEntries): |
| (WI.ObjectTreeView.prototype._updateProperties): |
| * UserInterface/Views/ObjectTreeView.css: |
| (.tree-outline.object li > button[disabled] + .indeterminate-progress-spinner): Added. |
| Avoid duplicating the button creation logic in `WI.ObjectTreePropertyTreeElement` by using a |
| `static` function. This expects the existence of and requires access to "private" values. |
| |
| * UserInterface/Views/ObjectTreePropertyTreeElement.js: |
| (WI.ObjectTreePropertyTreeElement): |
| (WI.ObjectTreePropertyTreeElement.prototype.onpopulate): |
| (WI.ObjectTreePropertyTreeElement.prototype._updateChildren): |
| (WI.ObjectTreePropertyTreeElement.prototype._updateEntries): |
| (WI.ObjectTreePropertyTreeElement.prototype._updateProperties): |
| (WI.ObjectTreePropertyTreeElement.prototype._updateChildrenInternal): Deleted. |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated): |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedArrayPropertyNames): Deleted. |
| |
| * UserInterface/Controllers/RuntimeManager.js: |
| (WI.RuntimeManager.prototype.getPropertiesForRemoteObject): Deleted. |
| Remove unused function. |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-09-18 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: console assertion when pressing up/down in empty console log view |
| https://bugs.webkit.org/show_bug.cgi?id=201948 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._upArrowWasPressed): |
| (WI.LogContentView.prototype._downArrowWasPressed): |
| Ensure that a message exists before calling `_updateMessagesSelection`, which |
| would assert if given a bad message. Additionally, only perform preventDefault |
| when selecting a message. This allows us to fall back to a system beep if |
| this key event does nothing. |
| |
| 2019-09-17 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: HTML Formatter - better handling for HTML specific tag cases (<p>/<li>) |
| https://bugs.webkit.org/show_bug.cgi?id=201757 |
| <rdar://problem/55409987> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Workers/Formatter/HTMLFormatter.js: |
| (HTMLFormatter.prototype._after): |
| Handle a closing tag with different text than the opening tag. |
| |
| * UserInterface/Workers/Formatter/HTMLTreeBuilderFormatter.js: |
| (HTMLTreeBuilderFormatter.prototype._pushParserNodeTopLevel): |
| (HTMLTreeBuilderFormatter.prototype._pushParserNodeStack): |
| (HTMLTreeBuilderFormatter.prototype._implicitlyCloseHTMLNodesForOpenTag): |
| (HTMLTreeBuilderFormatter.prototype._implicitlyCloseTagNamesInsideParentTagNames): |
| (HTMLTreeBuilderFormatter.prototype._indexOfStackNodeMatchingTagNames): |
| Generalize the implicit closing a bit. Allow open tags to implicitly |
| close certain other open tags in the stack. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: HTML Formatter - XML mode |
| https://bugs.webkit.org/show_bug.cgi?id=201758 |
| |
| Reviewed by Devin Rousso. |
| |
| * Tools/HTMLFormatter/index.html: |
| * Tools/SourceMaps/index.html: |
| Update Tools to more easily test XML. |
| |
| * UserInterface/Proxies/FormatterWorkerProxy.js: |
| (WI.FormatterWorkerProxy.prototype.formatXML): |
| * UserInterface/Views/TextEditor.js: |
| (WI.TextEditor.prototype.hasFormatter): |
| (WI.TextEditor.prototype._startWorkerPrettyPrint): |
| Allow formatting XML content. |
| |
| * UserInterface/Workers/Formatter/FormatterWorker.js: |
| (FormatterWorker.prototype.formatHTML): |
| (FormatterWorker.prototype.formatXML): |
| Expose "formatXML". |
| |
| * UserInterface/Workers/Formatter/HTMLFormatter.js: |
| (HTMLFormatter.let.dom): |
| (HTMLFormatter): |
| (HTMLFormatter.prototype._shouldHaveNoChildren): |
| (HTMLFormatter.prototype._before): |
| (HTMLFormatter.prototype._after): |
| * UserInterface/Workers/Formatter/HTMLParser.js: |
| (HTMLParser.prototype.parseDocument): |
| * UserInterface/Workers/Formatter/HTMLTreeBuilderFormatter.js: |
| (HTMLTreeBuilderFormatter.prototype._isEmptyNode): |
| Give the HTMLFormatter and related classes an XML mode that |
| has less of the smarts of XML. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: HTML Formatting: Handle infinite loop for incomplete script data |
| https://bugs.webkit.org/show_bug.cgi?id=201769 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Workers/Formatter/HTMLParser.js: |
| (HTMLParser): |
| Handle EOF in the script data's loop. |
| Better handle EOF at the end of text data. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Improve auto completion typing performance by avoiding global forced layouts |
| https://bugs.webkit.org/show_bug.cgi?id=201735 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/Main.css: |
| (#layout-measurement-container): |
| * UserInterface/Base/Main.js: |
| (WI.measureElement): |
| Provide a helper for measuring an element in a hidden container |
| that helps avoid more global layout. |
| |
| * UserInterface/Views/CompletionSuggestionsView.js: |
| (WI.CompletionSuggestionsView.prototype.show): |
| Use measure element to avoid a global forced layout. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Tighter autocomplete bubbles |
| https://bugs.webkit.org/show_bug.cgi?id=201742 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/CompletionSuggestionsView.js: |
| (WI.CompletionSuggestionsView.prototype.show): |
| Eliminate the trailing space. Use bounding client rect to get |
| fractional widths and raise the value so we are at an even number. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| REGRESSION: Web Inspector: Layout Timeline View does not show popover for initiator data |
| https://bugs.webkit.org/show_bug.cgi?id=201732 |
| <rdar://problem/55312339> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/LayoutTimelineDataGrid.js: |
| (WI.LayoutTimelineDataGrid.prototype.callFramePopoverAnchorElement): |
| (WI.LayoutTimelineDataGrid.prototype.shouldShowCallFramePopover): |
| The column name was incorrect. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Uncaught Exception: null is not an object (evaluating 'Object.keys(propertyNames)') (at JavaScriptRuntimeCompletionProvider.js:244:57) |
| https://bugs.webkit.org/show_bug.cgi?id=201729 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider): |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded): |
| Don't clear the completion object group until all ongoing requests have completed. |
| Percision for the lifetime of the object group objects is not important, but we |
| surely don't want to delete an object too soon. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Formatter: Pretty Print HTML resources (including inline <script>/<style>) |
| https://bugs.webkit.org/show_bug.cgi?id=201535 |
| <rdar://problem/29119232> |
| |
| Reviewed by Devin Rousso. |
| |
| Introduce HTMLFormatter, HTMLParser, and HTMLTreeBuilderFormatter. |
| |
| - HTMLParser tokenizes HTML content and passes it to a tree builder. |
| - HTMLTreeBuilderFormatter uses those tokens to create a formatted dom tree of fake nodes. |
| - HTMLFormatter then builds formatted content and a FormatterSourceMap from that DOM tree. |
| |
| The output of HTMLFormatter is intended to just modify whitespace. So it won't be a |
| 100% compatible DOM, but will be useful for debugging and reading inline <style> |
| and <script>, which is a more common debugging scenario. It also maintains original |
| author attribute quotations or lack therefore, because again it tries to only |
| change whitespace. A separate tree builder could be used for tidying content. |
| |
| This introduces a few tools for working with formatting: |
| |
| - Tools/HTMLFormatter - debug the parser, tree builder, and output format |
| - Tools/SourceMaps - debug formatted content and source mappings |
| |
| This also: |
| |
| - renames "EsprimaFormatter" to "JSFormatter" |
| - eliminates an extra trailing newline in CSSFormatter output |
| |
| * Tools/HTMLFormatter/HTMLTreeBuilderDebug.js: Added. |
| * Tools/HTMLFormatter/index.html: Added. |
| * Tools/HTMLFormatter/styles.css: Added. |
| Tool for debugging the HTML formatter components. |
| |
| * Tools/SourceMaps/.gitignore: Added. |
| * Tools/SourceMaps/index.html: Added. |
| * Tools/SourceMaps/setup.sh: Added. |
| * Tools/SourceMaps/styles.css: Added. |
| Tool for debugging Formatter generated Source Maps. |
| |
| * Tools/JSFormatter/JSFormatterDebug.js: Renamed from Source/WebInspectorUI/Tools/Formatting/EsprimaFormatterDebug.js. |
| * Tools/JSFormatter/codemirror-additions.css: Renamed from Source/WebInspectorUI/Tools/Formatting/codemirror-additions.css. |
| * Tools/JSFormatter/index.html: Renamed from Source/WebInspectorUI/Tools/Formatting/index.html. |
| Renamed this tool. EsprimaFormatter => JSFormatter. |
| |
| * UserInterface/Controllers/FormatterSourceMap.js: |
| (WI.FormatterSourceMap.prototype.originalPositionToFormattedPosition): |
| (WI.FormatterSourceMap.prototype.formattedPositionToOriginalPosition): |
| New APIs used by tools and tests for translating "position" offsets and not line/columns. |
| |
| * UserInterface/Workers/Formatter/JSFormatter.js: Renamed from Source/WebInspectorUI/UserInterface/Workers/Formatter/EsprimaFormatter.js. |
| (JSFormatter): |
| * UserInterface/Workers/Formatter/CSSFormatter.js: |
| (CSSFormatter): |
| Allow using a supplied builder, which is useful when formatting |
| inline content from HTMLFormatter (<style> / <script>). |
| |
| * UserInterface/Workers/Formatter/FormatterContentBuilder.js: |
| (FormatterContentBuilder.prototype.get indentString): |
| (FormatterContentBuilder.prototype.get originalContent): |
| (FormatterContentBuilder.prototype.get indentLevel): |
| (FormatterContentBuilder.prototype.get originalOffset): |
| (FormatterContentBuilder.prototype.set originalOffset): |
| (FormatterContentBuilder.prototype.appendNonToken): |
| (FormatterContentBuilder.prototype.appendToken): |
| (FormatterContentBuilder.prototype.appendTokenWithPossibleNewlines): |
| (FormatterContentBuilder.prototype.appendMapping): |
| (FormatterContentBuilder.prototype.indentToLevel): |
| (FormatterContentBuilder.prototype.finish): |
| Provide API for getting / setting the original offset and indent level. |
| This is useful when the HTMLFormatter runs the CSSFormatter/JSFormatter |
| in a nested context (<style> / <script>). Add a few more APIs for |
| conveniences when appending tokens or important positions. |
| |
| * UserInterface/Workers/Formatter/HTMLParser.js: Added. |
| (HTMLParser.prototype.parseDocument): |
| (HTMLParser.prototype._isEOF): |
| (HTMLParser.prototype._peek): |
| (HTMLParser.prototype._peekCharacterRegex): |
| (HTMLParser.prototype._peekString): |
| (HTMLParser.prototype._peekCaseInsensitiveString): |
| (HTMLParser.prototype._consumeWhitespace): |
| (HTMLParser.prototype._consumeUntilString): |
| (HTMLParser.prototype._consumeUntilRegex): |
| (HTMLParser.prototype._consumeDoubleQuotedString): |
| (HTMLParser): |
| Tokenize HTML content into nodes. |
| |
| * UserInterface/Workers/Formatter/HTMLTreeBuilderFormatter.js: Added. |
| (HTMLTreeBuilderFormatter.prototype.get dom): |
| (HTMLTreeBuilderFormatter.prototype.begin): |
| (HTMLTreeBuilderFormatter.prototype.pushParserNode): |
| (HTMLTreeBuilderFormatter.prototype.end): |
| (HTMLTreeBuilderFormatter.prototype._pushParserNodeTopLevel): |
| (HTMLTreeBuilderFormatter.prototype._pushParserNodeStack): |
| (HTMLTreeBuilderFormatter.prototype._isEmptyNode): |
| (HTMLTreeBuilderFormatter.prototype._buildDOMNodeFromOpenTag): |
| (HTMLTreeBuilderFormatter.prototype._buildErrorNodeFromCloseTag): |
| (HTMLTreeBuilderFormatter.prototype._buildSimpleNodeFromParserNode): |
| (HTMLTreeBuilderFormatter): |
| Build a simple DOM tree from parser nodes. |
| |
| * UserInterface/Workers/Formatter/HTMLFormatter.js: Added. |
| (HTMLFormatter.let.dom): |
| (HTMLFormatter): |
| (HTMLFormatter.prototype.get success): |
| (HTMLFormatter.prototype.get formattedText): |
| (HTMLFormatter.prototype.get sourceMapData): |
| (HTMLFormatter.prototype._walk): |
| (HTMLFormatter.prototype._walkChildren): |
| (HTMLFormatter.prototype._isNodeSelfClosing): |
| (HTMLFormatter.prototype._shouldHaveInlineContent): |
| (HTMLFormatter.prototype._hasMultipleNewLines): |
| (HTMLFormatter.prototype._buildAttributeString): |
| (HTMLFormatter.prototype._before): |
| (HTMLFormatter.prototype._after): |
| (HTMLFormatter.prototype._formatWithNestedFormatter): |
| (HTMLFormatter.prototype._formatScript): |
| (HTMLFormatter.prototype._formatStyle): |
| Output pretty printed text from a HTMLTreeBuilderFormatter dom tree. |
| |
| * UserInterface/Proxies/FormatterWorkerProxy.js: |
| (WI.FormatterWorkerProxy.prototype.formatHTML): |
| * UserInterface/Workers/Formatter/FormatterWorker.js: |
| (FormatterWorker.prototype.formatJavaScript): |
| (FormatterWorker.prototype.formatCSS): |
| (FormatterWorker.prototype.formatHTML): |
| * UserInterface/Views/TextEditor.js: |
| (WI.TextEditor.prototype.hasFormatter): |
| (WI.TextEditor.prototype._canUseFormatterWorker): |
| (WI.TextEditor.prototype._startWorkerPrettyPrint): |
| Allow pretty printing HTML resources. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| New resources. |
| |
| 2019-09-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: [Overrides] Command-Z doesn't undo changes after page reload |
| https://bugs.webkit.org/show_bug.cgi?id=201698 |
| <rdar://problem/55276645> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ContentViewContainer.js: |
| (WI.ContentViewContainer.prototype.closeAllContentViews): |
| Provide a filter to opt out of closing some content views. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._closeContentViewsFilter): |
| (WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement): |
| Avoid closing ContentViews for local resource overrides. This keeps the |
| SourceCodeTextEditor around and thus its undo/redo stack. |
| |
| 2019-09-12 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Uncaught Exception: TypeError: null is not an object (evaluating 'selectedTreeElement.representedObject') |
| https://bugs.webkit.org/show_bug.cgi?id=201716 |
| <rdar://problem/55292615> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| If a breakpoint was removed without a selection in the breakpoint tree outline |
| then there may be no selected tree element. |
| |
| 2019-09-11 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: REGRESSION: Inspector Timeline always starts at about 500ms mark on a reload |
| https://bugs.webkit.org/show_bug.cgi?id=200637 |
| <rdar://problem/54218967> |
| |
| Reviewed by Devin Rousso. |
| |
| The Timeline was getting a startTime value from before the user started |
| the timeline recording because of artificial adjustments that were made |
| to CPUTimelineRecords. Ignore adjusted values when updating the Timeline's |
| start and end times. |
| |
| * UserInterface/Models/Timeline.js: |
| (WI.Timeline.prototype._updateTimesIfNeeded): |
| Use unadjusted times, which should fall in the user started / stopped |
| timeline range. |
| |
| * UserInterface/Models/TimelineRecord.js: |
| (WI.TimelineRecord.prototype.get unadjustedStartTime): |
| (WI.TimelineRecord.prototype.get unadjustedEndTime): |
| Default implementation uses startTime/endTime. |
| |
| * UserInterface/Models/CPUTimelineRecord.js: |
| (WI.CPUTimelineRecord.prototype.get unadjustedStartTime): |
| * UserInterface/Models/MemoryTimelineRecord.js: |
| (WI.MemoryTimelineRecord.prototype.get unadjustedStartTime): |
| Each of these adjusted their startTime. |
| |
| 2019-09-11 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: REGRESSION: CPU: Overlay Markers for Thread views are off by 500ms |
| https://bugs.webkit.org/show_bug.cgi?id=201709 |
| <rdar://problem/55289279> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/CPUTimelineView.js: |
| (WI.CPUTimelineView.prototype.layout): |
| Use the CPUTimelineRecord's timestamp (same as the record's endTime) as the |
| point when the CPU sample is taken. This aligns with the rest of the UI that |
| assumes that the 500ms before the sample point leads up to the sample value. |
| |
| 2019-09-11 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Do not show override actions unless Sources tab is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=201708 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.supportsLocalResourceOverrides): |
| |
| 2019-09-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: checkerboard has too much contrast in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=201670 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/CanvasTabContentView.css: |
| (.content-view.canvas > .preview > img, .content-view.canvas .preview-container > canvas): Deleted. |
| Don't force a `background-color: white;` in dark mode. |
| |
| 2019-09-11 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Elements: don't show Changes panel when selecting text node |
| https://bugs.webkit.org/show_bug.cgi?id=201669 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Show Changes panel only for elements regardless of "Show only for selected node" setting. |
| |
| * UserInterface/Views/ChangesDetailsSidebarPanel.js: |
| (WI.ChangesDetailsSidebarPanel.prototype.supportsDOMNode): |
| (WI.ChangesDetailsSidebarPanel.prototype.inspect): Deleted. |
| |
| 2019-09-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: instrument WebGPUDevice instead of GPUCanvasContext |
| https://bugs.webkit.org/show_bug.cgi?id=201650 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Most of the actual "work" done with Web GPU actually uses a `WebGPUDevice`. |
| |
| A `GPUCanvasContext` is basically just a display "client" of the device, and isn't even |
| required (e.g. compute pipeline). We should treat the `GPUCanvasContext` almost like a |
| `-webkit-canvas` client of a `WebGPUDevice`. |
| |
| * UserInterface/Protocol/CanvasObserver.js: |
| (WI.CanvasObserver.prototype.clientNodesChanged): Added. |
| (WI.CanvasObserver.prototype.cssCanvasClientNodesChanged): |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.clientNodesChanged): Added. |
| (WI.CanvasManager.prototype.cssCanvasClientNodesChanged): Deleted. |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.resetUniqueDisplayNameNumbers): |
| (WI.Canvas.prototype.get displayName): |
| (WI.Canvas.prototype.requestNode): |
| (WI.Canvas.prototype.requestClientNodes): Added. |
| (WI.Canvas.prototype.requestSize): |
| (WI.Canvas.prototype.clientNodesChanged): Added. |
| (WI.Canvas.prototype.requestCSSCanvasClientNodes): Deleted. |
| (WI.Canvas.prototype.cssCanvasClientNodesChanged): Deleted. |
| |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.resolveCanvasContext): |
| |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView.prototype.attached): |
| (WI.CanvasContentView.prototype._refreshPixelSize): |
| * UserInterface/Views/CanvasDetailsSidebarPanel.js: |
| (WI.CanvasDetailsSidebarPanel.prototype.set canvas): |
| (WI.CanvasDetailsSidebarPanel.prototype.initialLayout): |
| (WI.CanvasDetailsSidebarPanel.prototype.layout): |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection): |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshClientsSection): Added. |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection): Deleted. |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView.prototype._contentViewMouseEnter): |
| * UserInterface/Views/CanvasTreeElement.js: |
| (WI.CanvasTreeElement.prototype._handleMouseOver): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-09-11 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r249753. |
| |
| caused inspector/canvas/shaderProgram-add-remove-webgl.html to |
| crash on all Mac platforms. |
| |
| Reverted changeset: |
| |
| "Web Inspector: Canvas: instrument WebGPUDevice instead of |
| GPUCanvasContext" |
| https://bugs.webkit.org/show_bug.cgi?id=201650 |
| https://trac.webkit.org/changeset/249753 |
| |
| 2019-09-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: instrument WebGPUDevice instead of GPUCanvasContext |
| https://bugs.webkit.org/show_bug.cgi?id=201650 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Most of the actual "work" done with Web GPU actually uses a `WebGPUDevice`. |
| |
| A `GPUCanvasContext` is basically just a display "client" of the device, and isn't even |
| required (e.g. compute pipeline). We should treat the `GPUCanvasContext` almost like a |
| `-webkit-canvas` client of a `WebGPUDevice`. |
| |
| * UserInterface/Protocol/CanvasObserver.js: |
| (WI.CanvasObserver.prototype.clientNodesChanged): Added. |
| (WI.CanvasObserver.prototype.cssCanvasClientNodesChanged): |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.clientNodesChanged): Added. |
| (WI.CanvasManager.prototype.cssCanvasClientNodesChanged): Deleted. |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.resetUniqueDisplayNameNumbers): |
| (WI.Canvas.prototype.get displayName): |
| (WI.Canvas.prototype.requestNode): |
| (WI.Canvas.prototype.requestClientNodes): Added. |
| (WI.Canvas.prototype.requestSize): |
| (WI.Canvas.prototype.clientNodesChanged): Added. |
| (WI.Canvas.prototype.requestCSSCanvasClientNodes): Deleted. |
| (WI.Canvas.prototype.cssCanvasClientNodesChanged): Deleted. |
| |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.resolveCanvasContext): |
| |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView.prototype.attached): |
| (WI.CanvasContentView.prototype._refreshPixelSize): |
| * UserInterface/Views/CanvasDetailsSidebarPanel.js: |
| (WI.CanvasDetailsSidebarPanel.prototype.set canvas): |
| (WI.CanvasDetailsSidebarPanel.prototype.initialLayout): |
| (WI.CanvasDetailsSidebarPanel.prototype.layout): |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection): |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshClientsSection): Added. |
| (WI.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection): Deleted. |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView.prototype._contentViewMouseEnter): |
| * UserInterface/Views/CanvasTreeElement.js: |
| (WI.CanvasTreeElement.prototype._handleMouseOver): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-09-10 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Remove legacy CodeMirror based pretty printers |
| https://bugs.webkit.org/show_bug.cgi?id=201624 |
| |
| Reviewed by Devin Rousso. |
| |
| * Tools/PrettyPrinting/FormatterDebug.js: Removed. |
| * Tools/PrettyPrinting/Utilities.js: Removed. |
| * Tools/PrettyPrinting/codemirror-additions.css: Removed. |
| * Tools/PrettyPrinting/index.html: Removed. |
| * Tools/PrettyPrinting/populate/apple.css: Removed. |
| * UserInterface/Controllers/Formatter.js: Removed. |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| * UserInterface/Views/CodeMirrorFormatters.js: Removed. |
| * UserInterface/Views/TextEditor.js: |
| (WI.TextEditor.prototype.prettyPrint): |
| (WI.TextEditor.prototype._canUseFormatterWorker): Deleted. |
| (WI.TextEditor.prototype._startCodeMirrorPrettyPrint): Deleted. |
| * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj: |
| * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters: |
| |
| 2019-09-09 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Dark Mode: Overview Timeline View has jarring white box-shadows in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=201442 |
| <rdar://problem/54999794> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/DataGrid.css: |
| (.data-grid:not(.variable-height-rows) table.data): |
| (.data-grid:not(.variable-height-rows) table.data.even-first-zebra-stripe): |
| (.data-grid.variable-height-rows.even-first-zebra-stripe table.data tr:nth-child(odd)): |
| (.data-grid.variable-height-rows.even-first-zebra-stripe table.data tr:nth-child(even)): |
| (.data-grid:not(.variable-height-rows) table.data.odd-first-zebra-stripe): Deleted. |
| (.data-grid.variable-height-rows.odd-first-zebra-stripe table.data tr:nth-child(odd)): Deleted. |
| (.data-grid.variable-height-rows.odd-first-zebra-stripe table.data tr:nth-child(even)): Deleted. |
| * UserInterface/Views/DataGrid.js: |
| (WI.DataGrid.prototype.updateVisibleRows): |
| * UserInterface/Views/Table.css: |
| (.table > .data-container > .data-list): |
| (.table > .data-container > .data-list.even-first-zebra-stripe): |
| (.table > .data-container > .data-list.odd-first-zebra-stripe): Deleted. |
| * UserInterface/Views/Table.js: |
| In the gradients "even" was mistakenly first. Fix these so that "odd" is first and the |
| unusual case would be having "even" first. This allows us to line up with `nth-of-type(even)`. |
| |
| * UserInterface/Views/Main.css: |
| (:root): |
| (@media (prefers-color-scheme: dark)): |
| Flip even and odd so we maintain the same styles for gradients. |
| |
| * UserInterface/Views/OverviewTimelineView.css: |
| (.timeline-view.overview > .data-grid tr): |
| (.timeline-view.overview > .data-grid tr:nth-child(even)): |
| (.timeline-view.overview > .data-grid tr.parent:not(.expanded) td.graph-column .timeline-record-bar:not(.has-inactive-segment) > .segment): |
| (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.has-inactive-segment) > .segment): |
| (.timeline-view.overview > .data-grid tr.parent:not(.expanded) td.graph-column .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): |
| (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): |
| (@media (prefers-color-scheme: dark)): |
| (WI.Table.prototype._updateVisibleRows): |
| * UserInterface/Views/Variables.css: |
| |
| 2019-09-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: CSS Formatter: the closing } of nested @media aren't indented |
| https://bugs.webkit.org/show_bug.cgi?id=201560 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Workers/Formatter/FormatterContentBuilder.js: |
| (FormatterContentBuilder.prototype.removeLastNewline): |
| It's possible that there were multiple newlines in a row, so we should update `_startOfLine` |
| to be `true` if the previous line was empty. |
| |
| 2019-09-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: CSS Formatter: links to CSS resources don't map to the right line after pretty printing if the line is after a multiline comment |
| https://bugs.webkit.org/show_bug.cgi?id=201559 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Newlines in multiline comments weren't added as line endings, so they weren't considered |
| when a source code location updated after pretty printing. |
| |
| * UserInterface/Workers/Formatter/CSSFormatter.js: |
| (CSSFormatter.prototype._format): |
| |
| 2019-09-06 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Better position for Sources tab when enabling the experimental setting |
| https://bugs.webkit.org/show_bug.cgi?id=201539 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| Place the Sources tab where the Debugger tab was. |
| |
| 2019-09-06 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Network: Error response headers summary has wrong color border |
| https://bugs.webkit.org/show_bug.cgi?id=201538 |
| <rdar://problem/55104469> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ResourceHeadersContentView.css: |
| (body[dir] .resource-headers > section.error > .details): |
| Re-apply an error style for resource-header sections. |
| |
| 2019-09-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: unify the interaction of show/hide status icons in Sources and Canvas |
| https://bugs.webkit.org/show_bug.cgi?id=201470 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Rather than "fading" the tree element's text when the underlying represented object is |
| disabled/blackboxed, we should just "fade" the icon. The "fade" shouldn't change when the |
| tree element is selected. The image of the status eye also shouldn't change depending on |
| whether the underlying represented object is disabled/blackboxed, as it being visible (even |
| if it's "faded") is already enough of an indicator. |
| |
| It should also be possible to toggle the disabled/blackboxed state via the context menu. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| * UserInterface/Views/SourceCodeTreeElement.css: |
| (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover) .status > .toggle-script-blackboxed:not(.blackboxed)): Added. |
| (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover, .selected) .status > .toggle-script-blackboxed:not(.blackboxed)): Deleted. |
| |
| * UserInterface/Models/ShaderProgram.js: |
| (WI.ShaderProgram): |
| (WI.ShaderProgram.prototype.get disabled): Added. |
| (WI.ShaderProgram.prototype.set disabled): Added. |
| (WI.ShaderProgram.prototype.toggleDisabled): Deleted. |
| * UserInterface/Views/ShaderProgramTreeElement.js: |
| (WI.ShaderProgramTreeElement.prototype.onattach): |
| (WI.ShaderProgramTreeElement.prototype.ondetach): Added. |
| (WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown): |
| (WI.ShaderProgramTreeElement.prototype.populateContextMenu): Added. |
| (WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked): |
| (WI.ShaderProgramTreeElement.prototype._handleShaderProgramDisabledChanged): Added. |
| * UserInterface/Views/ShaderProgramTreeElement.css: |
| (.tree-outline .item.shader-program .status > img): Added. |
| (.tree-outline .item.shader-program:not(:hover, .selected, .disabled) .status > img): Added. |
| (.tree-outline .item.shader-program.disabled .status > img): Added. |
| (@media (prefers-color-scheme: dark) .tree-outline .item.shader-program .status > img): Added. |
| (.item.shader-program .status > img): Deleted. |
| (.item.shader-program.disabled:hover .status > img): Deleted. |
| (.item.shader-program:not(:hover, .selected, .disabled) .status > img): Deleted. |
| (.item.shader-program.disabled > :not(.status)): Deleted. |
| (@media (prefers-color-scheme: dark) .item.shader-program .status > img): Deleted. |
| |
| 2019-09-04 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Local Overrides - Provide substitution content for resource loads (URL based) |
| https://bugs.webkit.org/show_bug.cgi?id=201262 |
| <rdar://problem/13108764> |
| |
| Reviewed by Devin Rousso. |
| |
| This adds a new "Local Overrides" section to the Sources tab sidebar |
| which will allow users to provide their own resource content for text |
| resources. Users can clone a resource, and provide their own content |
| (by editing in Web Inspector) and new requests for those particular |
| URLs will get the substitute content. |
| |
| Overrides are based on a particular URL (ignoring fragment). They |
| can override: status code, status text, response headers, content, |
| and MIME Type (Content-Type). |
| |
| * Tools/CodeMirrorModes/index.html: Added. |
| * Tools/CodeMirrorModes/styles.css: Added. |
| Debug tool for CodeMirror editors and our custom CodeMirror modes. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| New files and strings. |
| |
| * UserInterface/Base/HTTPUtilities.js: Added. |
| (WI.httpStatusTextForStatusCode): |
| Translate between typical status codes and status text. |
| |
| * UserInterface/Base/ObjectStore.js: |
| (WI.ObjectStore._open): |
| New persistent store for local resource overrides. |
| |
| * UserInterface/Base/Main.js: |
| (WI.showLocalResourceOverride): |
| Convenience for showing an override file. |
| |
| * UserInterface/Base/URLUtilities.js: |
| (parseURL): |
| Avoid uncaught exceptions with the URL constructor for common WebKit internal sourceURL strings. |
| |
| (WI.urlWithoutFragment): |
| Strip a fragment from a URL. |
| |
| * UserInterface/Controllers/HARBuilder.js: |
| (WI.HARBuilder.fetchType): |
| (WI.HARBuilder.responseSourceFromHARFetchType): |
| Handle new custom response types. |
| |
| * UserInterface/Protocol/NetworkObserver.js: |
| (WI.NetworkObserver.prototype.responseIntercepted): |
| (WI.NetworkObserver): |
| New events. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager): |
| (WI.NetworkManager.supportsLocalResourceOverrides): |
| (WI.NetworkManager.prototype.initializeTarget): |
| (WI.NetworkManager.prototype.get localResourceOverrides): |
| (WI.NetworkManager.prototype.get interceptionEnabled): |
| (WI.NetworkManager.prototype.set interceptionEnabled): |
| (WI.NetworkManager.prototype.addLocalResourceOverride): |
| (WI.NetworkManager.prototype.removeLocalResourceOverride): |
| (WI.NetworkManager.prototype.localResourceOverrideForURL): |
| (WI.NetworkManager.prototype.canBeOverridden): |
| (WI.NetworkManager.prototype.responseIntercepted): |
| (WI.NetworkManager.prototype._handleResourceContentDidChange): |
| (WI.NetworkManager.prototype._persistLocalResourceOverrideSoonAfterContentChange): |
| (WI.NetworkManager.prototype._saveLocalResourceOverrides): |
| (WI.NetworkManager.prototype._extraDomainsActivated): |
| (WI.NetworkManager.prototype.localResourceForURL): Deleted. |
| Handle saving and restoring local resource overrides. |
| Handle responding to a `responseIntercepted` Network protocol event. |
| |
| * UserInterface/Models/LocalResource.js: |
| (WI.LocalResource.fromJSON): |
| (WI.LocalResource.prototype.toJSON): |
| (WI.LocalResource.prototype.get localContent): |
| (WI.LocalResource.prototype.get localContentIsBase64Encoded): |
| (WI.LocalResource.prototype.isLocalResourceOverride): |
| (WI.LocalResource.prototype.updateOverrideContent): |
| Allow a LocalResource to identify itself as an "override". |
| |
| * UserInterface/Models/LocalResourceOverride.js: Added. |
| (WI.LocalResourceOverride.prototype.create): |
| (WI.LocalResourceOverride.fromJSON): |
| (WI.LocalResourceOverride.prototype.toJSON): |
| (WI.LocalResourceOverride.prototype.get url): |
| (WI.LocalResourceOverride.prototype.get localResource): |
| (WI.LocalResourceOverride.prototype.get disabled): |
| (WI.LocalResourceOverride.prototype.set disabled): |
| (WI.LocalResourceOverride.prototype.saveIdentityToCookie): |
| (WI.LocalResourceOverride): |
| Model object for a LocalResourceOverride. This has LocalResource content |
| and an enabled/disabled state. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.classNamesForResource): |
| (WI.Resource.responseSourceFromPayload): |
| (WI.Resource.prototype.isLocalResourceOverride): |
| (WI.Resource.prototype.async.createLocalResourceOverride): |
| (WI.Resource.classNameForResource): Deleted. |
| Convenience functions and icon updates. |
| |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView.prototype.canShowRepresentedObject): |
| * UserInterface/Views/ContentView.js: |
| (WI.ContentView.createFromRepresentedObject): |
| (WI.ContentView.resolvedRepresentedObjectForRepresentedObject): |
| (WI.ContentView.isViewable): |
| Handle new represented object type. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline): |
| (WI.SourcesNavigationSidebarPanel.prototype.willDismissPopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissEventBreakpointPopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._willDismissURLBreakpointPopover): |
| (WI.SourcesNavigationSidebarPanel.prototype._addLocalResourceOverride): |
| (WI.SourcesNavigationSidebarPanel.prototype._removeLocalResourceOverride): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideAdded): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideRemoved): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > .warning-banner): |
| (.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container, .local-overrides)): |
| (.sidebar > .panel.navigation.sources > .content > .local-overrides): |
| (.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted. |
| Hide and show Local Overrides section. |
| |
| * UserInterface/Views/LocalResourceOverrideTreeElement.css: |
| (.item.resource.override .status > div): |
| * UserInterface/Views/LocalResourceOverrideTreeElement.js: Added. |
| (WI.LocalResourceOverrideTreeElement): |
| (WI.LocalResourceOverrideTreeElement.prototype.canSelectOnMouseDown): |
| (WI.LocalResourceOverrideTreeElement.prototype.populateContextMenu): |
| (WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover): |
| TreeElement for a Local Resource Override. |
| |
| * UserInterface/Views/CodeMirrorLocalOverrideURLMode.css: |
| (.cm-s-default .cm-local-override-url-bad-scheme): |
| (.cm-s-default .cm-local-override-url-fragment): |
| * UserInterface/Views/CodeMirrorLocalOverrideURLMode.js: Added. |
| (tokenBase): |
| (return.startState): |
| (return.token): |
| * UserInterface/Views/ContentBrowserTabContentView.js: |
| (WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject): |
| |
| * UserInterface/Views/ContextMenu.js: |
| (WI.ContextMenu.prototype._itemSelected): |
| (WI.ContextMenu): |
| Better debugging for exceptions in context menu handlers. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForSourceCode): |
| (WI.appendContextMenuItemsForURL): |
| Context menu items for Local Resource Overrides. |
| |
| * UserInterface/Views/DataGrid.js: |
| (WI.DataGrid.prototype.startEditingNode): |
| (WI.DataGrid.prototype._startEditingNodeAtColumnIndex): |
| (WI.DataGrid.prototype._startEditing): |
| (WI.DataGrid.prototype._contextMenuInDataTable): |
| * UserInterface/Views/DataGridNode.js: |
| (WI.DataGridNode): |
| (WI.DataGridNode.prototype.get editable): |
| (WI.DataGridNode.prototype.set editable): |
| Improve DataGrid editing functionality. |
| Allow a node to not be editable. |
| Allow adding a new node and starting to edit in one action. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject): |
| Do not provide overrides in the Debugger tab. |
| |
| * UserInterface/Views/LocalResourceOverrideLabelView.css: |
| (.local-resource-override-label-view): |
| (.local-resource-override-label-view > div): |
| (.local-resource-override-label-view > div > .label): |
| (.local-resource-override-label-view > div > .url): |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/LocalResourceOverrideLabelView.js: |
| (WI.LocalResourceOverrideLabelView): |
| (WI.LocalResourceOverrideLabelView.prototype.initialLayout): |
| * UserInterface/Views/LocalResourceOverridePopover.css: Added. |
| (.popover .local-resource-override-popover-content): |
| (.popover .local-resource-override-popover-content > label.toggle): |
| (.popover .local-resource-override-popover-content > table): |
| (.popover .local-resource-override-popover-content > table > tr > th): |
| (.popover .local-resource-override-popover-content > table > tr > td): |
| (.popover .local-resource-override-popover-content .editor): |
| (.popover .local-resource-override-popover-content .editor > .CodeMirror): |
| (.popover .local-resource-override-popover-content .editor.url): |
| (.popover .local-resource-override-popover-content .editor.mime): |
| (.popover .local-resource-override-popover-content .editor.status): |
| (.popover .local-resource-override-popover-content .editor.status-text): |
| (.popover .local-resource-override-popover-content .add-header): |
| (@media (prefers-color-scheme: dark)): |
| New banner view for a local resource override itself. |
| Shows the URL being overriden. |
| |
| * UserInterface/Views/LocalResourceOverrideWarningView.css: |
| (.local-resource-override-warning-view): |
| (.local-resource-override-warning-view[hidden]): |
| (.local-resource-override-warning-view > div): |
| (.local-resource-override-warning-view > div > button): |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/LocalResourceOverrideWarningView.js: Added. |
| (WI.LocalResourceOverrideWarningView): |
| (WI.LocalResourceOverrideWarningView.prototype.attached): |
| (WI.LocalResourceOverrideWarningView.prototype.detached): |
| (WI.LocalResourceOverrideWarningView.prototype._updateContent): |
| (WI.LocalResourceOverrideWarningView.prototype._handleLocalResourceOverrideChanged): |
| * UserInterface/Views/NavigationSidebarPanel.js: |
| (WI.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements): |
| New banner view for a resource that has been overridden. |
| Allows jumping to the override itself. |
| |
| * UserInterface/Views/LocalResourceOverridePopover.js: Added. |
| (WI.LocalResourceOverridePopover): |
| (WI.LocalResourceOverridePopover.prototype.get serializedData): |
| (WI.LocalResourceOverridePopover.prototype.show.addDataGridNodeForHeader): |
| (WI.LocalResourceOverridePopover.prototype.show): |
| (WI.LocalResourceOverridePopover.prototype._createEditor): |
| (WI.LocalResourceOverridePopover.prototype._defaultURL): |
| (WI.LocalResourceOverridePopover.prototype._presentOverTargetElement): |
| New popover for creating or editing a Local Resource Override. |
| |
| * UserInterface/Views/SearchSidebarPanel.js: |
| (WI.SearchSidebarPanel.prototype.performSearch): |
| Consider searching overrides. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| * UserInterface/Views/SearchSidebarPanel.css: |
| (.sidebar > .panel.navigation.search.changed > .banner): |
| * UserInterface/Views/DebuggerSidebarPanel.css: |
| (.sidebar > .panel.navigation.debugger .warning-banner): |
| * UserInterface/Views/ConsoleMessageView.css: |
| (.console-warning-level): |
| Use a new variable for a common warning color. |
| |
| * UserInterface/Images/NavigationItemNetworkOverride.svg: Added. |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.canBeFormatted): |
| (WI.SourceCodeTextEditor.prototype.get _supportsDebugging): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > .warning-banner): |
| (.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container, .local-overrides)): |
| (.sidebar > .panel.navigation.sources > .content > .local-overrides): |
| (.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted. |
| * UserInterface/Views/TextEditor.css: |
| (.text-editor): |
| * UserInterface/Views/TextResourceContentView.css: |
| (.content-view.resource.text): |
| (.content-view.resource.text > .text-editor): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView): |
| (WI.TextResourceContentView.prototype.get navigationItems): |
| (WI.TextResourceContentView.prototype.closed): |
| (WI.TextResourceContentView.prototype._contentWillPopulate): |
| (WI.TextResourceContentView.prototype._contentDidPopulate): |
| (WI.TextResourceContentView.prototype.async._handleCreateLocalResourceOverride): |
| (WI.TextResourceContentView.prototype._handleRemoveLocalResourceOverride): |
| (WI.TextResourceContentView.prototype._handleLocalResourceOverrideChanged): |
| (WI.TextResourceContentView.prototype._textEditorContentDidChange): |
| (WI.TextResourceContentView.prototype._shouldBeEditable): |
| Allow Text resources to create a local resource override. |
| Support for Image resources will come separately. |
| |
| * UserInterface/Views/ResourceHeadersContentView.js: |
| (WI.ResourceHeadersContentView.prototype._responseSourceDisplayString): |
| Handle new response type. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| Avoid extra handling for Local Resource Overrides. |
| |
| * UserInterface/Views/ResourceIcons.css: |
| (.resource-icon.override .icon): |
| * UserInterface/Views/ResourceSizesContentView.js: |
| (WI.ResourceSizesContentView.prototype.initialLayout): |
| * UserInterface/Views/ResourceTimelineDataGridNode.js: |
| (WI.ResourceTimelineDataGridNode.prototype.iconClassNames): |
| * UserInterface/Views/ResourceTreeElement.js: |
| (WI.ResourceTreeElement.prototype._updateResource): |
| (WI.ResourceTreeElement.prototype._updateIcon): |
| (WI.ResourceTreeElement.prototype._responseReceived): |
| (WI.ResourceTreeElement): |
| * UserInterface/Views/TimelineDataGridNode.js: |
| (WI.TimelineDataGridNode.prototype.createCellContent): |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype._populateNameCell): |
| (WI.NetworkTableContentView.prototype._populateTransferSizeCell): |
| (WI.NetworkTableContentView.prototype._generateSortComparator): |
| Better Resource icons all over for overrides. |
| |
| * UserInterface/Views/URLBreakpointPopover.js: |
| (WI.URLBreakpointPopover.prototype._createEditor): |
| Code cleanup. |
| |
| 2019-09-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: provide a way to view XML/HTML/SVG resource responses as a DOM tree |
| https://bugs.webkit.org/show_bug.cgi?id=201046 |
| <rdar://problem/54446087> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ResourceClusterContentView.js: |
| (WI.ResourceClusterContentView): |
| (WI.ResourceClusterContentView.prototype.showRequest): |
| (WI.ResourceClusterContentView.prototype.showResponse): |
| (WI.ResourceClusterContentView.prototype.get customRequestDOMContentView): Added. |
| (WI.ResourceClusterContentView.prototype.get customRequestJSONContentView): Added. |
| (WI.ResourceClusterContentView.prototype.get customResponseDOMContentView): Added. |
| (WI.ResourceClusterContentView.prototype.get customResponseJSONContentView): Added. |
| (WI.ResourceClusterContentView.prototype.get customResponseTextContentView): Added. |
| (WI.ResourceClusterContentView.prototype._createPathComponent): Added. |
| (WI.ResourceClusterContentView.prototype._canShowCustomRequestContentView): |
| (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView): |
| (WI.ResourceClusterContentView.prototype._contentViewForResourceType): |
| (WI.ResourceClusterContentView.prototype._pathComponentForContentView): |
| (WI.ResourceClusterContentView.prototype._identifierForContentView): |
| (WI.ResourceClusterContentView.prototype._showContentViewForIdentifier): |
| (WI.ResourceClusterContentView.prototype._resourceLoadingDidFinish): |
| (WI.ResourceClusterContentView.prototype._canUseDOMContentViewForContent): Added. |
| (WI.ResourceClusterContentView.prototype._normalizeMIMETypeForDOM): Added. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomRequestContentViews): Added. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentViews): Added. |
| (WI.ResourceClusterContentView.createPathComponent): Deleted. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomRequestContentView): Deleted. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView): Deleted. |
| * UserInterface/Base/Main.js: |
| (WI.showResourceRequest): |
| * UserInterface/Views/PathComponentIcons.css: |
| (.object-icon .icon): Added. |
| * UserInterface/Main.html: |
| * UserInterface/Views/SVGImageResourceClusterContentView.js: Removed. |
| Reworked to allow more than one custom request/response content view at the same time. As |
| such, merge the `WI.SVGImageResourceClusterContentView` into this class. |
| |
| * UserInterface/Views/LocalRemoteObjectContentView.js: Added. |
| (WI.LocalRemoteObjectContentView): |
| (WI.LocalRemoteObjectContentView.prototype.get expression): |
| (WI.LocalRemoteObjectContentView.prototype.renderRemoteObject): |
| (WI.LocalRemoteObjectContentView.prototype.initialLayout): |
| (WI.LocalRemoteObjectContentView.prototype.attached): |
| (WI.LocalRemoteObjectContentView.prototype.closed): |
| * UserInterface/Views/LocalRemoteObjectContentView.css: Added. |
| (.content-view.local-remote-object): |
| * UserInterface/Views/LocalDOMContentView.js: Added. |
| (WI.LocalDOMContentView): |
| (WI.LocalDOMContentView.prototype.get expression): |
| (WI.LocalDOMContentView.prototype.renderRemoteObject): |
| * UserInterface/Views/LocalJSONContentView.js: Added. |
| (WI.LocalJSONContentView): |
| (WI.LocalJSONContentView.prototype.get expression): |
| (WI.LocalJSONContentView.prototype.renderRemoteObject): |
| * UserInterface/Views/JSONContentView.js: Removed. |
| * UserInterface/Views/JSONContentView.css: Removed. |
| Rework `WI.JSONContentView` into a more generic set of classes that render an object we send |
| to the inspected page for instrumentation. |
| |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype.populateContextMenu): |
| (WI.DOMTreeOutline.prototype._onmousemove): |
| (WI.DOMTreeOutline.prototype._onmouseout): |
| (WI.DOMTreeOutline.prototype._ondragstart): |
| (WI.DOMTreeOutline.prototype._ondragover): |
| (WI.DOMTreeOutline.prototype._ondragleave): |
| (WI.DOMTreeOutline.prototype._ondragend): |
| (WI.DOMTreeOutline.prototype._hideElements): |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForDOMNode): |
| Ensure that interactions that would modify the DOM tree only happen when editable. If the |
| `WI.DOMTreeOutline` represents a "local" `WI.DOMNode` (one that's been sent to the inspected |
| page for instrumentation, and shouldn't be part of the main #document), don't allow any |
| editing actions to be performed. |
| |
| * UserInterface/Views/TextContentView.js: |
| (WI.TextContentView): |
| Allow a `representedObject` object to be provided and used instead of the given `string`. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Images/Object.svg: Added. |
| |
| 2019-09-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: implement blackboxing of script resources |
| https://bugs.webkit.org/show_bug.cgi?id=17240 |
| <rdar://problem/5732847> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When a script is blackboxed and the debugger attempts to pause in that script, the pause |
| reason/data will be saved and execution will continue until it has left the blackboxed |
| script. Once outside, execution is paused with the saved reason/data. |
| |
| This is especially useful when debugging issues using libraries/frameworks, as it allows the |
| developer to "skip" the internal logic of the library/framework and instead focus only on |
| how they're using it. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| (WI.DebuggerManager.prototype.initializeTarget): |
| (WI.DebuggerManager.supportsBlackboxingScripts): Added. |
| (WI.DebuggerManager.pauseReasonFromPayload): Added. |
| (WI.DebuggerManager.prototype.isScriptBlackboxed): Added. |
| (WI.DebuggerManager.prototype.setShouldBlackboxScript): Added. |
| (WI.DebuggerManager.prototype._pauseReasonFromPayload): |
| (WI.DebuggerManager.prototype._pauseReasonFromPayload): Deleted. |
| |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.prototype.get isScript): Added. |
| (WI.SourceCode.prototype.get supportsScriptBlackboxing): Added. |
| * UserInterface/Models/Script.js: |
| (WI.Script.prototype.get isScript): Added. |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.get isScript): Added. |
| Provide a more straightforward way of determining if a `WI.SourceCode` is a script. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._updatePauseReason): |
| (WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReason): |
| (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): |
| Display the original pause reason and breakpoint (if applicable) when pausing after leaving |
| a blackboxed script. |
| |
| * UserInterface/Views/SourceCodeTreeElement.js: |
| (WI.SourceCodeTreeElement.prototype.canSelectOnMouseDown): Added. |
| (WI.SourceCodeTreeElement.prototype.updateStatus): Added. |
| (WI.SourceCodeTreeElement.prototype._updateSourceCode): |
| (WI.SourceCodeTreeElement.prototype._updateToggleBlackboxImageElementState): Added. |
| (WI.SourceCodeTreeElement.prototype._handleToggleBlackboxedImageElementClick): Added. |
| * UserInterface/Views/SourceCodeTreeElement.css: Added. |
| (.tree-outline .item .status > .toggle-script-blackboxed): |
| (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed,): |
| (.tree-outline:focus .item.selected .status > .toggle-script-blackboxed): |
| (.tree-outline .item .status > .toggle-script-blackboxed.blackboxed): |
| (@media (prefers-color-scheme: dark) .tree-outline .item .status > .toggle-script-blackboxed): |
| |
| * UserInterface/Views/ResourceTreeElement.js: |
| (WI.ResourceTreeElement.prototype._updateResource): |
| (WI.ResourceTreeElement.prototype.updateStatus): Added. |
| (WI.ResourceTreeElement.prototype._updateStatus): Deleted. |
| Make sure that the loading indicator doesn't override the blackbox toggle. |
| |
| * UserInterface/Base/Setting.js: |
| (WI.Setting.prototype.set value): |
| (WI.Setting.prototype.save): Added. |
| When modifying an array value, that doesn't go through `WI.Setting.prototype.set value`, so |
| we need a more "manual" way of saving the new value. |
| |
| * UserInterface/Main.html: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Test/TestHarness.js: |
| (TestHarness.prototype.newline): Added. |
| (TestHarness.prototype.expectException): |
| Add a special case for logging error message objects when running protocol tests. |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Update .xcconfig symbols to reflect the current set of past and future product versions. |
| https://bugs.webkit.org/show_bug.cgi?id=200720 |
| <rdar://problem/54305032> |
| |
| Reviewed by Alex Christensen. |
| |
| Remove version symbols related to old OS's we no longer support, |
| ensure that version symbols are defined for OS's we do support. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/DebugRelease.xcconfig: |
| * Configurations/Version.xcconfig: |
| |
| 2019-08-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOMDebugger: support event breakpoints in Worker contexts |
| https://bugs.webkit.org/show_bug.cgi?id=200651 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype._updateDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateEventBreakpoint): |
| Add assertions when adding/removing DOM breakpoints or animation frame event breakpoints if |
| the target is a `WI.WorkerTarget`, as neither are supported by `Worker`s. |
| |
| 2019-08-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: replace uses of `Array.prototype.concat` with `Array.prototype.push` |
| https://bugs.webkit.org/show_bug.cgi?id=201082 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| `x = x.concat(y)` is very slow, as `x` has to be fully copied in order to add `y` to it. |
| Introduce `Array.prototype.pushIterable`, which iterates the given `iterable` and adds each |
| item to the `this` array. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype.get domBreakpoints): |
| (WI.DOMDebuggerManager.prototype.domBreakpointsInSubtree): |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.completionControllerCompletionsNeeded.receivedPropertyNames): |
| * UserInterface/Models/CSSCompletions.js: |
| (WI.CSSCompletions): |
| * UserInterface/Models/CSSKeywordCompletions.js: |
| (WI.CSSKeywordCompletions.forProperty): |
| (WI.CSSKeywordCompletions.forProperty.addKeywordsForName): |
| (WI.CSSKeywordCompletions.forFunction): |
| * UserInterface/Models/Canvas.js: |
| (WI.Canvas.prototype.recordingProgress): |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype._updateStyleCascade): |
| (WI.DOMNodeStyles.prototype._collectStylesInCascadeOrder): |
| * UserInterface/Models/TimelineRecording.js: |
| (WI.TimelineRecording.prototype.get sourceCodeTimelines): |
| (WI.TimelineRecording.prototype.initializeCallingContextTrees): |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.prototype._getPropertyDescriptorsResolver): |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._appendMessageTextAndArguments): |
| * UserInterface/Views/ContentBrowser.js: |
| (WI.ContentBrowser.prototype.get currentRepresentedObjects): |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype._visibleChildren): |
| * UserInterface/Views/DataGridNode.js: |
| (WI.DataGridNode.prototype.get filterableData): |
| * UserInterface/Views/HeapAllocationsTimelineView.js: |
| (WI.HeapAllocationsTimelineView.prototype.get selectionPathComponents): |
| * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js: |
| (WI.IndexedDatabaseObjectStoreContentView.prototype._fetchMoreData.processEntries): |
| * UserInterface/Views/NavigationItem.js: |
| (WI.NavigationItem.prototype.get _classNames): |
| * UserInterface/Views/ObjectTreeView.js: |
| (WI.ObjectTreeView.prototype._updateProperties): |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype._addResourcesForFrame): |
| * UserInterface/Views/OverviewTimelineView.js: |
| (WI.OverviewTimelineView.prototype._loadExistingRecords): |
| * UserInterface/Views/ResourceCollectionContentView.js: |
| (WI.ResourceCollectionContentView.prototype.get navigationItems): |
| * UserInterface/Views/ResourceHeadersContentView.js: |
| (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs): |
| * UserInterface/Views/ResourceSecurityContentView.js: |
| (WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs): |
| * UserInterface/Views/ScriptClusterTimelineView.js: |
| (WI.ScriptClusterTimelineView.prototype.get selectionPathComponents): |
| * UserInterface/Views/ScrubberNavigationItem.js: |
| (WI.ScrubberNavigationItem.prototype.get additionalClassNames): |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype._addGradientTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addColorTokens.pushPossibleColorToken): |
| (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addVariableTokens): |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype.selfOrDescendant): |
| * UserInterface/Views/View.js: |
| (WI.View._visitViewTreeForLayout): |
| |
| 2019-08-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION (r248873): Debugger: pressing delete on a breakpoint will also delete any resource/element parent immediately before it in the list |
| https://bugs.webkit.org/show_bug.cgi?id=200939 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement): |
| (WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement.checkIfSelectionAdjustmentNeeded): Deleted. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.SourcesNavigationSidebarPanel.this._breakpointsTreeOutline.ondelete.checkIfSelectionAdjustmentNeeded): Deleted. |
| When the `WI.TreeOutline`'s own `ondelete` is called, that means we must be handling a |
| delete that was _not_ handled by a `WI.TreeElement`. This means that the `selectedTreeElement` |
| has to be a resource/script, the `window` object, or one of the non-deletable breakpoints. |
| |
| In the case of a non-deletable breakpoint, since they're never removed from their parent |
| `WI.TreeOutline`, we just shift the selection to the next selectable `WI.TreeElement`. |
| |
| Otherwise, wait for the `WI.TreeOutline.Event.ElementRemoved` event to be fired, and adjust |
| the selection then based on whether the new `selectedTreeElement` is one of the "top" items, |
| namely the "All Exceptions", "Uncaught Exceptions", and "Assertion Failures" breakpoints. |
| |
| * UserInterface/Views/BreakpointTreeElement.js: |
| (WI.BreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/DOMBreakpointTreeElement.js: |
| (WI.DOMBreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/DOMNodeTreeElement.js: |
| (WI.DOMNodeTreeElement.prototype.ondelete): |
| * UserInterface/Views/EventBreakpointTreeElement.js: |
| (WI.EventBreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/URLBreakpointTreeElement.js: |
| (WI.URLBreakpointTreeElement.prototype.ondelete): |
| Add `return true;` to let the parent `WI.TreeOutline` know that the delete event was handled. |
| This prevents the parent `WI.TreeOutline`'s own `ondelete` from being called, which would |
| cause a double-delete as there would be a different `selectedTreeElement`. |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Remove support for macOS < 10.13 (part 3) |
| https://bugs.webkit.org/show_bug.cgi?id=201224 |
| <rdar://problem/54795934> |
| |
| Reviewed by Darin Adler. |
| |
| Remove symbols in WebKitTargetConditionals.xcconfig related to macOS |
| 10.13, including WK_MACOS_1013 and WK_MACOS_BEFORE_1013, and suffixes |
| like _MACOS_SINCE_1013. |
| |
| Also added some macOS target numbers. |
| |
| * Configurations/WebKitTargetConditionals.xcconfig: |
| |
| 2019-08-29 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Import file pickers sometimes do not import |
| https://bugs.webkit.org/show_bug.cgi?id=201290 |
| <rdar://problem/54826117> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Base/FileUtilities.js: |
| (WI.FileUtilities.importText): |
| (WI.FileUtilities.importJSON): |
| Keep the input element alive so it doesn't get garbage collected, |
| which makes the file chooser do nothing. |
| |
| (WI.FileUtilities.save): |
| (WI.FileUtilities.async.readText): |
| Place read operations after event handlers are setup in case the |
| read operations can happen synchronously and events may not fire. |
| |
| 2019-08-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r249078): JavaScript autocomplete doesn't work when evaluating properties of values |
| https://bugs.webkit.org/show_bug.cgi?id=201226 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| r249078 modified `WI.JavaScriptRuntimeCompletionProvider` to use arrays of property names |
| instead of objects for completion, but a few code paths were missed. |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated): |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNamesFromEvaluate): |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedObjectPropertyNames): Added. |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedArrayPropertyNames): |
| |
| * UserInterface/Models/CallFrame.js: |
| (WI.CallFrame.prototype.collectScopeChainVariableNames): |
| (WI.CallFrame.prototype.collectScopeChainVariableNames.propertiesCollected): |
| |
| 2019-08-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: replace uses of added utility `Array.prototype.keySet` with an actual `Set` |
| https://bugs.webkit.org/show_bug.cgi?id=201194 |
| |
| Reviewed by Ross Kirsling. |
| |
| They both have basically the same functionality, with one difference being that a `Set` can |
| work with arrays that have non-string values. |
| |
| * UserInterface/Base/Utilities.js: |
| (Array.prototype.keySet): Deleted. |
| * UserInterface/Controllers/CodeMirrorCompletionController.js: |
| (WI.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions): |
| (WI.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions.matchKeywords): |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.completionControllerCompletionsNeeded.receivedPropertyNames): |
| |
| 2019-08-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: change the styling of the special log "bubble" to match WI.ScopeBar |
| https://bugs.webkit.org/show_bug.cgi?id=201152 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ConsoleMessageView.css: |
| (.console-user-command.special-user-log > .console-message-body): |
| |
| 2019-08-26 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: decrease horizontal padding of `WI.ScopeBar` to have more room |
| https://bugs.webkit.org/show_bug.cgi?id=201090 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| There's a lot of "wasted" padding space around each item that we could reuse (or "move") for |
| other navigation items. |
| |
| * UserInterface/Views/FilterBar.css: |
| (.filter-bar > .navigation-bar > .item.scope-bar): |
| * UserInterface/Views/RadioButtonNavigationItem.css: |
| (.navigation-bar .item.radio.button.text-only): |
| * UserInterface/Views/ScopeBar.css: |
| (.scope-bar): |
| (body[dir=ltr] .scope-bar > li.multiple > select): |
| (body[dir=rtl] .scope-bar > li.multiple > select): |
| (.scope-bar > li.multiple > .arrows): |
| |
| * UserInterface/Views/RadioButtonNavigationItem.js: |
| (WI.RadioButtonNavigationItem): |
| (WI.RadioButtonNavigationItem.prototype.update): Deleted. |
| There's no reason to forcibly set the `min-width` since all instances are just text. |
| |
| * UserInterface/Views/AuditTestGroupContentView.js: |
| (WI.AuditTestGroupContentView.prototype.initialLayout): |
| * UserInterface/Views/AuditTestGroupContentView.css: |
| (.content-view.audit-test-group > header > nav:not(:empty):before): Deleted. |
| Remove the unnecessary "Showing: " prefix before the `WI.ScopeBar`. |
| |
| * UserInterface/Views/ScopeRadioButtonNavigationItem.js: Removed. |
| * UserInterface/Views/ScopeRadioButtonNavigationItem.css: Removed. |
| These classes were never used. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-24 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: "Copy Rule" menu item does not propagate comments properly |
| https://bugs.webkit.org/show_bug.cgi?id=201095 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype.commentOut): |
| (WI.CSSProperty.prototype.get formattedText): |
| Wrap the `text` in `/* ${text} */` if the `WI.CSSProperty` isn't `enabled` (e.g. commented out). |
| |
| 2019-08-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: create additional command line api functions for other console methods |
| https://bugs.webkit.org/show_bug.cgi?id=200971 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Expose all `console.*` functions in the command line API, since they're all already able to |
| be referenced via the `console` object. |
| |
| Provide a simpler interface for other injected scripts to modify the command line API. |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.get _commandLineAPIKeys): Added. |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.updateLastPropertyNames): |
| (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames): |
| |
| 2019-08-23 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: transparency checkerboard is too bright in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=201067 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/Main.css: |
| (@media (prefers-color-scheme: dark) :matches(img, canvas).show-grid): |
| * UserInterface/Views/ConsoleMessageView.css: |
| (.console-message-body > .show-grid): |
| |
| 2019-08-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: automatically select the "Evaluations" filter whenever running commands |
| https://bugs.webkit.org/show_bug.cgi?id=201060 |
| |
| Reviewed by Timothy Hatcher. |
| |
| If the Console is actively being filtered (e.g. not "All"), it can be confusing to run a |
| command, only to not see any results. We should automatically enable the "Evaluations" |
| filter in addition to any other existing filters in these cases. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype.didAppendConsoleMessageView): |
| * UserInterface/Views/ScopeBarItem.js: |
| (WI.ScopeBarItem.prototype.set selected): |
| (WI.ScopeBarItem.prototype.toggle): Added. |
| |
| 2019-08-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r248485): stack overflow when viewing a source map generated from inline content |
| https://bugs.webkit.org/show_bug.cgi?id=201042 |
| <rdar://problem/54509750> |
| |
| Reviewed by Antoine Quint. |
| |
| In r248485, `WI.ResourceClusterContentView` was changed to `requestContent` whenever the |
| given resource finished loading (by listening for `WI.Resource.Event.LoadingDidFinish`). |
| |
| Even though retrieving a source map's contents uses `Promise`s, in the case that the content |
| was inlined in the "original" source code, the code path would mark the source map as being |
| finished (which would fire a `WI.Resource.Event.LoadingDidFinish`) _before_ it could return |
| a `Promise`, which would've been cached (`WI.SourceCode.prototype.requestContent`) and |
| preventend any reentrancy. |
| |
| Wrapping the inline code path in a `Promise.resolve()` gives the `WI.SourceCode` a chance to |
| cache the `Promise` before any events are fired. |
| |
| * UserInterface/Models/SourceMapResource.js: |
| (WI.SourceMapResource.prototype.requestContentFromBackend): |
| |
| 2019-08-22 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: console.dir should expand objects |
| https://bugs.webkit.org/show_bug.cgi?id=152039 |
| <rdar://problem/23816853> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Expand objects logged by console.dir but keep them collapsed when logged by console.log. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.render): |
| |
| 2019-08-22 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Cleanup some unused code |
| https://bugs.webkit.org/show_bug.cgi?id=201041 |
| |
| Reviewed by Alex Christensen. |
| |
| * UserInterface/Views/CPUUsageCombinedView.css: |
| (.cpu-usage-combined-view > .graph > .stacked-area-chart): |
| * UserInterface/Views/CPUUsageCombinedView.js: |
| (WI.CPUUsageCombinedView): |
| * UserInterface/Views/MediaTimelineOverviewGraph.js: |
| (WI.MediaTimelineOverviewGraph): |
| |
| 2019-08-22 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Provide an engineering option to log protocol traffic as text |
| https://bugs.webkit.org/show_bug.cgi?id=200969 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Protocol/LoggingProtocolTracer.js: |
| (WI.LoggingProtocolTracer.prototype._processEntry): |
| (WI.LoggingProtocolTracer): |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createDebugSettingsView): |
| |
| 2019-08-21 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: DOM outline in Elements tab should be LTR |
| https://bugs.webkit.org/show_bug.cgi?id=200601 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Make DOM outlines in Console and Elements tab always LTR, |
| and unsure that Left and Right arrow keys continue working correctly. |
| |
| * UserInterface/Base/Main.js: |
| (WI.resolveLayoutDirectionForElement): Added. |
| The existing WI.resolvedLayoutDirection function returns the value of the root DOM element. |
| The newly added resolveLayoutDirectionForElement function returns the correct value for any element, |
| including elements with `dir=ltr` inside of `<body dir=rtl>`. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded): |
| (.tree-outline.dom li:not(.editing)): |
| (.tree-outline.dom li.editing): |
| (.tree-outline.dom li .pseudo-class-indicator): |
| (.tree-outline.dom.single-node li): |
| (.tree-outline.dom li.parent): |
| (.tree-outline.dom li .html-tag.close): |
| (.tree-outline.dom li.parent::before): |
| (.tree-outline.dom li.parent.shadow::after): |
| Remove RTL logic. |
| |
| * UserInterface/Views/DOMTreeOutline.js: |
| * UserInterface/Views/TreeOutline.js: |
| (WI.TreeOutline.prototype._treeKeyDown): |
| Make Left and Right arrow keys work correctly for LTR DOM outlines inside of the global RTL. |
| |
| 2019-08-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Page: re-add enable/disable after r248454 |
| https://bugs.webkit.org/show_bug.cgi?id=200947 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| We shouldn't design the agent system with only Web Inspector in mind. Other clients may want |
| to have different functionality, not being told about frames creation/updates/destruction. |
| In these cases, we should have graceful error message failures for other agents that rely on |
| the Page agent. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.initializeTarget): |
| |
| 2019-08-21 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: increase the filter bar's width when it's focused if a resource type filter is active |
| https://bugs.webkit.org/show_bug.cgi?id=200940 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/FilterBar.js: |
| (WI.FilterBar.prototype._handleFilterChanged): |
| (WI.FilterBar.prototype.get indicatingProgress): Deleted. |
| (WI.FilterBar.prototype.set indicatingProgress): Deleted. |
| (WI.FilterBar.prototype.get indicatingActive): Deleted. |
| (WI.FilterBar.prototype.set indicatingActive): Deleted. |
| If escape is pressed when the <input> is empty, unfocus (blur) the <input>. |
| Drive-by: remove unused/unnecessary functions. |
| |
| * UserInterface/Views/FilterBar.css: |
| (.filter-bar > input[type="search"]): |
| (:matches(.filter-bar, .search-bar) > input[type="search"]): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]:matches(:focus, :not(:placeholder-shown))): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]::-webkit-search-decoration): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]::-webkit-search-results-button): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]::placeholder): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]:matches(:not(:focus), :placeholder-shown)::-webkit-search-cancel-button): Added. |
| (:matches(.filter-bar, .search-bar) > .navigation-bar + input[type="search"]): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]:focus): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"] + :empty): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"]:focus ~ *): Added. |
| (:matches(.filter-bar, .search-bar) > input[type="search"] + .navigation-bar > .item.scope-bar:last-child): Added. |
| (.filter-bar > input[type="search"] + .navigation-bar > .item.scope-bar:last-child): Deleted. |
| (.filter-bar > .navigation-bar + input[type="search"]): Deleted. |
| (.filter-bar > input[type="search"]::placeholder): Deleted. |
| (.filter-bar > input[type="search"]:focus): Deleted. |
| (.filter-bar > input[type="search"]::-webkit-search-decoration): Deleted. |
| (.filter-bar.active > input[type="search"]::-webkit-search-decoration): Deleted. |
| (.filter-bar.indicating-progress > input[type="search"]::-webkit-search-decoration): Deleted. |
| (.filter-bar > input[type="search"] + .navigation-bar:empty): Deleted. |
| When the <input> is `:focus`, hide the following `WI.NavigationBar` (if it's being used) so |
| that there's more room to show the filter text. |
| Drive-by: fix background, border, and text color styling when `:focus`. |
| |
| * UserInterface/Views/SearchBar.css: |
| (.search-bar > input[type="search"]): |
| (.search-bar > input[type="search"]::placeholder): Deleted. |
| (.search-bar > input[type="search"]:focus): Deleted. |
| (.search-bar > input[type="search"]:not(:placeholder-shown)): Deleted. |
| (.search-bar > input[type="search"]:placeholder-shown::-webkit-search-cancel-button): Deleted. |
| (@media (prefers-color-scheme: dark)): Deleted. |
| (:matches(.search-bar, .filter-bar) > input[type="search"],): Deleted. |
| (:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder): Deleted. |
| (:matches(.search-bar, .filter-bar) > input[type="search"]:focus): Deleted. |
| * UserInterface/Views/SearchSidebarPanel.css: |
| (.sidebar > .panel.navigation.search > .search-bar): |
| (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]): |
| (.sidebar > .panel.navigation.search > .search-bar > .search-settings): Added. |
| (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]::-webkit-search-results-button): Deleted. |
| * UserInterface/Views/Toolbar.css: |
| (.toolbar .search-bar > input[type="search"]::-webkit-textfield-decoration-container): Deleted. |
| Move shared styles to FilterBar.css as `WI.FilterBar` are more common. |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| (@media (prefers-color-scheme: dark) :root): |
| Expose some CSS variables in light mode that were previously only defined in dark mode. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype._updateFilteredEntries): |
| (WI.NetworkTableContentView.prototype._updateURLFilterActiveIndicator): Deleted. |
| * UserInterface/Images/FilterFieldActiveGlyph.svg: Removed. |
| |
| 2019-08-21 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Remove unnecessary properties on SVGs |
| https://bugs.webkit.org/show_bug.cgi?id=200968 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/EventPause.svg: |
| * UserInterface/Images/EventPlay.svg: |
| * UserInterface/Images/EventProcessing.svg: |
| * UserInterface/Images/EventStop.svg: |
| * UserInterface/Images/MediaInstrument.svg: |
| |
| 2019-08-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Implement `queryHolders` Command Line API |
| https://bugs.webkit.org/show_bug.cgi?id=200458 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Call `queryHolders(object)` from the Console to return an array of objects that strongly |
| reference the given `object`. This could be very useful for finding JavaScript "leaks". |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| |
| 2019-08-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Address a few Esprima issues preventing pretty printing of resources |
| https://bugs.webkit.org/show_bug.cgi?id=200935 |
| |
| Reviewed by Timothy Hatcher. |
| |
| Address a few Esprima issues: |
| |
| Issue #1991 - Failure to parse template literal with destructuring assignment expression |
| https://github.com/jquery/esprima/issues/1991 |
| |
| Issue #1920 - Invalid Left Hand Side in for-in |
| https://github.com/jquery/esprima/issues/1920 |
| |
| * UserInterface/External/Esprima/esprima.js: |
| |
| 2019-08-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Update CodeMirror to support numeric separators in JavaScript numbers |
| https://bugs.webkit.org/show_bug.cgi?id=200942 |
| |
| Cherry-pick a few CodeMirror changes: |
| |
| [javascript mode] Support numeric separators |
| https://github.com/codemirror/CodeMirror/commit/beab8ed123683416bfec934df73d13401ec086b5#diff-9812850bb71d31e8dd60b476abb2bae8 |
| |
| [javascript mode] fix tokenizing of underscore properties |
| https://github.com/codemirror/CodeMirror/commit/463ea2c34ab442c0cae1d9732305219ca9b04dfe#diff-9812850bb71d31e8dd60b476abb2bae8 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/External/CodeMirror/javascript.js: |
| |
| 2019-08-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: move the resource type scope bar to be next to the filter |
| https://bugs.webkit.org/show_bug.cgi?id=200891 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| It's odd to have UI for controlling the active filters in two different places. Move the |
| resource type `WI.ScopeBar` to the filter bar area, and "promote" the resource grouping mode |
| items from a context menu to an always visible `WI.ScopeBar` in the space left by the |
| resource type `WI.ScopeBar` (switching between grouping modes quickly is a useful workflow). |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype.hasCustomFilters): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeScopeBarSelectionChanged): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu.addOption): Deleted. |
| (WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu): Deleted. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .filter-bar .sources-resource-type-scope-bar.default-item-selected:not(:hover)): Added. |
| (.sidebar > .panel.navigation.sources > .filter-bar .sources-resource-type-scope-bar.default-item-selected:hover): Added. |
| |
| * UserInterface/Views/FilterBar.js: |
| (WI.FilterBar.prototype.addFilterNavigationItem): Added. |
| (WI.FilterBar.prototype.addFilterBarButton): |
| * UserInterface/Views/FilterBar.css: |
| (.filter-bar > .navigation-bar > .item): |
| (.filter-bar > .navigation-bar > .item.button): Added. |
| (.filter-bar > .navigation-bar > .item.scope-bar): Added. |
| (.filter-bar > input[type="search"] + .navigation-bar > .item.scope-bar:last-child): Added. |
| Provide a way to add arbitrary `WI.NavigationItem` to the contained `WI.NavigationBar`. |
| Slightly adjust the spacing of the items (depending on their type) in the `WI.NavigationBar` |
| so they are all centered. |
| |
| * UserInterface/Views/ScopeBar.css: |
| (.scope-bar): |
| (.scope-bar > li): |
| (.scope-bar > li::after): |
| (.scope-bar > li:not(.selected):hover): Added. |
| (body[dir=ltr] .scope-bar > li.multiple > select): |
| (body[dir=rtl] .scope-bar > li.multiple > select): |
| (.scope-bar > li:not(.selected):hover::after): Added. |
| Introduce CSS variables for `margin`, `padding`, and `opacity` that callers can override to |
| customize the appearance of the `WI.ScopeBar`. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Sources: Give Origins their own icon in the Sources sidebar |
| https://bugs.webkit.org/show_bug.cgi?id=200683 |
| <rdar://problem/54269044> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Images/Origin.svg: Added. |
| * UserInterface/Main.html: |
| New resources. |
| |
| * UserInterface/Views/FolderIcon.css: |
| (.origin-icon .icon): |
| Light and Dark appearances for Origin icons. |
| |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/OriginTreeElement.js: |
| (WI.OriginTreeElement): |
| Very much like a folder with different classes. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match): |
| (WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters): |
| (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged): |
| Use OriginTreeElement in a few places. |
| |
| 2019-08-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Support for JavaScript BigInt |
| https://bugs.webkit.org/show_bug.cgi?id=180731 |
| <rdar://problem/36298748> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/External/CodeMirror/javascript.js: |
| (expressionAllowed): |
| Cherry-pick BigInt JavaScript mode support from CodeMirror: |
| https://github.com/codemirror/CodeMirror/pull/5411 |
| |
| * UserInterface/Images/TypeBigInt.svg: Added. |
| * UserInterface/Views/Variables.css: |
| (:root): |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| * UserInterface/Views/SyntaxHighlightingDefaultTheme.css: |
| (.cm-s-default .cm-number.cm-bigint,): |
| * UserInterface/Views/ObjectTreePropertyTreeElement.css: |
| (.object-tree-property.bigint > .icon): |
| * UserInterface/Views/HeapSnapshotInstancesContentView.css: |
| (.heap-snapshot .icon.bigint): |
| Style BigInt similiar but different from numbers but with |
| a [B] icon instead of [N]. |
| |
| * UserInterface/Views/FormattedValue.css: |
| (.formatted-bigint): |
| * UserInterface/Views/FormattedValue.js: |
| (WI.FormattedValue.hasSimpleDisplay): |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate): |
| (WI.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression): |
| Simple value formatting for the new type. |
| |
| * UserInterface/Models/TypeSet.js: |
| (WI.TypeSet): |
| (WI.TypeSet.prototype.get primitiveTypeNames): |
| * UserInterface/Views/TypeTokenView.css: |
| (.type-token-bigint): |
| * UserInterface/Views/TypeTokenView.js: |
| (WI.TypeTokenView.prototype._displayTypeName): |
| (WI.TypeTokenView): |
| New type handling for the Type profiler. |
| |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject): |
| (WI.RemoteObject.createBigIntFromDescriptionString): |
| * UserInterface/Views/HeapSnapshotClusterContentView.js: |
| (WI.HeapSnapshotClusterContentView.iconStyleClassNameForClassName): |
| * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: |
| (WI.HeapSnapshotInstanceDataGridNode.prototype._populatePreview): |
| BigInt values are not tied to a GlobalObject, so do some special casing |
| in the Heap output (like Strings) so we get a preview. |
| |
| 2019-08-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Use URL constructor to better handle all kinds of URLs |
| https://bugs.webkit.org/show_bug.cgi?id=165155 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/URLUtilities.js: |
| (parseURL): |
| |
| 2019-08-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: add a global breakpoint for pausing in the next microtask |
| https://bugs.webkit.org/show_bug.cgi?id=200652 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| (WI.DebuggerManager.prototype.initializeTarget): |
| (WI.DebuggerManager.prototype.get allMicrotasksBreakpoint): ADded. |
| (WI.DebuggerManager.prototype.isBreakpointSpecial): |
| (WI.DebuggerManager.prototype._pauseReasonFromPayload): |
| (WI.DebuggerManager.prototype._breakpointDisabledStateDidChange): |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel): |
| (WI.DebuggerSidebarPanel.prototype.saveStateToCookie): |
| (WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie): |
| (WI.DebuggerSidebarPanel.prototype._addBreakpoint): |
| (WI.DebuggerSidebarPanel.prototype._addTreeElement): |
| (WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection): |
| (WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement): |
| (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint): |
| (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| |
| * UserInterface/Views/BreakpointTreeElement.css: |
| (.breakpoint-microtask-icon .icon): Added. |
| * UserInterface/Images/Microtask.svg: Added. |
| |
| * UserInterface/Base/Setting.js: |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r248682): Elements: Computed: go-to arrows in the Variables section are misaligned |
| https://bugs.webkit.org/show_bug.cgi?id=200841 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| The Variables section uses a different CSS class since it's identifier changed in r248682. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.css: |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables)): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) .property:not(:hover) .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties .property .go-to-arrow): Deleted. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties .property:hover .go-to-arrow): Deleted. |
| |
| 2019-08-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: have more aggressive checks for dataURLs provided to `console.screenshot` |
| https://bugs.webkit.org/show_bug.cgi?id=200747 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Always send any /data:*+/ strings to the frontend and have it render there. If that doesn't |
| work, have the frontend "spoof" an error message look and feel. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._appendMessageTextAndArguments): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-19 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: Network headers values should be preserved |
| https://bugs.webkit.org/show_bug.cgi?id=200873 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Replace spans with bdi elements, which have `unicode-bidi: isolate` User Agent style. |
| This works well with both LTR and RTL values. |
| |
| * UserInterface/Views/ResourceDetailsSection.js: |
| (WI.ResourceDetailsSection.prototype.appendKeyValuePair): |
| Drive-by: remove unnecessary if/else statement and use `append` instead. |
| |
| 2019-08-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Debugger: pressing delete when the all/uncaught exceptions breakpoint is selected should select the next tree element |
| https://bugs.webkit.org/show_bug.cgi?id=200876 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Removing the `return true;` from the various `WI.TreeElement` breakpoint classes allows the |
| owner `WI.TreeOutline` to also handle the delete event. In the Debugger/Sources navigation |
| sidebar, the owner `WI.TreeOutline` checks to see if the currently selected `WI.TreeElement` |
| is one of the "top" items ("All Exceptions", "Uncaught Exceptions", "Assertion Failures") |
| and if so, select the next tree element (if able) instead of the previous one. |
| |
| This is a preferred experience because the "top" items can only be disabled, not deleted, so |
| trying to delete them wouldn't actually change the selection. They should only ever be |
| selected if there's nothing else that can be selected. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement): |
| (WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement.checkIfSelectionAdjustmentNeeded): Added. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.checkIfSelectionAdjustmentNeeded): Added. |
| |
| * UserInterface/Views/BreakpointTreeElement.js: |
| (WI.BreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/DOMBreakpointTreeElement.js: |
| (WI.DOMBreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/DOMNodeTreeElement.js: |
| (WI.DOMNodeTreeElement.prototype.ondelete): |
| * UserInterface/Views/EventBreakpointTreeElement.js: |
| (WI.EventBreakpointTreeElement.prototype.ondelete): |
| * UserInterface/Views/URLBreakpointTreeElement.js: |
| (WI.URLBreakpointTreeElement.prototype.ondelete): |
| |
| 2019-08-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: don't show the All Requests breakpoint by default |
| https://bugs.webkit.org/show_bug.cgi?id=200892 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/Setting.js: |
| |
| 2019-08-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: gear icons moves to 2nd line when sidebar is narrow |
| https://bugs.webkit.org/show_bug.cgi?id=198017 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/NavigationBar.js: |
| (WI.NavigationBar): |
| (WI.NavigationBar.prototype.layout): |
| (WI.NavigationBar.prototype.layout.forceItemHidden): Added. |
| (WI.NavigationBar.prototype.layout.isDivider): Added. |
| (WI.NavigationBar.prototype.layout.calculateVisibleItemWidth): Added. |
| (WI.NavigationBar.prototype.needsLayout): Deleted. |
| (WI.NavigationBar.prototype.sizeDidChange): Deleted. |
| (WI.NavigationBar.prototype._updateContent): Deleted. |
| (WI.NavigationBar.prototype._updateContent.forceItemHidden): Deleted. |
| (WI.NavigationBar.prototype._updateContent.isDivider): Deleted. |
| (WI.NavigationBar.prototype._updateContent.calculateVisibleItemWidth): Deleted. |
| Reset the cached `_minimumWidth` whenever updating in `layout()`. |
| |
| * UserInterface/Views/NavigationItem.js: |
| (WI.NavigationItem.prototype.get width): |
| (WI.NavigationItem.prototype.update): Added. |
| (WI.NavigationItem.prototype.updateLayout): Deleted. |
| (WI.NavigationItem.prototype.get totalMargin): Added. |
| * UserInterface/Views/ButtonNavigationItem.js: |
| (WI.ButtonNavigationItem.prototype.get totalMargin): Added. |
| * UserInterface/Views/ButtonNavigationItem.css: |
| * UserInterface/Views/TextNavigationItem.js: |
| (WI.TextNavigationItem.prototype.get totalMargin): Added. |
| * UserInterface/Views/TextNavigationItem.css: |
| `Element.prototype.getBoundingClientRect` doesn't include the `margin` box of an element. |
| Rather than create a CSS variable and parse a computed style, save the total `margin` amount |
| to a getter that can then be added when computing the minimum width. |
| |
| * UserInterface/Views/Sidebar.js: |
| (WI.Sidebar): |
| (WI.Sidebar.prototype._recalculateWidth): |
| * UserInterface/Views/FlexibleSpaceNavigationItem.js: |
| (WI.FlexibleSpaceNavigationItem.prototype.update): Added. |
| (WI.FlexibleSpaceNavigationItem.prototype.updateLayout): Deleted. |
| * UserInterface/Views/GroupNavigationItem.js: |
| (WI.GroupNavigationItem.prototype.update): Added. |
| (WI.GroupNavigationItem.prototype.updateLayout): Deleted. |
| * UserInterface/Views/HierarchicalPathNavigationItem.js: |
| (WI.HierarchicalPathNavigationItem.prototype.update): Added. |
| (WI.HierarchicalPathNavigationItem.prototype.updateLayout): Deleted. |
| * UserInterface/Views/RadioButtonNavigationItem.js: |
| (WI.RadioButtonNavigationItem.prototype.update): Added. |
| (WI.RadioButtonNavigationItem.prototype.updateLayout): Deleted. |
| Rename `updateLayout` to `update` so it doesn't clash with `WI.View` naming. |
| |
| * UserInterface/Views/SidebarNavigationBar.js: Removed. |
| * UserInterface/Main.html: |
| * UserInterface/Views/NavigationBar.css: |
| (.navigation-bar .item): Added. |
| (.navigation-bar .item, .sidebar-navigation-bar > .holder .item): Deleted. |
| (.sidebar-navigation-bar): Deleted. |
| (.sidebar-navigation-bar .holder): Deleted. |
| Remove unnecessary class. |
| |
| 2019-08-16 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Syntax Highlight more CSS media queries |
| https://bugs.webkit.org/show_bug.cgi?id=200824 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| Special case CSS "error" tokenized values from CodeMirror inside @ rules |
| to treat some as properties. |
| |
| 2019-08-16 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: JavaScript formatting of single statement arrow function can be poor |
| https://bugs.webkit.org/show_bug.cgi?id=200800 |
| |
| Reviewed by Ross Kirsling. |
| |
| * UserInterface/Workers/Formatter/EsprimaFormatter.js: |
| (EsprimaFormatter.prototype._isLikelyToHaveNewline): |
| (EsprimaFormatter.prototype._handleTokenAtNode): |
| Better heuristic for single statement arrow functions. |
| |
| 2019-08-16 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: there should be an opposite icon for Eye.svg when we want to hide things instead of showing them |
| https://bugs.webkit.org/show_bug.cgi?id=200736 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| We currently use Eye.svg for disabling, or turning "off", Shader Programs, but it's not very |
| clear that clicking on the eye (which looks like "show me this", not "hide this") will do |
| that. Furthermore, a greyed out version also isn't clear that the Shader Program is disabled, |
| instead making the user think that the disable toggle is somehow "not working". |
| |
| The new hide icon is clearer, as it uses a strikethrough, rather than some shading/greying. |
| |
| * UserInterface/Views/ShaderProgramTreeElement.css: |
| (.item.shader-program .status > img): |
| (.item.shader-program.disabled:matches:hover .status > img): Added. |
| (.item.shader-program.disabled > :not(.status)): Added. |
| (.item.shader-program.disabled > *): Deleted. |
| * UserInterface/Images/Hide.svg: Added. |
| |
| * UserInterface/Views/ObjectTreePropertyTreeElement.css: |
| (.object-tree-property .getter): |
| * UserInterface/Images/Show.svg: Renamed from UserInterface/Images/Eye.svg. |
| |
| 2019-08-16 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: rename "Invalid Characters" to "Invisible Characters" for clarity |
| https://bugs.webkit.org/show_bug.cgi?id=200808 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createGeneralSettingsView): |
| |
| * UserInterface/Base/Main.js: |
| (setInvisibleCharacterClassName): Added. |
| (setInvalidCharacterClassName): Deleted. |
| * UserInterface/Views/CodeMirrorOverrides.css: |
| (.show-invisible-characters .CodeMirror .cm-invalidchar): Added. |
| (.show-invalid-characters .CodeMirror .cm-invalidchar): Deleted. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-16 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: Console should be always LTR |
| https://bugs.webkit.org/show_bug.cgi?id=200482 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ConsoleCommandView.js: |
| (WI.ConsoleCommandView.prototype.render): |
| * UserInterface/Views/ConsoleMessageView.css: |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.render): |
| Make console messages always LTR. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._keyDown): |
| Since the console is always LTR now, we can remove code that flips left and right |
| arrow keys. |
| |
| * UserInterface/Views/ObjectTreeView.css: |
| JS objects should always be LTR. |
| |
| * UserInterface/Views/TreeElement.js: |
| Look at "direction" CSS property because Element's text direction can be LTR even |
| when `WI.resolvedLayoutDirection()` is RTL. |
| |
| (WI.TreeElement.prototype.isEventWithinDisclosureTriangle): |
| * UserInterface/Views/TreeOutline.css: |
| (body[dir=ltr] .tree-outline .item :matches(.disclosure-button, .icon),): |
| (body[dir=rtl] [dir=ltr] .tree-outline .item .disclosure-button): |
| |
| 2019-08-16 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: setting a breakpoint on a specific listener should enable the event listener |
| https://bugs.webkit.org/show_bug.cgi?id=200551 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/EventListenerSectionGroup.js: |
| (WI.EventListenerSectionGroup): |
| |
| 2019-08-15 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Update Esprima to support modern JavaScript language features |
| https://bugs.webkit.org/show_bug.cgi?id=200796 |
| |
| Reviewed by Ross Kirsling. |
| |
| Use a fork of Esprima to support modern JavaScript language features |
| while going through the process to upstream support: |
| |
| ES2018 Feature: Async Iteration (for-await-of) |
| https://github.com/jquery/esprima/issues/1990 |
| |
| ES2019 Feature: Numeric Separator |
| https://github.com/jquery/esprima/issues/1989 |
| |
| ES2019 Feature: Optional catch binding |
| https://github.com/jquery/esprima/issues/1953 |
| |
| ES2020 Feature: BigInt |
| https://github.com/jquery/esprima/issues/1988 |
| |
| ESTree compatible AST changes are summarized as: |
| |
| - CatchClause `param` property is now nullable |
| - ForOfStatement now has a boolean `await` property |
| - Literal can be a `"bigint"` type (works if the environment has BigInt or not) |
| |
| The pretty printer only needed to have additional handling for `for-await-of`. |
| |
| * UserInterface/External/Esprima/esprima.js: |
| New version. Typescript output expects a modern JavaScript environment |
| instead of just ES6. |
| |
| * Tools/Formatting/index.html: |
| Update the formatting tool for easier use in case of errors. |
| |
| * UserInterface/Models/ScriptSyntaxTree.js: |
| (WI.ScriptSyntaxTree.prototype._createInternalSyntaxTree): |
| |
| * UserInterface/Test/TestHarness.js: |
| (TestHarness.prototype.passOrFail): |
| Convenience for pass/fail with the same message based on a condition. |
| |
| * UserInterface/Workers/Formatter/EsprimaFormatter.js: |
| (EsprimaFormatter.prototype._handleTokenAtNode): |
| Ensure a space after `await` in `for await` syntax. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r244268): "Show Scope Chain on pause" setting has no effect |
| https://bugs.webkit.org/show_bug.cgi?id=200797 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/DebuggerTabContentView.js: |
| (WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels): |
| * UserInterface/Views/SourcesTabContentView.js: |
| (WI.SourcesTabContentView.prototype.showDetailsSidebarPanels): |
| When the sidebar panel isn't visible `parentSidebar` is `null`. Use `WI.DetailsSidebar` instead. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'this._resource.initiatorSourceCodeLocation') |
| https://bugs.webkit.org/show_bug.cgi?id=200798 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ResourceDetailsSidebarPanel.js: |
| (WI.ResourceDetailsSidebarPanel.prototype.set resource): |
| (WI.ResourceDetailsSidebarPanel.prototype.layout): |
| Cancel the `Throttler` whenever the `_resource` is updated, as otherwise the `Throttler` may |
| fire later on with an unset `_resource`. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: provide a way to create an arbitrary Inspector Style Sheet |
| https://bugs.webkit.org/show_bug.cgi?id=200425 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Right now, the only way to create an Inspector Style Sheet is by creating a new rule in the |
| Styles sidebar of the Elements Tab. This is unnecessarily restrictive, especially for those |
| who don't use the Elements tab. |
| |
| Add a + button after the filter bar in the Navigation sidebar. Clicking on the + button will |
| show a menu with the following (more likely to be added later): |
| - Inspector Style Sheet |
| - Frames (if there are subframes) |
| - (name of subframe) |
| - Inspector Style Sheet |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._filterByResourcesWithIssues): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements): |
| (WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement): |
| (WI.SourcesNavigationSidebarPanel.prototype._addResource): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleFrameWasAdded): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange): Deleted. |
| * UserInterface/Views/GeneralTreeElement.js: |
| (WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath): |
| Drive-by: sort `WI.ResourceTreeElement`s alongside `WI.FolderTreeElement`s for easier readability. |
| |
| * UserInterface/Views/FrameTreeElement.js: |
| (WI.FrameTreeElement.prototype.onpopulate): |
| Add all `inspectorStyleSheetsForFrame` instead of just the preferred one so that they all |
| are visible/selectable for editing. |
| |
| * UserInterface/Views/FilterBar.js: |
| (WI.FilterBar): |
| * UserInterface/Views/FilterBar.css: |
| (.filter-bar > .navigation-bar > .item): |
| (.filter-bar > input[type="search"]): |
| (.filter-bar > .navigation-bar + input[type="search"]): Added. |
| (.filter-bar > input[type="search"] + .navigation-bar:empty): Added. |
| Move the position of the filter bar buttons to be after the filter bar itself, so that other |
| parents can add action items before the filter bar to keep a consistent positioning. |
| - to the left of the filter bar are action items (e.g. "+") |
| - the filter bar itself |
| - to the right of the filter bar are filter buttons (e.g. "filter by resoure with issue") |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.get frames): |
| Drive-by: use `Array.from`, instead of `[...map.values()]`. |
| |
| * UserInterface/Models/Frame.js: |
| (WI.Frame.prototype.get url): |
| (WI.Frame.prototype.get urlComponents): Added. |
| |
| * UserInterface/Base/URLUtilities.js.js: |
| (parseURL): |
| Calculate and include the `origin` string with the output. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame): |
| Remove `doNotCreateIfMissing` now that the last caller has been removed. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: CodeMirror still inserts a tab even when "Prefer indent using" is set to "Spaces" |
| https://bugs.webkit.org/show_bug.cgi?id=200770 |
| |
| Reviewed by Ross Kirsling. |
| |
| * UserInterface/Views/CodeMirrorAdditions.js: |
| Remap the `insertTab` command to use `insertSoftTab` when "Prefer indent using" is set to |
| "Spaces" so that CodeMirror inserts the number of spaces that would match a tab ("\t") being |
| inserted at the same spot. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: the "No Filter Results" message sits on top of all of the content, preventing any interaction |
| https://bugs.webkit.org/show_bug.cgi?id=200755 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > .resources-container): Added. |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources-container)): Added. |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > .call-stack-container): |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > .breakpoints-container): |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > .resources-container): Added. |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources)): Deleted. |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > .resources): Deleted. |
| Wrap the resources `WI.TreeOutline` in a <div> so the empty message placeholder that gets |
| inserted after it can be constrained to the size of the `WI.TreeOutline`. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Layers: background of 3D area doesn't update when transitioning to/from Dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=200775 |
| |
| Reviewed by Ross Kirsling. |
| |
| * UserInterface/Views/Layers3DContentView.js: |
| (WI.Layers3DContentView.prototype.initialLayout): |
| Add a `matchMedia` listener for `(prefers-color-scheme: dark)` and update the clear color |
| of the WebGL renderer whenever it changes. |
| |
| * UserInterface/Views/ErrorObjectView.css: |
| (@media (prefers-color-scheme: dark)): Added. |
| (@media (prefers-dark-interface)): Deleted. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (@media (prefers-color-scheme: dark)): Added. |
| (@media (prefers-dark-interface)): Deleted. |
| Drive-by: replace older `prefers-dark-interface` with modern `prefers-color-scheme: dark`. |
| |
| 2019-08-15 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Update Esprima to trunk (minor fixes) |
| https://bugs.webkit.org/show_bug.cgi?id=200691 |
| <rdar://problem/54276170> |
| |
| Rubber-stamped by Devin Rousso. |
| |
| * UserInterface/External/Esprima/esprima.js: |
| Updated to jquery/esprima@5e55171feb5adbc2b1d28ef4b2628d5ea9af0848. |
| |
| * UserInterface/Models/ScriptSyntaxTree.js: |
| (WI.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers): |
| (WI.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration): |
| (WI.ScriptSyntaxTree.prototype._recurse): |
| (WI.ScriptSyntaxTree.prototype._createInternalSyntaxTree): |
| (WI.ScriptSyntaxTree): |
| * UserInterface/Workers/Formatter/ESTreeWalker.js: |
| (ESTreeWalker.prototype._walkChildren): |
| (ESTreeWalker): |
| * UserInterface/Workers/Formatter/EsprimaFormatter.js: |
| (EsprimaFormatter.prototype._handleTokenAtNode): |
| - SpreadProperty => SpreadElement. |
| - RestProperty => RestElement. |
| |
| 2019-08-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Content request failed. |
| https://bugs.webkit.org/show_bug.cgi?id=200704 |
| <rdar://problem/54279372> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Models/WebSocketResource.js: |
| (WI.WebSocketResource.prototype.requestContentFromBackend): Added. |
| Add an "assert not reached", as WebSocket resources don't really have "content", instead |
| having a list of send/receive frames. |
| |
| * UserInterface/Views/ResourceClusterContentView.js: |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView): |
| Don't attempt to request the content of any `WI.WebSocketResource` for the reason above. |
| |
| 2019-08-14 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Computed: move the Box Model section to the top |
| https://bugs.webkit.org/show_bug.cgi?id=200555 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| For nodes that use a lot of different CSS properties, having the Box Model section all the |
| way at the bottom isn't as useful for taking a quick glance at the node's box model data. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.js: |
| (WI.ComputedStyleDetailsPanel.prototype.initialLayout): |
| |
| 2019-08-14 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Computed: the collapsed state of the Variables section should be separate from the collapsed state of the Properties section |
| https://bugs.webkit.org/show_bug.cgi?id=200725 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.js: |
| (WI.ComputedStyleDetailsPanel.prototype.initialLayout): |
| Use a different identifier string for the Variable section so it preserves its own collapsed |
| collapsed state independent of the Properties section. |
| |
| 2019-08-14 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Computed: the background of the Properties/Variables sections should match the Box Model section when expanded |
| https://bugs.webkit.org/show_bug.cgi?id=200724 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.css: |
| (.sidebar > .panel.details.css-style > .content > .computed > .details-section:not(.collapsed) > :matches(.header, .content)): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties .property .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .computed-style-properties .property:hover .go-to-arrow): Added. |
| (.sidebar > .panel.details.css-style > .content > .computed .details-section:matches(.computed-style-properties, .computed-style-variables) > .content): Added. |
| (.details-section:matches(.computed-style-properties, .computed-style-box-model):not(.collapsed) > :matches(.header, .content)): Deleted. |
| (.computed-style-properties): Deleted. |
| (.computed-style-properties .property .go-to-arrow): Deleted. |
| (.computed-style-properties .property:hover .go-to-arrow): Deleted. |
| (.details-section.computed-style-properties:not(.collapsed) > :matches(.header, .content)): Deleted. |
| (.details-section.computed-style-properties > .content): Deleted. |
| (@media (prefers-color-scheme: dark)): Deleted. |
| Use more specific selectors to match overall Web Inspector style. |
| |
| * UserInterface/Views/ComputedStyleSection.css: |
| (.computed-style-section .computed-property-item.expanded): |
| Darken the background of any expanded computed property in light mode. |
| |
| 2019-08-13 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Uncaught Exception: content.isJSON is not a function selecting image resource |
| https://bugs.webkit.org/show_bug.cgi?id=200680 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ResourceClusterContentView.js: |
| (WI.ResourceClusterContentView.prototype._canUseJSONContentViewForContent): |
| Protect against non-string data, such as Blob response content. |
| |
| 2019-08-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Styles: show @supports CSS groupings |
| https://bugs.webkit.org/show_bug.cgi?id=200419 |
| <rdar://problem/53971948> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/CSSGrouping.js: Renamed from Source/WebInspectorUI/UserInterface/Models/CSSMedia.js. |
| (WI.CSSGrouping): |
| (WI.CSSGrouping.prototype.get type): |
| (WI.CSSGrouping.prototype.get text): |
| (WI.CSSGrouping.prototype.get sourceCodeLocation): |
| (WI.CSSGrouping.prototype.get isMedia): Added. |
| (WI.CSSGrouping.prototype.get isSupports): Added. |
| (WI.CSSGrouping.prototype.get prefix): Added. |
| |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.get groupings): Added. |
| (WI.CSSStyleDeclaration.prototype.generateCSSRuleString): |
| (WI.CSSStyleDeclaration.prototype.get mediaList): Deleted. |
| |
| * UserInterface/Models/CSSRule.js: |
| (WI.CSSRule): |
| (WI.CSSRule.prototype.get groupings): Added. |
| (WI.CSSRule.prototype.update): |
| (WI.CSSRule.prototype._selectorResolved): |
| (WI.CSSRule.prototype.get mediaList): Deleted. |
| |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype._parseRulePayload): |
| (WI.DOMNodeStyles.prototype.rulesForSelector): Deleted. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader): Deleted. |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: |
| (.spreadsheet-css-declaration :matches(.header, .header-groupings)): Added. |
| (.spreadsheet-css-declaration :matches(.header, .header-groupings):first-child): Added. |
| (.spreadsheet-css-declaration .header-groupings > .grouping): Added. |
| (.spreadsheet-css-declaration :matches(.header, .header-media)): Deleted. |
| (.spreadsheet-css-declaration :matches(.header, .header-media):first-child): Deleted. |
| (.spreadsheet-css-declaration .media-label): Deleted. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.protocolGroupingTypeToEnum): Added. |
| (WI.CSSManager.protocolMediaSourceToEnum): Deleted. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| |
| 2019-08-12 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION(r248391): Web Inspector: changing Layout Direction Debug setting no longer adds dir="ltr" to body element |
| https://bugs.webkit.org/show_bug.cgi?id=200564 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| `WI.resolvedLayoutDirection` was called before `WI.runBootstrapOperations`, which is what |
| instantiates `WI.showDebugUISetting`. Without it, `WI.resolvedLayoutDirection` will ignore |
| the value of `WI.settings.debugLayoutDirection` and instead use the system. |
| |
| Moving the instantiation of `WI.showDebugUISetting` outside `WI.runBootstrapOperations` |
| allows the setting to be created when the Bootstrap.js script is loaded, rather than after |
| the `DOMContentLoaded` event is fired. This means that it's guaranteed to exist before any |
| interface/view code runs. |
| |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| |
| 2019-08-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: remove WI.DeprecatedRemoteObjectProperty |
| https://bugs.webkit.org/show_bug.cgi?id=200549 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.prototype.deprecatedGetOwnProperties): Deleted. |
| (WI.RemoteObject.prototype.deprecatedGetAllProperties): Deleted. |
| (WI.RemoteObject.prototype.deprecatedGetDisplayableProperties): Deleted. |
| (WI.RemoteObject.prototype._deprecatedGetProperties): Deleted. |
| (WI.RemoteObject.prototype._deprecatedGetPropertiesResolver): Deleted. |
| (WI.DeprecatedRemoteObjectProperty): Deleted. |
| (WI.DeprecatedRemoteObjectProperty.prototype.fromPrimitiveValue): Deleted. |
| |
| * UserInterface/Models/CallFrame.js: |
| (WI.CallFrame.prototype.collectScopeChainVariableNames): |
| |
| * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: |
| (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties): |
| |
| 2019-08-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r248201): DOMDebugger: unable to add event breakpoint when All Events breakpoint is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=200561 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype.addEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype.removeEventBreakpoint): |
| |
| 2019-08-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: DOMDebugger: breakpoints are forcibly enabled when resolving DOM breakpoints for newly added nodes |
| https://bugs.webkit.org/show_bug.cgi?id=200639 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Since DOM breakpoints revolve around a given DOM node, we attempt to restore DOM breakpoints |
| whenever new nodes are added by matching them to the path of the DOM breakpoint. When doing |
| so, we should be in a "temporarily restoring breakpoints" mode so that we don't forcibly |
| enable all breakpoints. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpointsForURL): |
| (WI.DOMDebuggerManager.prototype._nodeInserted): |
| |
| 2019-08-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: add space between media query and style icon |
| https://bugs.webkit.org/show_bug.cgi?id=200623 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: |
| (.spreadsheet-css-declaration .header:not(:first-child), .spreadsheet-css-declaration .header:not(.editing-selector) .selector, .spreadsheet-css-declaration.has-icon .header.editing-selector .selector): Added. |
| (.spreadsheet-css-declaration .header.editing-selector .selector): Deleted. |
| Ensure the selector field doesn't shift vertically when entering/exiting editing mode. |
| |
| 2019-08-09 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Address some ESLint warnings |
| https://bugs.webkit.org/show_bug.cgi?id=200598 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Base/Utilities.js: |
| * UserInterface/Controllers/TimelineManager.js: |
| * UserInterface/Models/DOMNodeStyles.js: |
| * UserInterface/Models/LayoutTimelineRecord.js: |
| * UserInterface/Models/ServerTimingEntry.js: |
| * UserInterface/Models/TimelineRecording.js: |
| * UserInterface/Protocol/RemoteObject.js: |
| * UserInterface/Test/FrontendTestHarness.js: |
| * UserInterface/Test/Test.js: |
| * UserInterface/Views/CPUTimelineView.js: |
| * UserInterface/Views/CPUUsageCombinedView.js: |
| * UserInterface/Views/ChangesDetailsSidebarPanel.js: |
| * UserInterface/Views/DOMTreeContentView.js: |
| * UserInterface/Views/DOMTreeElement.js: |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| * UserInterface/Views/NetworkTableContentView.js: |
| * UserInterface/Views/ResourceTimingBreakdownView.js: |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| * UserInterface/Views/TreeOutline.js: |
| |
| 2019-08-09 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Better organize manager / observer API groups |
| https://bugs.webkit.org/show_bug.cgi?id=200594 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.globalObjectCleared): |
| (WI.DebuggerManager.prototype.reset): Deleted. |
| Renamed. |
| |
| * UserInterface/Protocol/DebuggerObserver.js: |
| (WI.DebuggerObserver.prototype.globalObjectCleared): |
| |
| * UserInterface/Controllers/CSSManager.js: |
| * UserInterface/Controllers/CanvasManager.js: |
| * UserInterface/Controllers/ConsoleManager.js: |
| * UserInterface/Controllers/DOMManager.js: |
| * UserInterface/Controllers/DOMStorageManager.js: |
| * UserInterface/Controllers/LayerTreeManager.js: |
| * UserInterface/Controllers/NetworkManager.js: |
| * UserInterface/Controllers/TargetManager.js: |
| * UserInterface/Controllers/TimelineManager.js: |
| * UserInterface/Controllers/WorkerManager.js: |
| |
| 2019-08-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r248454): WK1 inspector frontend client doesn't queue messages to the frontend before it's loaded |
| https://bugs.webkit.org/show_bug.cgi?id=200587 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| WK1 inspector sends messages to the frontend using `WebCore::InspectorClient::doDispatchMessageOnFrontendPage`, |
| which does not do any sort of queueing to wait until the frontend is loaded (`InspectorFrontendHost.loaded()`). |
| |
| Now that we are sending messages immediately, we should always queue. |
| |
| * UserInterface/Test/TestStub.js: |
| (InspectorFrontendAPI.dispatch): Added. |
| |
| * UserInterface/Models/Frame.js: |
| (WI.Frame.prototype.markDOMContentReadyEvent): |
| (WI.Frame.prototype.markLoadEvent): |
| |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager.prototype.pageDOMContentLoadedEventFired): |
| (WI.TimelineManager.prototype.pageLoadEventFired): |
| |
| 2019-08-09 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Node details sidebar sections have unclear delineation in Dark Mode |
| https://bugs.webkit.org/show_bug.cgi?id=200603 |
| <rdar://problem/54146925> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/DetailsSection.css: |
| (@media (prefers-color-scheme: dark)): |
| (.details-section .details-section,): |
| Give a details section header a different color than a normal sidebar header. |
| |
| 2019-08-09 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r248480): Sources: the Pause Reason section takes the entire vertical space when there are few breakpoints/resources |
| https://bugs.webkit.org/show_bug.cgi?id=200597 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (@media (min-height: 650px) .sidebar > .panel.navigation.sources > .content > .pause-reason-container): Deleted. |
| Don't `flex-grow` or `flex-shrink` the Pause Reason section so it always displays its full |
| content. The rest of the sections can grow/shrink as needed. |
| |
| 2019-08-09 Devin Rousso <drousso@apple.com> |
| |
| REGRESSION (Safari 6): Web Inspector: JSON may not be pretty printed if served as text/html |
| https://bugs.webkit.org/show_bug.cgi?id=122898 |
| <rdar://problem/15241419> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Check the request/response data to see if it's JSON parsable. If so, allow the user to elect |
| to view the request/response as a JSON preview instead of raw (or pretty printed) text. |
| |
| Prefer the JSON view wherever possible. |
| |
| * UserInterface/Views/ResourceClusterContentView.js: |
| (WI.ResourceClusterContentView): |
| (WI.ResourceClusterContentView.prototype.get requestContentView): |
| (WI.ResourceClusterContentView.prototype.get customRequestContentView): Added. |
| (WI.ResourceClusterContentView.prototype.get customResponseContentView): |
| (WI.ResourceClusterContentView.prototype.get selectionPathComponents): |
| (WI.ResourceClusterContentView.prototype.showRequest): |
| (WI.ResourceClusterContentView.prototype._canShowCustomRequestContentView): Added. |
| (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView): |
| (WI.ResourceClusterContentView.prototype._contentViewForResourceType): |
| (WI.ResourceClusterContentView.prototype._pathComponentForContentView): |
| (WI.ResourceClusterContentView.prototype._identifierForContentView): |
| (WI.ResourceClusterContentView.prototype._showContentViewForIdentifier): |
| (WI.ResourceClusterContentView.prototype._canUseJSONContentViewForContent): Added. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomRequestContentView): Added. |
| (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView): |
| (WI.ResourceClusterContentView.prototype.saveToCookie): Deleted. |
| (WI.ResourceClusterContentView.prototype._customContentViewConstructorForResource): Deleted. |
| Since the current view is already saved in a `WI.Setting`, there's no need to save that |
| state to a cookie, as it'll be restored elsewhere. |
| |
| * UserInterface/Base/Main.js: |
| (WI.showResourceRequest): |
| |
| * UserInterface/Main.html: |
| * UserInterface/Views/JSONContentView.js: Added. |
| (WI.JSONContentView): |
| (WI.JSONContentView.prototype.initialLayout): |
| (WI.JSONContentView.prototype.attached): |
| (WI.JSONContentView.prototype.closed): |
| * UserInterface/Views/JSONContentView.css: Added. |
| (.content-view.json): |
| * Source/WebInspectorUI/UserInterface/Views/JSONResourceContentView.js: Deleted. |
| * Source/WebInspectorUI/UserInterface/Views/JSONResourceContentView.css: Deleted. |
| Create a more generic content view that shows a preview for the given JSON parsable string. |
| |
| * UserInterface/Base/Utilities.js: |
| (String.prototype.isJSON): Added. |
| * UserInterface/Views/WebSocketDataGridNode.js: |
| (WI.WebSocketDataGridNode.prototype.appendContextMenuItems): |
| Utility function for checking if a string is JSON parsable. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-09 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: increase the vertical space allocated to the call stack when paused |
| https://bugs.webkit.org/show_bug.cgi?id=200236 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Rather than uniformly constrict the height of the Call Stack and Breakpoints sections, they |
| should "flex" based on their importance, which can likely be derived from the current state. |
| This way, it's possible to see information from each section at the same time, but still |
| have enough space in each section to be able to do something useful. |
| |
| When paused, the most useful data is the call stack, so give the Call Stack section the most |
| vertical space (the Pause Reason is also important, but it usually needs very little space). |
| |
| When not paused, it's likely that the user cares more about the resources with breakpoints |
| than those without, so favor the Breakpoints section. |
| |
| Each section will only expand to fit it's maximum content height. |
| |
| If the inspector window becomes too short, remove the "flex" entirely and have all the |
| content be part of a single scroll area instead. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleCallStackElementAddedOrRemoved): Deleted. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Added. |
| (.sidebar > .panel.navigation.sources > .content .details-section): Added. |
| (.sidebar > .panel.navigation.sources > .content .details-section.collapsed > .header > .options, .sidebar > .panel.navigation.sources > .content .details-section:not(.collapsed) > .content, .sidebar > .panel.navigation.sources > .content .details-section:not(.collapsed) > .content > .group): Added. |
| (.sidebar > .panel.navigation.sources > .content > .breakpoints-container .create-breakpoint): Added. |
| (.sidebar > .panel.navigation.sources > .content > .navigation-bar): Added. |
| (@media (min-height: 650px)): Added. |
| (.sidebar > .panel.navigation.sources > .content > .pause-reason-container): Added. |
| (.sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources)): Added. |
| (.sidebar > .panel.navigation.sources > .content > .call-stack-container): Added. |
| (.sidebar > .panel.navigation.sources > .content > .breakpoints-container): Added. |
| (.sidebar > .panel.navigation.sources > .content > .resources): Added. |
| (.sidebar > .panel.navigation.sources > .content > .breakpoints-container .tree-outline .item.event-target-window .icon): Added. |
| (.sidebar > .panel.navigation.sources > .content > .details-section): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoints).collapsed > .header > .options,): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section:matches(.pause-reason, .call-stack, .breakpoints) > .content,): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints) > .content): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.call-stack): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .create-breakpoint): Deleted. |
| (@media (min-height: 600px)): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .pause-reason): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content,): Deleted. |
| (.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .tree-outline .item.event-target-window .icon): Deleted. |
| Wrap the Pause Reason, Call Stack, and Breakpoints `WI.DetailsSection`s in a container |
| element so that the styling of the sticky header doesn't get affected by the clamping of the |
| container's height. |
| |
| * UserInterface/Views/DetailsSection.css: |
| (.details-section): |
| (.details-section > .header): |
| Create CSS variables for styles that will be overridden by the Sources navigation sidebar. |
| |
| 2019-08-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Page: don't allow the domain to be disabled |
| https://bugs.webkit.org/show_bug.cgi?id=200109 |
| |
| Reviewed by Brian Burg. |
| |
| The `PageAgent` is relied on by many of the other agents, so much so that it doesn't make |
| sense to support the ability to "disable" (as well as "enable") the agent. |
| |
| When the first frontend connects, we should treat the `PageAgent` as active and available. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype.initializeTarget): |
| |
| * Test/Test.js: |
| (WI.loaded): |
| (WI.initializeBackendTarget): |
| (WI.contentLoaded): |
| (WI.targetsAvailable): Added. |
| (WI.whenTargetsAvailable): Added. |
| * Test/TestStub.js: |
| Ensure that the backend always gets notified via `InspectorFrontendHost.loaded` so that |
| messages being sent to the frontend are batched. |
| |
| 2019-08-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: rename `queryObjects` to `queryInstances` for clarity |
| https://bugs.webkit.org/show_bug.cgi?id=200520 |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| |
| 2019-08-07 Devin Rousso <drousso@apple.com> |
| |
| Fix construction of `WI.EventBreakpoint` after r248201 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype.setBreakpointForEventListener): |
| |
| 2019-08-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: add an Engineering pane to expose useful settings for other WebKit engineers |
| https://bugs.webkit.org/show_bug.cgi?id=200492 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Other WebKit engineers might find being able to see internal objects or pause in internal |
| scripts useful, so we should allow them to do so without having to enable Web Inspector's |
| debug "mode". |
| |
| A new "Engineering" pane is added to the Settings Tab: |
| - Debugging |
| - Show WebKit-internal scripts |
| - Pause in WebKit-internal scripts |
| - Heap Snapshot |
| - Show Internal Objects |
| - Show Private Symbols |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype.initialLayout): |
| (WI.SettingsTabContentView.prototype._createEngineeringSettingsView): Added. |
| (WI.SettingsTabContentView.prototype._createDebugSettingsView): |
| |
| * UserInterface/Base/Main.js: |
| (WI.resolvedLayoutDirection): |
| (WI.setLayoutDirection): |
| * UserInterface/Base/Object.js: |
| |
| * UserInterface/Protocol/InspectorBackend.js: |
| (InspectorBackendClass): |
| (InspectorBackendClass.prototype.set dumpInspectorProtocolMessages): |
| (InspectorBackendClass.prototype.get dumpInspectorProtocolMessages): |
| (InspectorBackendClass.prototype.set dumpInspectorTimeStats): |
| (InspectorBackendClass.prototype.get dumpInspectorTimeStats): |
| (InspectorBackendClass.prototype.set filterMultiplexingBackendInspectorProtocolMessages): |
| (InspectorBackendClass.prototype.get filterMultiplexingBackendInspectorProtocolMessages): |
| * UserInterface/Protocol/RemoteObject.js: |
| (WI.RemoteObject.prototype.findFunctionSourceCodeLocation): |
| * UserInterface/Debug/Bootstrap.js: |
| (WI.runBootstrapOperations): |
| * UserInterface/Debug/UncaughtExceptionReporter.js: |
| (handleUncaughtExceptionRecord): |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype._updateOwnerStyleText): |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.update): |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| (WI.DebuggerManager.prototype.initializeTarget): |
| (WI.DebuggerManager.prototype.get knownNonResourceScripts): |
| (WI.DebuggerManager.prototype.debuggerDidPause): |
| (WI.DebuggerManager.prototype.scriptDidParse): |
| (WI.DebuggerManager.prototype._handleEngineeringShowInternalScriptsSettingChanged): Added. |
| (WI.DebuggerManager.prototype._handleEngineeringPauseForInternalScriptsSettingChanged): Added. |
| (WI.DebuggerManager.prototype._pauseForInternalScriptsDidChange): Deleted. |
| (WI.DebuggerManager.prototype._debugUIEnabledDidChange): Deleted. |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._appendLocationLink): |
| * UserInterface/Views/HeapSnapshotDataGridTree.js: |
| (WI.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel): |
| * UserInterface/Views/OpenResourceDialog.js: |
| (WI.OpenResourceDialog.prototype._addScriptsForTarget): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| (WI.SpreadsheetCSSStyleDeclarationEditor): |
| * UserInterface/Views/StackTraceView.js: |
| (WI.StackTraceView): |
| * UserInterface/Views/View.js: |
| (WI.View.prototype._layoutSubtree): |
| |
| 2019-08-07 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: content of Variables section should always be LTR |
| https://bugs.webkit.org/show_bug.cgi?id=200481 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ComputedStyleDetailsPanel.js: |
| (WI.ComputedStyleDetailsPanel.prototype.initialLayout): |
| |
| 2019-08-07 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TimelineAgent already enabled |
| https://bugs.webkit.org/show_bug.cgi?id=200513 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Update some incorrect compatibility comments from r248286. |
| |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| * UserInterface/Controllers/TimelineManager.js: |
| |
| 2019-08-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Show radius values in box model metrics view |
| https://bugs.webkit.org/show_bug.cgi?id=160993 |
| <rdar://problem/27919035> |
| |
| Reviewed by Brian Burg. |
| |
| * UserInterface/Views/BoxModelDetailsSectionRow.js: |
| (WI.BoxModelDetailsSectionRow.prototype._getPropertyValue): Added. |
| (WI.BoxModelDetailsSectionRow.prototype._getPropertyValueAsPx): |
| (WI.BoxModelDetailsSectionRow.prototype._getBox): |
| (WI.BoxModelDetailsSectionRow.prototype._getComponentPrefix): Added. |
| (WI.BoxModelDetailsSectionRow.prototype._getComponentSuffix): |
| (WI.BoxModelDetailsSectionRow.prototype._updateMetrics): |
| (WI.BoxModelDetailsSectionRow.prototype._updateMetrics.createBoxPartElement): |
| (WI.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaElement): |
| (WI.BoxModelDetailsSectionRow.prototype._applyUserInput): |
| (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.inspectedPage_node_toggleInlineStyleProperty): |
| * UserInterface/Views/BoxModelDetailsSectionRow.css: |
| (.details-section .row.box-model .box): Added. |
| (.details-section .row.box-model .box > .label): Added. |
| (.details-section .row.box-model .box.position): Added. |
| (.details-section .row.box-model .box.margin): Added. |
| (.details-section .row.box-model:not(.hovered) .box.margin, .details-section .row.box-model .box.margin.active): Added. |
| (.details-section .row.box-model .box.border): Added. |
| (.details-section .row.box-model:not(.hovered) .box.border, .details-section .row.box-model .box.border.active): Added. |
| (.details-section .row.box-model .box.border > .label): Added. |
| (.details-section .row.box-model .box.border.has-top-left-radius, .details-section .row.box-model .box.border.has-top-left-radius .box): Added. |
| (.details-section .row.box-model .box.border.has-top-right-radius, .details-section .row.box-model .box.border.has-top-right-radius .box): Added. |
| (.details-section .row.box-model .box.border.has-bottom-right-radius, .details-section .row.box-model .box.border.has-bottom-right-radius .box): Added. |
| (.details-section .row.box-model .box.border.has-bottom-left-radius, .details-section .row.box-model .box.border.has-bottom-left-radius .box): Added. |
| (.details-section .row.box-model .box.padding): Added. |
| (.details-section .row.box-model:not(.hovered) .box.padding, .details-section .row.box-model .box.padding.active): Added. |
| (.details-section .row.box-model .box.content): Added. |
| (.details-section .row.box-model:not(.hovered) .box.content, .details-section .row.box-model .box.content.active): Added. |
| (.details-section .row.box-model :matches(.top, .right, .bottom, .left)): Added. |
| (.details-section .row.box-model :matches(.top, .right, .bottom, .left):not(.editing), .details-section .row.box-model :matches(.top-left, .top-right, .bottom-right, .bottom-left)): Added. |
| (.details-section .row.box-model :matches(.top-left, .top-right, .bottom-right, .bottom-left)): Added. |
| (.details-section .row.box-model :matches(.top-left, .top-right)): Added. |
| (.details-section .row.box-model :matches(.bottom-left, .bottom-right):not(.editing)): Added. |
| (.details-section .row.box-model :matches(.bottom-left, .bottom-right).editing): Added. |
| (.details-section .row.box-model :matches(.top-left, .bottom-left):not(.editing)): Added. |
| (.details-section .row.box-model :matches(.top-left, .bottom-left).editing): Added. |
| (.details-section .row.box-model :matches(.top-right, .bottom-right):not(.editing)): Added. |
| (.details-section .row.box-model :matches(.top-right, .bottom-right).editing): Added. |
| (@media (prefers-color-scheme: dark) .details-section .row.box-model .box): Added. |
| (@media (prefers-color-scheme: dark) .details-section .row.box-model:not(.hovered) .box:matches(.margin, .border, .padding, .content), .details-section .row.box-model .box.active:matches(.margin, .border, .padding, .content)): Added. |
| (@media (prefers-color-scheme: dark) .details-section .row.box-model .box.margin): Added. |
| (@media (prefers-color-scheme: dark) .details-section .row.box-model .box.border): Added. |
| (.details-section .row.box-model :matches(.position, .margin, .border, .padding, .content)): Deleted. |
| (.details-section .row.box-model .position): Deleted. |
| (.details-section .row.box-model .margin): Deleted. |
| (.details-section .row.box-model:not(.hovered) .margin, .details-section .row.box-model .margin.active): Deleted. |
| (.details-section .row.box-model .border): Deleted. |
| (.details-section .row.box-model:not(.hovered) .border, .details-section .row.box-model .border.active): Deleted. |
| (.details-section .row.box-model .padding): Deleted. |
| (.details-section .row.box-model:not(.hovered) .padding, .details-section .row.box-model .padding.active): Deleted. |
| (.details-section .row.box-model .content): Deleted. |
| (.details-section .row.box-model:not(.hovered) .content, .details-section .row.box-model .content.active): Deleted. |
| (.details-section .row.box-model :matches(.content span, .top, .right, .bottom, .left)): Deleted. |
| (.details-section .row.box-model :matches(.right, .left)): Deleted. |
| (.details-section .row.box-model:not(.hovered) :matches(.margin, .border, .padding, .content), .details-section .row.box-model .active:matches(.margin, .border, .padding, .content)): Deleted. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype.update): |
| Ensure that the `_value` is updated whenever the `_rawValue` is updated. |
| |
| 2019-08-06 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r248289. |
| https://bugs.webkit.org/show_bug.cgi?id=200488 |
| |
| Broke internal builds (Requested by drousso on #webkit). |
| |
| Reverted changeset: |
| |
| "Web Inspector: Styles: show @supports CSS groupings" |
| https://bugs.webkit.org/show_bug.cgi?id=200419 |
| https://trac.webkit.org/changeset/248289 |
| |
| 2019-08-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: RTL: go-to arrows and expand triangles in Computed panel should match their context |
| https://bugs.webkit.org/show_bug.cgi?id=200449 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ComputedStyleSection.css: |
| (body[dir=rtl] .computed-style-section .computed-property-item .disclosure-button): Deleted. |
| |
| * UserInterface/Views/Main.css: |
| (body[dir=rtl] [dir=ltr] .go-to-arrow): Added. |
| In the RTL mode, LTR "islands" should have their contents to be still LTR. |
| |
| 2019-08-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Styles: show @supports CSS groupings |
| https://bugs.webkit.org/show_bug.cgi?id=200419 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/CSSGrouping.js: Renamed from Source/WebInspectorUI/UserInterface/Models/CSSMedia.js. |
| (WI.CSSGrouping): |
| (WI.CSSGrouping.prototype.get type): |
| (WI.CSSGrouping.prototype.get text): |
| (WI.CSSGrouping.prototype.get sourceCodeLocation): |
| (WI.CSSGrouping.prototype.get isMedia): Added. |
| (WI.CSSGrouping.prototype.get isSupports): Added. |
| (WI.CSSGrouping.prototype.get prefix): Added. |
| |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.get groupings): Added. |
| (WI.CSSStyleDeclaration.prototype.generateCSSRuleString): |
| (WI.CSSStyleDeclaration.prototype.get mediaList): Deleted. |
| |
| * UserInterface/Models/CSSRule.js: |
| (WI.CSSRule): |
| (WI.CSSRule.prototype.get groupings): Added. |
| (WI.CSSRule.prototype.update): |
| (WI.CSSRule.prototype._selectorResolved): |
| (WI.CSSRule.prototype.get mediaList): Deleted. |
| |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype._parseRulePayload): |
| (WI.DOMNodeStyles.prototype.rulesForSelector): Deleted. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader): Deleted. |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: |
| (.spreadsheet-css-declaration :matches(.header, .header-groupings)): Added. |
| (.spreadsheet-css-declaration :matches(.header, .header-groupings):first-child): Added. |
| (.spreadsheet-css-declaration .header-groupings > .grouping): Added. |
| (.spreadsheet-css-declaration .header-groupings + .header > .selector > .icon): Added. |
| (.spreadsheet-css-declaration :matches(.header, .header-media)): Deleted. |
| (.spreadsheet-css-declaration :matches(.header, .header-media):first-child): Deleted. |
| (.spreadsheet-css-declaration .media-label): Deleted. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.protocolGroupingTypeToEnum): Added. |
| (WI.CSSManager.protocolMediaSourceToEnum): Deleted. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Test.html: |
| |
| 2019-08-05 Devin Rousso <drousso@apple.com> |
| |
| Can't use $0, $1 etc when inspecting Google Docs pages because the content uses these for function names |
| https://bugs.webkit.org/show_bug.cgi?id=195834 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Allow the user to alias saved results by providing a different prefix (e.g. "$") from within |
| Web Inspector. When changing the alias, all existing saved results will update to be |
| reference-able from the new alias. |
| |
| * UserInterface/Controllers/RuntimeManager.js: |
| (WI.RuntimeManager): |
| (WI.RuntimeManager.preferredSavedResultPrefix): Added. |
| (WI.RuntimeManager.prototype.initializeTarget): |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.completionControllerCompletionsNeeded.receivedPropertyNames): |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI.contentLoaded.updateConsoleSavedResultPrefixCSSVariable): Added. |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.toClipboardString): |
| (WI.ConsoleMessageView.prototype.removeEventListeners): Added. |
| (WI.ConsoleMessageView.prototype._appendSavedResultIndex): |
| (WI.ConsoleMessageView.prototype._appendSavedResultIndex.updateSavedVariableText): Added. |
| (WI.ConsoleMessageView.prototype._rootPropertyPathForObject): |
| (WI.ConsoleMessageView.prototype._rootPropertyPathForObject.prefixSavedResultIndex): Added. |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView.prototype._sessionStarted): |
| (WI.LogContentView.prototype._logCleared): |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom.show-last-selected li.last-selected > span::after): |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole): |
| (WI.QuickConsole.prototype.closed): |
| (WI.QuickConsole.prototype._updateAutomaticExecutionContextPathComponentTooltip): Added. |
| Listen for changes to the setting that holds the current saved result alias and update any |
| related UI accordingly. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createConsoleSettingsView): |
| * UserInterface/Views/SettingsTabContentView.css: |
| (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Added. |
| * UserInterface/Views/SettingsGroup.js: |
| (WI.SettingsGroup.prototype.addCustomEditor): Added. |
| Add an input to the Settings tab that controls the saved result prefix alias. Only allow |
| [a-zA-Z0-9_$] as values (but [0-9] cannot be used as the start). |
| |
| * UserInterface/Models/PropertyPath.js: |
| (WI.PropertyPath.prototype.set pathComponent): Added. |
| Miscellaneous getters/setters. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Test/TestHarness.js: |
| (TestHarness.prototype.newline): Added. |
| Convenience function for adding newlines to test results. |
| |
| 2019-08-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: disable related agents when the tab is closed |
| https://bugs.webkit.org/show_bug.cgi?id=200118 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Rework how `enable`/`disable` is used for timeline-related agents so that events are not sent |
| and data isn't kept alive when the Timelines tab isn't enabled. |
| |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager): |
| (WI.TimelineManager.prototype.get domains): Added. |
| (WI.TimelineManager.prototype.activateExtraDomain): Added. |
| (WI.TimelineManager.prototype.initializeTarget): |
| (WI.TimelineManager.prototype.reset): |
| (WI.TimelineManager.prototype.set autoCaptureOnPageLoad): |
| (WI.TimelineManager.prototype.enable): Added. |
| (WI.TimelineManager.prototype.disable): Added. |
| (WI.TimelineManager.prototype.startCapturing): |
| (WI.TimelineManager.prototype.stopCapturing): |
| (WI.TimelineManager.prototype.async processJSON): |
| (WI.TimelineManager.prototype.capturingStarted): |
| (WI.TimelineManager.prototype.capturingStopped): |
| (WI.TimelineManager.prototype.autoCaptureStarted): |
| (WI.TimelineManager.prototype.eventRecorded): |
| (WI.TimelineManager.prototype.pageDOMContentLoadedEventFired): |
| (WI.TimelineManager.prototype.pageLoadEventFired): |
| (WI.TimelineManager.prototype.cpuProfilerTrackingUpdated): |
| (WI.TimelineManager.prototype.memoryTrackingUpdated): |
| (WI.TimelineManager.prototype.heapTrackingStarted): |
| (WI.TimelineManager.prototype.heapTrackingCompleted): |
| (WI.TimelineManager.prototype.heapSnapshotAdded): |
| (WI.TimelineManager.prototype._loadNewRecording): |
| (WI.TimelineManager.prototype._legacyAttemptStartAutoCapturingForFrame): |
| (WI.TimelineManager.prototype._provisionalLoadStarted): |
| (WI.TimelineManager.prototype._mainResourceDidChange): |
| (WI.TimelineManager.prototype._resourceWasAdded): |
| (WI.TimelineManager.prototype._garbageCollected): |
| (WI.TimelineManager.prototype._memoryPressure): |
| (WI.TimelineManager.prototype.scriptProfilerTrackingUpdated): |
| (WI.TimelineManager.prototype.scriptProfilerTrackingCompleted): |
| (WI.TimelineManager.prototype._updateAutoCaptureInstruments): |
| (WI.TimelineManager.prototype._handleDOMNodeDidFireEvent): |
| (WI.TimelineManager.prototype._handleDOMNodePowerEfficientPlaybackStateChanged): |
| * UserInterface/Models/Instrument.js: |
| (WI.Instrument.startLegacyTimelineAgent): |
| (WI.Instrument.stopLegacyTimelineAgent): |
| |
| * UserInterface/Controllers/HeapManager.js: |
| (WI.HeapManager): Added. |
| (WI.HeapManager.prototype.get domains): Added. |
| (WI.HeapManager.prototype.activateExtraDomain): Added. |
| (WI.HeapManager.prototype.initializeTarget): |
| (WI.HeapManager.prototype.enable): Added. |
| (WI.HeapManager.prototype.disable): Added. |
| (WI.HeapManager.prototype.snapshot): Added. |
| (WI.HeapManager.prototype.getPreview): Added. |
| (WI.HeapManager.prototype.getRemoteObject): Added. |
| (WI.HeapManager.prototype.garbageCollected): |
| |
| * UserInterface/Controllers/MemoryManager.js: |
| (WI.MemoryManager): Added. |
| (WI.MemoryManager.prototype.get domains): Added. |
| (WI.MemoryManager.prototype.activateExtraDomain): Added. |
| (WI.MemoryManager.prototype.initializeTarget): |
| (WI.MemoryManager.prototype.enable): Added. |
| (WI.MemoryManager.prototype.disable): Added. |
| (WI.MemoryManager.prototype.memoryPressure): |
| |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView): |
| (WI.TimelineTabContentView.prototype.closed): |
| |
| * UserInterface/Models/HeapAllocationsInstrument.js: |
| (WI.HeapAllocationsInstrument): |
| (WI.HeapAllocationsInstrument.prototype._takeHeapSnapshot): |
| * UserInterface/Views/HeapAllocationsTimelineView.js: |
| (WI.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked): |
| * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: |
| (WI.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode): |
| (WI.HeapSnapshotInstanceDataGridNode.prototype._populatePreview): |
| (WI.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow): |
| Go through the `HeapManager` for `HeapAgent` commands so it can better manage state. |
| |
| * UserInterface/Test/Test.js: |
| (WI.contentLoaded): |
| |
| 2019-08-05 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: brotli-compressed resources have "Compressed: No" in Resources details sidebar |
| https://bugs.webkit.org/show_bug.cgi?id=200452 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.get compressed): |
| Add "br" - Brotli content encoding. |
| |
| 2019-08-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Styles: variable swatch not shown for var() with a fallback |
| https://bugs.webkit.org/show_bug.cgi?id=200237 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch): |
| (WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens): Added. |
| (WI.SpreadsheetStyleProperty.prototype._addGradientTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addColorTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens): |
| (WI.SpreadsheetStyleProperty.prototype._addVariableTokens): |
| Check to see if there's a fallback value in the `var()` and tokenize it if there is. Mark |
| the property as invalid if the `var()` doesn't end up resolving to anything. |
| |
| * UserInterface/Views/InlineSwatch.js: |
| (WI.InlineSwatch): |
| (WI.InlineSwatch.prototype.get value): |
| (WI.InlineSwatch.prototype._updateSwatch): |
| (WI.InlineSwatch.prototype._handleContextMenuEvent): |
| (WI.InlineSwatch.prototype._getNextValidHEXFormat.hexMatchesCurrentColor): |
| (WI.InlineSwatch.prototype._getNextValidHEXFormat): |
| Allow the `value` to be a function. In that case, use the getter `this.value` instead of the |
| value `this._value` directly so that the function is invoked. |
| This is needed for variable swatches because the fallback value could change after the |
| swatch has been created (e.g. another swatch in a CSS property value that just modifies the |
| text, rather than re-renders the entire CSS property value). |
| |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.resolveVariableValue): Added. |
| Follow the variable chain until an ultimate value is reached. |
| |
| * UserInterface/Models/CSSKeywordCompletions.js: |
| (WI.CSSKeywordCompletions.isColorAwareProperty): |
| (WI.CSSKeywordCompletions.isTimingFunctionAwareProperty): Added. |
| Limit `cubic-bezier` and `spring` tokens to only be shown for timing function properties. |
| |
| 2019-08-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: rename "Stylesheet" to "Style Sheet" to match spec text |
| https://bugs.webkit.org/show_bug.cgi?id=200422 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype._resourceAdded): |
| (WI.CSSManager.prototype._resourceTypeDidChange): |
| (WI.CSSManager.prototype._clearStyleSheetsForResource): |
| (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent): |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet.prototype.get displayName): |
| * UserInterface/Models/CollectionTypes.js: |
| (WI.CSSStyleSheetCollection.prototype.get displayName): |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.displayNameForType): |
| (WI.Resource.prototype.get syntheticMIMEType): |
| * UserInterface/Models/ResourceCollection.js: |
| (WI.ResourceCollection.prototype.objectIsRequiredType): |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView): |
| (WI.NetworkTableContentView.shortDisplayNameForResourceType): |
| * UserInterface/Views/ResourceClusterContentView.js: |
| (WI.ResourceClusterContentView.prototype._contentViewForResourceType): |
| * UserInterface/Views/ResourceSidebarPanel.js: |
| (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._save): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._populateIconElementContextMenu): |
| * UserInterface/Views/StyleOriginView.js: |
| (WI.StyleOriginView.prototype.update): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype._shouldBeEditable): |
| |
| * UserInterface/Views/CSSStyleSheetTreeElement.js: |
| (WI.CSSStyleSheetTreeElement): |
| * UserInterface/Views/ResourceIcons.css: |
| (:matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): Added. |
| (.source-map-resource.resource-icon.resource-type-style-sheet .icon): Added. |
| (.large :matches(.resource-icon.resource-type-style-sheet, .style-sheet-icon) .icon): Added. |
| (.large .source-map-resource.resource-icon.resource-type-style-sheet .icon): Added. |
| (:matches(.resource-icon.resource-type-stylesheet, .stylesheet-icon) .icon): Deleted. |
| (.source-map-resource.resource-icon.resource-type-stylesheet .icon): Deleted. |
| (.large :matches(.resource-icon.resource-type-stylesheet, .stylesheet-icon) .icon): Deleted. |
| (.large .source-map-resource.resource-icon.resource-type-stylesheet .icon): Deleted. |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: move psuedo-selector rules before inherited rules |
| https://bugs.webkit.org/show_bug.cgi?id=199950 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Since pseudo-selector rules (usually) affect the selected element, or are related to its |
| content, it's more useful to have them near that element's rules instead of after all of |
| it's inherited rules. |
| |
| * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout): |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: Styles: add icons for various CSS rule types |
| https://bugs.webkit.org/show_bug.cgi?id=199946 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.displayNameForPseudoId): |
| Add hardcoded pseudo-selector identifiers for older backends. |
| |
| * UserInterface/Models/CSSSelector.js: |
| (WI.CSSSelector.prototype.isPseudoSelector): Added. |
| (WI.CSSSelector.prototype.isPseudoElementSelector): Deleted. |
| There are more types of pseudo-selectors than just `:{before|after}`. |
| |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration.prototype.generateCSSRuleString): Added. |
| |
| * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionAddNewRule): Added. |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout): |
| Provide a delegate method for adding a new rule, so the `WI.SpreadsheetRulesStyleDetailsPanel` |
| can know what selector to focus once the new rule gets added. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector): |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._populateIconElementContextMenu): Added. |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: |
| (.spreadsheet-css-declaration .header.editing-selector .selector): Added. |
| (.spreadsheet-css-declaration .selector > .icon): Added. |
| (.spreadsheet-css-declaration .selector > .icon + *): Added. |
| (.spreadsheet-css-declaration .selector.style-attribute > span): Added. |
| When "mousedown" (or "contextmenu") on the icon, show a context menu with helpful actions: |
| - Copy Rule |
| - {Disable|Enable} Rule |
| - Duplicate Selector |
| - Add :{active|focus|hover|visited} Rule |
| - Create ::{before|after} Rule |
| - Reveal in {Resources Tab|Sources Tab|Stylesheet} |
| Drive-by: add an extra 0.5px of initial margin before the Style Attribute selector (which is |
| sans-serif) so it properly aligns with the other selectors (which are monospaced). |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout): |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: |
| (.spreadsheet-style-declaration-editor:empty): Added. |
| (.spreadsheet-style-declaration-editor.no-properties): Deleted. |
| Add some extra space when there's no inline style so it looks a bit less cramped. |
| |
| * UserInterface/Main.html: |
| * UserInterface/Views/StyleRuleIcons.css: Added. |
| (.author-style-rule-icon .icon): |
| (.author-style-rule-icon.pseudo-selector .icon): |
| (.user-style-rule-icon .icon): |
| (.user-style-rule-icon.pseudo-selector .icon): |
| (.user-agent-style-rule-icon .icon): |
| (.user-agent-style-rule-icon.pseudo-selector .icon): |
| (.inspector-style-rule-icon .icon): |
| (.inspector-style-rule-icon.pseudo-selector .icon): |
| (.inherited-style-rule-icon .icon): |
| (.inherited-element-style-rule-icon .icon): |
| * UserInterface/Images/StyleRule.svg: Added. |
| * UserInterface/Images/StyleRuleInheritedElement.svg: Added. |
| * UserInterface/Images/StyleRulePseudo.svg: Added. |
| Add generic icon classes for style rule icons. |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createExperimentalSettingsView): |
| Add experimental setting. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOM: add a special breakpoint for "All Events" |
| https://bugs.webkit.org/show_bug.cgi?id=200285 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Similar to the existing "All Requests" breakpoint, there should be a way to set a breakpoint |
| that would pause for any DOM event, regardless of the event's name. This is useful for |
| situations where the event name isn't known, or where one simply want's to pause on the next |
| entry to the event loop. |
| |
| Along these lines, make the "requestAnimationFrame", "setTimeout", and "setInterval" |
| event breakpoints into special breakpoints that can be added/removed via the create |
| breakpoint context menu. This simplifies the process for setting these breakpoints, and also |
| makes them more discoverable (most people wouldn't consider them to be "events"). |
| |
| * UserInterface/Models/EventBreakpoint.js: |
| (WI.EventBreakpoint): |
| (WI.EventBreakpoint.deserialize): |
| (WI.EventBreakpoint.prototype.saveIdentityToCookie): |
| (WI.EventBreakpoint.prototype.toJSON): |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype._pauseReasonFromPayload): |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager): |
| (WI.DOMDebuggerManager.prototype.initializeTarget): |
| (WI.DOMDebuggerManager.supportsDOMBreakpoints): Added. |
| (WI.DOMDebuggerManager.supportsEventBreakpoints): |
| (WI.DOMDebuggerManager.supportsEventListenerBreakpoints): Added. |
| (WI.DOMDebuggerManager.supportsURLBreakpoints): |
| (WI.DOMDebuggerManager.supportsXHRBreakpoints): Added. |
| (WI.DOMDebuggerManager.supportsAllListenersBreakpoint): Added. |
| (WI.DOMDebuggerManager.prototype.get allAnimationFramesBreakpoint): Added. |
| (WI.DOMDebuggerManager.prototype.get allIntervalsBreakpoint): Added. |
| (WI.DOMDebuggerManager.prototype.get allListenersBreakpoint): Added. |
| (WI.DOMDebuggerManager.prototype.get allTimeoutsBreakpoint): Added. |
| (WI.DOMDebuggerManager.prototype.get listenerBreakpoints): Added. |
| (WI.DOMDebuggerManager.prototype.isBreakpointSpecial): |
| (WI.DOMDebuggerManager.prototype.listenerBreakpointForEventName): Added. |
| (WI.DOMDebuggerManager.prototype.addEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype.removeEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype.addURLBreakpoint): |
| (WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateURLBreakpoint): |
| (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): |
| (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): |
| (WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): |
| (WI.DOMDebuggerManager.prototype.get eventBreakpoints): Deleted. |
| (WI.DOMDebuggerManager.prototype.eventBreakpointForTypeAndEventName): Deleted. |
| Add additional target compatibility checks. |
| |
| * UserInterface/Views/EventBreakpointPopover.js: |
| (WI.EventBreakpointPopover.prototype.show): |
| (WI.EventBreakpointPopover.prototype.dismiss): |
| (WI.EventBreakpointPopover.prototype._handleTypeSelectChange): Deleted. |
| * UserInterface/Views/EventBreakpointPopover.css: |
| (.popover .event-breakpoint-content > input): Added. |
| (.popover .event-breakpoint-content > input::placeholder): Added. |
| (.popover .event-breakpoint-content > .event-type): Deleted. |
| (.popover .event-breakpoint-content > .event-type > input): Deleted. |
| (.popover .event-breakpoint-content > .event-type > input::placeholder): Deleted. |
| |
| * UserInterface/Views/EventBreakpointTreeElement.css: |
| (.breakpoint.event.breakpoint-for-interval:not(.breakpoint-paused-icon) .icon): Added. |
| (.breakpoint.event.breakpoint-for-timeout:not(.breakpoint-paused-icon) .icon): Added. |
| (.breakpoint.event.breakpoint-for-timer:not(.breakpoint-paused-icon) .icon): Deleted. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel): |
| (WI.DebuggerSidebarPanel.prototype.saveStateToCookie): |
| (WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie): |
| (WI.DebuggerSidebarPanel.prototype._addBreakpoint): |
| (WI.DebuggerSidebarPanel.prototype._addTreeElement): |
| (WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection): |
| (WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu.addToggleForSpecialEventBreakpoint): Added. |
| (WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement): |
| (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint): |
| (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu.addToggleForSpecialEventBreakpoint): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): |
| Add create breakpoint context menu items (also sort the breakpoints in this order): |
| - "All Animation Frames" => [A] All Animation Frames |
| - "All Timeouts" => [T] All Timeouts |
| - "All Intervals" => [I] All Intervals |
| - "All Events" => [E] All Events |
| |
| * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js: |
| (WI.JavaScriptRuntimeCompletionProvider.completionControllerCompletionsNeeded.receivedPropertyNames): |
| |
| * UserInterface/Base/Setting.js: |
| * UserInterface/Images/EventBreakpointInterval.svg: Added. |
| * UserInterface/Images/EventBreakpointTimeout.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/EventBreakpointTimer.svg. |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Heap Snapshot Views should be searchable |
| https://bugs.webkit.org/show_bug.cgi?id=157582 |
| <rdar://problem/26228629> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Without the ability to filter/search, it's far more difficult to find objects of interest. |
| Rather than spending time scrolling through the entire heap snapshot or sorting by "Name", |
| a simple filter/search (which also uses the global search settings) is almost instant. |
| |
| * UserInterface/Views/HeapAllocationsTimelineView.js: |
| (WI.HeapAllocationsTimelineView.prototype.updateFilter): Addded. |
| (WI.HeapAllocationsTimelineView.prototype.get showsFilterBar): Deleted. |
| * UserInterface/Views/HeapSnapshotClusterContentView.js: |
| (WI.HeapSnapshotClusterContentView.prototype.updateFilter): Added. |
| * UserInterface/Views/HeapSnapshotContentView.js: |
| (WI.HeapSnapshotContentView): |
| (WI.HeapSnapshotContentView.prototype.updateFilter): Added. |
| (WI.HeapSnapshotContentView.prototype.dataGridMatchNodeAgainstCustomFilters): Added. |
| (WI.HeapSnapshotContentView.prototype.dataGridMatchShouldPopulateWhenFilteringNode): Added. |
| * UserInterface/Views/DataGrid.js: |
| (WI.DataGrid.prototype._updateFilter.createIteratorForNodesToBeFiltered): |
| Don't attempt to populate each heap snapshot `WI.DataGridNode` when filtering, as that can |
| quickly exhaust memory due to the sheer size of a heap snapshot. |
| |
| * UserInterface/Base/Main.js: |
| (WI._find): |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView.prototype.get canHandleFindEvent): Added. |
| (WI.TimelineTabContentView.prototype.handleFindEvent): Added. |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| (WI.TimelineRecordingContentView.prototype.get canFocusFilterBar): Added. |
| (WI.TimelineRecordingContentView.prototype.focusFilterBar): Added. |
| * UserInterface/Views/FilterBar.js: |
| (WI.FilterBar.prototype.focus): Added. |
| Allow the current tab to intercept the find shortcut and do something custom. In the case |
| of a `WI.TimelineTabContentView`, declare that it can handle the find event if the displayed |
| content view (`WI.TimelineRecordingContentView`) can focus it's filter bar. If so, when the |
| find shortcut is triggered, focus the filter bar. |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: CSS Formatter: comments with an escape character aren't formatted |
| https://bugs.webkit.org/show_bug.cgi?id=200168 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Don't allow escaping of the "*" in CSS comments (e.g. `\*/`). |
| |
| Add additional pretty printing rules for comments so that there's always some space between |
| them and the surrounding text. This ensures that they don't interfere with readability. |
| |
| * UserInterface/Workers/Formatter/CSSFormatter.js: |
| (CSSFormatter.prototype._format): |
| |
| * UserInterface/Workers/Formatter/FormatterContentBuilder.js: |
| (FormatterContentBuilder.prototype.get indented): Added. |
| |
| 2019-08-03 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: execution context picker doesn't update when switching to the inferred context from auto |
| https://bugs.webkit.org/show_bug.cgi?id=200279 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| The `representedObject` of the "auto" execution context path component is shared with that |
| execution context's actual path component, meaning that if the user switches from "auto" to |
| that execution context's path component, the underlying `representedObject` wouldn't change, |
| and therfore the `RuntimeManager.Event.ActiveExecutionContextChanged` wouldn't fire. In this |
| case, update the visible ("selected") execution context path component manually. |
| |
| * UserInterface/Views/QuickConsole.js: |
| (WI.QuickConsole.prototype._selectExecutionContext): |
| (WI.QuickConsole.prototype._pathComponentSelected): |
| |
| 2019-08-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Console: all navigation items should be shown in the split console |
| https://bugs.webkit.org/show_bug.cgi?id=200280 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/LogContentView.js: |
| (WI.LogContentView): |
| (WI.LogContentView.prototype.get navigationItems): |
| Adjust the `visibilityPriority` of each `navigationItems` so that the filter/scope bars are |
| kept visible for longer than the "Preserve Log"/"Emulate User Gesture" toggles. |
| |
| * UserInterface/Views/FindBanner.js: |
| (WI.FindBanner): |
| * UserInterface/Views/FindBanner.css: |
| (.find-banner.console-find-banner > input[type="search"]): |
| (.find-banner.console-find-banner > :matches(input[type="search"], button)): |
| (.find-banner.console-find-banner > input[type="search"]:focus, .find-banner.console-find-banner > input[type="search"]:focus ~ button, .find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown), .find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown) ~ button ): Added. |
| (.find-banner.console-find-banner > input[type="search"]::placeholder): Deleted. |
| (.find-banner.console-find-banner > input[type="search"]:focus): Deleted. |
| (.find-banner.console-find-banner > input[type="search"]:not(:placeholder-shown)): Deleted. |
| (@media (prefers-color-scheme: dark) .find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)): Deleted. |
| Make the `WI.FindBanner` blend in with the surrounding content when it's not focused or has |
| no content. |
| |
| 2019-08-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Storage: disable related agents when the tab is closed |
| https://bugs.webkit.org/show_bug.cgi?id=200117 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Rework how `enable`/`disable` is used for storage-related agents so that events are not sent |
| and data isn't kept alive when the Storage tab isn't enabled. |
| |
| * UserInterface/Controllers/ApplicationCacheManager.js: |
| (WI.ApplicationCacheManager): |
| (WI.ApplicationCacheManage.prototype.get domains): Added. |
| (WI.ApplicationCacheManage.prototype.activateExtraDomain): Added. |
| (WI.ApplicationCacheManager.prototype.initializeTarget): |
| (WI.ApplicationCacheManager.prototype.enable): Added. |
| (WI.ApplicationCacheManager.prototype.disable): Added. |
| (WI.ApplicationCacheManager.prototype.networkStateUpdated): |
| (WI.ApplicationCacheManager.prototype.applicationCacheStatusUpdated): |
| (WI.ApplicationCacheManager.prototype._reset): Added. |
| (WI.ApplicationCacheManager.prototype._mainResourceDidChange): |
| (WI.ApplicationCacheManager.prototype._manifestForFrameLoaded): |
| (WI.ApplicationCacheManager.prototype._framesWithManifestsLoaded): |
| (WI.ApplicationCacheManager.prototype.initialize): Deleted. |
| |
| * UserInterface/Controllers/DOMStorageManager.js: |
| (WI.DOMStorageManager): |
| (WI.DOMStorageManager.prototype.get domains): Added. |
| (WI.DOMStorageManager.prototype.activateExtraDomain): Added. |
| (WI.DOMStorageManager.prototype.initializeTarget): |
| (WI.DOMStorageManager.prototype.enable): Added. |
| (WI.DOMStorageManager.prototype.disable): Added. |
| (WI.DOMStorageManager.prototype.itemsCleared): |
| (WI.DOMStorageManager.prototype.itemRemoved): |
| (WI.DOMStorageManager.prototype.itemAdded): |
| (WI.DOMStorageManager.prototype.itemUpdated): |
| (WI.DOMStorageManager.prototype.inspectDOMStorage): |
| (WI.DOMStorageManager.prototype._reset): Added. |
| (WI.DOMStorageManager.prototype._addDOMStorageIfNeeded): |
| (WI.DOMStorageManager.prototype._addCookieStorageIfNeeded): |
| (WI.DOMStorageManager.prototype._mainResourceDidChange): |
| (WI.DOMStorageManager.prototype.initialize): Deleted. |
| (WI.DOMStorageManager.prototype.domStorageWasAdded): Deleted. |
| |
| * UserInterface/Controllers/DatabaseManager.js: |
| (WI.DatabaseManager): |
| (WI.DatabaseManager.prototype.get domains): Added. |
| (WI.DatabaseManager.prototype.activateExtraDomain): Added. |
| (WI.DatabaseManager.prototype.initializeTarget): |
| (WI.DatabaseManager.prototype.enable): Added. |
| (WI.DatabaseManager.prototype.disable): Added. |
| (WI.DatabaseManager.prototype.databaseWasAdded): |
| (WI.DatabaseManager.prototype.inspectDatabase): |
| (WI.DatabaseManager.prototype._reset): Added. |
| (WI.DatabaseManager.prototype._mainResourceDidChange): |
| (WI.DatabaseManager.prototype.initialize): Deleted. |
| |
| * UserInterface/Controllers/IndexedDBManager.js: |
| (WI.IndexedDBManager): |
| (WI.IndexedDBManager.prototype.get domains): Added. |
| (WI.IndexedDBManager.prototype.activateExtraDomain): Added. |
| (WI.IndexedDBManager.prototype.initializeTarget): |
| (WI.IndexedDBManager.prototype.enable): Added. |
| (WI.IndexedDBManager.prototype.disable): Added. |
| (WI.IndexedDBManager.prototype.clearObjectStore): |
| (WI.IndexedDBManager.prototype._reset): Added. |
| (WI.IndexedDBManager.prototype._mainResourceDidChange): |
| (WI.IndexedDBManager.prototype.initialize): Deleted. |
| |
| * UserInterface/Controllers/AppController.js: |
| (WI.AppController.prototype.activateExtraDomains): |
| * UserInterface/Controllers/CanvasManager.js: |
| (WI.CanvasManager.prototype.get domains): Added. |
| (WI.CanvasManager.prototype.activateExtraDomain): Added. |
| Only call `enable` on any extra agents if the domain is not controlled by a manager. |
| |
| * UserInterface/Views/StorageTabContentView.js: |
| (WI.StorageTabContentView): |
| (WI.StorageTabContentView.static isTabAllowed): |
| (WI.StorageTabContentView.prototype.canShowRepresentedObject): |
| (WI.StorageTabContentView.prototype.closed): Added. |
| |
| * UserInterface/Test.html: |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| (WI.contentLoaded): |
| |
| 2019-08-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: Develop > Start Timeline Recording doesn't work when focused on a detached inspector window |
| https://bugs.webkit.org/show_bug.cgi?id=200125 |
| <rdar://problem/53543008> |
| |
| Reviewed by Brian Burg. |
| |
| Always show the Timelines tab in Web Inspector whenever timeline recording starts/stops. |
| Notify the UIProcess whenever the timeline recording state changes. |
| |
| * UserInterface/Protocol/InspectorFrontendAPI.js: |
| (InspectorFrontendAPI.setTimelineProfilingEnabled): |
| |
| 2019-08-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: "Inspector.initialized" happens before breakpoints are set |
| https://bugs.webkit.org/show_bug.cgi?id=200364 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Allow managers to register a promise that will delay `Inspector.initialized`. This is needed |
| when restoring breakpoints so that "Automatically Show Web Inspector for JSContexts" can set |
| them before any scripts have evaluated, ensuring that no breakpoints are "skipped". |
| |
| * UserInterface/Protocol/Target.js: |
| (WI.Target.prototype.initialize): |
| (WI.Target.registerInitializationPromise): Added. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager): |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager): |
| |
| 2019-08-01 Devin Rousso <drousso@apple.com> |
| |
| Unreviewed, remove `emulateUserGesture` parameter from `Debugger.evaluateOnCallFrame` for iOS 13 |
| |
| Rubber-stamped by Joseph Pecoraro. |
| |
| * UserInterface/Protocol/Legacy/13.0/InspectorBackendCommands.js: |
| * Versions/Inspector-iOS-13.0.json: |
| The iOS 13 protocol has already been decided, so these shouldn't have been added unless they |
| were cherry-picked in. |
| |
| 2019-07-31 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: support emulateUserGesture parameter in Debugger.evaluateOnCallFrame |
| https://bugs.webkit.org/show_bug.cgi?id=200272 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When paused, evaluating in the console should still respect the "Emulate User Gesture" checkbox. |
| |
| * UserInterface/Controllers/RuntimeManager.js: |
| (WI.RuntimeManager.prototype.evaluateInInspectedWindow): |
| |
| * UserInterface/Protocol/Legacy/13.0/InspectorBackendCommands.js: |
| * Versions/Inspector-iOS-13.0.json: |
| |
| 2019-07-31 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'issueMessage.sourceCodeLocation.sourceCode') |
| https://bugs.webkit.org/show_bug.cgi?id=200296 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When fetching all `WI.IssueMessage`s for a given `WI.SourceCode`, the `WI.IssueMessage` may |
| be associated in a different way (e.g. by url, instead of `WI.SourceCodeLocation`). As such, |
| we should pass the `WI.SourceCode` along, and use it when adding the `WI.IssueTreeElement`. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._addIssuesForSourceCode): |
| (WI.DebuggerSidebarPanel.prototype._addIssue): |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._addIssue): |
| (WI.SourcesNavigationSidebarPanel.prototype._addIssuesForSourceCode): |
| |
| 2019-07-31 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOM: provide a way to disable/breakpoint all event listeners for a given DOM node or event type |
| https://bugs.webkit.org/show_bug.cgi?id=200233 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Often, when trying to debug issues with DOM events, it's extremely tedious to have to go |
| through event listeners one by one and disable them (or set a breakpoint). This patch adds |
| a way of performing these "state modifications" in batch operations, based on the current |
| grouping method of the Event Listeners section. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.supportsDisablingEventListeners): Added. |
| (WI.DOMManager.supportsEventListenerBreakpoints): Added. |
| Common convenience functions for checking for protocol support. |
| |
| * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: |
| (WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.createEventListenerSection): |
| * UserInterface/Views/DOMNodeDetailsSidebarPanel.css: |
| (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners .details-section.event-listener-section > .header > .event-listener-options): Added. |
| (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners .details-section.event-listener-section:hover > .header > .event-listener-options): Added. |
| Add an options element that shows a context menu: |
| - "Disable Event Listeners"/"Enable Event Listeners" |
| - "Add Breakpoints"/"Delete Breakpoints" |
| Each action applies the corresponding state to all event listeners in that section. |
| |
| * UserInterface/Views/EventListenerSectionGroup.js: |
| (WI.EventListenerSectionGroup): |
| (WI.EventListenerSectionGroup.prototype.get supportsStateModification): Added. |
| (WI.EventListenerSectionGroup.prototype.get isEventListenerDisabled): Added. |
| (WI.EventListenerSectionGroup.prototype.set isEventListenerDisabled): Added. |
| (WI.EventListenerSectionGroup.prototype.get hasEventListenerBreakpoint): Added. |
| (WI.EventListenerSectionGroup.prototype.set hasEventListenerBreakpoint): Added. |
| (WI.EventListenerSectionGroup.prototype._updateDisabledToggle): Added. |
| (WI.EventListenerSectionGroup.prototype._updateBreakpointToggle): Added. |
| (WI.EventListenerSectionGroup.prototype._createDisabledToggleRow): Deleted. |
| (WI.EventListenerSectionGroup.prototype._createBreakpointToggleRow): Deleted. |
| Expose a way to modify the event listener's state so that the UI (e.g. checkbox and title) |
| also get's updated. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-30 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Resources: Display outline around images when viewing image collections |
| https://bugs.webkit.org/show_bug.cgi?id=200212 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/CollectionContentView.css: |
| (.content-view.collection .resource.image img): |
| (.content-view.collection .resource.image img:hover): |
| |
| 2019-07-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Resources: add a "Show Grid" navigation item for the Images collection |
| https://bugs.webkit.org/show_bug.cgi?id=200260 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Each subview `WI.ImageResourceContentView` already listens for changes to the underlying |
| `WI.settings.showImageGrid` and adds the `.show-grid` class if enabled. As such, this change |
| just adds a `WI.ButtonNavigationItem` for toggling `WI.settings.showImageGrid` from the |
| Images "folder". |
| |
| * UserInterface/Views/ResourceCollectionContentView.js: |
| (WI.ResourceCollectionContentView): |
| (WI.ResourceCollectionContentView.prototype.get navigationItems): |
| (WI.ResourceCollectionContentView.prototype.attached): Added. |
| (WI.ResourceCollectionContentView.prototype.detached): Added. |
| (WI.ResourceCollectionContentView.prototype._updateImageTypeScopeBar): |
| Drive-by: hide the image type `WI.ScopeBar` if there's only one type of image. |
| (WI.ResourceCollectionContentView.prototype._handleShowGridButtonClicked): Added. |
| (WI.ResourceCollectionContentView.prototype._handleShowImageGridSettingChanged): Added. |
| |
| 2019-07-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add -webkit-* keywords for *-height CSS properties |
| https://bugs.webkit.org/show_bug.cgi?id=200240 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/CSSKeywordCompletions.js: |
| |
| * UserInterface/Views/Main.css: |
| (.message-text-view): |
| * UserInterface/Views/Toolbar.css: |
| (.toolbar .control-section): |
| (.toolbar .item-section): |
| Replace `-webkit-min-content` with `min-content`. |
| |
| 2019-07-26 Greg Doolittle <gr3g@apple.com> |
| |
| Web Inspector: AXI: Audit: Typo of "some" as "somee" |
| https://bugs.webkit.org/show_bug.cgi?id=200166 |
| |
| Reviewed by Devin Rousso. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Controllers/AuditManager.js: |
| (WI.AuditManager.prototype._addDefaultTests): |
| (WI.AuditManager): |
| |
| 2019-07-24 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: no context menu items work when context menu clicking on "Add Breakpoint" |
| https://bugs.webkit.org/show_bug.cgi?id=199953 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.addMouseDownContextMenuHandlers): Added. |
| Create a helper function for managing elements that show a context menu on "mousedown". |
| |
| * UserInterface/Base/SearchUtilities.js: |
| (WI.SearchUtilities.createSettingsButton): |
| * UserInterface/Views/CanvasContentView.js: |
| (WI.CanvasContentView.prototype.initialLayout): |
| (WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): Added. |
| (WI.CanvasContentView.prototype._populateViewShaderButtonContextMenu): Added. |
| (WI.CanvasContentView.prototype._populateViewRecordingButtonContextMenu): Added. |
| (WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Deleted. |
| (WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Deleted. |
| (WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Deleted. |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel): |
| (WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added. |
| (WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted. |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel): |
| (WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Deleted. |
| (WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted. |
| |
| * UserInterface/Views/TabBar.js: |
| (WI.TabBar): |
| (WI.TabBar.prototype._handleTabPickerTabContextMenu): Deleted. |
| * UserInterface/Views/LegacyTabBar.js: |
| (WI.LegacyTabBar): |
| (WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu): Deleted. |
| Remove the "contextmenu" handler on the tab picker, as that's already used by the entire |
| tab bar to show/hide tabs. |
| |
| 2019-07-24 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: print the target of `console.screenshot` last so the target is the closest item to the image |
| https://bugs.webkit.org/show_bug.cgi?id=199308 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype.render): |
| (WI.ConsoleMessageView.prototype._appendMessageTextAndArguments): |
| (WI.ConsoleMessageView.prototype._handleContextMenu): |
| * UserInterface/Views/ConsoleMessageView.css: |
| (.console-image > .console-message-body > :matches(hr, img)): Added. |
| (.console-image > .console-message-body > hr): Added. |
| (.console-image > .console-message-body > img): Added. |
| (.console-log-level.console-image::before): Added. |
| (.console-message-body > .console-image): Deleted. |
| (.console-log-level.console-image-container::before): Deleted. |
| Allow `ConsoleMessage.MessageType.Image` to be an `ConsoleMessage.MessageLevel.Error`, and |
| print the message (and extra parameters) in that case. |
| Drive-by: reorganize the switch-case so all paths have the same `default` case. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-23 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Styles: Command-X should cut selected properties |
| https://bugs.webkit.org/show_bug.cgi?id=199341 |
| |
| Reviewed by Devin Rousso. |
| |
| Implement cutting of selected CSS properties in the style editor. |
| Unify cutting and copying logic wherever possible. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout): |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.placeTextCaretInFocusedProperty): Added. |
| Cut/copy events could only fire on SpreadsheetCSSStyleDeclarationEditor element if it |
| has selection inside of it. Placing text caret at the beginning of the focused property |
| ensures that. |
| |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyCopy): Deleted. |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown): |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._copySelectedProperties): Added. |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._removeSelectedProperties): Added. |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype._stopSelection): |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| Remove old copying logic. |
| |
| 2019-07-23 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Display "Resource has no content" for about:blank iframes instead of an error |
| https://bugs.webkit.org/show_bug.cgi?id=198029 |
| |
| Reviewed by Devin Rousso. |
| |
| Display "about:blank" in the middle of the content view when selecting "about:blank" resources. |
| Previoulsly, we showed a misleading "An error occurred trying to load the resource" error |
| message. |
| |
| * UserInterface/Models/CSSStyleSheet.js: |
| (WI.CSSStyleSheet.prototype.requestContentFromBackend): |
| * UserInterface/Models/Resource.js: |
| (WI.Resource.prototype.requestContentFromBackend): |
| * UserInterface/Models/Script.js: |
| (WI.Script.prototype.requestContentFromBackend): |
| * UserInterface/Models/SourceCode.js: |
| (WI.SourceCode.generateSpecialContentForURL): |
| (WI.SourceCode.prototype._processContent): |
| (WI.SourceCode): |
| * UserInterface/Views/ResourceContentView.js: |
| (WI.ResourceContentView.prototype._contentAvailable): |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype._contentAvailable): |
| (WI.SourceCodeTextEditor.prototype._showMessage): |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype._contentDidPopulate): |
| Display empty text editor when it has no content instead of "Resource has no content" message. |
| |
| 2019-07-22 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: Breakpoint at specified location already exists. |
| https://bugs.webkit.org/show_bug.cgi?id=197034 |
| <rdar://problem/50049004> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| When "adjusting" a `WI.Breakpoint` (e.g. removing and then re-adding with a different |
| configuration), make sure to only re-add the `WI.Breakpoint` to the `WI.Target` it was just |
| removed from, rather to all `WI.targets`. |
| |
| Since we iterate over `WI.targets` in both `WI.DebuggerManager.prototype._setBreakpoint` and |
| `WI.DebuggerManager.prototype._removeBreakpoint`, we ended up iterating `WI.targets` twice. |
| |
| Each time the `WI.Breakpoint` is removed from a `WI.Target`, pass the `WI.Target` to the |
| `callback` given to `WI.DebuggerManager.prototype._removeBreakpoint`, so that the eventual |
| call to `WI.DebuggerManager.prototype._setBreakpoint` can reuse it as the `specificTarget`, |
| instead of iterating `WI.targets` (meaning we only iterate it once). |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.addBreakpoint): |
| (WI.DebuggerManager.prototype._removeBreakpoint.didRemoveBreakpoint): |
| (WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange): |
| (WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange): |
| |
| 2019-07-22 Devin Rousso <drousso@apple.com> |
| |
| Localization: change fps to FPS |
| <rdar://problem/53342508> |
| |
| Rubber-stamped by Joseph Pecoraro. |
| |
| * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js: |
| (WI.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Issues toggling multiple breakpoints on one line |
| https://bugs.webkit.org/show_bug.cgi?id=199918 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor): |
| (WI.SourceCodeTextEditor.prototype.close): |
| (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu): |
| (WI.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting): |
| (WI.SourceCodeTextEditor.prototype._handleFormatterDidChange): Added. |
| Listen for `WI.SourceCode.Event.FormatterDidChange` events as there may be multiple content |
| views for the same `WI.SourceCode`. Previously, if there were, only the active one would |
| properly update it's "line -> column -> breakpoint" mapping, causing an error to be thrown |
| when the non-active content views tried to retrieve the breakpoint for the new line/column. |
| |
| 2019-07-17 Olivier Blin <olivier.blin@softathome.com> |
| |
| Web Inspector: application/xml content not shown |
| https://bugs.webkit.org/show_bug.cgi?id=199861 |
| |
| Reviewed by Devin Rousso. |
| |
| application/xml content from XHR requests was not shown in the |
| inspector, an error message was displayed instead. |
| |
| application/xml content should be treated as text, since |
| application/xml is the standard mimetype for XML content. |
| Apache serves XML content with the application/xml mimetype by |
| default. |
| |
| * UserInterface/Base/MIMETypeUtilities.js: |
| (WI.fileExtensionForMIMEType): |
| Report "xml" extension for "application/xml" mimetype. |
| (WI.shouldTreatMIMETypeAsText): |
| Treat XML files as text. |
| |
| 2019-07-16 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Changes panel should be strictly LTR |
| https://bugs.webkit.org/show_bug.cgi?id=199767 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Changes panel is primarily CSS code and CSS is strictly LTR. |
| |
| * UserInterface/Views/ChangesDetailsSidebarPanel.js: |
| (WI.ChangesDetailsSidebarPanel): |
| |
| 2019-07-15 Youenn Fablet <youenn@apple.com> |
| |
| Enable a debug WebRTC mode without any encryption |
| https://bugs.webkit.org/show_bug.cgi?id=199177 |
| <rdar://problem/52074986> |
| |
| Reviewed by Eric Carlson. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Main.js: |
| |
| 2019-07-15 Greg Doolittle <gr3g@apple.com> |
| |
| Web Inspector: AXI: Audit: Typos in Accessibility audits |
| https://bugs.webkit.org/show_bug.cgi?id=199716 |
| <rdar://problem/52721711> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Controllers/AuditManager.js: |
| |
| 2019-07-15 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Device Settings: update Safari user agent from 12.2 to 13.0 |
| https://bugs.webkit.org/show_bug.cgi?id=199758 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * UserInterface/Base/Main.js: |
| (WI._handleDeviceSettingsToolbarButtonClicked): |
| |
| 2019-07-12 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Changes: dismissing a blank property makes style rule to show in Changes panel |
| https://bugs.webkit.org/show_bug.cgi?id=199760 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype._updateOwnerStyleText): |
| Call updatePropertiesModifiedState even when _updateOwnerStyleText returns early. |
| |
| 2019-07-12 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: always show all navigation bar items, but disable those that wouldn't work |
| https://bugs.webkit.org/show_bug.cgi?id=199594 |
| |
| Reviewed by Ross Kirsling. |
| |
| Reorder the navigation items of the Elements tab (left to right): |
| - Show rulers |
| - Force print media styles |
| - Force Dark Appearance / Force Light Appearance |
| - Show compositing borders |
| - Enable paint flashing |
| - Show shadow DOM nodes |
| This way, "related" (e.g. print styles and dark/light appearance both relate to CSS media) |
| toggles are grouped closer together. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype.get navigationItems): |
| (WI.DOMTreeContentView.prototype._defaultAppearanceDidChange): |
| (WI.DOMTreeContentView.prototype._toggleAppearance): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-11 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Layers: Uncaught Exception: Request with id = 2 failed. {"code":-32601,"message":"'Page' domain was not found","data":[{"code":-32601,"message":"'Page' domain was not found"}]} |
| https://bugs.webkit.org/show_bug.cgi?id=199555 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Use modern inspected target support checking, and defer agent commands until a target is |
| available. |
| |
| * UserInterface/Views/Layers3DContentView.js: |
| (WI.Layers3DContentView): |
| (WI.Layers3DContentView.prototype._showPaintRectsSettingChanged): |
| (WI.Layers3DContentView.prototype._updateCompositingBordersButtonState): |
| (WI.Layers3DContentView.prototype._toggleCompositingBorders): |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype._toggleCompositingBorders): |
| (WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): |
| (WI.DOMTreeContentView.prototype._showPaintRectsSettingChanged): |
| (WI.DOMTreeContentView.prototype._showPrintStylesChanged): |
| (WI.DOMTreeContentView.prototype._showRulersChanged): |
| Drive-by: apply the same changes to the Elements tab for when the Layers tab isn't enabled. |
| |
| 2019-07-09 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: replace WTF::Vector with std::initializer_list in CallTracer to avoid dynamic allocations |
| https://bugs.webkit.org/show_bug.cgi?id=199611 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/Recording.js: |
| (WI.Recording.prototype.async swizzle): |
| Drive-by: handle the situation where a parameter is an array of deduplicated strings, which |
| would otherwise be treated as an array of numbers. |
| |
| 2019-07-09 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Add another Protocol Version (iOS 13.0) |
| https://bugs.webkit.org/show_bug.cgi?id=199631 |
| <rdar://problem/47538193> |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Protocol/Legacy/13.0/InspectorBackendCommands.js: Added. |
| * Versions/Inspector-iOS-13.0.json: Added. |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: special breakpoints and event targets should be sorted into separate "areas" |
| https://bugs.webkit.org/show_bug.cgi?id=199554 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Move the special All Requests breakpoint down to be right above all other URL breakpoints. |
| Move the `window` object tree element below other DOM node tree elements. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._addTreeElement): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement): |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOM Debugger: there should be different icons for each type of DOM breakpoint |
| https://bugs.webkit.org/show_bug.cgi?id=199552 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| [S] for Subtree Modified |
| [A] for Attribute Modified |
| [R] for Node Removed |
| |
| * UserInterface/Views/DOMBreakpointTreeElement.js: |
| (WI.DOMBreakpointTreeElement): |
| * UserInterface/Views/DOMBreakpointTreeElement.css: Added. |
| (.breakpoint.dom.breakpoint-for-subtree-modified:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.dom.breakpoint-for-attribute-modified:not(.breakpoint-paused-icon) .icon): |
| (.breakpoint.dom.breakpoint-for-node-removed:not(.breakpoint-paused-icon) .icon): |
| |
| * UserInterface/Main.html: |
| * UserInterface/Images/DOMBreakpointAttributeModified.svg: Added. |
| * UserInterface/Images/DOMBreakpointNodeRemoved.svg: Added. |
| * UserInterface/Images/DOMBreakpointSubtreeModified.svg: Added. |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Uncaught Exception: Unexpected enum value: CPU |
| https://bugs.webkit.org/show_bug.cgi?id=199564 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager.prototype._updateAutoCaptureInstruments): |
| Filter the list of auto-capture instruments based on what's actually supported, instead of |
| directly using the saved list from the `WI.Setting`. |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Enabling the Layers tab hides the paint flashing button |
| https://bugs.webkit.org/show_bug.cgi?id=199549 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Still show the Compositing Borders and Paint Flashing navigation items in the Elements tab |
| even when the Layers tab is enabled (just like the Layers details sidebar). |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView.prototype.get navigationItems): |
| (WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Elements: pasting in the Styles sidebar adds a text node to the DOM tree |
| https://bugs.webkit.org/show_bug.cgi?id=199588 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/Main.js: |
| (WI._paste): |
| Bail if `event.defaultPrevented`, as that means that something else has handled (and likely |
| overrode) this event. |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: the "x" in the Exception icon overlaps the border |
| https://bugs.webkit.org/show_bug.cgi?id=199553 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Images/Exception.svg: |
| * UserInterface/Images/Function.svg: |
| * UserInterface/Images/TailDeletedFunction.svg: |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: there should be a different icon for URL breakpoints |
| https://bugs.webkit.org/show_bug.cgi?id=199550 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Use the same (down|up) arrow icon for the Network Tab and the Network timeline. |
| |
| * UserInterface/Views/URLBreakpointTreeElement.js: |
| (WI.URLBreakpointTreeElement): |
| * UserInterface/Views/URLBreakpointTreeElement.css: |
| (.breakpoint.url:not(.breakpoint-paused-icon) .icon): Added. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.js: |
| (WI.DebuggerSidebarPanel.prototype._addBreakpoint): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint): |
| |
| * UserInterface/Images/URLBreakpoint.svg: Added. |
| |
| 2019-07-08 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: CPU: the Duration string isn't localized |
| https://bugs.webkit.org/show_bug.cgi?id=199582 |
| <rdar://problem/51698165> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/CPUTimelineView.js: |
| (WI.CPUTimelineView.prototype._layoutEnergyChart): |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-06 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Styles: unbalanced quotes and parenthesis aren't displayed as property closed after editing values |
| https://bugs.webkit.org/show_bug.cgi?id=199090 |
| <rdar://problem/51965431> |
| |
| Reviewed by Devin Rousso. |
| |
| `}` gets added by WI.tokenizeCSSValue (called by SpreadsheetStyleProperty.prototype._renderValue) |
| when it encounters unbalanced quotes. Fix unbalanced quotes by re-rendering the value from the model, |
| not the DOM content. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit): |
| For consistency, render property name from the model as well. |
| |
| 2019-07-05 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: current call frame indicator not visible in dark mode |
| https://bugs.webkit.org/show_bug.cgi?id=199047 |
| <rdar://problem/51922895> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/CallFrameTreeElement.css: |
| (.tree-outline .item.call-frame .status > .status-image): |
| (.tree-outline .item.call-frame.selected .status > .status-image): |
| Replace the CSS variables used for `fill` with their actual color value (in `light` mode), |
| as the semantic "name" of the variable doesn't really match its usage. As an example, the |
| current call frame shouldn't rely on the value of `--border-color`, as it's not a "border". |
| |
| 2019-07-05 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: Elements: use a CSS transition when showing/hiding DOM breakpoint gutter |
| https://bugs.webkit.org/show_bug.cgi?id=199411 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/DOMTreeContentView.css: |
| (.content-view.dom-tree .tree-outline.dom): |
| |
| 2019-07-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: allow nodes to be copied and pasted |
| https://bugs.webkit.org/show_bug.cgi?id=199182 |
| |
| Reviewed by Matt Baker. |
| |
| Copy is already supported, so there's nothing that needs to be done there. |
| |
| Pasting is as simple as calling `insertAdjacentHTML("afterend", ...)` on the selected node. |
| |
| * UserInterface/Base/Main.js: |
| (WI.contentLoaded): |
| (WI._paste): Added. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView.prototype.handlePasteEvent): Added. |
| |
| 2019-07-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: DOM Debugger: descendant breakpoints should be able to be enabled/disabled/deleted from a collapsed parent |
| https://bugs.webkit.org/show_bug.cgi?id=199332 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype.get domBreakpoints): |
| (WI.DOMDebuggerManager.prototype.domBreakpointsForNode): |
| (WI.DOMDebuggerManager.prototype.domBreakpointsInSubtree): Added. |
| (WI.DOMDebuggerManager.prototype.removeDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._detachDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._detachBreakpointsForFrame): |
| (WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpointsForURL): |
| (WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint): |
| Provide a way of getting a "summary" array of `DOMBreakpoint`s for all descendant nodes. |
| Rework the data structure for holding `DOMBreakpoint`s to use a `Multimap` so no duplicates |
| can be added (it uses a `Set` instead of an `Array`). |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement): |
| (WI.DOMTreeElement.prototype.get hasBreakpoint): |
| (WI.DOMTreeElement.prototype.set breakpointStatus): |
| (WI.DOMTreeElement.prototype.bindRevealDescendantBreakpointsMenuItemHandler): Added. |
| (WI.DOMTreeElement.prototype._subtreeBreakpointChanged): Added. |
| (WI.DOMTreeElement.prototype._updateBreakpointStatus): |
| (WI.DOMTreeElement.prototype._statusImageContextmenu): |
| (WI.DOMTreeElement.prototype.subtreeBreakpointCountDidChange): Deleted. |
| * UserInterface/Views/DOMTreeOutline.js: |
| (WI.DOMTreeOutline.prototype.populateContextMenu): |
| * UserInterface/Views/ContextMenuUtilities.js: |
| (WI.appendContextMenuItemsForDOMNode): |
| (WI.appendContextMenuItemsForDOMNodeBreakpoints): |
| Keep track of the actual descendant `DOMNodeTreeElement` that have breakpoints, rather than |
| just a count, so that the "Reveal Descendant Breakpoints" action is able to access them. |
| Change "Reveal Descendant Breakpoints" to reveal and select all descendant breakpoints |
| instead of just the first one. |
| Drive-by: don't remove specific (event) listener breakpoints when invoking the |
| "Delete Descendant Breakpoints" action, as that's not obvious from the UI. |
| |
| * UserInterface/Controllers/BreakpointPopoverController.js: |
| (WI.BreakpointPopoverController.prototype.appendContextMenuItems): |
| * UserInterface/Views/DOMBreakpointTreeElement.js: |
| (WI.DOMBreakpointTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/DOMNodeTreeElement.js: |
| (WI.DOMNodeTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/EventBreakpointTreeElement.js: |
| (WI.EventBreakpointTreeElement.prototype.populateContextMenu): |
| * UserInterface/Views/URLBreakpointTreeElement.js: |
| (WI.URLBreakpointTreeElement.prototype.populateContextMenu): |
| Remove the separator before "Delete Breakpoint" so all breakpoint actions are in the same section. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Base/Multimap.js: |
| (Multimap.prototype.get size): Added. |
| |
| 2019-07-02 Matt Baker <mattbaker@apple.com> |
| |
| REGRESSION (r238563): Web Inspector: Selection is erratic when holding Up/Down on Network Table |
| https://bugs.webkit.org/show_bug.cgi?id=193841 |
| <rdar://problem/47559124> |
| |
| Reviewed by Devin Rousso. |
| |
| Selecting and revealing a row after reloading Table data, but before the |
| layout that populates visible rows, could cause the Table to always be |
| scrolled so that the revealed row is first. |
| |
| This patch fixes `revealRow` by calculating the position of the row being |
| revealed in the absence of its DOM element, so that the Table is only |
| scrolled when necessary. |
| |
| * UserInterface/Views/Table.js: |
| (WI.Table.prototype.revealRow): |
| (WI.Table.prototype._resizeColumnsAndFiller): |
| Drive-by fix: use realOffsetWidth for consistency. |
| (WI.Table.prototype._updateVisibleRows): |
| (WI.Table.prototype._calculateOffsetHeight): |
| (WI.Table.prototype._calculateScrollTop): |
| |
| 2019-07-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debug: "Reset Web Inspector" should also clear the saved window size and attachment side |
| https://bugs.webkit.org/show_bug.cgi?id=198956 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Base/Main.js: |
| (WI.reset): Added. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype._createDebugSettingsView): |
| |
| 2019-07-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Audit: missing demo audits for WebInspectorAudit functions |
| https://bugs.webkit.org/show_bug.cgi?id=198719 |
| |
| Reviewed by Matt Baker. |
| |
| Other than the LayoutTests, there's no way to see an example of the functionality of many of |
| the exposed `WebInspectorAudit` functions. There should be a demo audit for every exposed |
| function so they're more discoverable. |
| |
| * UserInterface/Controllers/AuditManager.js: |
| (WI.AuditManager.prototype._addDefaultTests): |
| (WI.AuditManager.prototype._addDefaultTests.removeWhitespace): Added. |
| Move all demo audit test functions to be actual JavaScript functions, which are then |
| stringified and stripped of unnecessary white-space. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-07-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r245498): Timelines: CPU: discontinuities are filled in by the next record |
| https://bugs.webkit.org/show_bug.cgi?id=198927 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Controllers/TimelineManager.js: |
| (WI.TimelineManager.prototype.capturingStarted): |
| (WI.TimelineManager.prototype.capturingStopped): |
| * UserInterface/Models/TimelineRecording.js: |
| (WI.TimelineRecording): |
| (WI.TimelineRecording.prototype.start): |
| (WI.TimelineRecording.prototype.capturingStarted): Added. |
| (WI.TimelineRecording.prototype.capturingStopped): Added. |
| (WI.TimelineRecording.prototype.reset): |
| (WI.TimelineRecording.prototype.addRecord): |
| (WI.TimelineRecording.prototype.discontinuitiesInTimeRange): |
| (WI.TimelineRecording.prototype.addDiscontinuity): Deleted. |
| Notify the `TimelineRecording` when capturing has started/stopped. |
| Adjust the first record after a discontinuity to have it's `startTime` match the `endTime` |
| of the most recent discontinuity. |
| |
| * UserInterface/Models/Timeline.js: |
| (WI.Timeline.prototype.addRecord): |
| * UserInterface/Models/CPUTimeline.js: |
| (WI.CPUTimeline.prototype.addRecord): |
| * UserInterface/Models/CPUTimelineRecord.js: |
| (WI.CPUTimelineRecord.prototype.adjustStartTime): Added. |
| (WI.CPUTimelineRecord.prototype.adjustStartTimeToLastRecord): Deleted. |
| * UserInterface/Models/MemoryTimeline.js: |
| (WI.MemoryTimeline.prototype.addRecord): |
| * UserInterface/Models/MemoryTimelineRecord.js: |
| (WI.MemoryTimelineRecord.prototype.adjustStartTime): Added. |
| (WI.MemoryTimelineRecord.prototype.adjustStartTimeToLastRecord): Deleted. |
| * UserInterface/Models/NetworkTimeline.js: |
| (WI.NetworkTimeline.prototype.addRecord): |
| |
| * UserInterface/Views/CPUTimelineView.js: |
| (WI.CPUTimelineView.prototype.layout): |
| * UserInterface/Views/MemoryTimelineOverviewGraph.js: |
| (WI.MemoryTimelineOverviewGraph.prototype.layout): |
| * UserInterface/Views/MemoryTimelineView.js: |
| (WI.MemoryTimelineView.prototype.layout): |
| Include discontinuities that exactly match the start/end time of the record immediately |
| before/after the discontinuity. |
| |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| (WI.TimelineRecordingContentView): |
| (WI.TimelineRecordingContentView.prototype._handleTimelineCapturingStateChanged): |
| (WI.TimelineRecordingContentView.prototype._recordingReset): |
| Move the logic for handling discontinuity start/end times to the `TimelineRecording`. |
| |
| * UserInterface/Base/Utilities.js: |
| |
| 2019-06-29 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Remove trailing white-space |
| https://bugs.webkit.org/show_bug.cgi?id=199346 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Controllers/NetworkManager.js: |
| (WI.NetworkManager.prototype._initiatorCallFramesFromPayload): |
| * UserInterface/Images/Import.svg: |
| * UserInterface/Views/CanvasOverviewContentView.css: |
| (.navigation-bar > .item.canvas-recording-auto-capture > label > input): |
| * UserInterface/Views/DataGrid.css: |
| (.data-grid .resizer): |
| * UserInterface/Views/DatabaseContentView.css: |
| (.storage-view): |
| * UserInterface/Views/GoToLineDialog.css: |
| (@media (prefers-color-scheme: dark)): |
| * UserInterface/Views/GradientSlider.css: |
| (.gradient-slider > .add-area): |
| (.gradient-slider-knob > :matches(img, div)): |
| * UserInterface/Views/ResourceDetailsSection.css: |
| * UserInterface/Views/ScrubberNavigationItem.css: |
| (.navigation-bar .item.scrubber > input[disabled]): |
| * UserInterface/Views/SourceCodeTextEditor.css: |
| (.popover .expandable): |
| * UserInterface/Views/TimelineRecordBar.css: |
| (.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment,): |
| * UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js: |
| (HeapSnapshotWorker.prototype.createSnapshot): |
| |
| 2019-06-29 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Remove duplicate "Private" section and fix white space |
| |
| Unreviewed code style fix. |
| |
| * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: |
| (WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout): |
| |
| 2019-06-27 Beth Dakin <bdakin@apple.com> |
| |
| Upstream use of MACCATALYST |
| https://bugs.webkit.org/show_bug.cgi?id=199245 |
| rdar://problem/51687723 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/SDKVariant.xcconfig: |
| |
| 2019-06-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: throw an error if console.count/console.countReset is called with an object that throws an error from toString |
| https://bugs.webkit.org/show_bug.cgi?id=199252 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Add entries for `console.countReset` and `console.timeLog`. |
| |
| Rename `title` to `label` for `console.time`, `console.timeLog`, and `console.timeEnd` to |
| better match the spec. |
| |
| * UserInterface/Models/NativeFunctionParameters.js: |
| |
| 2019-06-26 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Update legacy backend commands after enum name change |
| https://bugs.webkit.org/show_bug.cgi?id=199250 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js: |
| * UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: |
| * UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js: |
| |
| 2019-06-26 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Elements: the forced pseudo-class indicator isn't visible when hovering |
| https://bugs.webkit.org/show_bug.cgi?id=199166 |
| |
| Reviewed by Matt Baker. |
| |
| Make the pseudo-class indicator into its own element instead of being a `::before`. |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement): |
| (WI.DOMTreeElement.prototype.updateSelectionArea): |
| (WI.DOMTreeElement.prototype.updateTitle): |
| (WI.DOMTreeElement.prototype._updatePseudoClassIndicator): Added. |
| (WI.DOMTreeElement.prototype.get pseudoClassesEnabled): Deleted. |
| (WI.DOMTreeElement.prototype._nodePseudoClassesDidChange): Deleted. |
| |
| * UserInterface/Views/DOMTreeOutline.css: |
| (.tree-outline.dom): |
| (.tree-outline.dom li .pseudo-class-indicator): Added. |
| (body[dir=ltr] .tree-outline.dom li .pseudo-class-indicator): Added. |
| (body[dir=rtl] .tree-outline.dom li .pseudo-class-indicator): Added. |
| (.tree-outline.dom:focus li.selected .pseudo-class-indicator): Added. |
| (.tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted. |
| (body[dir=ltr] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted. |
| (body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before): Deleted. |
| (.tree-outline.dom:focus li.selected.pseudo-class-enabled > .selection-area::before): Deleted. |
| |
| * UserInterface/Views/FormattedValue.css: |
| (.formatted-node > .tree-outline.dom): |
| Adjust the indent of any `DOMTreeOutline` so there's more room for the pseudo-class |
| indicator, such as in the Console. |
| |
| 2019-06-25 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: Elements: show shadow DOM by default |
| https://bugs.webkit.org/show_bug.cgi?id=199128 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Base/Setting.js: |
| |
| * UserInterface/Test/Test.js: |
| (WI.loaded): |
| Overriding the default value isn't necessary since the default is now true. |
| |
| 2019-06-25 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r246621): Web Inspector: Styles: property may get removed when editing after deleting value |
| https://bugs.webkit.org/show_bug.cgi?id=199143 |
| <rdar://problem/52042815> |
| |
| Reviewed by Matt Baker. |
| |
| r246621 affected when WI.CSSStyleDeclaration.Event.PropertiesChanged event is fired, which caused |
| SpreadsheetCSSStyleDeclarationEditor to possibly enter a state when `focused` property is |
| incorrectly set to false. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved): Removed. |
| (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyWillRemove): Added. |
| Renamed from "removed" to "willRemove" since we need to call it before the property DOM element |
| is detached from the document. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.remove): |
| Don't set focused to false when the removed property wasn't focused. |
| This code need to exist because removing focused element from the DOM doesn't trigger blur event. |
| |
| 2019-06-25 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Implement console.timeLog |
| https://bugs.webkit.org/show_bug.cgi?id=199184 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ConsoleMessageView.js: |
| (WI.ConsoleMessageView.prototype._appendMessageTextAndArguments): |
| Time messages (like timeLog) do not include their messageText |
| in their parameters list. So to behave more like normal logs |
| build a parameter list that includes it at the front. |
| |
| 2019-06-23 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: REGRESSION (r246684): Dark Mode: dashboard buttons should have no background |
| https://bugs.webkit.org/show_bug.cgi?id=199136 |
| <rdar://problem/52035798> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/DefaultDashboardView.css: |
| (@media (prefers-color-scheme: dark)): |
| (.toolbar .dashboard .item.button,): |
| |
| 2019-06-23 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Styles: show green highlight for newly added properties only when name and value are present |
| https://bugs.webkit.org/show_bug.cgi?id=199131 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.updateStatus): |
| |
| 2019-06-22 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r241980): Web Inspector: Styles: Pressing Tab/Enter on last property no longer focuses on selector on next rule |
| https://bugs.webkit.org/show_bug.cgi?id=199125 |
| <rdar://problem/52011182> |
| |
| Reviewed by Matt Baker. |
| |
| Since SpreadsheetSelectorField's focus handler was removed in r241980, focusing on the selector element |
| doesn't start editing it. |
| |
| * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: |
| (WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector): |
| |
| 2019-06-22 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: Styles: unbalanced quotes and parenthesis aren't displayed as property closed after editing values |
| https://bugs.webkit.org/show_bug.cgi?id=199090 |
| <rdar://problem/51965431> |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/SpreadsheetStyleProperty.js: |
| (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur): |
| Unbalanced quotes and parenthesis are fixed inside of CSSProperty's rawValue setter. |
| Render the value from the model, not the view. |
| |
| 2019-06-21 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: remove unused DataGrid style .force-focus |
| https://bugs.webkit.org/show_bug.cgi?id=199112 |
| <rdar://problem/51993412> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/HeapAllocationsTimelineView.css: |
| (.timeline-view.heap-allocations > .data-grid:not(:focus) tr.selected.invalid): |
| (.timeline-view.heap-allocations > .data-grid:not(:focus, .force-focus) tr.selected.invalid): Deleted. |
| |
| * UserInterface/Views/ResourceTreeElement.css: |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open,): |
| (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting,): |
| Missed in https://bugs.webkit.org/show_bug.cgi?id=190480. |
| |
| 2019-06-21 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: remove .legacy-mac/.latest-mac CSS classes, standardize on .latest-mac UI |
| https://bugs.webkit.org/show_bug.cgi?id=199109 |
| <rdar://problem/51991129> |
| |
| Reviewed by Timothy Hatcher. |
| |
| Drop legacy macOS version support from Web Inspector UI. |
| |
| * UserInterface/Base/Main.js: |
| |
| * UserInterface/Views/DefaultDashboardView.css: |
| (@media (prefers-color-scheme: dark)): |
| (body.latest-mac .toolbar .dashboard .item.button): Deleted. |
| |
| * UserInterface/Views/Toolbar.css: |
| (.toolbar): |
| (.toolbar .item.button,): |
| (.toolbar .search-bar > input[type="search"]): |
| (.toolbar .search-bar > input[type="search"]:focus): |
| (@media (-webkit-min-device-pixel-ratio: 2)): |
| (.toolbar .item.button:active): |
| (body.window-inactive .toolbar .item.button,): |
| (@media (prefers-color-scheme: dark)): |
| (.toolbar .search-bar > input[type="search"]::placeholder): |
| (body.window-inactive .toolbar .search-bar > input[type="search"]::placeholder): |
| (body.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button): |
| (.toolbar .dashboard-container): |
| (body .toolbar): Deleted. |
| (body.legacy-mac .toolbar .item.button,): Deleted. |
| (body.legacy-mac .toolbar .search-bar > input[type="search"]): Deleted. |
| (body.legacy-mac .toolbar .search-bar > input[type="search"]:focus): Deleted. |
| (body.legacy-mac .toolbar .item.button:active): Deleted. |
| (body.window-inactive.legacy-mac .toolbar .item.button,): Deleted. |
| (body.latest-mac .toolbar .item.button,): Deleted. |
| (body.latest-mac .toolbar .search-bar > input[type="search"]): Deleted. |
| (body.latest-mac .toolbar .search-bar > input[type="search"]:focus): Deleted. |
| (body.latest-mac .toolbar .item.button:active): Deleted. |
| (body.latest-mac.window-inactive .toolbar .item.button,): Deleted. |
| (body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder): Deleted. |
| (body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder): Deleted. |
| (body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button): Deleted. |
| (body.latest-mac .toolbar .dashboard-container): Deleted. |
| |
| 2019-06-20 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: rename shadowRootPushed parameter to match protocol |
| https://bugs.webkit.org/show_bug.cgi?id=199098 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Protocol/DOMObserver.js: |
| (WI.DOMObserver.prototype.shadowRootPushed): |
| |
| 2019-06-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Error "null is not an object (evaluating 'syntaxTree.containersOfPosition')" when setting a breakpoint |
| https://bugs.webkit.org/show_bug.cgi?id=199082 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange): |
| The script syntax tree may be fetched even if the resource hasn't finished parsing (or had |
| a syntax error), so it's possible for it to be `null`. |
| |
| 2019-06-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Dark Mode: inactive tab bar item should get darker on hover |
| https://bugs.webkit.org/show_bug.cgi?id=199022 |
| |
| Reviewed by Darin Adler. |
| |
| * UserInterface/Views/TabBar.css: |
| (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover): |
| (@media not (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon): |
| (@media (prefers-color-scheme: dark) .tab-bar): |
| (@media (prefers-color-scheme: dark) .tab-bar > .item): |
| (@media (prefers-color-scheme: dark) .tab-bar > .item:not(.disabled).selected): |
| (@media (prefers-color-scheme: dark) .tab-bar:not(.animating) > .item:not(.selected):hover): |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar): |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item): |
| (@media (prefers-color-scheme: dark) body.window-inactive .tab-bar > .item.selected): |
| |
| * UserInterface/Views/Toolbar.css: |
| (@media (prefers-color-scheme: dark) body .toolbar): |
| |
| 2019-06-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: setting a breakpoint on a non-JavaScript line should immediately show as unresolved |
| https://bugs.webkit.org/show_bug.cgi?id=199033 |
| |
| Reviewed by Matt Baker. |
| |
| Remove the `shouldSpeculativelyResolve` parameter, as it was resolving breakpoints even in |
| the case that there were no resolved locations for the given breakpoint. |
| |
| In the case that there are resolved locations, the breakpoint would've already been resolved |
| by the time that `shouldSpeculativelyResolve` would've taken effect, so it's unnecessary. |
| |
| This parameter was only used when setting a breakpoint from a `SourceCodeTextEditor` gutter. |
| |
| * UserInterface/Controllers/DebuggerManager.js: |
| (WI.DebuggerManager.prototype.addBreakpoint): |
| (WI.DebuggerManager.prototype._setBreakpoint): |
| (WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint): |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.textEditorBreakpointAdded): |
| |
| 2019-06-20 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Edit -> Tag doesn't do anything for html, head, and body elements |
| https://bugs.webkit.org/show_bug.cgi?id=199052 |
| <rdar://problem/51923906> |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/DOMTreeElement.js: |
| (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu): |
| - Don't show an "Edit > Tag" for <html>, <head>, and <body> nodes |
| - Disable any "Edit" submenu item if it's target is already being edited |
| - Prevent "Add" submenu items from being shown for text nodes |
| |
| 2019-06-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Debugger: current call frame indicator isn't vertically centered |
| https://bugs.webkit.org/show_bug.cgi?id=199015 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/CallFrameTreeElement.css: |
| (.tree-outline .item.call-frame .status): |
| |
| 2019-06-19 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r240946): Web Inspector: Styles: Pasting multiple properties has issues |
| https://bugs.webkit.org/show_bug.cgi?id=198505 |
| <rdar://problem/51374780> |
| |
| Reviewed by Matt Baker. |
| |
| Since r240946, setting WI.CSSStyleDeclaration.prototype.text updates the text immediately. |
| When WI.CSSStyleDeclaration.prototype.update gets called after setting text, it exits early |
| without firing WI.CSSStyleDeclaration.Event.PropertiesChanged. |
| |
| * UserInterface/Models/CSSStyleDeclaration.js: |
| (WI.CSSStyleDeclaration): |
| (WI.CSSStyleDeclaration.prototype.set text): |
| |
| 2019-06-19 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: Remove unused _pendingFilter from NetworkTableContentView |
| https://bugs.webkit.org/show_bug.cgi?id=199026 |
| |
| Reviewed by Devin Rousso. |
| |
| This flag is no longer set as of https://trac.webkit.org/changeset/225895. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView): |
| (WI.NetworkTableContentView.prototype._processPendingEntries): |
| |
| 2019-06-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'sourceCodePosition.lineNumber') |
| https://bugs.webkit.org/show_bug.cgi?id=199019 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Base/Main.js: |
| (WI.linkifyLocation): |
| |
| 2019-06-19 Zhifei Fang <zhifei_fang@apple.com> |
| |
| Correct the error object link color in dark mode. |
| https://bugs.webkit.org/show_bug.cgi?id=198033 |
| |
| Reviewed by Devin Rousso. |
| |
| * UserInterface/Views/ErrorObjectView.css: |
| (@media (prefers-dark-interface)): |
| (.error-object-link-container): |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: detail view shouldn't stay open when the related entry is removed |
| https://bugs.webkit.org/show_bug.cgi?id=198951 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/NetworkTableContentView.js: |
| (WI.NetworkTableContentView.prototype._mainResourceDidChange): |
| Hide the detail view if the main resource changes and we aren't preserving the log. |
| |
| * UserInterface/Views/Table.js: |
| (WI.Table.prototype.reloadVisibleColumnCells): |
| Only attempt to populate cells for rows that the `_dataSource` actually has. Without this, |
| the `_delegate` may be asked to populate a cell for a row it doesn't have, which would error. |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: parseQueryParameters fails to successfully parse query parameter values that contain "=" |
| https://bugs.webkit.org/show_bug.cgi?id=198971 |
| <rdar://problem/51852782> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Base/URLUtilities.js: |
| (parseQueryString): |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Heap: subsequent snapshots taken manually don't appear in the list |
| https://bugs.webkit.org/show_bug.cgi?id=198941 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Since heap snapshot records can be added at any time, including when not actively recording, |
| when the "Entire Recording" range is selected, make sure to set the `filterEndTime` to be an |
| effectively infinite number so that records added later aren't filtered out. |
| |
| This isn't done for other timeline views as they may have graphs that don't expect to render |
| from time 0 till infinity, not to mention being unable to add records when not recording. |
| |
| * UserInterface/Views/TimelineRecordingContentView.js: |
| (WI.TimelineRecordingContentView.prototype._updateTimelineViewTimes): |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION: Canvas: cannot select saved recordings |
| https://bugs.webkit.org/show_bug.cgi?id=198953 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/TreeElement.js: |
| (WI.TreeElement.treeElementToggled): |
| Don't early return if the `TreeElement` isn't `selectable` as the owner `TreeOutline` may |
| want to dispatch an event that it was clicked. |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: the initial state should be selected when processing a new/imported recording if the navigation sidebar is collapsed |
| https://bugs.webkit.org/show_bug.cgi?id=198952 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| Prevent any content from being generated until `initialLayout` is called, as otherwise it's |
| possible for the `CanvasNavigationSidebar` to update the current action index before the |
| preview element has been created, which would throw an error. |
| |
| * UserInterface/Views/RecordingContentView.js: |
| (WI.RecordingContentView.prototype.updateActionIndex): |
| (WI.RecordingContentView.prototype.initialLayout): |
| (WI.RecordingContentView.prototype._updateSliderValue): |
| (WI.RecordingContentView.prototype._handleRecordingProcessedAction): |
| Drive-by: update the slider max each time the selected action index is changed. |
| |
| 2019-06-18 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Canvas: imported recordings aren't selectable from the overview if there are no canvases in the page |
| https://bugs.webkit.org/show_bug.cgi?id=198955 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/CanvasOverviewContentView.js: |
| (WI.CanvasOverviewContentView.prototype._addSavedRecording): |
| Hide the content placeholder when a recording is imported. It won't be shown again because |
| the `subviews` list will never be empty, as there's no way to remove an imported recording. |
| |
| * UserInterface/Views/CollectionContentView.js: |
| (WI.CollectionContentView.prototype.addContentViewForItem): |
| (WI.CollectionContentView.prototype.removeContentViewForItem): |
| (WI.CollectionContentView.prototype.showContentPlaceholder): Added. |
| (WI.CollectionContentView.prototype.hideContentPlaceholder): Added. |
| (WI.CollectionContentView.prototype.initialLayout): |
| (WI.CollectionContentView.prototype._selectItem): |
| (WI.CollectionContentView.prototype._showContentPlaceholder): Deleted. |
| (WI.CollectionContentView.prototype._hideContentPlaceholder): Deleted. |
| Make `showContentPlaceholder`/`hideContentPlaceholder` protected for any subclasses to call. |
| |
| 2019-06-17 Matt Baker <mattbaker@apple.com> |
| |
| Web Inspector: Elements: remove ellipses from "Break on" context menu item title |
| https://bugs.webkit.org/show_bug.cgi?id=198944 |
| |
| Reviewed by Devin Rousso. |
| |
| Update context menu title to comply with Apple HI guidelines. |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| * UserInterface/Views/ContextMenuUtilities.js: |
| |
| 2019-06-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debugger: adding a DOM/Event/URL breakpoint should enable breakpoints |
| https://bugs.webkit.org/show_bug.cgi?id=198932 |
| |
| Reviewed by Matt Baker. |
| |
| Match the behavior of JavaScript breakpoints, which enable breakpoints globally when a new |
| breakpoint is set or an existing breakpoint is enabled. |
| |
| This avoids the situation where setting a DOM breakpoint or a specific event listener |
| breakpoint appears to not "work" because breakpoints are globally disabled. There is no |
| "breakpoints disabled" banner in the Elements tab, so the user could be completely unaware |
| of this, and therefore be confused as to why these breakpoints aren't being hit. |
| |
| * UserInterface/Controllers/DOMManager.js: |
| (WI.DOMManager.prototype._updateEventBreakpoint): |
| |
| * UserInterface/Controllers/DOMDebuggerManager.js: |
| (WI.DOMDebuggerManager.prototype._updateDOMBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateEventBreakpoint): |
| (WI.DOMDebuggerManager.prototype._updateURLBreakpoint): |
| |
| 2019-06-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: remove extra space above Breakpoints section when breakpoints are disabled |
| https://bugs.webkit.org/show_bug.cgi?id=198933 |
| |
| Reviewed by Matt Baker. |
| |
| * UserInterface/Views/DebuggerSidebarPanel.css: |
| (.sidebar > .panel.navigation.debugger .warning-banner): |
| * UserInterface/Views/SourcesNavigationSidebarPanel.css: |
| (.sidebar > .panel.navigation.sources > .content > .warning-banner): |
| |
| 2019-06-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: split the General panel into sub panels so it's less crowded |
| https://bugs.webkit.org/show_bug.cgi?id=198803 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/SettingsTabContentView.js: |
| (WI.SettingsTabContentView.prototype.initialLayout): |
| (WI.SettingsTabContentView.prototype._createGeneralSettingsView): |
| Many of the settings in General only affect a specific part of Web Inspector, and therefore |
| aren't really "general". |
| |
| (WI.SettingsTabContentView.prototype._createElementsSettingsView): Added. |
| - Element Selection |
| - CSS Changes |
| |
| (WI.SettingsTabContentView.prototype._createSourcesSettingsView): Added. |
| - Debugger |
| - Source Maps |
| |
| (WI.SettingsTabContentView.prototype._createConsoleSettingsView): Added. |
| - Traces (renamed from "Console") |
| - WebRTC Logging |
| - Media Logging |
| - MSE Logging |
| |
| * Localizations/en.lproj/localizedStrings.js: |
| |
| 2019-06-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: the Inspector Style Sheet is missing when grouped by path |
| https://bugs.webkit.org/show_bug.cgi?id=198860 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Controllers/CSSManager.js: |
| (WI.CSSManager.prototype.get styleSheets): |
| (WI.CSSManager.prototype.inspectorStyleSheetsForFrame): |
| (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame): |
| (WI.CSSManager.prototype._inspectorStyleSheetsForFrame): Deleted. |
| Expose a way to fetch all inspector stylesheets for a given frame. |
| Make sure to associate inspector stylesheets with their frame. |
| |
| * UserInterface/Views/SourcesNavigationSidebarPanel.js: |
| (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements): |
| (WI.SourcesNavigationSidebarPanel.prototype._addResourcesRecursivelyForFrame): |
| (WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetAdded): |
| Add paths for inspector stylesheet creation/fetching when grouping by path. |
| Sort inspector stylesheets as the first item of an origin/frame when grouping by path. |
| |
| 2019-06-17 Jamal Nasser <jamaln@mail.com> |
| |
| Web Inspector: Go To Line dialog is white when in Dark Mode |
| https://bugs.webkit.org/show_bug.cgi?id=198596 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/GoToLineDialog.css: |
| (@media (prefers-color-scheme: dark)): |
| (.go-to-line-dialog): |
| (.go-to-line-dialog > div > input): |
| (.go-to-line-dialog > div > input::placeholder): |
| (.go-to-line-dialog > div::before): |
| |
| 2019-06-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Sources: searching doesn't use the case sensitive or regex global settings |
| https://bugs.webkit.org/show_bug.cgi?id=198897 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.customPerformSearch): |
| |
| 2019-06-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r246178): extra spaces added in at-rules when formatting CSS |
| https://bugs.webkit.org/show_bug.cgi?id=198806 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Workers/Formatter/CSSFormatter.js: |
| (CSSFormatter.prototype._format): |
| Add more specific tests for at-rules, and add/remove whitespace depending on the type of |
| at-rule (e.g. `@supports` vs `@media`), as well as where the scanner is in the parameters of |
| the at at-rule (e.g. `@supports |` vs `@media (|`). |
| |
| * UserInterface/Workers/Formatter/FormatterContentBuilder.js: |
| (FormatterContentBuilder): |
| (FormatterContentBuilder.prototype.get lastToken): Added. |
| (FormatterContentBuilder.prototype.get currentLine): |
| (FormatterContentBuilder.prototype.removeLastNewline): |
| (FormatterContentBuilder.prototype.removeLastWhitespace): |
| (FormatterContentBuilder.prototype._popFormattedContent): |
| (FormatterContentBuilder.prototype._append): |
| Update `lastTokenWasNewline` and `lastTokenWasWhitespace` when removing newlines/whitespace. |
| Memoize the `currentLine` so it's less expensive to re-fetch. |
| |
| 2019-06-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: indent type and size settings aren't respected everywhere |
| https://bugs.webkit.org/show_bug.cgi?id=198804 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/CodeMirrorEditor.js: |
| (WI.CodeMirrorEditor.create): |
| When creating a `CodeMirror` instance, default to using the global `Setting`s as the options. |
| If an override is specified in `options`, it will take precedence and the `CodeMirror` will |
| ignore any changes to the `Setting` as well. |
| |
| * UserInterface/Views/TextEditor.js: |
| (WI.TextEditor): |
| (WI.TextEditor.prototype.close): Deleted. |
| |
| * UserInterface/Views/AuditTestCaseContentView.js: |
| (WI.AuditTestCaseContentView.prototype.layout): |
| * UserInterface/Views/BreakpointActionView.js: |
| (WI.BreakpointActionView.prototype._updateBody): |
| * UserInterface/Views/ConsolePrompt.js: |
| (WI.ConsolePrompt): |
| * UserInterface/Views/ScopeChainDetailsSidebarPanel.js: |
| (WI.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked): |
| Remove overrides that aren't necessary for `CodeMirror` to fit in the container element: |
| - `showWhitespaceCharacters` |
| - `indentWithTabs` |
| - `indentUnit` |
| |
| * UserInterface/Views/SourceCodeTextEditor.js: |
| (WI.SourceCodeTextEditor.prototype.close): |
| * UserInterface/Views/ShaderProgramContentView.js: |
| (WI.ShaderProgramContentView.prototype.closed): Deleted. |
| * UserInterface/Views/TextContentView.js: |
| (WI.TextContentView.prototype.closed): Deleted. |
| * UserInterface/Views/TextResourceContentView.js: |
| (WI.TextResourceContentView.prototype.closed): |
| Delete the logic for removing event listeners from global `Setting`, as it didn't work |
| anyways, since none of the event listeners were added using a `thisObject`. |
| |
| 2019-06-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Settings: sticky header disappears when over scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=198833 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/SettingsTabContentView.css: |
| (.content-view.settings .navigation-bar): |
| (.content-view.settings > .settings-view): Added. |
| (.content-view.settings): Deleted. |
| |
| 2019-06-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: imported recordings do not have JavaScript call trees |
| https://bugs.webkit.org/show_bug.cgi?id=197490 |
| <rdar://problem/50589158> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Models/TimelineRecording.js: |
| (WI.TimelineRecording.prototype.initializeCallingContextTrees): |
| Make sure to actually save the provided stack traces and samples in the export data. |
| |
| * UserInterface/Models/ScriptTimelineRecord.js: |
| (WI.ScriptTimelineRecord.fromJSON): |
| (WI.ScriptTimelineRecord.prototype.toJSON): |
| Drive-by: include `extraDetails`, which contains useful information like "default prevented". |
| |
| 2019-06-10 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| REGRESSION(r244268): Web Inspector: Styles: navigating from Computed to Styles doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=198508 |
| <rdar://problem/51375503> |
| |
| Reviewed by Matt Baker. |
| |
| It didn't work because the detached sidebar panel tried to access its parent view (this.parentSidebar). |
| |
| * UserInterface/Views/ComputedStyleDetailsSidebarPanel.js: |
| (WI.ComputedStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty): Added. |
| (WI.ComputedStyleDetailsSidebarPanel): |
| * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: |
| (WI.GeneralStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty): Deleted. |
| Move computedStyleDetailsPanelShowProperty to ComputedStyleDetailsSidebarPanel since it's the only |
| panel where it's needed. |
| |
| 2019-06-10 Alexey Shvayka <shvaikalesh@gmail.com> |
| |
| Web Inspector: "Copy Path to Property" doesn't work with multiline keys |
| https://bugs.webkit.org/show_bug.cgi?id=198691 |
| |
| Reviewed by Matt Baker. |
| |
| Correctly escape line terminators to prevent doubleQuotedString from returning malformed strings. |
| |
| * UserInterface/Base/Utilities.js: Use JSON.stringify. |
| |
| 2019-06-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r246025): prototypes in object previews are visible even when setting `showOnlyJSON` |
| https://bugs.webkit.org/show_bug.cgi?id=198721 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/ObjectTreeView.css: |
| (.object-tree.properties-only.json-only .object-tree-property.prototype-property): Added. |
| (.object-tree.properties-only.json-only .object-tree-property .prototype-property): Deleted. |
| |
| 2019-06-07 Nikita Vasilyev <nvasilyev@apple.com> |
| |
| Web Inspector: longhand CSS properties overridden by shorthands miss strikethrough |
| https://bugs.webkit.org/show_bug.cgi?id=198629 |
| <rdar://problem/51504160> |
| |
| Reviewed by Devin Rousso. |
| |
| Longhand CSS properties (e.g. "font-size") overriden by shorthands (e.g. "font") now have strikethroughs. |
| |
| * UserInterface/Models/CSSProperty.js: |
| (WI.CSSProperty.prototype.set overridingProperty): |
| (WI.CSSProperty): |
| |
| * UserInterface/Models/DOMNodeStyles.js: |
| (WI.DOMNodeStyles.prototype._updateStyleCascade): |
| Call _associateRelatedProperties before _markOverriddenProperties because |
| _associateRelatedProperties sets relatedShorthandProperty property, which |
| is now used by _markOverriddenProperties. |
| |
| (WI.DOMNodeStyles.prototype._markOverriddenProperties.isOverriddenBy): |
| (WI.DOMNodeStyles.prototype._markOverriddenProperties): |
| |
| 2019-06-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: remove always disabled details sidebar navigation item |
| https://bugs.webkit.org/show_bug.cgi?id=198393 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/TimelineTabContentView.js: |
| (WI.TimelineTabContentView): |
| |
| 2019-06-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: REGRESSION(r245833): Timelines: CPU: JavaScript label is missing and JavaScript section of pie chart is black |
| https://bugs.webkit.org/show_bug.cgi?id=198627 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * UserInterface/Views/CPUTimelineView.js: |
| (WI.CPUTimelineView.displayNameForSampleType): |
| * UserInterface/Views/CPUTimelineView.css: |
| (.timeline-view.cpu > .content > .overview .legend > .row > .swatch.sample-type-javascript): |
| (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-javascript): Added. |
| (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-script): Deleted. |
| * UserInterface/Views/CPUUsageCombinedView.css: |
| (.cpu-usage-combined-view > .graph > .range-chart .sample-type-javascript): Added. |
| (.cpu-usage-combined-view > .graph > .range-chart .sample-type-script): Deleted. |
| Use the enum string added in r245833 (`sample-type-javascript`) instead of what was there |
| before (`sample-type-script`). |
| |
| * UserInterface/Views/Variables.css: |
| (:root): |
| Rename `--cpu-script-*` to `--cpu-javascript-*`. |
| |
| 2019-06-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Formatter: pretty-print CSS using a Worker |
| https://bugs.webkit.org/show_bug.cgi?id=197829 |
| <rdar://problem/36891532> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Proxies/FormatterWorkerProxy.js: |
| (WI.FormatterWorkerProxy.prototype.formatCSS): Added. |
| * UserInterface/Workers/Formatter/FormatterWorker.js: |
| (FormatterWorker.prototype.formatCSS): Added. |
| * UserInterface/Workers/Formatter/CSSFormatter.js: Added. |
| (CSSFormatter): |
| (CSSFormatter.prototype.get success): |
| (CSSFormatter.prototype.get formattedText): |
| (CSSFormatter.prototype.get sourceMapData): |
| (CSSFormatter.prototype._format): |
| |
| * UserInterface/Workers/Formatter/FormatterContentBuilder.js: |
| (FormatterContentBuilder.prototype.get currentLine): Added. |
| |
| * UserInterface/Views/TextEditor.js: |
| (WI.TextEditor.prototype._canUseFormatterWorker): |
| (WI.TextEditor.prototype._startWorkerPrettyPrint): |
| |
| * .eslintrc: |
| |
| 2019-06-06 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Elements: print/rulers/compositing/paint navigation items shouldn't be visible if the inspected target doesn't have a PageAgent |
| https://bugs.webkit.org/show_bug.cgi?id=198410 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UserInterface/Views/DOMTreeContentView.js: |
| (WI.DOMTreeContentView): |
| (WI.DOMTreeContentView.prototype.get navigationItems): |
| (WI.DOMTreeContentView.prototype._showRulersChanged): |
| |
| == Rolled over to ChangeLog-2019-06-05 == |