Changeset 290613 in webkit
- Timestamp:
- Feb 28, 2022 1:19:56 PM (5 months ago)
- Location:
- trunk/Source
- Files:
-
- 13 edited
-
JavaScriptCore/ChangeLog (modified) (1 diff)
-
JavaScriptCore/inspector/protocol/DOM.json (modified) (1 diff)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/inspector/InspectorOverlay.cpp (modified) (3 diffs)
-
WebCore/inspector/InspectorOverlay.h (modified) (4 diffs)
-
WebCore/inspector/agents/InspectorDOMAgent.cpp (modified) (2 diffs)
-
WebCore/inspector/agents/InspectorDOMAgent.h (modified) (1 diff)
-
WebInspectorUI/ChangeLog (modified) (1 diff)
-
WebInspectorUI/Localizations/en.lproj/localizedStrings.js (modified) (2 diffs)
-
WebInspectorUI/UserInterface/Base/Setting.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Models/DOMNode.js (modified) (6 diffs)
-
WebInspectorUI/UserInterface/Views/CSSFlexNodeOverlayListSection.js (modified) (1 diff)
-
WebInspectorUI/UserInterface/Views/CSSGridNodeOverlayListSection.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r290603 r290613 1 2022-02-28 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: [Flexbox] Add options to show each area's CSS `order` and/or DOM index in the parent flex container 4 https://bugs.webkit.org/show_bug.cgi?id=237215 5 6 Reviewed by Patrick Angle. 7 8 This will help developers better understand how CSS `order` and the DOM index of each flex 9 item interact and result in what's eventually rendered. 10 11 * inspector/protocol/DOM.json: 12 Add an optional boolean parameter to `DOM.showFlexOverlay`: 13 - `showOrderNumbers` controls whether labels with the computed CSS `order` value are shown 14 over each flex item's area. 15 1 16 2022-02-28 Yusuke Suzuki <ysuzuki@apple.com> 2 17 -
trunk/Source/JavaScriptCore/inspector/protocol/DOM.json
r289416 r290613 532 532 "parameters": [ 533 533 { "name": "nodeId", "$ref": "NodeId", "description": "The node for which a flex overlay should be shown." }, 534 { "name": "flexColor", "$ref": "RGBAColor", "description": "The primary color to use for the flex overlay." } 534 { "name": "flexColor", "$ref": "RGBAColor", "description": "The primary color to use for the flex overlay." }, 535 { "name": "showOrderNumbers", "type": "boolean", "optional": true, "description": "Show labels for flex order. If not specified, the default value is false." } 535 536 ] 536 537 }, -
trunk/Source/WebCore/ChangeLog
r290610 r290613 1 2022-02-28 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: [Flexbox] Add options to show each area's CSS `order` and/or DOM index in the parent flex container 4 https://bugs.webkit.org/show_bug.cgi?id=237215 5 6 Reviewed by Patrick Angle. 7 8 This will help developers better understand how CSS `order` and the DOM index of each flex 9 item interact and result in what's eventually rendered. 10 11 * inspector/agents/InspectorDOMAgent.h: 12 * inspector/agents/InspectorDOMAgent.cpp: 13 (WebCore::InspectorDOMAgent::showFlexOverlay): 14 Pass along the optional boolean parameter `showOrderNumbers`. 15 16 * inspector/InspectorOverlay.h: 17 (WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::encode const): 18 (WebCore::InspectorOverlay::Highlight::FlexHighlightOverlay::decode): 19 Add member `bool` for `showOrderNumbers` to `Flex::Config`. 20 Add member `Vector<InspectorOverlayLabel>` to `FlexHighlightOverlay` for drawing labels. 21 22 * inspector/InspectorOverlay.cpp: 23 (WebCore::InspectorOverlay::drawFlexOverlay): 24 (WebCore::InspectorOverlay::buildFlexOverlay): 25 Use `showOrderNumbers` to (when enabled) add items to `Vector<InspectorOverlayLabel>` for 26 each flex item's computed CSS `order` and DOM index in the parent flex container. 27 1 28 2022-02-28 Chris Dumez <cdumez@apple.com> 2 29 -
trunk/Source/WebCore/inspector/InspectorOverlay.cpp
r290112 r290613 1754 1754 for (const auto& crossAxisSpaceBetweenItemAndGap : flexHighlightOverlay.spaceBetweenItemsAndCrossAxisSpace) 1755 1755 drawLayoutStippling(context, crossAxisSpaceBetweenItemAndGap, spaceBetweenItemsAndCrossAxisSpaceStipplingDensity); 1756 1757 for (auto label : flexHighlightOverlay.labels) 1758 label.draw(context); 1756 1759 } 1757 1760 … … 1879 1882 float previousLineCrossAxisTrailingEdge = correctedCrossAxisLeadingEdge(containerRect); 1880 1883 1881 size_t currentChildIndex = 0; 1884 Vector<RenderBox*> renderChildrenInFlexOrder; 1885 Vector<RenderObject*> renderChildrenInDOMOrder; 1886 bool hasCustomOrder = false; 1887 1882 1888 auto childOrderIterator = renderFlex.orderIterator(); 1883 1889 for (RenderBox* renderChild = childOrderIterator.first(); renderChild; renderChild = childOrderIterator.next()) { 1884 1890 if (childOrderIterator.shouldSkipChild(*renderChild)) 1885 1891 continue; 1886 1892 renderChildrenInFlexOrder.append(renderChild); 1893 } 1894 1895 if (flexOverlay.config.showOrderNumbers) { 1896 for (auto* child = node->firstChild(); child; child = child->nextSibling()) { 1897 if (auto* renderer = child->renderer()) { 1898 if (!renderChildrenInFlexOrder.contains(renderer)) 1899 continue; 1900 1901 renderChildrenInDOMOrder.append(renderer); 1902 1903 if (renderer->style().order()) 1904 hasCustomOrder = true; 1905 } 1906 } 1907 } 1908 1909 size_t currentChildIndex = 0; 1910 for (auto* renderChild : renderChildrenInFlexOrder) { 1887 1911 // Build bounds for each child and collect children on the same logical line. 1888 1912 { … … 1890 1914 renderFlex.flipForWritingMode(childRect); 1891 1915 childRect.expand(renderChild->marginBox()); 1892 flexHighlightOverlay.itemBounds.append(childQuadToRootQuad({ childRect })); 1916 1917 auto itemBounds = childQuadToRootQuad({ childRect }); 1918 flexHighlightOverlay.itemBounds.append(itemBounds); 1919 1920 if (flexOverlay.config.showOrderNumbers) { 1921 StringBuilder orderNumbers; 1922 1923 if (auto index = renderChildrenInDOMOrder.find(renderChild); index != notFound) { 1924 orderNumbers.append("Item #"); 1925 orderNumbers.append(index + 1); 1926 } 1927 1928 if (auto order = renderChild->style().order(); order || hasCustomOrder) { 1929 if (!orderNumbers.isEmpty()) 1930 orderNumbers.append('\n'); 1931 orderNumbers.append("order: "); 1932 orderNumbers.append(order); 1933 } 1934 1935 if (!orderNumbers.isEmpty()) 1936 flexHighlightOverlay.labels.append({ orderNumbers.toString(), itemBounds.center(), Color::white.colorWithAlphaByte(230), { InspectorOverlayLabel::Arrow::Direction::None, InspectorOverlayLabel::Arrow::Alignment::None } }); 1937 } 1893 1938 1894 1939 currentLineCrossAxisLeadingEdge = correctedCrossAxisMin(currentLineCrossAxisLeadingEdge, correctedCrossAxisLeadingEdge(childRect)); -
trunk/Source/WebCore/inspector/InspectorOverlay.h
r289769 r290613 125 125 Vector<FloatQuad> spaceBetweenItemsAndCrossAxisSpace; 126 126 Vector<FloatQuad> crossAxisGaps; 127 Vector<InspectorOverlayLabel> labels; 127 128 128 129 #if PLATFORM(IOS_FAMILY) … … 182 183 183 184 Color flexColor; 185 bool showOrderNumbers; 184 186 }; 185 187 … … 287 289 encoder << spaceBetweenItemsAndCrossAxisSpace; 288 290 encoder << crossAxisGaps; 291 encoder << labels; 289 292 } 290 293 … … 305 308 return { }; 306 309 if (!decoder.decode(flexHighlightOverlay.crossAxisGaps)) 310 return { }; 311 if (!decoder.decode(flexHighlightOverlay.labels)) 307 312 return { }; 308 313 return { flexHighlightOverlay }; -
trunk/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
r290047 r290613 1561 1561 } 1562 1562 1563 Inspector::Protocol::ErrorStringOr<void> InspectorDOMAgent::showFlexOverlay(Inspector::Protocol::DOM::NodeId nodeId, Ref<JSON::Object>&& flexColor )1563 Inspector::Protocol::ErrorStringOr<void> InspectorDOMAgent::showFlexOverlay(Inspector::Protocol::DOM::NodeId nodeId, Ref<JSON::Object>&& flexColor, std::optional<bool>&& showOrderNumbers) 1564 1564 { 1565 1565 Protocol::ErrorString errorString; … … 1574 1574 InspectorOverlay::Flex::Config config; 1575 1575 config.flexColor = *parsedColor; 1576 config.showOrderNumbers = showOrderNumbers.value_or(false); 1576 1577 1577 1578 m_overlay->setFlexOverlayForNode(*node, config); -
trunk/Source/WebCore/inspector/agents/InspectorDOMAgent.h
r290047 r290613 151 151 Inspector::Protocol::ErrorStringOr<void> showGridOverlay(Inspector::Protocol::DOM::NodeId, Ref<JSON::Object>&& gridColor, std::optional<bool>&& showLineNames, std::optional<bool>&& showLineNumbers, std::optional<bool>&& showExtendedGridLines, std::optional<bool>&& showTrackSizes, std::optional<bool>&& showAreaNames); 152 152 Inspector::Protocol::ErrorStringOr<void> hideGridOverlay(std::optional<Inspector::Protocol::DOM::NodeId>&&); 153 Inspector::Protocol::ErrorStringOr<void> showFlexOverlay(Inspector::Protocol::DOM::NodeId, Ref<JSON::Object>&& flexColor );153 Inspector::Protocol::ErrorStringOr<void> showFlexOverlay(Inspector::Protocol::DOM::NodeId, Ref<JSON::Object>&& flexColor, std::optional<bool>&& showOrderNumbers); 154 154 Inspector::Protocol::ErrorStringOr<void> hideFlexOverlay(std::optional<Inspector::Protocol::DOM::NodeId>&&); 155 155 Inspector::Protocol::ErrorStringOr<Inspector::Protocol::DOM::NodeId> moveTo(Inspector::Protocol::DOM::NodeId nodeId, Inspector::Protocol::DOM::NodeId targetNodeId, std::optional<Inspector::Protocol::DOM::NodeId>&& insertBeforeNodeId); -
trunk/Source/WebInspectorUI/ChangeLog
r290612 r290613 1 2022-02-28 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: [Flexbox] Add options to show each area's CSS `order` and/or DOM index in the parent flex container 4 https://bugs.webkit.org/show_bug.cgi?id=237215 5 6 Reviewed by Patrick Angle. 7 8 This will help developers better understand how CSS `order` and the DOM index of each flex 9 item interact and result in what's eventually rendered. 10 11 * UserInterface/Base/Setting.js: 12 Add global `WI.Setting` for `flexOverlayShowOrderNumbers`. 13 14 * UserInterface/Models/DOMNode.js: 15 (WI.DOMNode.prototype.set layoutContextType): Added. 16 (WI.DOMNode.prototype.showLayoutOverlay): Added. 17 (WI.DOMNode.prototype.hideLayoutOverlay): Added. 18 (WI.DOMNode.prototype._handleLayoutOverlaySettingChanged): Renamed from `_handleGridLayoutOverlaySettingChanged`. 19 Listen for changes to the above `WI.Setting` and include the value when invoking `DOM.showFlexOverlay`. 20 21 * UserInterface/Views/CSSFlexNodeOverlayListSection.js: 22 (WI.CSSFlexNodeOverlayListSection.prototype.initialLayout): Added. 23 Add UI for the above `WI.Setting`. 24 25 * Localizations/en.lproj/localizedStrings.js: 26 27 * UserInterface/Views/CSSGridNodeOverlayListSection.js: 28 (WI.CSSGridNodeOverlayListSection.prototype.initialLayout): 29 Drive-by: Adjust a `WI.UIString` to avoid possible future clashing. 30 1 31 2022-02-28 Devin Rousso <drousso@apple.com> 2 32 -
trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
r289757 r290613 1053 1053 localizedStrings["Option-click to show unused CSS variables from all rules @ Styles Sidebar Panel Tooltip"] = "Option-click to show unused CSS variables from all rules"; 1054 1054 localizedStrings["Options"] = "Options"; 1055 /* Label for option to toggle the order numbers setting for CSS flex overlays */ 1056 localizedStrings["Order Numbers @ Layout Panel Overlay Options"] = "Order Numbers"; 1055 1057 /* Property value for `font-variant-numeric: ordinal`. */ 1056 1058 localizedStrings["Ordinal Letter Forms @ Font Details Sidebar Property Value"] = "Ordinal Letter Forms"; … … 1076 1078 localizedStrings["Page"] = "Page"; 1077 1079 localizedStrings["Page Issue"] = "Page Issue"; 1080 /* Heading for list of flex overlay options */ 1081 localizedStrings["Page Overlay Options @ Layout Panel Flex Section Header"] = "Page Overlay Options"; 1078 1082 /* Heading for list of grid overlay options */ 1079 localizedStrings["Page Overlay Options @ Layout Panel Section Header"] = "Page Overlay Options";1083 localizedStrings["Page Overlay Options @ Layout Panel Grid Section Header"] = "Page Overlay Options"; 1080 1084 /* Heading for list of grid nodes */ 1081 1085 localizedStrings["Page Overlays @ Layout Sidebar Section Header"] = "Grid Overlays"; -
trunk/Source/WebInspectorUI/UserInterface/Base/Setting.js
r290065 r290613 197 197 enableElementsTabIndependentStylesDetailsSidebarPanel: new WI.Setting("elements-tab-independent-styles-details-panel", true), 198 198 enableLineWrapping: new WI.Setting("enable-line-wrapping", true), 199 flexOverlayShowOrderNumbers: new WI.Setting("flex-overlay-show-order-numbers", false), 199 200 frontendAppearance: new WI.Setting("frontend-appearance", "system"), 200 201 gridOverlayShowAreaNames: new WI.Setting("grid-overlay-show-area-names", false), -
trunk/Source/WebInspectorUI/UserInterface/Models/DOMNode.js
r290435 r290613 280 280 281 281 switch (oldLayoutContextType) { 282 case WI.DOMNode.LayoutContextType.Flex: 283 WI.settings.flexOverlayShowOrderNumbers.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 284 break; 285 282 286 case WI.DOMNode.LayoutContextType.Grid: 283 WI.settings.gridOverlayShowExtendedGridLines.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);284 WI.settings.gridOverlayShowLineNames.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);285 WI.settings.gridOverlayShowLineNumbers.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);286 WI.settings.gridOverlayShowTrackSizes.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);287 WI.settings.gridOverlayShowAreaNames.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);287 WI.settings.gridOverlayShowExtendedGridLines.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 288 WI.settings.gridOverlayShowLineNames.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 289 WI.settings.gridOverlayShowLineNumbers.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 290 WI.settings.gridOverlayShowTrackSizes.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 291 WI.settings.gridOverlayShowAreaNames.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 288 292 break; 289 293 } … … 629 633 630 634 if (!this._layoutOverlayShowing) { 631 WI.settings.gridOverlayShowExtendedGridLines.addEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);632 WI.settings.gridOverlayShowLineNames.addEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);633 WI.settings.gridOverlayShowLineNumbers.addEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);634 WI.settings.gridOverlayShowTrackSizes.addEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);635 WI.settings.gridOverlayShowAreaNames.addEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);635 WI.settings.gridOverlayShowExtendedGridLines.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 636 WI.settings.gridOverlayShowLineNames.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 637 WI.settings.gridOverlayShowLineNumbers.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 638 WI.settings.gridOverlayShowTrackSizes.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 639 WI.settings.gridOverlayShowAreaNames.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 636 640 } 637 641 break; … … 639 643 case WI.DOMNode.LayoutContextType.Flex: 640 644 agentCommandArguments.flexColor = color.toProtocol(); 645 agentCommandArguments.showOrderNumbers = WI.settings.flexOverlayShowOrderNumbers.value; 641 646 agentCommandFunction = target.DOMAgent.showFlexOverlay; 647 648 if (!this._layoutOverlayShowing) 649 WI.settings.flexOverlayShowOrderNumbers.addEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 642 650 break; 643 651 } … … 665 673 switch (this._layoutContextType) { 666 674 case WI.DOMNode.LayoutContextType.Grid: 667 WI.settings.gridOverlayShowExtendedGridLines.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);668 WI.settings.gridOverlayShowLineNames.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);669 WI.settings.gridOverlayShowLineNumbers.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);670 WI.settings.gridOverlayShowTrackSizes.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);671 WI.settings.gridOverlayShowAreaNames.removeEventListener(WI.Setting.Event.Changed, this._handle GridLayoutOverlaySettingChanged, this);675 WI.settings.gridOverlayShowExtendedGridLines.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 676 WI.settings.gridOverlayShowLineNames.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 677 WI.settings.gridOverlayShowLineNumbers.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 678 WI.settings.gridOverlayShowTrackSizes.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 679 WI.settings.gridOverlayShowAreaNames.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 672 680 673 681 agentCommandFunction = target.DOMAgent.hideGridOverlay; … … 675 683 676 684 case WI.DOMNode.LayoutContextType.Flex: 685 WI.settings.flexOverlayShowOrderNumbers.removeEventListener(WI.Setting.Event.Changed, this._handleLayoutOverlaySettingChanged, this); 686 677 687 agentCommandFunction = target.DOMAgent.hideFlexOverlay; 678 688 break; … … 1260 1270 } 1261 1271 1262 _handle GridLayoutOverlaySettingChanged(event)1272 _handleLayoutOverlaySettingChanged(event) 1263 1273 { 1264 1274 if (this._layoutOverlayShowing) -
trunk/Source/WebInspectorUI/UserInterface/Views/CSSFlexNodeOverlayListSection.js
r289757 r290613 32 32 return WI.UIString("Flexbox Overlays", "Page Overlays for Flex containers @ Layout Sidebar Section Header", "Heading for list of flex container nodes"); 33 33 } 34 35 initialLayout() 36 { 37 let settingsGroup = new WI.SettingsGroup(WI.UIString("Page Overlay Options", "Page Overlay Options @ Layout Panel Flex Section Header", "Heading for list of flex overlay options")); 38 this.element.append(settingsGroup.element); 39 40 settingsGroup.addSetting(WI.settings.flexOverlayShowOrderNumbers, WI.UIString("Order Numbers", "Order Numbers @ Layout Panel Overlay Options", "Label for option to toggle the order numbers setting for CSS flex overlays")); 41 42 super.initialLayout(); 43 } 34 44 }; -
trunk/Source/WebInspectorUI/UserInterface/Views/CSSGridNodeOverlayListSection.js
r289757 r290613 35 35 initialLayout() 36 36 { 37 let settingsGroup = new WI.SettingsGroup(WI.UIString("Page Overlay Options", "Page Overlay Options @ Layout Panel Section Header", "Heading for list of grid overlay options"));37 let settingsGroup = new WI.SettingsGroup(WI.UIString("Page Overlay Options", "Page Overlay Options @ Layout Panel Grid Section Header", "Heading for list of grid overlay options")); 38 38 this.element.append(settingsGroup.element); 39 39
Note: See TracChangeset
for help on using the changeset viewer.