Closed Bug 806068 Opened 12 years ago Closed 12 years ago

Unprefix -moz-initial

Categories

(Core :: CSS Parsing and Computation, defect)

19 Branch
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla19

People

(Reporter: bugs, Assigned: bugs)

References

(Blocks 2 open bugs, )

Details

(Keywords: dev-doc-complete)

Attachments

(2 files, 3 obsolete files)

Time to start parsing the 'initial' keyword. CSS3 Values & Units is now a Candidate Recommendation. -moz-initial should also be removed from our reftest files so we can add them to the W3C repository.
Comment on attachment 675822 [details] [diff] [review] Naive patch that parses the unprefixed keyword. We may want to hang this off of a pref or add an alias to the -moz variant for some period of time. Not sure... I believe the chunk in the patch doesn't change how we _parse_ the keyword, but rather how we display it when we output it to a string. (e.g. for inspecting a stylesheet via script using the CSSOM, I think) One nit on that chunk: >diff --git a/layout/style/nsCSSValue.cpp b/layout/style/nsCSSValue.cpp >--- a/layout/style/nsCSSValue.cpp >+++ b/layout/style/nsCSSValue.cpp >@@ -1066,17 +1066,17 @@ nsCSSValue::AppendToString(nsCSSProperty > break; > } > } > > switch (unit) { > case eCSSUnit_Null: break; > case eCSSUnit_Auto: aResult.AppendLiteral("auto"); break; > case eCSSUnit_Inherit: aResult.AppendLiteral("inherit"); break; >- case eCSSUnit_Initial: aResult.AppendLiteral("-moz-initial"); break; >+ case eCSSUnit_Initial: aResult.AppendLiteral("initial"); break; > case eCSSUnit_None: aResult.AppendLiteral("none"); break; Probably want to add one space before "break" there to make it line up with all the other already-aligned breaks. To change how we actually parse it, I think you need to tweak this line of code: https://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSParser.cpp#4718 which uses eCSSKeyword__moz_initial, defined (and mapped to the string "-moz-initial") via a macro here: https://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSKeywordList.h#93 The exact tweak depends on what we want to do: - If we're completely ripping out -moz-initial, then we can just change that line and the keyword-definition. ...OR...: - If we want to temporarily support "-moz-initial" as an alias for "initial", then we want to add a new "initial" keyword to nsCSSKeywordList.h, and change that chunk of the parser from... > else if (eCSSKeyword__moz_initial == keyword) { ...to... > else if (eCSSKeyword__moz_initial == keyword || > eCSSKeyword__initial == keyword ) {
We also need to change in-tree users if we drop the prefixed keyword right now. https://mxr.mozilla.org/mozilla-central/search?string=moz-initial
Yup, of course. If I were doing this, I'd structure this in 3 parts: * Patch 1: Add "initial" to style system impl (in C++), leaving "-moz-initial" only as an alias, per end of comment 2. * Patch 2: s/-moz-initial/initial/ on all in-tree content (CSS/HTML/etc) * Patch 3: Drop the "-moz-initial alias (<--- maybe in a separate bug, later on) That way, each piece is logically-separate & bite-sized, and we should pass tests at each intermediate stage.
This patch: 1. Parses 'initial' keyword. 2. Adds '-moz-initial' alias. 3. Returns the string 'initial' when queried in JS. 4. Modifies test_initial_storage.html that tests #3.
Attachment #675822 - Attachment is obsolete: true
Attachment #675822 - Flags: review?(dholbert)
Attachment #676099 - Flags: review?(dholbert)
5. Modifies test_bug160403.html that also tests #3. Try server builds/tests: https://tbpl.mozilla.org/?tree=Try&rev=91a497934287
Comment on attachment 676099 [details] [diff] [review] part 1: parse 'initial' keyword. maintain '-moz-initial' alias. Looks good! r=me
Attachment #676099 - Flags: review?(dholbert) → review+
Keywords: dev-doc-needed
OS: Mac OS X → All
Hardware: x86 → All
Actually, one suggestion for "part 1": If it's easy (which I think it is), we should probably copypaste a couple lines in test_initial_storage.html (one of the patch's modified tests) to be sure that "-moz-initial" gets serialized as "initial". (i.e. that it's a true alias, rather than an independent keyword with the same effect) (Of course, we'll drop those added lines in the final "remove-the-alias" patch. This may be more or less important depending on how long the alias stays in the tree.)
(In reply to Daniel Holbert [:dholbert] from comment #8) > This may be more or less important depending on how long the alias > stays in the tree. (If it's not clear: by "this", I meant "adding that new check to test_initial_storage.html")
(In reply to Daniel Holbert [:dholbert] from comment #9) > (In reply to Daniel Holbert [:dholbert] from comment #8) > > This may be more or less important depending on how long the alias > > stays in the tree. > > (If it's not clear: by "this", I meant "adding that new check to > test_initial_storage.html") I think lines 63-64 in test_bug160403.html already covers that case. This test sets "-moz-initial" in line 63 but gets "initial" in line 64.
part 2: Modify in-tree usage of -moz-initial I'm using this script to locate the affected files: find /src -exec grep -l "\-moz\-initial" '{}' \; Here's the output (-files modified by the part 1 patch) : /src/content/xul/document/crashtests/428951-1.xul /src/editor/libeditor/html/crashtests/407277-1.html /src/layout/doc/adding-style-props.html /src/layout/generic/crashtests/383089-1.html /src/layout/reftests/bugs/455105-1.html /src/layout/reftests/css-visited/border-1.html /src/layout/reftests/css-visited/border-collapse-1.html /src/layout/reftests/css-visited/color-choice-1.html /src/layout/reftests/css-visited/column-rule-1.html /src/layout/reftests/css-visited/content-on-link-before-1.html /src/layout/reftests/css-visited/content-on-visited-before-1.html /src/layout/reftests/css-visited/outline-1.html /src/layout/reftests/flexbox/flexbox-align-self-horiz-1-block.xhtml /src/layout/reftests/flexbox/flexbox-align-self-horiz-1-table.xhtml /src/layout/reftests/flexbox/flexbox-align-self-horiz-3.xhtml /src/layout/reftests/flexbox/flexbox-align-self-vert-1.xhtml /src/layout/reftests/flexbox/flexbox-align-self-vert-rtl-1.xhtml /src/layout/style/quirk.css /src/layout/style/test/property_database.js /src/layout/style/test/test_bug160403.html /src/layout/style/test/test_bug652486.html /src/layout/style/test/test_bug74880.html /src/layout/style/test/test_garbage_at_end_of_declarations.html /src/layout/style/test/test_initial_computation.html /src/layout/style/test/test_initial_storage.html /src/layout/style/test/test_media_queries.html /src/layout/style/test/test_media_queries_dynamic.html /src/layout/style/test/test_media_query_list.html /src/layout/style/test/test_rem_unit.html /src/layout/style/test/test_transitions_computed_value_combinations.html /src/layout/style/test/test_transitions_per_property.html /src/layout/style/test/test_value_cloning.html /src/mobile/xul/themes/core/forms.css /src/mobile/xul/themes/core/gingerbread/forms.css /src/mobile/xul/themes/core/gingerbread/platform.css /src/mobile/xul/themes/core/honeycomb/forms.css /src/mobile/xul/themes/core/honeycomb/platform.css /src/mobile/xul/themes/core/notification.css /src/mobile/xul/themes/core/platform.css /src/mobile/xul/themes/core/tablet.css
(In reply to Jet Villegas (:jet) from comment #10) > I think lines 63-64 in test_bug160403.html already covers that case. This > test sets "-moz-initial" in line 63 but gets "initial" in line 64. Ah, so it does. Good good.
Applies this script to the 40 files found in comment 11 sed -i '' -e "s/-moz-initial/initial/g" filename
Attachment #676626 - Flags: review?(dholbert)
Comment on attachment 676626 [details] [diff] [review] part 2: update in-tree usage of '-moz-initial' to 'initial' Looks good! One possible tweak: if we're keeping the alias around for a nontrivial amount of time, it'd probably be a good idea to leave test_bug160403.html untouched by this patch, so that we've got at least one test to verify that the prefixed alias behaves as-expected while we support it. (per comment 8 / comment 10)
Attachment #676626 - Flags: review?(dholbert) → review+
(In reply to Daniel Holbert [:dholbert] from comment #14) > Comment on attachment 676626 [details] [diff] [review] > One possible tweak: if we're keeping the alias around for a nontrivial > amount of time, it'd probably be a good idea to leave test_bug160403.html > untouched by this patch, so that we've got at least one test to verify that > the prefixed alias behaves as-expected while we support it. (per comment 8 / > comment 10) Agreed. Updated patch to unfix that file.
Attachment #676626 - Attachment is obsolete: true
Attachment #676667 - Flags: review?(dholbert)
Attachment #676667 - Flags: review?(dholbert) → review+
Updated part 1 patch to add a check-in comment. No code changes. r = dholbert. checkin-needed
Attachment #676099 - Attachment is obsolete: true
Attachment #676690 - Flags: checkin?(dholbert)
Attachment #676667 - Flags: checkin?(dholbert)
Comment on attachment 676690 [details] [diff] [review] part 1: parse 'initial' keyword. maintain '-moz-initial' alias. (In reply to Jet Villegas (:jet) from comment #16) > Updated part 1 patch to add a check-in comment. For someone unfamiliar with this bug, the checkin comment... >Bug 806068: Parser Changes. ... is a little vague. :) Anyway -- I updated it (and added "part 1" / "part 2" labels on the patches) and pushed both parts. Part 1: https://hg.mozilla.org/integration/mozilla-inbound/rev/017802692817 Part 2: https://hg.mozilla.org/integration/mozilla-inbound/rev/4e7c99e44c65
Attachment #676690 - Flags: checkin?(dholbert) → checkin+
Attachment #676667 - Flags: checkin?(dholbert) → checkin+
Blocks: 807184
I filed bug 807184 on this.
Assignee: nobody → bugs
Status: NEW → ASSIGNED
Flags: in-testsuite+
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla19
Blocks: 807303
(In reply to Ryan VanderMeulen from comment #21) > https://hg.mozilla.org/comm-central/rev/5b72098e0d5d That was actually for bug 807303. (The patch had the wrong bug #)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: