Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 18 users
Status: Fixed
Owner:
Closed: Feb 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment
Make multicol good enough for unprefixing
Project Member Reported by msten...@opera.com, May 26 2015 Back to list
With the new multicol implementation landed ( issue 334335 ), the next thing to do is to make it good enough to have the multicol properties unprefixed.

What we lack:

1: Support for nested multicol (which will also introduce support for multicol inside any kind of fragmentation context, such as pagination, so that we can actually print multicol beautifully).

2: Add support for the modern fragmentainer break controlling properties: break-after, break-before, break-inside.

We already have support for column-fill, but it's waiting behind a runtime flag (ColumnFill), only enabled for experimental.
 
Comment 1 by rsesek@chromium.org, Oct 26 2015
Cc: durga.behera@chromium.org
 Issue 547479  has been merged into this issue.
Thanks you to assigned because unprefix CSS3 Multiple column layout have more standard of CSS3 in Chromium.
Comment 3 by msten...@opera.com, Jan 12 2016
Nested multicol is now implemented; see  bug 447718 

Regarding #2 in the description - break-after, break-before and break-inside, I think we can unprefix the multicol properties without implementing those first. Those properties really belong in a more generic fragmentation spec than multicol, and look! They ARE already in a more generic fragmentation spec than multicol: https://drafts.csswg.org/css-break-3/
Comment 4 by msten...@opera.com, Feb 17 2016
Change of plans: break-after, break-before and break-inside will be landed before unprefixing, but we'll only support what the layout engine currently supports. Most notably, there'll be no support for break-(after|before):avoid. See bug 223068.
Project Member Comment 5 by bugdroid1@chromium.org, Feb 18 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c78e9708e49aa13bd5bd9382983f4aa060680dfd

commit c78e9708e49aa13bd5bd9382983f4aa060680dfd
Author: mstensho <mstensho@opera.com>
Date: Thu Feb 18 12:28:07 2016

Add CSS parser support for break-after, break-before and break-inside.

Note that this only adds support for these properties on specified and computed
style level, and does not extend the functionality in the layout engine. In
particular, we don't support break-(after|before):(avoid|left|right) any better
than before (i.e. we just recognize the values and do nothing about them in the
engine).

The (page|-webkit-column)-break-(after|before|inside) properties are treated as
shorthands for their break-(after|before|inside) counterparts, in accordance
with the spec.

This CL intends to make as few behavioral changes on computed style level as
humanly possible, apart from actually allowing the new properties. In order to
achieve that, we go against the spec when it comes to mapping between the three
modern break-(after|before|inside) properties and the old-fashioned ones. More
specifically, we map "right" and "left" values to "always", and we even support
those values on -webkit-column-break-(after|before), which is just bogus, but
this is how it's always been. We also violate the spec when it comes to mapping
"avoid" values. While the spec says that e.g. page-break-inside:avoid should
simply map to break-inside:avoid, we map it to avoid-page, so that the computed
value of -webkit-column-break-inside isn't affected by such a declaration.

There WILL be some minor behavioral changes, no matter how hard we try, though:
Since there's now just one property for each of before, after and inside
(instead of two - one for page and one for column), declaration sequences like
"page-break-inside:avoid; -webkit-column-break-inside:auto;" will not behave
like before. This will now become "break-inside:auto" (from the
-webkit-column-break-inside declaration), effectively allowing page breaks
inside.

The new test behaves exactly as it would have without the code changes in this
CL, apart from recognizing break-after, break-before and break-inside.

BUG=223068, 492297 

Review URL: https://codereview.chromium.org/1681273003

Cr-Commit-Position: refs/heads/master@{#376148}

[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
[add] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/fragmentation/README.txt
[add] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/fragmentation/break-properties-expected.txt
[add] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/fragmentation/break-properties.html
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/LayoutTests/webexposed/css-properties-as-js-properties-expected.txt
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/CSSComputedStyleDeclaration.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/CSSProperties.in
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/CSSValueKeywords.in
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/parser/CSSParserFastPaths.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/editing/EditingStyle.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/frame/UseCounter.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/style/ComputedStyle.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/style/ComputedStyle.h
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/style/ComputedStyleConstants.h
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/style/StyleMultiColData.cpp
[modify] http://crrev.com/c78e9708e49aa13bd5bd9382983f4aa060680dfd/third_party/WebKit/Source/core/style/StyleMultiColData.h

Project Member Comment 6 by bugdroid1@chromium.org, Feb 18 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/48bd6702b137cdcddd2df1676bafa592fb8be0cd

commit 48bd6702b137cdcddd2df1676bafa592fb8be0cd
Author: mstensho <mstensho@opera.com>
Date: Thu Feb 18 15:14:20 2016

Enable CSS column-fill by default (in stable).

There are already plenty of tests for this in LayoutTests/fast/multicol/

BUG= 492297 

Review URL: https://codereview.chromium.org/1704883002

Cr-Commit-Position: refs/heads/master@{#376167}

[modify] https://crrev.com/48bd6702b137cdcddd2df1676bafa592fb8be0cd/third_party/WebKit/LayoutTests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
[modify] https://crrev.com/48bd6702b137cdcddd2df1676bafa592fb8be0cd/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Project Member Comment 7 by bugdroid1@chromium.org, Feb 18 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d

commit ef0bbaa58e53dc720970aec40a06f24ca66f7b0d
Author: mstensho <mstensho@opera.com>
Date: Thu Feb 18 20:42:23 2016

Unprefix multicol properties.

The prefixed versions will be retained as aliases for the unprefixed ones.
Might take some decades before the world wide web has stopped using them,
so we probably cannot deprecate (and remove) them any time soon.

Most tests are still prefixed. Will clean that up in due course. For now, just
unprefix one random unit test and one random LayoutTest.

BUG= 492297 

Review URL: https://codereview.chromium.org/1710003002

Cr-Commit-Position: refs/heads/master@{#376249}

[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-listing-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/css/remove-shorthand-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/css/remove-shorthand.html
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/css/style-enumerate-properties.html
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/fast/multicol/nested-columns.html
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/svg/css/getComputedStyle-listing-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/svg/custom/svg-fonts-in-html.html
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/LayoutTests/webexposed/css-properties-as-js-properties-expected.txt
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/ColorPropertyFunctions.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/LengthPropertyFunctions.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/NumberPropertyFunctions.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/PropertyInterpolationTypesMapping.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/css/CSSAnimatableValueFactory.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/animation/css/CSSPropertyEquality.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/CSSComputedStyleDeclaration.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/CSSProperties.in
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/parser/CSSParserFastPaths.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/resolver/AnimatedStyleBuilder.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/editing/EditingStyle.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/frame/UseCounter.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/layout/LayoutMultiColumnFlowThreadTest.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp
[modify] https://crrev.com/ef0bbaa58e53dc720970aec40a06f24ca66f7b0d/third_party/WebKit/Source/core/style/ComputedStyle.cpp

Comment 8 by msten...@opera.com, Feb 18 2016
Status: Fixed
It's not just good, it's good enough! :)

Closing.
Sign in to add a comment