Index: third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
index 453f9e6a75500d7f56811267b8377154a93ed0af..74dda2f08ca881ceefd5a07b98ea1e4a8a47194a 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
@@ -2,10 +2,12 @@ |
* Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
* (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
* Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
- * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. |
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. |
+ * All rights reserved. |
* Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
* Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
- * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) |
+ * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
+ * (http://www.torchmobile.com/) |
* Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
* Copyright (C) Research In Motion Limited 2011. All rights reserved. |
* Copyright (C) 2013 Google Inc. All rights reserved. |
@@ -145,20 +147,20 @@ static void adjustStyleForFirstLetter(ComputedStyle& style) { |
void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, |
const ComputedStyle& parentStyle) { |
- // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' flag |
- // to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal' |
- // after running it. |
+ // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' |
+ // flag to not just mean 'auto' prior to running the StyleAdjuster but also |
+ // mean 'normal' after running it. |
- // If the inherited value of justify-items includes the 'legacy' keyword, 'auto' |
- // computes to the the inherited value. |
- // Otherwise, 'auto' computes to 'normal'. |
+ // If the inherited value of justify-items includes the 'legacy' keyword, |
+ // 'auto' computes to the the inherited value. Otherwise, 'auto' computes to |
+ // 'normal'. |
if (style.justifyItemsPosition() == ItemPositionAuto) { |
if (parentStyle.justifyItemsPositionType() == LegacyPosition) |
style.setJustifyItems(parentStyle.justifyItems()); |
} |
- // The 'auto' keyword computes the computed value of justify-items on the parent (minus |
- // any legacy keywords), or 'normal' if the box has no parent. |
+ // The 'auto' keyword computes the computed value of justify-items on the |
+ // parent (minus any legacy keywords), or 'normal' if the box has no parent. |
if (style.justifySelfPosition() == ItemPositionAuto) { |
if (parentStyle.justifyItemsPositionType() == LegacyPosition) |
style.setJustifySelfPosition(parentStyle.justifyItemsPosition()); |
@@ -176,7 +178,8 @@ void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, |
static void adjustStyleForHTMLElement(ComputedStyle& style, |
HTMLElement& element) { |
- // <div> and <span> are the most common elements on the web, we skip all the work for them. |
+ // <div> and <span> are the most common elements on the web, we skip all the |
+ // work for them. |
if (isHTMLDivElement(element) || isHTMLSpanElement(element)) |
return; |
@@ -194,7 +197,8 @@ static void adjustStyleForHTMLElement(ComputedStyle& style, |
} |
if (isHTMLTableElement(element)) { |
- // Tables never support the -webkit-* values for text-align and will reset back to the default. |
+ // Tables never support the -webkit-* values for text-align and will reset |
+ // back to the default. |
if (style.textAlign() == WEBKIT_LEFT || |
style.textAlign() == WEBKIT_CENTER || style.textAlign() == WEBKIT_RIGHT) |
style.setTextAlign(TASTART); |
@@ -202,8 +206,9 @@ static void adjustStyleForHTMLElement(ComputedStyle& style, |
} |
if (isHTMLFrameElement(element) || isHTMLFrameSetElement(element)) { |
- // Frames and framesets never honor position:relative or position:absolute. This is necessary to |
- // fix a crash where a site tries to position these objects. They also never honor display. |
+ // Frames and framesets never honor position:relative or position:absolute. |
+ // This is necessary to fix a crash where a site tries to position these |
+ // objects. They also never honor display. |
style.setPosition(StaticPosition); |
style.setDisplay(EDisplay::Block); |
return; |
@@ -218,7 +223,8 @@ static void adjustStyleForHTMLElement(ComputedStyle& style, |
} |
if (isHTMLRTElement(element)) { |
- // Ruby text does not support float or position. This might change with evolution of the specification. |
+ // Ruby text does not support float or position. This might change with |
+ // evolution of the specification. |
style.setPosition(StaticPosition); |
style.setFloating(EFloat::None); |
return; |
@@ -255,17 +261,18 @@ static void adjustOverflow(ComputedStyle& style) { |
if (style.display() == EDisplay::Table || |
style.display() == EDisplay::InlineTable) { |
- // Tables only support overflow:hidden and overflow:visible and ignore anything else, |
- // see http://dev.w3.org/csswg/css2/visufx.html#overflow. As a table is not a block |
- // container box the rules for resolving conflicting x and y values in CSS Overflow Module |
- // Level 3 do not apply. Arguably overflow-x and overflow-y aren't allowed on tables but |
- // all UAs allow it. |
+ // Tables only support overflow:hidden and overflow:visible and ignore |
+ // anything else, see http://dev.w3.org/csswg/css2/visufx.html#overflow. As |
+ // a table is not a block container box the rules for resolving conflicting |
+ // x and y values in CSS Overflow Module Level 3 do not apply. Arguably |
+ // overflow-x and overflow-y aren't allowed on tables but all UAs allow it. |
if (style.overflowX() != OverflowHidden) |
style.setOverflowX(OverflowVisible); |
if (style.overflowY() != OverflowHidden) |
style.setOverflowY(OverflowVisible); |
- // If we are left with conflicting overflow values for the x and y axes on a table then resolve |
- // both to OverflowVisible. This is interoperable behaviour but is not specced anywhere. |
+ // If we are left with conflicting overflow values for the x and y axes on a |
+ // table then resolve both to OverflowVisible. This is interoperable |
+ // behaviour but is not specced anywhere. |
if (style.overflowX() == OverflowVisible) |
style.setOverflowY(OverflowVisible); |
else if (style.overflowY() == OverflowVisible) |
@@ -273,9 +280,10 @@ static void adjustOverflow(ComputedStyle& style) { |
} else if (style.overflowX() == OverflowVisible && |
style.overflowY() != OverflowVisible) { |
// If either overflow value is not visible, change to auto. |
- // FIXME: Once we implement pagination controls, overflow-x should default to hidden |
- // if overflow-y is set to -webkit-paged-x or -webkit-page-y. For now, we'll let it |
- // default to auto so we can at least scroll through the pages. |
+ // FIXME: Once we implement pagination controls, overflow-x should default |
+ // to hidden if overflow-y is set to -webkit-paged-x or -webkit-page-y. For |
+ // now, we'll let it default to auto so we can at least scroll through the |
+ // pages. |
style.setOverflowX(OverflowAuto); |
} else if (style.overflowY() == OverflowVisible && |
style.overflowX() != OverflowVisible) { |
@@ -295,16 +303,17 @@ static void adjustStyleForDisplay(ComputedStyle& style, |
if (style.display() == EDisplay::Block && !style.isFloating()) |
return; |
- // FIXME: Don't support this mutation for pseudo styles like first-letter or first-line, since it's not completely |
- // clear how that should work. |
+ // FIXME: Don't support this mutation for pseudo styles like first-letter or |
+ // first-line, since it's not completely clear how that should work. |
if (style.display() == EDisplay::Inline && |
style.styleType() == PseudoIdNone && |
style.getWritingMode() != parentStyle.getWritingMode()) |
style.setDisplay(EDisplay::InlineBlock); |
- // After performing the display mutation, check table rows. We do not honor position: relative table rows or cells. |
- // This has been established for position: relative in CSS2.1 (and caused a crash in containingBlock() |
- // on some sites). |
+ // After performing the display mutation, check table rows. We do not honor |
+ // position: relative table rows or cells. This has been established for |
+ // position: relative in CSS2.1 (and caused a crash in containingBlock() on |
+ // some sites). |
if ((style.display() == EDisplay::TableHeaderGroup || |
style.display() == EDisplay::TableRowGroup || |
style.display() == EDisplay::TableFooterGroup || |
@@ -312,15 +321,18 @@ static void adjustStyleForDisplay(ComputedStyle& style, |
style.position() == RelativePosition) |
style.setPosition(StaticPosition); |
- // Cannot support position: sticky for table columns and column groups because current code is only doing |
- // background painting through columns / column groups |
+ // Cannot support position: sticky for table columns and column groups because |
+ // current code is only doing background painting through columns / column |
+ // groups. |
if ((style.display() == EDisplay::TableColumnGroup || |
style.display() == EDisplay::TableColumn) && |
style.position() == StickyPosition) |
style.setPosition(StaticPosition); |
- // writing-mode does not apply to table row groups, table column groups, table rows, and table columns. |
- // FIXME: Table cells should be allowed to be perpendicular or flipped with respect to the table, though. |
+ // writing-mode does not apply to table row groups, table column groups, table |
+ // rows, and table columns. |
+ // FIXME: Table cells should be allowed to be perpendicular or flipped with |
+ // respect to the table, though. |
if (style.display() == EDisplay::TableColumn || |
style.display() == EDisplay::TableColumnGroup || |
style.display() == EDisplay::TableFooterGroup || |
@@ -330,8 +342,8 @@ static void adjustStyleForDisplay(ComputedStyle& style, |
style.display() == EDisplay::TableCell) |
style.setWritingMode(parentStyle.getWritingMode()); |
- // FIXME: Since we don't support block-flow on flexible boxes yet, disallow setting |
- // of block-flow to anything other than TopToBottomWritingMode. |
+ // FIXME: Since we don't support block-flow on flexible boxes yet, disallow |
+ // setting of block-flow to anything other than TopToBottomWritingMode. |
// https://bugs.webkit.org/show_bug.cgi?id=46418 - Flexible box support. |
if (style.getWritingMode() != TopToBottomWritingMode && |
(style.display() == EDisplay::Box || |
@@ -342,8 +354,9 @@ static void adjustStyleForDisplay(ComputedStyle& style, |
style.setFloating(EFloat::None); |
style.setDisplay(equivalentBlockDisplay(style.display())); |
- // We want to count vertical percentage paddings/margins on flex items because our current |
- // behavior is different from the spec and we want to gather compatibility data. |
+ // We want to count vertical percentage paddings/margins on flex items |
+ // because our current behavior is different from the spec and we want to |
+ // gather compatibility data. |
if (style.paddingBefore().isPercentOrCalc() || |
style.paddingAfter().isPercentOrCalc()) |
UseCounter::count(document, UseCounter::FlexboxPercentagePaddingVertical); |
@@ -360,25 +373,27 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, |
if (element && element->isHTMLElement()) |
adjustStyleForHTMLElement(style, toHTMLElement(*element)); |
- // Per the spec, position 'static' and 'relative' in the top layer compute to 'absolute'. |
+ // Per the spec, position 'static' and 'relative' in the top layer compute |
+ // to 'absolute'. |
if (isInTopLayer(element, style) && (style.position() == StaticPosition || |
style.position() == RelativePosition)) |
style.setPosition(AbsolutePosition); |
- // Absolute/fixed positioned elements, floating elements and the document element need block-like outside display. |
+ // Absolute/fixed positioned elements, floating elements and the document |
+ // element need block-like outside display. |
if (style.hasOutOfFlowPosition() || style.isFloating() || |
(element && element->document().documentElement() == element)) |
style.setDisplay(equivalentBlockDisplay(style.display())); |
- // We don't adjust the first letter style earlier because we may change the display setting in |
- // adjustStyeForTagName() above. |
+ // We don't adjust the first letter style earlier because we may change the |
+ // display setting in adjustStyeForTagName() above. |
adjustStyleForFirstLetter(style); |
adjustStyleForDisplay(style, parentStyle, |
element ? &element->document() : 0); |
- // Paint containment forces a block formatting context, so we must coerce from inline. |
- // https://drafts.csswg.org/css-containment/#containment-paint |
+ // Paint containment forces a block formatting context, so we must coerce |
+ // from inline. https://drafts.csswg.org/css-containment/#containment-paint |
if (style.containsPaint() && style.display() == EDisplay::Inline) |
style.setDisplay(EDisplay::Block); |
} else { |
@@ -409,7 +424,8 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, |
style.restoreParentTextDecorations(parentStyle); |
style.applyTextDecorations(); |
- // Cull out any useless layers and also repeat patterns into additional layers. |
+ // Cull out any useless layers and also repeat patterns into additional |
+ // layers. |
style.adjustBackgroundLayers(); |
style.adjustMaskLayers(); |
@@ -417,7 +433,8 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, |
if (style.hasAppearance()) |
LayoutTheme::theme().adjustStyle(style, element); |
- // If we have first-letter pseudo style, transitions, or animations, do not share this style. |
+ // If we have first-letter pseudo style, transitions, or animations, do not |
+ // share this style. |
if (style.hasPseudoStyle(PseudoIdFirstLetter) || style.transitions() || |
style.animations()) |
style.setUnique(); |
@@ -426,7 +443,8 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, |
bool isSVGElement = element && element->isSVGElement(); |
if (isSVGElement) { |
- // Only the root <svg> element in an SVG document fragment tree honors css position |
+ // Only the root <svg> element in an SVG document fragment tree honors css |
+ // position. |
if (!(isSVGSVGElement(*element) && element->parentNode() && |
!element->parentNode()->isSVGElement())) |
style.setPosition(ComputedStyle::initialPosition()); |