Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp

Issue 2370673002: Changed EDisplay to an enum class and renamed its members to be keywords (Closed)
Patch Set: Comment Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "platform/transforms/TransformOperations.h" 49 #include "platform/transforms/TransformOperations.h"
50 #include "wtf/Assertions.h" 50 #include "wtf/Assertions.h"
51 51
52 namespace blink { 52 namespace blink {
53 53
54 using namespace HTMLNames; 54 using namespace HTMLNames;
55 55
56 static EDisplay equivalentBlockDisplay(EDisplay display) 56 static EDisplay equivalentBlockDisplay(EDisplay display)
57 { 57 {
58 switch (display) { 58 switch (display) {
59 case BLOCK: 59 case EDisplay::Block:
60 case TABLE: 60 case EDisplay::Table:
61 case BOX: 61 case EDisplay::Box:
62 case FLEX: 62 case EDisplay::Flex:
63 case GRID: 63 case EDisplay::Grid:
64 case LIST_ITEM: 64 case EDisplay::ListItem:
65 return display; 65 return display;
66 case INLINE_TABLE: 66 case EDisplay::InlineTable:
67 return TABLE; 67 return EDisplay::Table;
68 case INLINE_BOX: 68 case EDisplay::InlineBox:
69 return BOX; 69 return EDisplay::Box;
70 case INLINE_FLEX: 70 case EDisplay::InlineFlex:
71 return FLEX; 71 return EDisplay::Flex;
72 case INLINE_GRID: 72 case EDisplay::InlineGrid:
73 return GRID; 73 return EDisplay::Grid;
74 74
75 case INLINE: 75 case EDisplay::Inline:
76 case INLINE_BLOCK: 76 case EDisplay::InlineBlock:
77 case TABLE_ROW_GROUP: 77 case EDisplay::TableRowGroup:
78 case TABLE_HEADER_GROUP: 78 case EDisplay::TableHeaderGroup:
79 case TABLE_FOOTER_GROUP: 79 case EDisplay::TableFooterGroup:
80 case TABLE_ROW: 80 case EDisplay::TableRow:
81 case TABLE_COLUMN_GROUP: 81 case EDisplay::TableColumnGroup:
82 case TABLE_COLUMN: 82 case EDisplay::TableColumn:
83 case TABLE_CELL: 83 case EDisplay::TableCell:
84 case TABLE_CAPTION: 84 case EDisplay::TableCaption:
85 return BLOCK; 85 return EDisplay::Block;
86 case NONE: 86 case EDisplay::None:
87 ASSERT_NOT_REACHED(); 87 ASSERT_NOT_REACHED();
88 return NONE; 88 return EDisplay::None;
89 } 89 }
90 ASSERT_NOT_REACHED(); 90 ASSERT_NOT_REACHED();
91 return BLOCK; 91 return EDisplay::Block;
92 } 92 }
93 93
94 static bool isOutermostSVGElement(const Element* element) 94 static bool isOutermostSVGElement(const Element* element)
95 { 95 {
96 return element && element->isSVGElement() && toSVGElement(*element).isOuterm ostSVGSVGElement(); 96 return element && element->isSVGElement() && toSVGElement(*element).isOuterm ostSVGSVGElement();
97 } 97 }
98 98
99 // CSS requires text-decoration to be reset at each DOM element for 99 // CSS requires text-decoration to be reset at each DOM element for
100 // inline blocks, inline tables, shadow DOM crossings, floating elements, 100 // inline blocks, inline tables, shadow DOM crossings, floating elements,
101 // and absolute or relatively positioned elements. Outermost <svg> roots are 101 // and absolute or relatively positioned elements. Outermost <svg> roots are
102 // considered to be atomic inline-level. 102 // considered to be atomic inline-level.
103 static bool doesNotInheritTextDecoration(const ComputedStyle& style, const Eleme nt* element) 103 static bool doesNotInheritTextDecoration(const ComputedStyle& style, const Eleme nt* element)
104 { 104 {
105 return style.display() == INLINE_TABLE 105 return style.display() == EDisplay::InlineTable
106 || style.display() == INLINE_BLOCK || style.display() == INLINE_BOX || i sAtShadowBoundary(element) 106 || style.display() == EDisplay::InlineBlock || style.display() == EDispl ay::InlineBox || isAtShadowBoundary(element)
107 || style.isFloating() || style.hasOutOfFlowPosition() || isOutermostSVGE lement(element); 107 || style.isFloating() || style.hasOutOfFlowPosition() || isOutermostSVGE lement(element);
108 } 108 }
109 109
110 // FIXME: This helper is only needed because pseudoStyleForElement passes a null 110 // FIXME: This helper is only needed because pseudoStyleForElement passes a null
111 // element to adjustComputedStyle, so we can't just use element->isInTopLayer(). 111 // element to adjustComputedStyle, so we can't just use element->isInTopLayer().
112 static bool isInTopLayer(const Element* element, const ComputedStyle& style) 112 static bool isInTopLayer(const Element* element, const ComputedStyle& style)
113 { 113 {
114 return (element && element->isInTopLayer()) || style.styleType() == PseudoId Backdrop; 114 return (element && element->isInTopLayer()) || style.styleType() == PseudoId Backdrop;
115 } 115 }
116 116
(...skipping 14 matching lines...) Expand all
131 else if (style.whiteSpace() == PRE_LINE) 131 else if (style.whiteSpace() == PRE_LINE)
132 style.setWhiteSpace(PRE_WRAP); 132 style.setWhiteSpace(PRE_WRAP);
133 } 133 }
134 134
135 static void adjustStyleForFirstLetter(ComputedStyle& style) 135 static void adjustStyleForFirstLetter(ComputedStyle& style)
136 { 136 {
137 if (style.styleType() != PseudoIdFirstLetter) 137 if (style.styleType() != PseudoIdFirstLetter)
138 return; 138 return;
139 139
140 // Force inline display (except for floating first-letters). 140 // Force inline display (except for floating first-letters).
141 style.setDisplay(style.isFloating() ? BLOCK : INLINE); 141 style.setDisplay(style.isFloating() ? EDisplay::Block : EDisplay::Inline);
142 142
143 // CSS2 says first-letter can't be positioned. 143 // CSS2 says first-letter can't be positioned.
144 style.setPosition(StaticPosition); 144 style.setPosition(StaticPosition);
145 } 145 }
146 146
147 void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, const Computed Style& parentStyle) 147 void StyleAdjuster::adjustStyleForAlignment(ComputedStyle& style, const Computed Style& parentStyle)
148 { 148 {
149 // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto ' flag 149 // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto ' flag
150 // to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal' 150 // to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal'
151 // after running it. 151 // after running it.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 // Tables never support the -webkit-* values for text-align and will res et back to the default. 196 // Tables never support the -webkit-* values for text-align and will res et back to the default.
197 if (style.textAlign() == WEBKIT_LEFT || style.textAlign() == WEBKIT_CENT ER || style.textAlign() == WEBKIT_RIGHT) 197 if (style.textAlign() == WEBKIT_LEFT || style.textAlign() == WEBKIT_CENT ER || style.textAlign() == WEBKIT_RIGHT)
198 style.setTextAlign(TASTART); 198 style.setTextAlign(TASTART);
199 return; 199 return;
200 } 200 }
201 201
202 if (isHTMLFrameElement(element) || isHTMLFrameSetElement(element)) { 202 if (isHTMLFrameElement(element) || isHTMLFrameSetElement(element)) {
203 // Frames and framesets never honor position:relative or position:absolu te. This is necessary to 203 // Frames and framesets never honor position:relative or position:absolu te. This is necessary to
204 // fix a crash where a site tries to position these objects. They also n ever honor display. 204 // fix a crash where a site tries to position these objects. They also n ever honor display.
205 style.setPosition(StaticPosition); 205 style.setPosition(StaticPosition);
206 style.setDisplay(BLOCK); 206 style.setDisplay(EDisplay::Block);
207 return; 207 return;
208 } 208 }
209 209
210 if (isHTMLFrameElementBase(element)) { 210 if (isHTMLFrameElementBase(element)) {
211 // Frames cannot overflow (they are always the size we ask them to be). 211 // Frames cannot overflow (they are always the size we ask them to be).
212 // Some compositing code paths may try to draw scrollbars anyhow. 212 // Some compositing code paths may try to draw scrollbars anyhow.
213 style.setOverflowX(OverflowVisible); 213 style.setOverflowX(OverflowVisible);
214 style.setOverflowY(OverflowVisible); 214 style.setOverflowY(OverflowVisible);
215 return; 215 return;
216 } 216 }
(...skipping 22 matching lines...) Expand all
239 if (isHTMLPlugInElement(element)) { 239 if (isHTMLPlugInElement(element)) {
240 style.setRequiresAcceleratedCompositingForExternalReasons(toHTMLPlugInEl ement(element).shouldAccelerate()); 240 style.setRequiresAcceleratedCompositingForExternalReasons(toHTMLPlugInEl ement(element).shouldAccelerate());
241 return; 241 return;
242 } 242 }
243 } 243 }
244 244
245 static void adjustOverflow(ComputedStyle& style) 245 static void adjustOverflow(ComputedStyle& style)
246 { 246 {
247 ASSERT(style.overflowX() != OverflowVisible || style.overflowY() != Overflow Visible); 247 ASSERT(style.overflowX() != OverflowVisible || style.overflowY() != Overflow Visible);
248 248
249 if (style.display() == TABLE || style.display() == INLINE_TABLE) { 249 if (style.display() == EDisplay::Table || style.display() == EDisplay::Inlin eTable) {
250 // Tables only support overflow:hidden and overflow:visible and ignore a nything else, 250 // Tables only support overflow:hidden and overflow:visible and ignore a nything else,
251 // see http://dev.w3.org/csswg/css2/visufx.html#overflow. As a table is not a block 251 // see http://dev.w3.org/csswg/css2/visufx.html#overflow. As a table is not a block
252 // container box the rules for resolving conflicting x and y values in C SS Overflow Module 252 // container box the rules for resolving conflicting x and y values in C SS Overflow Module
253 // Level 3 do not apply. Arguably overflow-x and overflow-y aren't allow ed on tables but 253 // Level 3 do not apply. Arguably overflow-x and overflow-y aren't allow ed on tables but
254 // all UAs allow it. 254 // all UAs allow it.
255 if (style.overflowX() != OverflowHidden) 255 if (style.overflowX() != OverflowHidden)
256 style.setOverflowX(OverflowVisible); 256 style.setOverflowX(OverflowVisible);
257 if (style.overflowY() != OverflowHidden) 257 if (style.overflowY() != OverflowHidden)
258 style.setOverflowY(OverflowVisible); 258 style.setOverflowY(OverflowVisible);
259 // If we are left with conflicting overflow values for the x and y axes on a table then resolve 259 // If we are left with conflicting overflow values for the x and y axes on a table then resolve
(...skipping 14 matching lines...) Expand all
274 274
275 // Menulists should have visible overflow 275 // Menulists should have visible overflow
276 if (style.appearance() == MenulistPart) { 276 if (style.appearance() == MenulistPart) {
277 style.setOverflowX(OverflowVisible); 277 style.setOverflowX(OverflowVisible);
278 style.setOverflowY(OverflowVisible); 278 style.setOverflowY(OverflowVisible);
279 } 279 }
280 } 280 }
281 281
282 static void adjustStyleForDisplay(ComputedStyle& style, const ComputedStyle& par entStyle, Document* document) 282 static void adjustStyleForDisplay(ComputedStyle& style, const ComputedStyle& par entStyle, Document* document)
283 { 283 {
284 if (style.display() == BLOCK && !style.isFloating()) 284 if (style.display() == EDisplay::Block && !style.isFloating())
285 return; 285 return;
286 286
287 // FIXME: Don't support this mutation for pseudo styles like first-letter or first-line, since it's not completely 287 // FIXME: Don't support this mutation for pseudo styles like first-letter or first-line, since it's not completely
288 // clear how that should work. 288 // clear how that should work.
289 if (style.display() == INLINE && style.styleType() == PseudoIdNone && style. getWritingMode() != parentStyle.getWritingMode()) 289 if (style.display() == EDisplay::Inline && style.styleType() == PseudoIdNone && style.getWritingMode() != parentStyle.getWritingMode())
290 style.setDisplay(INLINE_BLOCK); 290 style.setDisplay(EDisplay::InlineBlock);
291 291
292 // After performing the display mutation, check table rows. We do not honor position: relative table rows or cells. 292 // After performing the display mutation, check table rows. We do not honor position: relative table rows or cells.
293 // This has been established for position: relative in CSS2.1 (and caused a crash in containingBlock() 293 // This has been established for position: relative in CSS2.1 (and caused a crash in containingBlock()
294 // on some sites). 294 // on some sites).
295 if ((style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_ROW_G ROUP 295 if ((style.display() == EDisplay::TableHeaderGroup || style.display() == EDi splay::TableRowGroup
296 || style.display() == TABLE_FOOTER_GROUP || style.display() == TABLE_ROW ) 296 || style.display() == EDisplay::TableFooterGroup || style.display() == E Display::TableRow)
297 && style.position() == RelativePosition) 297 && style.position() == RelativePosition)
298 style.setPosition(StaticPosition); 298 style.setPosition(StaticPosition);
299 299
300 // Cannot support position: sticky for table columns and column groups becau se current code is only doing 300 // Cannot support position: sticky for table columns and column groups becau se current code is only doing
301 // background painting through columns / column groups 301 // background painting through columns / column groups
302 if ((style.display() == TABLE_COLUMN_GROUP || style.display() == TABLE_COLUM N) 302 if ((style.display() == EDisplay::TableColumnGroup || style.display() == EDi splay::TableColumn)
303 && style.position() == StickyPosition) 303 && style.position() == StickyPosition)
304 style.setPosition(StaticPosition); 304 style.setPosition(StaticPosition);
305 305
306 // writing-mode does not apply to table row groups, table column groups, tab le rows, and table columns. 306 // writing-mode does not apply to table row groups, table column groups, tab le rows, and table columns.
307 // FIXME: Table cells should be allowed to be perpendicular or flipped with respect to the table, though. 307 // FIXME: Table cells should be allowed to be perpendicular or flipped with respect to the table, though.
308 if (style.display() == TABLE_COLUMN || style.display() == TABLE_COLUMN_GROUP || style.display() == TABLE_FOOTER_GROUP 308 if (style.display() == EDisplay::TableColumn || style.display() == EDisplay: :TableColumnGroup || style.display() == EDisplay::TableFooterGroup
309 || style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_ROW || style.display() == TABLE_ROW_GROUP 309 || style.display() == EDisplay::TableHeaderGroup || style.display() == E Display::TableRow || style.display() == EDisplay::TableRowGroup
310 || style.display() == TABLE_CELL) 310 || style.display() == EDisplay::TableCell)
311 style.setWritingMode(parentStyle.getWritingMode()); 311 style.setWritingMode(parentStyle.getWritingMode());
312 312
313 // FIXME: Since we don't support block-flow on flexible boxes yet, disallow setting 313 // FIXME: Since we don't support block-flow on flexible boxes yet, disallow setting
314 // of block-flow to anything other than TopToBottomWritingMode. 314 // of block-flow to anything other than TopToBottomWritingMode.
315 // https://bugs.webkit.org/show_bug.cgi?id=46418 - Flexible box support. 315 // https://bugs.webkit.org/show_bug.cgi?id=46418 - Flexible box support.
316 if (style.getWritingMode() != TopToBottomWritingMode && (style.display() == BOX || style.display() == INLINE_BOX)) 316 if (style.getWritingMode() != TopToBottomWritingMode && (style.display() == EDisplay::Box || style.display() == EDisplay::InlineBox))
317 style.setWritingMode(TopToBottomWritingMode); 317 style.setWritingMode(TopToBottomWritingMode);
318 318
319 if (parentStyle.isDisplayFlexibleOrGridBox()) { 319 if (parentStyle.isDisplayFlexibleOrGridBox()) {
320 style.setFloating(EFloat::None); 320 style.setFloating(EFloat::None);
321 style.setDisplay(equivalentBlockDisplay(style.display())); 321 style.setDisplay(equivalentBlockDisplay(style.display()));
322 322
323 // We want to count vertical percentage paddings/margins on flex items b ecause our current 323 // We want to count vertical percentage paddings/margins on flex items b ecause our current
324 // behavior is different from the spec and we want to gather compatibili ty data. 324 // behavior is different from the spec and we want to gather compatibili ty data.
325 if (style.paddingBefore().isPercentOrCalc() || style.paddingAfter().isPe rcentOrCalc()) 325 if (style.paddingBefore().isPercentOrCalc() || style.paddingAfter().isPe rcentOrCalc())
326 UseCounter::count(document, UseCounter::FlexboxPercentagePaddingVert ical); 326 UseCounter::count(document, UseCounter::FlexboxPercentagePaddingVert ical);
327 if (style.marginBefore().isPercentOrCalc() || style.marginAfter().isPerc entOrCalc()) 327 if (style.marginBefore().isPercentOrCalc() || style.marginAfter().isPerc entOrCalc())
328 UseCounter::count(document, UseCounter::FlexboxPercentageMarginVerti cal); 328 UseCounter::count(document, UseCounter::FlexboxPercentageMarginVerti cal);
329 } 329 }
330 } 330 }
331 331
332 void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl e& parentStyle, Element* element) 332 void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl e& parentStyle, Element* element)
333 { 333 {
334 if (style.display() != NONE) { 334 if (style.display() != EDisplay::None) {
335 if (element && element->isHTMLElement()) 335 if (element && element->isHTMLElement())
336 adjustStyleForHTMLElement(style, toHTMLElement(*element)); 336 adjustStyleForHTMLElement(style, toHTMLElement(*element));
337 337
338 // Per the spec, position 'static' and 'relative' in the top layer compu te to 'absolute'. 338 // Per the spec, position 'static' and 'relative' in the top layer compu te to 'absolute'.
339 if (isInTopLayer(element, style) && (style.position() == StaticPosition || style.position() == RelativePosition)) 339 if (isInTopLayer(element, style) && (style.position() == StaticPosition || style.position() == RelativePosition))
340 style.setPosition(AbsolutePosition); 340 style.setPosition(AbsolutePosition);
341 341
342 // Absolute/fixed positioned elements, floating elements and the documen t element need block-like outside display. 342 // Absolute/fixed positioned elements, floating elements and the documen t element need block-like outside display.
343 if (style.hasOutOfFlowPosition() || style.isFloating() || (element && el ement->document().documentElement() == element)) 343 if (style.hasOutOfFlowPosition() || style.isFloating() || (element && el ement->document().documentElement() == element))
344 style.setDisplay(equivalentBlockDisplay(style.display())); 344 style.setDisplay(equivalentBlockDisplay(style.display()));
345 345
346 // We don't adjust the first letter style earlier because we may change the display setting in 346 // We don't adjust the first letter style earlier because we may change the display setting in
347 // adjustStyeForTagName() above. 347 // adjustStyeForTagName() above.
348 adjustStyleForFirstLetter(style); 348 adjustStyleForFirstLetter(style);
349 349
350 adjustStyleForDisplay(style, parentStyle, element ? &element->document() : 0); 350 adjustStyleForDisplay(style, parentStyle, element ? &element->document() : 0);
351 351
352 // Paint containment forces a block formatting context, so we must coerc e from inline. 352 // Paint containment forces a block formatting context, so we must coerc e from inline.
353 // https://drafts.csswg.org/css-containment/#containment-paint 353 // https://drafts.csswg.org/css-containment/#containment-paint
354 if (style.containsPaint() && style.display() == INLINE) 354 if (style.containsPaint() && style.display() == EDisplay::Inline)
355 style.setDisplay(BLOCK); 355 style.setDisplay(EDisplay::Block);
356 } else { 356 } else {
357 adjustStyleForFirstLetter(style); 357 adjustStyleForFirstLetter(style);
358 } 358 }
359 359
360 if (element && element->hasCompositorProxy()) 360 if (element && element->hasCompositorProxy())
361 style.setHasCompositorProxy(true); 361 style.setHasCompositorProxy(true);
362 362
363 // Make sure our z-index value is only applied if the object is positioned. 363 // Make sure our z-index value is only applied if the object is positioned.
364 if (style.position() == StaticPosition && !parentStyleForcesZIndexToCreateSt ackingContext(parentStyle)) { 364 if (style.position() == StaticPosition && !parentStyleForcesZIndexToCreateSt ackingContext(parentStyle)) {
365 style.setIsStackingContext(false); 365 style.setIsStackingContext(false);
(...skipping 28 matching lines...) Expand all
394 adjustStyleForEditing(style); 394 adjustStyleForEditing(style);
395 395
396 bool isSVGElement = element && element->isSVGElement(); 396 bool isSVGElement = element && element->isSVGElement();
397 if (isSVGElement) { 397 if (isSVGElement) {
398 // Only the root <svg> element in an SVG document fragment tree honors c ss position 398 // Only the root <svg> element in an SVG document fragment tree honors c ss position
399 if (!(isSVGSVGElement(*element) && element->parentNode() && !element->pa rentNode()->isSVGElement())) 399 if (!(isSVGSVGElement(*element) && element->parentNode() && !element->pa rentNode()->isSVGElement()))
400 style.setPosition(ComputedStyle::initialPosition()); 400 style.setPosition(ComputedStyle::initialPosition());
401 401
402 // SVG text layout code expects us to be a block-level style element. 402 // SVG text layout code expects us to be a block-level style element.
403 if ((isSVGForeignObjectElement(*element) || isSVGTextElement(*element)) && style.isDisplayInlineType()) 403 if ((isSVGForeignObjectElement(*element) || isSVGTextElement(*element)) && style.isDisplayInlineType())
404 style.setDisplay(BLOCK); 404 style.setDisplay(EDisplay::Block);
405 405
406 // Columns don't apply to svg text elements. 406 // Columns don't apply to svg text elements.
407 if (isSVGTextElement(*element)) 407 if (isSVGTextElement(*element))
408 style.clearMultiCol(); 408 style.clearMultiCol();
409 } 409 }
410 adjustStyleForAlignment(style, parentStyle); 410 adjustStyleForAlignment(style, parentStyle);
411 } 411 }
412 412
413 } // namespace blink 413 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698