On Tue, 9 May 2023 06:44:20 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

>> Two CSS AttributeSet-s can be compared using the AttributeSet.isEqual() 
>> method which can fail due to missing implementation of equals method in CSS 
>> subclasses.
>> In this issue, even when two CSS AttributeSet has same 42 font size string 
>> value, Object equality fails.
>> Fixed by implementing the equality and hashCode method for CSS.FontSize 
>> class.
>> 
>> All jtreg/jck tests are ok
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   hashCode fix

Can all the subclasses of `CssValue` be compared with correct result?

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2223:

> 2221:         @Override
> 2222:         public boolean equals(Object val) {
> 2223:             return val instanceof CSS.FontSize size && value == 
> size.value;

What about different units? `font-size: 1em` shouldn't be equal to `font-size: 
1ex`, should it?

What about keywords? Currently, declarations `font-size: smaller` and 
`font-size: larger` are considered equal.

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2334:

> 2332:         public boolean equals(Object val) {
> 2333:             return val instanceof CSS.FontFamily font
> 2334:                        && Objects.equals(family, font.family);

Could you be consistent?

The indentation at [lines 
2035-2036](https://github.com/openjdk/jdk/pull/13405/files/2bc265cdb1ed0d070b21233ff9982758bef6da71..717d1a1d4e8a3eb0cea848a7e8800210f30660fd#diff-e2c9b23b1844fa877fb1c4f048a8a8b85cd21d146f963837e039ab20b9560fe7R2036)
 above is different.

Personally, I would align `&&` with `v` of `val`; aligning to start of 
`instanceof` look good too, I prefer it compared to 8-column indent you used 
above.

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2680:

> 2678:             if (percentage) {
> 2679:                 return false;
> 2680:             } else {

Why are percentage values never equal?

I expect two attribute sets produced from `"margin-top: 100%"` to be equal. 
However, the real length on rendering could be different if the attribute is 
applied to different elements.

src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 2681:

> 2679:                 return false;
> 2680:             } else {
> 2681:                 return val instanceof CSS.LengthValue lu && span == 
> lu.span;

What about different units? "1mm" should not be equal to "1cm", should it?

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

Changes requested by aivanov (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13405#pullrequestreview-1434591382
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1199147541
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1199063559
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1199144022
PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1199144367

Reply via email to