Bug 137600 - import-w3c-tests doesn't prefix property values
Summary: import-w3c-tests doesn't prefix property values
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Manuel Rego Casasnovas
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-10-10 02:17 PDT by Manuel Rego Casasnovas
Modified: 2014-10-14 01:08 PDT (History)
5 users (show)

See Also:


Attachments
Patch (22.96 KB, patch)
2014-10-10 02:20 PDT, Manuel Rego Casasnovas
no flags Details | Formatted Diff | Diff
Patch (23.30 KB, patch)
2014-10-10 16:01 PDT, Manuel Rego Casasnovas
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Manuel Rego Casasnovas 2014-10-10 02:17:09 PDT
Some property values like "display: -webkit-grid;" need to include the vendor prefix in WebKit.

Currently the import-w3c-tests is only prefixing the properties (example: "grid-row: 3;" => "-webkit-grid-row: 3;") but not the property values.

CSSValueKeywords.in has the list of property values from where we can extract the prefixed ones:
http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSValueKeywords.in
Comment 1 Manuel Rego Casasnovas 2014-10-10 02:20:00 PDT
Created attachment 239609 [details]
Patch
Comment 2 Bem Jones-Bey 2014-10-10 11:17:44 PDT
Comment on attachment 239609 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=239609&action=review

I haven't looked through all of the test changes yet, but here's a first pass.

> Tools/Scripts/webkitpy/w3c/test_converter.py:87
> +        property_values_regex = '(:\s*|^\s*)(' + "|".join(prop.replace('-webkit-', '') for prop in self.prefixed_property_values) + ')(\s*;|\s*}|\s*$)'
> +        self.property_values_re = re.compile(property_values_regex)

Nit: I think this should be singular (property_value_re/property_value_regex).

Since the other one is prop_re, I'm torn a bit on if this should be "property", to match webkit style better, or if it should be "prop" for consistency with existing code. Your call on that one.

> Tools/Scripts/webkitpy/w3c/test_converter.py:95
> +    def read_webkit_prefixed_css_property_list(self, contents):

Why not pass in the file name instead of the contents? It would make the call sites of this method much more readable.

> Tools/Scripts/webkitpy/w3c/test_converter.py:143
> +            _log.info('  converting property %s', prop)
> +
> +        text = ''.join(text_chunks)
> +        converted_property_values = set()
> +        text_chunks = []
> +        cur_pos = 0
> +        for m in self.property_values_re.finditer(text):
> +            text_chunks.extend([text[cur_pos:m.start()], m.group(1), '-webkit-', m.group(2), m.group(3)])
> +            converted_property_values.add(m.group(2))
> +            cur_pos = m.end()
> +        text_chunks.append(text[cur_pos:])
> +
> +        for value in converted_property_values:
> +            _log.info('  converting property value %s', value)

I don't like the code duplication. You should at least factor the common code out into a helper method and just call it twice.

Ideally, we'd only iterate once, but that's tricky, and might be premature optimization, so I'm not asking for that. :-)
Comment 3 Manuel Rego Casasnovas 2014-10-10 16:00:12 PDT
(In reply to comment #2)
> (From update of attachment 239609 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=239609&action=review
> 
> I haven't looked through all of the test changes yet, but here's a first pass.

Thanks for the quick review!

> > Tools/Scripts/webkitpy/w3c/test_converter.py:87
> > +        property_values_regex = '(:\s*|^\s*)(' + "|".join(prop.replace('-webkit-', '') for prop in self.prefixed_property_values) + ')(\s*;|\s*}|\s*$)'
> > +        self.property_values_re = re.compile(property_values_regex)
> 
> Nit: I think this should be singular (property_value_re/property_value_regex).

Using singular here.

> Since the other one is prop_re, I'm torn a bit on if this should be "property", to match webkit style better, or if it should be "prop" for consistency with existing code. Your call on that one.

I'm keeping "prop" and using "prop_value" for this case, as there are more variables with short names in this script. Probably a bigger refactoring should be done at some point.

> > Tools/Scripts/webkitpy/w3c/test_converter.py:95
> > +    def read_webkit_prefixed_css_property_list(self, contents):
> 
> Why not pass in the file name instead of the contents? It would make the call sites of this method much more readable.

You're right, it makes things simpler.

> > Tools/Scripts/webkitpy/w3c/test_converter.py:143
> > +            _log.info('  converting property %s', prop)
> > +
> > +        text = ''.join(text_chunks)
> > +        converted_property_values = set()
> > +        text_chunks = []
> > +        cur_pos = 0
> > +        for m in self.property_values_re.finditer(text):
> > +            text_chunks.extend([text[cur_pos:m.start()], m.group(1), '-webkit-', m.group(2), m.group(3)])
> > +            converted_property_values.add(m.group(2))
> > +            cur_pos = m.end()
> > +        text_chunks.append(text[cur_pos:])
> > +
> > +        for value in converted_property_values:
> > +            _log.info('  converting property value %s', value)
> 
> I don't like the code duplication. You should at least factor the common code out into a helper method and just call it twice.
> 
> Ideally, we'd only iterate once, but that's tricky, and might be premature optimization, so I'm not asking for that. :-)

Fair enough :-)
Comment 4 Manuel Rego Casasnovas 2014-10-10 16:01:01 PDT
Created attachment 239658 [details]
Patch
Comment 5 Bem Jones-Bey 2014-10-13 11:59:19 PDT
Comment on attachment 239658 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=239658&action=review

Looks good. r=me.

> Tools/Scripts/webkitpy/w3c/test_converter.py:125
> +        return (converted_properties[0], converted_property_values[0], converted_property_values[1])

One of these days, we should refactor this to return an object with proper field names instead of a tuple.
Comment 6 WebKit Commit Bot 2014-10-14 01:08:12 PDT
Comment on attachment 239658 [details]
Patch

Clearing flags on attachment: 239658

Committed r174672: <http://trac.webkit.org/changeset/174672>
Comment 7 WebKit Commit Bot 2014-10-14 01:08:15 PDT
All reviewed patches have been landed.  Closing bug.