RFR: 8336097: UserAgent Styles using lookups are promoted to Author level if look-up is defined in Author stylesheet [v2]

Andy Goryachev angorya at openjdk.org
Fri Jul 19 23:29:38 UTC 2024


On Mon, 15 Jul 2024 12:10:27 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:

>> This change removes the origin determination from `resolveLookups`.  Instead, the origin from the style is used.
>> 
>> Although a comment in the code alluded that this may cause problem with `INLINE` styles, this is not the case. Whenever a `Node` is associated with a `CssStyleHelper`, a suitable shared cache is determined for its use.  This already takes into account the presence of an inline style, and only nodes with the same inline style can share such a cache.  See `Cache#getStyleMap` and specifically this fragment where an additional selector is added for the inline style:
>> 
>>             if (hasInlineStyle) {
>>                 Selector selector = cacheContainer.getInlineStyleSelector(inlineStyle);
>>                 if (selector != null) selectors.add(selector);
>>             }
>
> John Hendrikx has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add test case

Thank you for all the explanations!

I did a quick test with the Monkey Tester, setting various styles.  Haven't found any issues.

Left a few comments inline.

modules/javafx.graphics/src/test/java/test/javafx/scene/CssStyleHelperTest.java line 73:

> 71:     }
> 72: 
> 73:     @BeforeEach

since we are now creating Stage every time, shouldn't we `hide()` it each time?

modules/javafx.graphics/src/test/java/test/javafx/scene/CssStyleHelperTest.java line 696:

> 694:         AUTHOR_OVERRIDES_USER_AGENT(RED_STYLESHEET, null, GRAY_STYLESHEET, null),
> 695:         AUTHOR_OVERRIDES_INDIRECT_USER_AGENT(RED_INDIRECT_STYLESHEET, null, GRAY_STYLESHEET, null),
> 696:         AUTHOR_OVERRIDES_PROPERTY(RED_STYLESHEET, Color.BLUE, GRAY_STYLESHEET, null),

should another one be added here:
`AUTHOR_OVERRIDES_PROPERTY2(RED_INDIRECT_STYLESHEET, Color.BLUE, GRAY_STYLESHEET, null),`

and also
`AUTHOR_OVERRIDES_PROPERTY(RED_INDIRECT_STYLESHEET, Color.BLUE, GRAY_STYLESHEET, "-fx-base: yellow"),`

modules/javafx.graphics/src/test/java/test/javafx/scene/CssStyleHelperTest.java line 705:

> 703:         INLINE_OVERRIDES_USER_AGENT(RED_STYLESHEET, null, null, "-fx-background-color: #808080"),
> 704:         INLINE_OVERRIDES_PROPERTY(RED_STYLESHEET, Color.BLUE, null, "-fx-background-color: #808080"),
> 705:         INLINE_OVERRIDES_AUTHOR(RED_STYLESHEET, null, RED_STYLESHEET, "-fx-background-color: #808080"),

Should we add other combinations:
(R,B,R,..
(RED_INDIRECT,..

modules/javafx.graphics/src/test/java/test/javafx/scene/CssStyleHelperTest.java line 710:

> 708:         INLINE_VARIABLE_OVERRIDES_USER_AGENT_VARIABLE(RED_INDIRECT_STYLESHEET, null, null, "-fx-base: #808080"),
> 709:         INLINE_VARIABLE_OVERRIDES_AUTHOR_VARIABLE(RED_INDIRECT_STYLESHEET, null, FX_BASE_GREEN_STYLESHEET, "-fx-base: #808080");
> 710: 

also, would it make sense to add tests for null/empty userAgentStylesheet, for completeness sake?

-------------

PR Review: https://git.openjdk.org/jfx/pull/1503#pullrequestreview-2189475186
PR Review Comment: https://git.openjdk.org/jfx/pull/1503#discussion_r1685117648
PR Review Comment: https://git.openjdk.org/jfx/pull/1503#discussion_r1685082283
PR Review Comment: https://git.openjdk.org/jfx/pull/1503#discussion_r1685085547
PR Review Comment: https://git.openjdk.org/jfx/pull/1503#discussion_r1685086065


More information about the openjfx-dev mailing list