RESOLVED FIXED Bug 175451
Web Inspector: change style of RecordingNavigationSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=175451
Summary Web Inspector: change style of RecordingNavigationSidebarPanel
Devin Rousso
Reported 2017-08-10 15:21:17 PDT
- bold action names - switch icons to be based on category (e.g., path, drawing, style, object creation, attribute getter) - somehow make action index smaller (take up less space) - swap the "visual"/draw highlight for `--value-changed-highlight` (the one used by the DOM tree) - fix the zebra striping colors - make Import/Export icon buttons
Attachments
[Image] WIP sidebar redesign (190.53 KB, image/png)
2017-09-01 11:38 PDT, Matt Baker
no flags
[Image] WIP sidebar redesign - Solar System (486.16 KB, image/png)
2017-09-01 12:45 PDT, Matt Baker
no flags
Patch (2.02 KB, patch)
2017-09-07 13:19 PDT, Matt Baker
no flags
Patch (49.01 KB, patch)
2017-09-07 13:21 PDT, Matt Baker
no flags
[Image] Full icon set (85.26 KB, image/png)
2017-09-07 13:32 PDT, Matt Baker
no flags
[Recording] All actions (48.45 KB, application/json)
2017-09-07 13:51 PDT, Devin Rousso
no flags
[Image] Getter vs Setter (57.10 KB, image/png)
2017-09-07 14:04 PDT, Devin Rousso
no flags
Patch (49.97 KB, patch)
2017-09-07 17:45 PDT, Matt Baker
no flags
[Image] drawFocusIfNeeded (error icon) (243.90 KB, image/png)
2017-09-07 17:49 PDT, Matt Baker
no flags
Patch (49.98 KB, patch)
2017-09-07 17:54 PDT, Matt Baker
no flags
[Image] closePath icon (7.43 KB, image/png)
2017-09-07 22:41 PDT, Devin Rousso
no flags
[Image] beginPath icon (6.31 KB, image/png)
2017-09-07 22:42 PDT, Devin Rousso
no flags
[Image] drawFocusIfNeeded error icon (21.24 KB, image/png)
2017-09-07 22:44 PDT, Devin Rousso
no flags
[Image] save/restore icons (15.36 KB, image/png)
2017-09-07 22:46 PDT, Devin Rousso
no flags
[Image] arc icon (13.35 KB, image/png)
2017-09-08 14:19 PDT, Devin Rousso
no flags
[Image] ellipse icon (12.18 KB, image/png)
2017-09-08 14:19 PDT, Devin Rousso
no flags
[Image] bezierCurveTo icon (9.85 KB, image/png)
2017-09-08 14:20 PDT, Devin Rousso
no flags
[Image] New icons for "image" and "point in stroke" (158.93 KB, image/png)
2017-09-08 17:45 PDT, Matt Baker
no flags
Patch (50.45 KB, patch)
2017-09-08 18:11 PDT, Matt Baker
no flags
Patch (49.35 KB, patch)
2017-09-10 20:16 PDT, Matt Baker
no flags
Radar WebKit Bug Importer
Comment 1 2017-08-23 12:12:32 PDT
Matt Baker
Comment 2 2017-09-01 11:38:39 PDT
Created attachment 319624 [details] [Image] WIP sidebar redesign Changes: - Removed zebra striping - Changed "visual" highlight to green - New icons based on operation types - Inline color swatches (read-only) for fill/stroke style
Matt Baker
Comment 3 2017-09-01 12:45:38 PDT
Created attachment 319633 [details] [Image] WIP sidebar redesign - Solar System Data recorded from MDN's solar system demo: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations.
Devin Rousso
Comment 4 2017-09-01 13:19:27 PDT
😮😮😮 this looks incredible!!!
Matt Baker
Comment 5 2017-09-07 13:19:51 PDT
Matt Baker
Comment 6 2017-09-07 13:21:16 PDT
Matt Baker
Comment 7 2017-09-07 13:32:40 PDT
Created attachment 320168 [details] [Image] Full icon set Icon set for 2D canvas operations. Some may apply to WebGL as well, but generally icons for WebGL actions will be added in a follow-up: https://bugs.webkit.org/show_bug.cgi?id=176560
Devin Rousso
Comment 8 2017-09-07 13:43:58 PDT
Comment on attachment 320167 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=320167&action=review > Source/WebInspectorUI/ChangeLog:9 > + THis patch adds UI polish to the Canvas recording navigation sidebar, Style: s/THis/This > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:84 > + static classNameForAction(recordingAction) I feel like this should be on RecordingActionTreeElement, as it is entirely a UI concept. RecordingAction is already very filled with these static lists of things :( > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:103 > + return "arc"; Is our style to add a newline after break/return inside a switch? I have seen both in our code. Personally, I find that having an extra newline makes it clearer where things cascade/fall-through. > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:123 > + case "beginPath": Remove this, as it exists below. > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:471 > + "webkitImageSmoothingEnabled" // Deprecated What about the non-prefixed "imageSmoothingEnabled"? > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:481 > + "webkitLineDashOffset" // Deprecated What about the non-prefixed "lineDashOffset"? > Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:519 > + "translate" You can also add "getTransform" to this list. > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:26 > +.item.action.initial-state > .icon { Is there a default icon, or have you covered every case? > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:48 > + --data-indent: calc(var(--tree-outline-icon-margin-start) - var(--tree-outline-icon-margin-end)); Nice! > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:137 > +/* Icon set A */ What does this mean? > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:47 > + function createParameterElement(parameter, swizzleType) > + { Style: bracket on same line > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:48 > + let parameterElement = titleFragment.appendChild(document.createElement("span")); Since this function returns the element, you should change this to not call `appendChild`: let parameterElement = document.createElement("span"); > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:145 > + if (actionClassName !== "") I think we usually determine this by checking `.length`
Devin Rousso
Comment 9 2017-09-07 13:51:23 PDT
Created attachment 320172 [details] [Recording] All actions I just tried testing by importing the recording taken in LayoutTests/inspector/canvas/recording-2d.html, and saw that: The following actions are missing an icon: clip The following actions are not given a class-name: commit direction drawFocusIfNeeded fillText getLineDash getTransform imageSmoothingEnabled imageSmoothingQuality isPointInPath isPointInStroke lineDashOffset setAlpha setCompositeOperation setLineCap setLineDash setLineJoin setLineWidth setMiterLimit strokeText Also, the error icons (e.g. `drawFocusIfNeeded`) seem a bit too large.
Devin Rousso
Comment 10 2017-09-07 14:04:11 PDT
Created attachment 320176 [details] [Image] Getter vs Setter Also, are there any plans on visually distinguishing getters and setters? I realize that it is probably rare that they appear side-by-side like in the attached screenshot, but it might happen.
Matt Baker
Comment 11 2017-09-07 14:14:00 PDT
(In reply to Devin Rousso from comment #10) > Created attachment 320176 [details] > [Image] Getter vs Setter > > Also, are there any plans on visually distinguishing getters and setters? I > realize that it is probably rare that they appear side-by-side like in the > attached screenshot, but it might happen. I still believe that instrumenting getters has limited value (is there any value?). IMO, we should drop them.
Matt Baker
Comment 12 2017-09-07 14:22:51 PDT
Comment on attachment 320167 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=320167&action=review >> Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:84 >> + static classNameForAction(recordingAction) > > I feel like this should be on RecordingActionTreeElement, as it is entirely a UI concept. RecordingAction is already very filled with these static lists of things :( I'll relocate the static method and new lists. >> Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:103 >> + return "arc"; > > Is our style to add a newline after break/return inside a switch? I have seen both in our code. Personally, I find that having an extra newline makes it clearer where things cascade/fall-through. Newline makes it more readable. Will change. >> Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:123 >> + case "beginPath": > > Remove this, as it exists below. Removing the second instance. "beginPath" should share the "moveTo" icon. >> Source/WebInspectorUI/UserInterface/Models/RecordingAction.js:471 >> + "webkitImageSmoothingEnabled" // Deprecated > > What about the non-prefixed "imageSmoothingEnabled"? I missed the [ImplementedAs=*] cases in the IDL, good catch! >> Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:26 >> +.item.action.initial-state > .icon { > > Is there a default icon, or have you covered every case? We should be able to cover every case. >> Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:137 >> +/* Icon set A */ > > What does this mean? It means I left in junk from when I was playing with multiple icon sets. :) >> Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:48 >> + let parameterElement = titleFragment.appendChild(document.createElement("span")); > > Since this function returns the element, you should change this to not call `appendChild`: > > let parameterElement = document.createElement("span"); Oops, copy paste error!
Matt Baker
Comment 13 2017-09-07 15:53:37 PDT
(In reply to Devin Rousso from comment #9) > Created attachment 320172 [details] > [Recording] All actions > > I just tried testing by importing the recording taken in > LayoutTests/inspector/canvas/recording-2d.html, and saw that: > > The following actions are missing an icon: > > clip > > The following actions are not given a class-name: > > commit CanvasRenderingContext2D.idl:35: // FIXME: This has been moved to OffscreenCanvasRenderingContext2D in the latest standard. void commit(); > direction > drawFocusIfNeeded Will use classname "image". > fillText Will use classname "fill". > getLineDash > getTransform > imageSmoothingEnabled > imageSmoothingQuality > isPointInPath > isPointInStroke > lineDashOffset > setAlpha > setCompositeOperation > setLineCap > setLineDash > setLineJoin > setLineWidth > setMiterLimit > strokeText I missed a bunch of the implemented interfaces. Going to review all of CanvasRenderingContext2D implements CanvasState; CanvasRenderingContext2D implements CanvasTransform; CanvasRenderingContext2D implements CanvasCompositing; CanvasRenderingContext2D implements CanvasImageSmoothing; CanvasRenderingContext2D implements CanvasFillStrokeStyles; CanvasRenderingContext2D implements CanvasShadowStyles; CanvasRenderingContext2D implements CanvasFilters; CanvasRenderingContext2D implements CanvasRect; CanvasRenderingContext2D implements CanvasDrawPath; CanvasRenderingContext2D implements CanvasUserInterface; CanvasRenderingContext2D implements CanvasText; CanvasRenderingContext2D implements CanvasDrawImage; CanvasRenderingContext2D implements CanvasImageData; CanvasRenderingContext2D implements CanvasPathDrawingStyles; CanvasRenderingContext2D implements CanvasTextDrawingStyles; CanvasRenderingContext2D implements CanvasPath; > Also, the error icons (e.g. `drawFocusIfNeeded`) seem a bit too large. Will polish.
Matt Baker
Comment 14 2017-09-07 17:45:31 PDT
Matt Baker
Comment 15 2017-09-07 17:49:16 PDT
Created attachment 320214 [details] [Image] drawFocusIfNeeded (error icon) Not sure why the swizzle types are coming through as `None`, but at least the error icon looks better. Also removed red text styling, since the icon really stands out.
Matt Baker
Comment 16 2017-09-07 17:54:14 PDT
Matt Baker
Comment 17 2017-09-07 17:54:51 PDT
Last patch fixed the horizontal alignment of the error icon.
Devin Rousso
Comment 18 2017-09-07 22:41:31 PDT
Created attachment 320239 [details] [Image] closePath icon On a non-retina display, it looks like the close path icon is not rendering nicely. There is an extra pixel on the right side of the icon, and it overall seems to be a lighter color than it should be.
Devin Rousso
Comment 19 2017-09-07 22:42:50 PDT
Created attachment 320240 [details] [Image] beginPath icon On a non-retina display, it looks like the main line of begin path icon/arrow is a lighter color than it should be.
Devin Rousso
Comment 20 2017-09-07 22:44:55 PDT
Created attachment 320241 [details] [Image] drawFocusIfNeeded error icon The error icon is offset to the right compared to the other icons. I think it's due to the `left: 2px;` value: .item.action.invalid > .icon { left: 2px; /* THIS */ top: 2px; width: 16px; height: 12px; content: url(../Images/Error.svg); } This appears for me on both retina and non-retina.
Devin Rousso
Comment 21 2017-09-07 22:46:06 PDT
Created attachment 320243 [details] [Image] save/restore icons On non-retina, the lines used by these icons appear in a lighter grey and are almost blurry.
Devin Rousso
Comment 22 2017-09-08 14:19:23 PDT
Created attachment 320302 [details] [Image] arc icon The arc icon seems a bit thin on non-retina.
Devin Rousso
Comment 23 2017-09-08 14:19:53 PDT
Created attachment 320304 [details] [Image] ellipse icon The ellipse icon seems a bit thin on non-retina.
Devin Rousso
Comment 24 2017-09-08 14:20:24 PDT
Created attachment 320305 [details] [Image] bezierCurveTo icon The bezierCurveTo icon seems a bit thin on non-retina.
Matt Baker
Comment 25 2017-09-08 17:45:43 PDT
Created attachment 320320 [details] [Image] New icons for "image" and "point in stroke"
Matt Baker
Comment 26 2017-09-08 18:11:46 PDT
Matt Baker
Comment 27 2017-09-08 18:14:31 PDT
(In reply to Matt Baker from comment #26) > Created attachment 320324 [details] > Patch Fixed: - Improved PathLineTo.svg and PathMoveTo.svg on non-retina - Improved Pixels.svg, PointInPath.svg, and PointInStroke.svg - Selected item has full opacity icon - Added missing HitRegion.svg - Cleaned up SVG syntax across all files
Devin Rousso
Comment 28 2017-09-10 16:13:49 PDT
Comment on attachment 320324 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=320324&action=review r=me > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:30 > +.item.action:not(.initial-state, .parent, .invalid) > .icon { I think we can simplify the property cascade if we change this .tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:59 > +:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon { Should `:matches(:focus, .force-focus)` only be applied to a parent `.tree-outline`? > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:124 > +.item.action:not(.selected) > .titles .parameter .inline-swatch { > + vertical-align: -1px; > +} NIT: I realize that this will be added in a future patch, but this is not used right now. I would personally prefer to have it removed from this patch and added in the other one. > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.css:140 > +.item.action.hit-region > .icon { > + content: url(../Images/HitRegion.svg); > +} This doesn't appear to be used anywhere. Do we need it for WebGL? > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:159 > + if (WI.RecordingActionTreeElement._lineStyleNames.includes(name)) NIT: it seems odd to have some names inside these static lists while others are listed inline in the switch-case. Is there a reason for this difference, or could all of them be listed inside the switch? This way, you only need to do a single check for determining the class of an action. > Source/WebInspectorUI/UserInterface/Views/RecordingActionTreeElement.js:298 > +WI.RecordingActionTreeElement._imageNames = [ For some speed/efficiency, you should make these `new Set([...])`. This also follows the pattern in RecordingAction.js. Or you could just inline them in the switch-case above (see above comment).
Matt Baker
Comment 29 2017-09-10 20:16:17 PDT
WebKit Commit Bot
Comment 30 2017-09-10 21:49:32 PDT
Comment on attachment 320415 [details] Patch Clearing flags on attachment: 320415 Committed r221844: <http://trac.webkit.org/changeset/221844>
WebKit Commit Bot
Comment 31 2017-09-10 21:49:34 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.