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

Side by Side Diff: Source/core/css/resolver/StyleBuilderCustom.cpp

Issue 1164573002: CSSValue Immediates: Change CSSValue to an object instead of a pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 4 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 case CSSPropertyWebkitTextFillColor: 97 case CSSPropertyWebkitTextFillColor:
98 case CSSPropertyWebkitTextStrokeColor: 98 case CSSPropertyWebkitTextStrokeColor:
99 return true; 99 return true;
100 default: 100 default:
101 return false; 101 return false;
102 } 102 }
103 } 103 }
104 104
105 } // namespace 105 } // namespace
106 106
107 void StyleBuilder::applyProperty(CSSPropertyID id, StyleResolverState& state, CS SValue* value) 107 void StyleBuilder::applyProperty(CSSPropertyID id, StyleResolverState& state, CS SValue value)
108 { 108 {
109 ASSERT_WITH_MESSAGE(!isShorthandProperty(id), "Shorthand property id = %d wa sn't expanded at parsing time", id); 109 ASSERT_WITH_MESSAGE(!isShorthandProperty(id), "Shorthand property id = %d wa sn't expanded at parsing time", id);
110 110
111 bool isInherit = state.parentNode() && value->isInheritedValue(); 111 bool isInherit = state.parentNode() && value.isInheritedValue();
112 bool isInitial = value->isInitialValue() || (!state.parentNode() && value->i sInheritedValue()); 112 bool isInitial = value.isInitialValue() || (!state.parentNode() && value.isI nheritedValue());
113 113
114 ASSERT(!isInherit || !isInitial); // isInherit -> !isInitial && isInitial -> !isInherit 114 ASSERT(!isInherit || !isInitial); // isInherit -> !isInitial && isInitial -> !isInherit
115 ASSERT(!isInherit || (state.parentNode() && state.parentStyle())); // isInhe rit -> (state.parentNode() && state.parentStyle()) 115 ASSERT(!isInherit || (state.parentNode() && state.parentStyle())); // isInhe rit -> (state.parentNode() && state.parentStyle())
116 116
117 if (!state.applyPropertyToRegularStyle() && (!state.applyPropertyToVisitedLi nkStyle() || !isValidVisitedLinkProperty(id))) { 117 if (!state.applyPropertyToRegularStyle() && (!state.applyPropertyToVisitedLi nkStyle() || !isValidVisitedLinkProperty(id))) {
118 // Limit the properties that can be applied to only the ones honored by :visited. 118 // Limit the properties that can be applied to only the ones honored by :visited.
119 return; 119 return;
120 } 120 }
121 121
122 if (isInherit && !state.parentStyle()->hasExplicitlyInheritedProperties() && !CSSPropertyMetadata::isInheritedProperty(id)) { 122 if (isInherit && !state.parentStyle()->hasExplicitlyInheritedProperties() && !CSSPropertyMetadata::isInheritedProperty(id)) {
123 state.parentStyle()->setHasExplicitlyInheritedProperties(); 123 state.parentStyle()->setHasExplicitlyInheritedProperties();
124 } else if (value->isUnsetValue()) { 124 } else if (value.isUnsetValue()) {
125 ASSERT(!isInherit && !isInitial); 125 ASSERT(!isInherit && !isInitial);
126 if (CSSPropertyMetadata::isInheritedProperty(id)) 126 if (CSSPropertyMetadata::isInheritedProperty(id))
127 isInherit = true; 127 isInherit = true;
128 else 128 else
129 isInitial = true; 129 isInitial = true;
130 } 130 }
131 131
132 StyleBuilder::applyProperty(id, state, value, isInitial, isInherit); 132 StyleBuilder::applyProperty(id, state, value, isInitial, isInherit);
133 } 133 }
134 134
135 void StyleBuilderFunctions::applyInitialCSSPropertyColor(StyleResolverState& sta te) 135 void StyleBuilderFunctions::applyInitialCSSPropertyColor(StyleResolverState& sta te)
136 { 136 {
137 Color color = ComputedStyle::initialColor(); 137 Color color = ComputedStyle::initialColor();
138 if (state.applyPropertyToRegularStyle()) 138 if (state.applyPropertyToRegularStyle())
139 state.style()->setColor(color); 139 state.style()->setColor(color);
140 if (state.applyPropertyToVisitedLinkStyle()) 140 if (state.applyPropertyToVisitedLinkStyle())
141 state.style()->setVisitedLinkColor(color); 141 state.style()->setVisitedLinkColor(color);
142 } 142 }
143 143
144 void StyleBuilderFunctions::applyInheritCSSPropertyColor(StyleResolverState& sta te) 144 void StyleBuilderFunctions::applyInheritCSSPropertyColor(StyleResolverState& sta te)
145 { 145 {
146 Color color = state.parentStyle()->color(); 146 Color color = state.parentStyle()->color();
147 if (state.applyPropertyToRegularStyle()) 147 if (state.applyPropertyToRegularStyle())
148 state.style()->setColor(color); 148 state.style()->setColor(color);
149 if (state.applyPropertyToVisitedLinkStyle()) 149 if (state.applyPropertyToVisitedLinkStyle())
150 state.style()->setVisitedLinkColor(color); 150 state.style()->setVisitedLinkColor(color);
151 } 151 }
152 152
153 void StyleBuilderFunctions::applyValueCSSPropertyColor(StyleResolverState& state , CSSValue* value) 153 void StyleBuilderFunctions::applyValueCSSPropertyColor(StyleResolverState& state , CSSValue value)
154 { 154 {
155 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 155 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
156 // As per the spec, 'color: currentColor' is treated as 'color: inherit' 156 // As per the spec, 'color: currentColor' is treated as 'color: inherit'
157 if (primitiveValue->getValueID() == CSSValueCurrentcolor) { 157 if (primitiveValue.getValueID() == CSSValueCurrentcolor) {
158 applyInheritCSSPropertyColor(state); 158 applyInheritCSSPropertyColor(state);
159 return; 159 return;
160 } 160 }
161 161
162 if (state.applyPropertyToRegularStyle()) 162 if (state.applyPropertyToRegularStyle())
163 state.style()->setColor(StyleBuilderConverter::convertColor(state, value )); 163 state.style()->setColor(StyleBuilderConverter::convertColor(state, value ));
164 if (state.applyPropertyToVisitedLinkStyle()) 164 if (state.applyPropertyToVisitedLinkStyle())
165 state.style()->setVisitedLinkColor(StyleBuilderConverter::convertColor(s tate, value, true)); 165 state.style()->setVisitedLinkColor(StyleBuilderConverter::convertColor(s tate, value, true));
166 } 166 }
167 167
168 void StyleBuilderFunctions::applyInitialCSSPropertyCursor(StyleResolverState& st ate) 168 void StyleBuilderFunctions::applyInitialCSSPropertyCursor(StyleResolverState& st ate)
169 { 169 {
170 state.style()->clearCursorList(); 170 state.style()->clearCursorList();
171 state.style()->setCursor(ComputedStyle::initialCursor()); 171 state.style()->setCursor(ComputedStyle::initialCursor());
172 } 172 }
173 173
174 void StyleBuilderFunctions::applyInheritCSSPropertyCursor(StyleResolverState& st ate) 174 void StyleBuilderFunctions::applyInheritCSSPropertyCursor(StyleResolverState& st ate)
175 { 175 {
176 state.style()->setCursor(state.parentStyle()->cursor()); 176 state.style()->setCursor(state.parentStyle()->cursor());
177 state.style()->setCursorList(state.parentStyle()->cursors()); 177 state.style()->setCursorList(state.parentStyle()->cursors());
178 } 178 }
179 179
180 void StyleBuilderFunctions::applyValueCSSPropertyCursor(StyleResolverState& stat e, CSSValue* value) 180 void StyleBuilderFunctions::applyValueCSSPropertyCursor(StyleResolverState& stat e, CSSValue value)
181 { 181 {
182 state.style()->clearCursorList(); 182 state.style()->clearCursorList();
183 if (value->isValueList()) { 183 if (value.isValueList()) {
184 CSSValueList* list = toCSSValueList(value); 184 CSSValueList& list = toCSSValueList(value);
185 int len = list->length(); 185 int len = list.length();
186 state.style()->setCursor(CURSOR_AUTO); 186 state.style()->setCursor(CURSOR_AUTO);
187 for (int i = 0; i < len; i++) { 187 for (int i = 0; i < len; i++) {
188 CSSValue* item = list->item(i); 188 CSSValue item = list.item(i);
189 if (item->isCursorImageValue()) { 189 if (item.isCursorImageValue()) {
190 CSSCursorImageValue* image = toCSSCursorImageValue(item); 190 CSSCursorImageValue& image = toCSSCursorImageValue(item);
191 if (image->updateIfSVGCursorIsUsed(state.element())) // Elements with SVG cursors are not allowed to share style. 191 if (image.updateIfSVGCursorIsUsed(state.element())) // Elements with SVG cursors are not allowed to share style.
192 state.style()->setUnique(); 192 state.style()->setUnique();
193 state.style()->addCursor(state.styleImage(CSSPropertyCursor, ima ge), image->hotSpotSpecified(), image->hotSpot()); 193 state.style()->addCursor(state.styleImage(CSSPropertyCursor, ite m), image.hotSpotSpecified(), image.hotSpot());
194 } else { 194 } else {
195 state.style()->setCursor(*toCSSPrimitiveValue(item)); 195 state.style()->setCursor(toCSSPrimitiveValue(item));
196 } 196 }
197 } 197 }
198 } else { 198 } else {
199 state.style()->setCursor(*toCSSPrimitiveValue(value)); 199 state.style()->setCursor(toCSSPrimitiveValue(value));
200 } 200 }
201 } 201 }
202 202
203 void StyleBuilderFunctions::applyValueCSSPropertyDirection(StyleResolverState& s tate, CSSValue* value) 203 void StyleBuilderFunctions::applyValueCSSPropertyDirection(StyleResolverState& s tate, CSSValue value)
204 { 204 {
205 state.style()->setDirection(*toCSSPrimitiveValue(value)); 205 state.style()->setDirection(toCSSPrimitiveValue(value));
206 } 206 }
207 207
208 void StyleBuilderFunctions::applyValueCSSPropertyGlyphOrientationVertical(StyleR esolverState& state, CSSValue* value) 208 void StyleBuilderFunctions::applyValueCSSPropertyGlyphOrientationVertical(StyleR esolverState& state, CSSValue value)
209 { 209 {
210 if (value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValueID() == CSSValueAuto) 210 if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == C SSValueAuto)
211 state.style()->accessSVGStyle().setGlyphOrientationVertical(GO_AUTO); 211 state.style()->accessSVGStyle().setGlyphOrientationVertical(GO_AUTO);
212 else 212 else
213 state.style()->accessSVGStyle().setGlyphOrientationVertical(StyleBuilder Converter::convertGlyphOrientation(state, value)); 213 state.style()->accessSVGStyle().setGlyphOrientationVertical(StyleBuilder Converter::convertGlyphOrientation(state, value));
214 } 214 }
215 215
216 void StyleBuilderFunctions::applyInitialCSSPropertyGridTemplateAreas(StyleResolv erState& state) 216 void StyleBuilderFunctions::applyInitialCSSPropertyGridTemplateAreas(StyleResolv erState& state)
217 { 217 {
218 state.style()->setNamedGridArea(ComputedStyle::initialNamedGridArea()); 218 state.style()->setNamedGridArea(ComputedStyle::initialNamedGridArea());
219 state.style()->setNamedGridAreaRowCount(ComputedStyle::initialNamedGridAreaC ount()); 219 state.style()->setNamedGridAreaRowCount(ComputedStyle::initialNamedGridAreaC ount());
220 state.style()->setNamedGridAreaColumnCount(ComputedStyle::initialNamedGridAr eaCount()); 220 state.style()->setNamedGridAreaColumnCount(ComputedStyle::initialNamedGridAr eaCount());
221 } 221 }
222 222
223 void StyleBuilderFunctions::applyInheritCSSPropertyGridTemplateAreas(StyleResolv erState& state) 223 void StyleBuilderFunctions::applyInheritCSSPropertyGridTemplateAreas(StyleResolv erState& state)
224 { 224 {
225 state.style()->setNamedGridArea(state.parentStyle()->namedGridArea()); 225 state.style()->setNamedGridArea(state.parentStyle()->namedGridArea());
226 state.style()->setNamedGridAreaRowCount(state.parentStyle()->namedGridAreaRo wCount()); 226 state.style()->setNamedGridAreaRowCount(state.parentStyle()->namedGridAreaRo wCount());
227 state.style()->setNamedGridAreaColumnCount(state.parentStyle()->namedGridAre aColumnCount()); 227 state.style()->setNamedGridAreaColumnCount(state.parentStyle()->namedGridAre aColumnCount());
228 } 228 }
229 229
230 void StyleBuilderFunctions::applyValueCSSPropertyGridTemplateAreas(StyleResolver State& state, CSSValue* value) 230 void StyleBuilderFunctions::applyValueCSSPropertyGridTemplateAreas(StyleResolver State& state, CSSValue value)
231 { 231 {
232 if (value->isPrimitiveValue()) { 232 if (value.isPrimitiveValue()) {
233 // FIXME: Shouldn't we clear the grid-area values 233 // FIXME: Shouldn't we clear the grid-area values
234 ASSERT(toCSSPrimitiveValue(value)->getValueID() == CSSValueNone); 234 ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone);
235 return; 235 return;
236 } 236 }
237 237
238 CSSGridTemplateAreasValue* gridTemplateAreasValue = toCSSGridTemplateAreasVa lue(value); 238 CSSGridTemplateAreasValue& gridTemplateAreasValue = toCSSGridTemplateAreasVa lue(value);
239 const NamedGridAreaMap& newNamedGridAreas = gridTemplateAreasValue->gridArea Map(); 239 const NamedGridAreaMap& newNamedGridAreas = gridTemplateAreasValue.gridAreaM ap();
240 240
241 NamedGridLinesMap namedGridColumnLines; 241 NamedGridLinesMap namedGridColumnLines;
242 NamedGridLinesMap namedGridRowLines; 242 NamedGridLinesMap namedGridRowLines;
243 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridColumnLines(), namedGridColumnLines); 243 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridColumnLines(), namedGridColumnLines);
244 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridRowLines(), namedGridRowLines); 244 StyleBuilderConverter::convertOrderedNamedGridLinesMapToNamedGridLinesMap(st ate.style()->orderedNamedGridRowLines(), namedGridRowLines);
245 StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(newNamedGrid Areas, namedGridColumnLines, ForColumns); 245 StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(newNamedGrid Areas, namedGridColumnLines, ForColumns);
246 StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(newNamedGrid Areas, namedGridRowLines, ForRows); 246 StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea(newNamedGrid Areas, namedGridRowLines, ForRows);
247 state.style()->setNamedGridColumnLines(namedGridColumnLines); 247 state.style()->setNamedGridColumnLines(namedGridColumnLines);
248 state.style()->setNamedGridRowLines(namedGridRowLines); 248 state.style()->setNamedGridRowLines(namedGridRowLines);
249 249
250 state.style()->setNamedGridArea(newNamedGridAreas); 250 state.style()->setNamedGridArea(newNamedGridAreas);
251 state.style()->setNamedGridAreaRowCount(gridTemplateAreasValue->rowCount()); 251 state.style()->setNamedGridAreaRowCount(gridTemplateAreasValue.rowCount());
252 state.style()->setNamedGridAreaColumnCount(gridTemplateAreasValue->columnCou nt()); 252 state.style()->setNamedGridAreaColumnCount(gridTemplateAreasValue.columnCoun t());
253 } 253 }
254 254
255 void StyleBuilderFunctions::applyValueCSSPropertyListStyleImage(StyleResolverSta te& state, CSSValue* value) 255 void StyleBuilderFunctions::applyValueCSSPropertyListStyleImage(StyleResolverSta te& state, CSSValue value)
256 { 256 {
257 state.style()->setListStyleImage(state.styleImage(CSSPropertyListStyleImage, value)); 257 state.style()->setListStyleImage(state.styleImage(CSSPropertyListStyleImage, value));
258 } 258 }
259 259
260 void StyleBuilderFunctions::applyInitialCSSPropertyOutlineStyle(StyleResolverSta te& state) 260 void StyleBuilderFunctions::applyInitialCSSPropertyOutlineStyle(StyleResolverSta te& state)
261 { 261 {
262 state.style()->setOutlineStyleIsAuto(ComputedStyle::initialOutlineStyleIsAut o()); 262 state.style()->setOutlineStyleIsAuto(ComputedStyle::initialOutlineStyleIsAut o());
263 state.style()->setOutlineStyle(ComputedStyle::initialBorderStyle()); 263 state.style()->setOutlineStyle(ComputedStyle::initialBorderStyle());
264 } 264 }
265 265
266 void StyleBuilderFunctions::applyInheritCSSPropertyOutlineStyle(StyleResolverSta te& state) 266 void StyleBuilderFunctions::applyInheritCSSPropertyOutlineStyle(StyleResolverSta te& state)
267 { 267 {
268 state.style()->setOutlineStyleIsAuto(state.parentStyle()->outlineStyleIsAuto ()); 268 state.style()->setOutlineStyleIsAuto(state.parentStyle()->outlineStyleIsAuto ());
269 state.style()->setOutlineStyle(state.parentStyle()->outlineStyle()); 269 state.style()->setOutlineStyle(state.parentStyle()->outlineStyle());
270 } 270 }
271 271
272 void StyleBuilderFunctions::applyValueCSSPropertyOutlineStyle(StyleResolverState & state, CSSValue* value) 272 void StyleBuilderFunctions::applyValueCSSPropertyOutlineStyle(StyleResolverState & state, CSSValue value)
273 { 273 {
274 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 274 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
275 state.style()->setOutlineStyleIsAuto(*primitiveValue); 275 state.style()->setOutlineStyleIsAuto(primitiveValue);
276 state.style()->setOutlineStyle(*primitiveValue); 276 state.style()->setOutlineStyle(primitiveValue);
277 } 277 }
278 278
279 void StyleBuilderFunctions::applyValueCSSPropertyResize(StyleResolverState& stat e, CSSValue* value) 279 void StyleBuilderFunctions::applyValueCSSPropertyResize(StyleResolverState& stat e, CSSValue value)
280 { 280 {
281 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 281 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
282 282
283 EResize r = RESIZE_NONE; 283 EResize r = RESIZE_NONE;
284 if (primitiveValue->getValueID() == CSSValueAuto) { 284 if (primitiveValue.getValueID() == CSSValueAuto) {
285 if (Settings* settings = state.document().settings()) 285 if (Settings* settings = state.document().settings())
286 r = settings->textAreasAreResizable() ? RESIZE_BOTH : RESIZE_NONE; 286 r = settings->textAreasAreResizable() ? RESIZE_BOTH : RESIZE_NONE;
287 } else { 287 } else {
288 r = *primitiveValue; 288 r = primitiveValue;
289 } 289 }
290 state.style()->setResize(r); 290 state.style()->setResize(r);
291 } 291 }
292 292
293 static float mmToPx(float mm) { return mm * cssPixelsPerMillimeter; } 293 static float mmToPx(float mm) { return mm * cssPixelsPerMillimeter; }
294 static float inchToPx(float inch) { return inch * cssPixelsPerInch; } 294 static float inchToPx(float inch) { return inch * cssPixelsPerInch; }
295 static FloatSize getPageSizeFromName(CSSPrimitiveValue* pageSizeName) 295 static FloatSize getPageSizeFromName(CSSPrimitiveValue& pageSizeName)
296 { 296 {
297 switch (pageSizeName->getValueID()) { 297 switch (pageSizeName.getValueID()) {
298 case CSSValueA5: 298 case CSSValueA5:
299 return FloatSize(mmToPx(148), mmToPx(210)); 299 return FloatSize(mmToPx(148), mmToPx(210));
300 case CSSValueA4: 300 case CSSValueA4:
301 return FloatSize(mmToPx(210), mmToPx(297)); 301 return FloatSize(mmToPx(210), mmToPx(297));
302 case CSSValueA3: 302 case CSSValueA3:
303 return FloatSize(mmToPx(297), mmToPx(420)); 303 return FloatSize(mmToPx(297), mmToPx(420));
304 case CSSValueB5: 304 case CSSValueB5:
305 return FloatSize(mmToPx(176), mmToPx(250)); 305 return FloatSize(mmToPx(176), mmToPx(250));
306 case CSSValueB4: 306 case CSSValueB4:
307 return FloatSize(mmToPx(250), mmToPx(353)); 307 return FloatSize(mmToPx(250), mmToPx(353));
308 case CSSValueLetter: 308 case CSSValueLetter:
309 return FloatSize(inchToPx(8.5), inchToPx(11)); 309 return FloatSize(inchToPx(8.5), inchToPx(11));
310 case CSSValueLegal: 310 case CSSValueLegal:
311 return FloatSize(inchToPx(8.5), inchToPx(14)); 311 return FloatSize(inchToPx(8.5), inchToPx(14));
312 case CSSValueLedger: 312 case CSSValueLedger:
313 return FloatSize(inchToPx(11), inchToPx(17)); 313 return FloatSize(inchToPx(11), inchToPx(17));
314 default: 314 default:
315 ASSERT_NOT_REACHED(); 315 ASSERT_NOT_REACHED();
316 return FloatSize(0, 0); 316 return FloatSize(0, 0);
317 } 317 }
318 } 318 }
319 319
320 void StyleBuilderFunctions::applyInitialCSSPropertySize(StyleResolverState&) { } 320 void StyleBuilderFunctions::applyInitialCSSPropertySize(StyleResolverState&) { }
321 void StyleBuilderFunctions::applyInheritCSSPropertySize(StyleResolverState&) { } 321 void StyleBuilderFunctions::applyInheritCSSPropertySize(StyleResolverState&) { }
322 void StyleBuilderFunctions::applyValueCSSPropertySize(StyleResolverState& state, CSSValue* value) 322 void StyleBuilderFunctions::applyValueCSSPropertySize(StyleResolverState& state, CSSValue value)
323 { 323 {
324 state.style()->resetPageSizeType(); 324 state.style()->resetPageSizeType();
325 FloatSize size; 325 FloatSize size;
326 PageSizeType pageSizeType = PAGE_SIZE_AUTO; 326 PageSizeType pageSizeType = PAGE_SIZE_AUTO;
327 CSSValueList* list = toCSSValueList(value); 327 CSSValueList& list = toCSSValueList(value);
328 if (list->length() == 2) { 328 if (list.length() == 2) {
329 // <length>{2} | <page-size> <orientation> 329 // <length>{2} | <page-size> <orientation>
330 CSSPrimitiveValue* first = toCSSPrimitiveValue(list->item(0)); 330 CSSPrimitiveValue& first = toCSSPrimitiveValue(list.item(0));
331 CSSPrimitiveValue* second = toCSSPrimitiveValue(list->item(1)); 331 CSSPrimitiveValue& second = toCSSPrimitiveValue(list.item(1));
332 if (first->isLength()) { 332 if (first.isLength()) {
333 // <length>{2} 333 // <length>{2}
334 size = FloatSize(first->computeLength<float>(state.cssToLengthConver sionData().copyWithAdjustedZoom(1.0)), 334 size = FloatSize(first.computeLength<float>(state.cssToLengthConvers ionData().copyWithAdjustedZoom(1.0)),
335 second->computeLength<float>(state.cssToLengthConversionData().c opyWithAdjustedZoom(1.0))); 335 second.computeLength<float>(state.cssToLengthConversionData().co pyWithAdjustedZoom(1.0)));
336 } else { 336 } else {
337 // <page-size> <orientation> 337 // <page-size> <orientation>
338 size = getPageSizeFromName(first); 338 size = getPageSizeFromName(first);
339 339
340 ASSERT(second->getValueID() == CSSValueLandscape || second->getValue ID() == CSSValuePortrait); 340 ASSERT(second.getValueID() == CSSValueLandscape || second.getValueID () == CSSValuePortrait);
341 if (second->getValueID() == CSSValueLandscape) 341 if (second.getValueID() == CSSValueLandscape)
342 size = size.transposedSize(); 342 size = size.transposedSize();
343 } 343 }
344 pageSizeType = PAGE_SIZE_RESOLVED; 344 pageSizeType = PAGE_SIZE_RESOLVED;
345 } else { 345 } else {
346 ASSERT(list->length() == 1); 346 ASSERT(list.length() == 1);
347 // <length> | auto | <page-size> | [ portrait | landscape] 347 // <length> | auto | <page-size> | [ portrait | landscape]
348 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(list->item(0)); 348 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(list.item(0));
349 if (primitiveValue->isLength()) { 349 if (primitiveValue.isLength()) {
350 // <length> 350 // <length>
351 pageSizeType = PAGE_SIZE_RESOLVED; 351 pageSizeType = PAGE_SIZE_RESOLVED;
352 float width = primitiveValue->computeLength<float>(state.cssToLength ConversionData().copyWithAdjustedZoom(1.0)); 352 float width = primitiveValue.computeLength<float>(state.cssToLengthC onversionData().copyWithAdjustedZoom(1.0));
353 size = FloatSize(width, width); 353 size = FloatSize(width, width);
354 } else { 354 } else {
355 switch (primitiveValue->getValueID()) { 355 switch (primitiveValue.getValueID()) {
356 case CSSValueAuto: 356 case CSSValueAuto:
357 pageSizeType = PAGE_SIZE_AUTO; 357 pageSizeType = PAGE_SIZE_AUTO;
358 break; 358 break;
359 case CSSValuePortrait: 359 case CSSValuePortrait:
360 pageSizeType = PAGE_SIZE_AUTO_PORTRAIT; 360 pageSizeType = PAGE_SIZE_AUTO_PORTRAIT;
361 break; 361 break;
362 case CSSValueLandscape: 362 case CSSValueLandscape:
363 pageSizeType = PAGE_SIZE_AUTO_LANDSCAPE; 363 pageSizeType = PAGE_SIZE_AUTO_LANDSCAPE;
364 break; 364 break;
365 default: 365 default:
366 // <page-size> 366 // <page-size>
367 pageSizeType = PAGE_SIZE_RESOLVED; 367 pageSizeType = PAGE_SIZE_RESOLVED;
368 size = getPageSizeFromName(primitiveValue); 368 size = getPageSizeFromName(primitiveValue);
369 } 369 }
370 } 370 }
371 } 371 }
372 state.style()->setPageSizeType(pageSizeType); 372 state.style()->setPageSizeType(pageSizeType);
373 state.style()->setPageSize(size); 373 state.style()->setPageSize(size);
374 } 374 }
375 375
376 void StyleBuilderFunctions::applyValueCSSPropertyTextAlign(StyleResolverState& s tate, CSSValue* value) 376 void StyleBuilderFunctions::applyValueCSSPropertyTextAlign(StyleResolverState& s tate, CSSValue value)
377 { 377 {
378 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 378 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
379 if (primitiveValue->isValueID() && primitiveValue->getValueID() != CSSValueW ebkitMatchParent) 379 if (primitiveValue.isValueID() && primitiveValue.getValueID() != CSSValueWeb kitMatchParent)
380 state.style()->setTextAlign(*primitiveValue); 380 state.style()->setTextAlign(primitiveValue);
381 else if (state.parentStyle()->textAlign() == TASTART) 381 else if (state.parentStyle()->textAlign() == TASTART)
382 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? LEFT : RIGHT); 382 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? LEFT : RIGHT);
383 else if (state.parentStyle()->textAlign() == TAEND) 383 else if (state.parentStyle()->textAlign() == TAEND)
384 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? RIGHT : LEFT); 384 state.style()->setTextAlign(state.parentStyle()->isLeftToRightDirection( ) ? RIGHT : LEFT);
385 else 385 else
386 state.style()->setTextAlign(state.parentStyle()->textAlign()); 386 state.style()->setTextAlign(state.parentStyle()->textAlign());
387 } 387 }
388 388
389 void StyleBuilderFunctions::applyInheritCSSPropertyTextIndent(StyleResolverState & state) 389 void StyleBuilderFunctions::applyInheritCSSPropertyTextIndent(StyleResolverState & state)
390 { 390 {
391 state.style()->setTextIndent(state.parentStyle()->textIndent()); 391 state.style()->setTextIndent(state.parentStyle()->textIndent());
392 state.style()->setTextIndentLine(state.parentStyle()->textIndentLine()); 392 state.style()->setTextIndentLine(state.parentStyle()->textIndentLine());
393 state.style()->setTextIndentType(state.parentStyle()->textIndentType()); 393 state.style()->setTextIndentType(state.parentStyle()->textIndentType());
394 } 394 }
395 395
396 void StyleBuilderFunctions::applyInitialCSSPropertyTextIndent(StyleResolverState & state) 396 void StyleBuilderFunctions::applyInitialCSSPropertyTextIndent(StyleResolverState & state)
397 { 397 {
398 state.style()->setTextIndent(ComputedStyle::initialTextIndent()); 398 state.style()->setTextIndent(ComputedStyle::initialTextIndent());
399 state.style()->setTextIndentLine(ComputedStyle::initialTextIndentLine()); 399 state.style()->setTextIndentLine(ComputedStyle::initialTextIndentLine());
400 state.style()->setTextIndentType(ComputedStyle::initialTextIndentType()); 400 state.style()->setTextIndentType(ComputedStyle::initialTextIndentType());
401 } 401 }
402 402
403 void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(StyleResolverState& state, CSSValue* value) 403 void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(StyleResolverState& state, CSSValue value)
404 { 404 {
405 Length lengthOrPercentageValue; 405 Length lengthOrPercentageValue;
406 TextIndentLine textIndentLineValue = ComputedStyle::initialTextIndentLine(); 406 TextIndentLine textIndentLineValue = ComputedStyle::initialTextIndentLine();
407 TextIndentType textIndentTypeValue = ComputedStyle::initialTextIndentType(); 407 TextIndentType textIndentTypeValue = ComputedStyle::initialTextIndentType();
408 408
409 for (auto& listValue : toCSSValueList(*value)) { 409 for (auto& listValue : toCSSValueList(value)) {
410 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(listValue.get()) ; 410 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(listValue);
411 if (!primitiveValue->getValueID()) 411 if (!primitiveValue.getValueID())
412 lengthOrPercentageValue = primitiveValue->convertToLength(state.cssT oLengthConversionData()); 412 lengthOrPercentageValue = primitiveValue.convertToLength(state.cssTo LengthConversionData());
413 else if (primitiveValue->getValueID() == CSSValueEachLine) 413 else if (primitiveValue.getValueID() == CSSValueEachLine)
414 textIndentLineValue = TextIndentEachLine; 414 textIndentLineValue = TextIndentEachLine;
415 else if (primitiveValue->getValueID() == CSSValueHanging) 415 else if (primitiveValue.getValueID() == CSSValueHanging)
416 textIndentTypeValue = TextIndentHanging; 416 textIndentTypeValue = TextIndentHanging;
417 else 417 else
418 ASSERT_NOT_REACHED(); 418 ASSERT_NOT_REACHED();
419 } 419 }
420 420
421 state.style()->setTextIndent(lengthOrPercentageValue); 421 state.style()->setTextIndent(lengthOrPercentageValue);
422 state.style()->setTextIndentLine(textIndentLineValue); 422 state.style()->setTextIndentLine(textIndentLineValue);
423 state.style()->setTextIndentType(textIndentTypeValue); 423 state.style()->setTextIndentType(textIndentTypeValue);
424 } 424 }
425 425
426 void StyleBuilderFunctions::applyValueCSSPropertyTransform(StyleResolverState& s tate, CSSValue* value) 426 void StyleBuilderFunctions::applyValueCSSPropertyTransform(StyleResolverState& s tate, CSSValue value)
427 { 427 {
428 // FIXME: We should just make this a converter 428 // FIXME: We should just make this a converter
429 TransformOperations operations; 429 TransformOperations operations;
430 TransformBuilder::createTransformOperations(*value, state.cssToLengthConvers ionData(), operations); 430 TransformBuilder::createTransformOperations(value, state.cssToLengthConversi onData(), operations);
431 state.style()->setTransform(operations); 431 state.style()->setTransform(operations);
432 } 432 }
433 433
434 void StyleBuilderFunctions::applyInheritCSSPropertyMotionPath(StyleResolverState & state) 434 void StyleBuilderFunctions::applyInheritCSSPropertyMotionPath(StyleResolverState & state)
435 { 435 {
436 if (state.parentStyle()->motionPath()) 436 if (state.parentStyle()->motionPath())
437 state.style()->setMotionPath(state.parentStyle()->motionPath()); 437 state.style()->setMotionPath(state.parentStyle()->motionPath());
438 else 438 else
439 state.style()->resetMotionPath(); 439 state.style()->resetMotionPath();
440 } 440 }
441 441
442 void StyleBuilderFunctions::applyValueCSSPropertyMotionPath(StyleResolverState& state, CSSValue* value) 442 void StyleBuilderFunctions::applyValueCSSPropertyMotionPath(StyleResolverState& state, CSSValue value)
443 { 443 {
444 if (value->isPathValue()) { 444 if (value.isPathValue()) {
445 const String& pathString = toCSSPathValue(value)->pathString(); 445 const String& pathString = toCSSPathValue(value).pathString();
446 state.style()->setMotionPath(PathStyleMotionPath::create(pathString)); 446 state.style()->setMotionPath(PathStyleMotionPath::create(pathString));
447 return; 447 return;
448 } 448 }
449 449
450 ASSERT(value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValueID() == CSSValueNone); 450 ASSERT(value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() = = CSSValueNone);
451 state.style()->resetMotionPath(); 451 state.style()->resetMotionPath();
452 } 452 }
453 453
454 void StyleBuilderFunctions::applyInitialCSSPropertyMotionPath(StyleResolverState & state) 454 void StyleBuilderFunctions::applyInitialCSSPropertyMotionPath(StyleResolverState & state)
455 { 455 {
456 state.style()->resetMotionPath(); 456 state.style()->resetMotionPath();
457 } 457 }
458 458
459 void StyleBuilderFunctions::applyInheritCSSPropertyMotionRotation(StyleResolverS tate& state) 459 void StyleBuilderFunctions::applyInheritCSSPropertyMotionRotation(StyleResolverS tate& state)
460 { 460 {
461 state.style()->setMotionRotation(state.parentStyle()->motionRotation()); 461 state.style()->setMotionRotation(state.parentStyle()->motionRotation());
462 state.style()->setMotionRotationType(state.parentStyle()->motionRotationType ()); 462 state.style()->setMotionRotationType(state.parentStyle()->motionRotationType ());
463 } 463 }
464 464
465 void StyleBuilderFunctions::applyInitialCSSPropertyMotionRotation(StyleResolverS tate& state) 465 void StyleBuilderFunctions::applyInitialCSSPropertyMotionRotation(StyleResolverS tate& state)
466 { 466 {
467 state.style()->setMotionRotation(ComputedStyle::initialMotionRotation()); 467 state.style()->setMotionRotation(ComputedStyle::initialMotionRotation());
468 state.style()->setMotionRotationType(ComputedStyle::initialMotionRotationTyp e()); 468 state.style()->setMotionRotationType(ComputedStyle::initialMotionRotationTyp e());
469 } 469 }
470 470
471 void StyleBuilderFunctions::applyValueCSSPropertyMotionRotation(StyleResolverSta te& state, CSSValue* value) 471 void StyleBuilderFunctions::applyValueCSSPropertyMotionRotation(StyleResolverSta te& state, CSSValue value)
472 { 472 {
473 float rotation = 0; 473 float rotation = 0;
474 MotionRotationType rotationType = MotionRotationFixed; 474 MotionRotationType rotationType = MotionRotationFixed;
475 475
476 ASSERT(value->isValueList()); 476 ASSERT(value.isValueList());
477 CSSValueList* list = toCSSValueList(value); 477 CSSValueList& list = toCSSValueList(value);
478 int len = list->length(); 478 int len = list.length();
479 for (int i = 0; i < len; i++) { 479 for (int i = 0; i < len; i++) {
480 CSSValue* item = list->item(i); 480 CSSValue item = list.item(i);
481 ASSERT(item->isPrimitiveValue()); 481 ASSERT(item.isPrimitiveValue());
482 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(item); 482 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(item);
483 if (primitiveValue->getValueID() == CSSValueAuto) { 483 if (primitiveValue.getValueID() == CSSValueAuto) {
484 rotationType = MotionRotationAuto; 484 rotationType = MotionRotationAuto;
485 } else if (primitiveValue->getValueID() == CSSValueReverse) { 485 } else if (primitiveValue.getValueID() == CSSValueReverse) {
486 rotationType = MotionRotationAuto; 486 rotationType = MotionRotationAuto;
487 rotation += 180; 487 rotation += 180;
488 } else { 488 } else {
489 rotation += primitiveValue->computeDegrees(); 489 rotation += primitiveValue.computeDegrees();
490 } 490 }
491 } 491 }
492 492
493 state.style()->setMotionRotation(rotation); 493 state.style()->setMotionRotation(rotation);
494 state.style()->setMotionRotationType(rotationType); 494 state.style()->setMotionRotationType(rotationType);
495 } 495 }
496 496
497 void StyleBuilderFunctions::applyInheritCSSPropertyVerticalAlign(StyleResolverSt ate& state) 497 void StyleBuilderFunctions::applyInheritCSSPropertyVerticalAlign(StyleResolverSt ate& state)
498 { 498 {
499 EVerticalAlign verticalAlign = state.parentStyle()->verticalAlign(); 499 EVerticalAlign verticalAlign = state.parentStyle()->verticalAlign();
500 state.style()->setVerticalAlign(verticalAlign); 500 state.style()->setVerticalAlign(verticalAlign);
501 if (verticalAlign == LENGTH) 501 if (verticalAlign == LENGTH)
502 state.style()->setVerticalAlignLength(state.parentStyle()->verticalAlign Length()); 502 state.style()->setVerticalAlignLength(state.parentStyle()->verticalAlign Length());
503 } 503 }
504 504
505 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, CSSValue* value) 505 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, CSSValue value)
506 { 506 {
507 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 507 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
508 508
509 if (primitiveValue->getValueID()) 509 if (primitiveValue.getValueID())
510 state.style()->setVerticalAlign(*primitiveValue); 510 state.style()->setVerticalAlign(primitiveValue);
511 else 511 else
512 state.style()->setVerticalAlignLength(primitiveValue->convertToLength(st ate.cssToLengthConversionData())); 512 state.style()->setVerticalAlignLength(primitiveValue.convertToLength(sta te.cssToLengthConversionData()));
513 } 513 }
514 514
515 static void resetEffectiveZoom(StyleResolverState& state) 515 static void resetEffectiveZoom(StyleResolverState& state)
516 { 516 {
517 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect. 517 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect.
518 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : ComputedStyle::initialZoom()); 518 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : ComputedStyle::initialZoom());
519 } 519 }
520 520
521 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e) 521 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e)
522 { 522 {
523 resetEffectiveZoom(state); 523 resetEffectiveZoom(state);
524 state.setZoom(ComputedStyle::initialZoom()); 524 state.setZoom(ComputedStyle::initialZoom());
525 } 525 }
526 526
527 void StyleBuilderFunctions::applyInheritCSSPropertyZoom(StyleResolverState& stat e) 527 void StyleBuilderFunctions::applyInheritCSSPropertyZoom(StyleResolverState& stat e)
528 { 528 {
529 resetEffectiveZoom(state); 529 resetEffectiveZoom(state);
530 state.setZoom(state.parentStyle()->zoom()); 530 state.setZoom(state.parentStyle()->zoom());
531 } 531 }
532 532
533 void StyleBuilderFunctions::applyValueCSSPropertyZoom(StyleResolverState& state, CSSValue* value) 533 void StyleBuilderFunctions::applyValueCSSPropertyZoom(StyleResolverState& state, CSSValue value)
534 { 534 {
535 ASSERT_WITH_SECURITY_IMPLICATION(value->isPrimitiveValue()); 535 ASSERT_WITH_SECURITY_IMPLICATION(value.isPrimitiveValue());
536 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 536 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
537 537
538 if (primitiveValue->getValueID() == CSSValueNormal) { 538 if (primitiveValue.getValueID() == CSSValueNormal) {
539 resetEffectiveZoom(state); 539 resetEffectiveZoom(state);
540 state.setZoom(ComputedStyle::initialZoom()); 540 state.setZoom(ComputedStyle::initialZoom());
541 } else if (primitiveValue->getValueID() == CSSValueReset) { 541 } else if (primitiveValue.getValueID() == CSSValueReset) {
542 state.setEffectiveZoom(ComputedStyle::initialZoom()); 542 state.setEffectiveZoom(ComputedStyle::initialZoom());
543 state.setZoom(ComputedStyle::initialZoom()); 543 state.setZoom(ComputedStyle::initialZoom());
544 } else if (primitiveValue->getValueID() == CSSValueDocument) { 544 } else if (primitiveValue.getValueID() == CSSValueDocument) {
545 float docZoom = state.rootElementStyle() ? state.rootElementStyle()->zoo m() : ComputedStyle::initialZoom(); 545 float docZoom = state.rootElementStyle() ? state.rootElementStyle()->zoo m() : ComputedStyle::initialZoom();
546 state.setEffectiveZoom(docZoom); 546 state.setEffectiveZoom(docZoom);
547 state.setZoom(docZoom); 547 state.setZoom(docZoom);
548 } else if (primitiveValue->isPercentage()) { 548 } else if (primitiveValue.isPercentage()) {
549 resetEffectiveZoom(state); 549 resetEffectiveZoom(state);
550 if (float percent = primitiveValue->getFloatValue()) 550 if (float percent = primitiveValue.getFloatValue())
551 state.setZoom(percent / 100.0f); 551 state.setZoom(percent / 100.0f);
552 } else if (primitiveValue->isNumber()) { 552 } else if (primitiveValue.isNumber()) {
553 resetEffectiveZoom(state); 553 resetEffectiveZoom(state);
554 if (float number = primitiveValue->getFloatValue()) 554 if (float number = primitiveValue.getFloatValue())
555 state.setZoom(number); 555 state.setZoom(number);
556 } 556 }
557 } 557 }
558 558
559 void StyleBuilderFunctions::applyValueCSSPropertyWebkitBorderImage(StyleResolver State& state, CSSValue* value) 559 void StyleBuilderFunctions::applyValueCSSPropertyWebkitBorderImage(StyleResolver State& state, CSSValue value)
560 { 560 {
561 NinePieceImage image; 561 NinePieceImage image;
562 CSSToStyleMap::mapNinePieceImage(state, CSSPropertyWebkitBorderImage, value, image); 562 CSSToStyleMap::mapNinePieceImage(state, CSSPropertyWebkitBorderImage, value, image);
563 state.style()->setBorderImage(image); 563 state.style()->setBorderImage(image);
564 } 564 }
565 565
566 void StyleBuilderFunctions::applyValueCSSPropertyWebkitClipPath(StyleResolverSta te& state, CSSValue* value) 566 void StyleBuilderFunctions::applyValueCSSPropertyWebkitClipPath(StyleResolverSta te& state, CSSValue value)
567 { 567 {
568 if (value->isPrimitiveValue()) { 568 if (value.isPrimitiveValue()) {
569 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 569 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
570 if (primitiveValue->getValueID() == CSSValueNone) { 570 if (primitiveValue.getValueID() == CSSValueNone) {
571 state.style()->setClipPath(nullptr); 571 state.style()->setClipPath(nullptr);
572 } else if (primitiveValue->isShape()) { 572 } else if (primitiveValue.isShape()) {
573 state.style()->setClipPath(ShapeClipPathOperation::create(basicShape ForValue(state, primitiveValue->getShapeValue()))); 573 state.style()->setClipPath(ShapeClipPathOperation::create(basicShape ForValue(state, primitiveValue.getShapeValue())));
574 } else if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_URI ) { 574 } else if (primitiveValue.primitiveType() == CSSPrimitiveValue::CSS_URI) {
575 String cssURLValue = primitiveValue->getStringValue(); 575 String cssURLValue = primitiveValue.getStringValue();
576 KURL url = state.document().completeURL(cssURLValue); 576 KURL url = state.document().completeURL(cssURLValue);
577 // FIXME: It doesn't work with forward or external SVG references (s ee https://bugs.webkit.org/show_bug.cgi?id=90405) 577 // FIXME: It doesn't work with forward or external SVG references (s ee https://bugs.webkit.org/show_bug.cgi?id=90405)
578 state.style()->setClipPath(ReferenceClipPathOperation::create(cssURL Value, AtomicString(url.fragmentIdentifier()))); 578 state.style()->setClipPath(ReferenceClipPathOperation::create(cssURL Value, AtomicString(url.fragmentIdentifier())));
579 } 579 }
580 } 580 }
581 } 581 }
582 582
583 void StyleBuilderFunctions::applyValueCSSPropertyWebkitFilter(StyleResolverState & state, CSSValue* value) 583 void StyleBuilderFunctions::applyValueCSSPropertyWebkitFilter(StyleResolverState & state, CSSValue value)
584 { 584 {
585 FilterOperations operations; 585 FilterOperations operations;
586 if (FilterOperationResolver::createFilterOperations(value, state.cssToLength ConversionData(), operations, state)) 586 if (FilterOperationResolver::createFilterOperations(value, state.cssToLength ConversionData(), operations, state))
587 state.style()->setFilter(operations); 587 state.style()->setFilter(operations);
588 } 588 }
589 589
590 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitTextEmphasisStyle(Style ResolverState& state) 590 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitTextEmphasisStyle(Style ResolverState& state)
591 { 591 {
592 state.style()->setTextEmphasisFill(ComputedStyle::initialTextEmphasisFill()) ; 592 state.style()->setTextEmphasisFill(ComputedStyle::initialTextEmphasisFill()) ;
593 state.style()->setTextEmphasisMark(ComputedStyle::initialTextEmphasisMark()) ; 593 state.style()->setTextEmphasisMark(ComputedStyle::initialTextEmphasisMark()) ;
594 state.style()->setTextEmphasisCustomMark(ComputedStyle::initialTextEmphasisC ustomMark()); 594 state.style()->setTextEmphasisCustomMark(ComputedStyle::initialTextEmphasisC ustomMark());
595 } 595 }
596 596
597 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitTextEmphasisStyle(Style ResolverState& state) 597 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitTextEmphasisStyle(Style ResolverState& state)
598 { 598 {
599 state.style()->setTextEmphasisFill(state.parentStyle()->textEmphasisFill()); 599 state.style()->setTextEmphasisFill(state.parentStyle()->textEmphasisFill());
600 state.style()->setTextEmphasisMark(state.parentStyle()->textEmphasisMark()); 600 state.style()->setTextEmphasisMark(state.parentStyle()->textEmphasisMark());
601 state.style()->setTextEmphasisCustomMark(state.parentStyle()->textEmphasisCu stomMark()); 601 state.style()->setTextEmphasisCustomMark(state.parentStyle()->textEmphasisCu stomMark());
602 } 602 }
603 603
604 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextEmphasisStyle(StyleRe solverState& state, CSSValue* value) 604 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextEmphasisStyle(StyleRe solverState& state, CSSValue value)
605 { 605 {
606 if (value->isValueList()) { 606 if (value.isValueList()) {
607 CSSValueList* list = toCSSValueList(value); 607 CSSValueList& list = toCSSValueList(value);
608 ASSERT(list->length() == 2); 608 ASSERT(list.length() == 2);
609 for (unsigned i = 0; i < 2; ++i) { 609 for (unsigned i = 0; i < 2; ++i) {
610 CSSPrimitiveValue* value = toCSSPrimitiveValue(list->item(i)); 610 CSSPrimitiveValue& value = toCSSPrimitiveValue(list.item(i));
611 if (value->getValueID() == CSSValueFilled || value->getValueID() == CSSValueOpen) 611 if (value.getValueID() == CSSValueFilled || value.getValueID() == CS SValueOpen)
612 state.style()->setTextEmphasisFill(*value); 612 state.style()->setTextEmphasisFill(value);
613 else 613 else
614 state.style()->setTextEmphasisMark(*value); 614 state.style()->setTextEmphasisMark(value);
615 } 615 }
616 state.style()->setTextEmphasisCustomMark(nullAtom); 616 state.style()->setTextEmphasisCustomMark(nullAtom);
617 return; 617 return;
618 } 618 }
619 619
620 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 620 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
621 621
622 if (primitiveValue->isString()) { 622 if (primitiveValue.isString()) {
623 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); 623 state.style()->setTextEmphasisFill(TextEmphasisFillFilled);
624 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom); 624 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom);
625 state.style()->setTextEmphasisCustomMark(AtomicString(primitiveValue->ge tStringValue())); 625 state.style()->setTextEmphasisCustomMark(AtomicString(primitiveValue.get StringValue()));
626 return; 626 return;
627 } 627 }
628 628
629 state.style()->setTextEmphasisCustomMark(nullAtom); 629 state.style()->setTextEmphasisCustomMark(nullAtom);
630 630
631 if (primitiveValue->getValueID() == CSSValueFilled || primitiveValue->getVal ueID() == CSSValueOpen) { 631 if (primitiveValue.getValueID() == CSSValueFilled || primitiveValue.getValue ID() == CSSValueOpen) {
632 state.style()->setTextEmphasisFill(*primitiveValue); 632 state.style()->setTextEmphasisFill(primitiveValue);
633 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto); 633 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto);
634 } else { 634 } else {
635 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); 635 state.style()->setTextEmphasisFill(TextEmphasisFillFilled);
636 state.style()->setTextEmphasisMark(*primitiveValue); 636 state.style()->setTextEmphasisMark(primitiveValue);
637 } 637 }
638 } 638 }
639 639
640 void StyleBuilderFunctions::applyInitialCSSPropertyWillChange(StyleResolverState & state) 640 void StyleBuilderFunctions::applyInitialCSSPropertyWillChange(StyleResolverState & state)
641 { 641 {
642 state.style()->setWillChangeContents(false); 642 state.style()->setWillChangeContents(false);
643 state.style()->setWillChangeScrollPosition(false); 643 state.style()->setWillChangeScrollPosition(false);
644 state.style()->setWillChangeProperties(Vector<CSSPropertyID>()); 644 state.style()->setWillChangeProperties(Vector<CSSPropertyID>());
645 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents()); 645 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents());
646 } 646 }
647 647
648 void StyleBuilderFunctions::applyInheritCSSPropertyWillChange(StyleResolverState & state) 648 void StyleBuilderFunctions::applyInheritCSSPropertyWillChange(StyleResolverState & state)
649 { 649 {
650 state.style()->setWillChangeContents(state.parentStyle()->willChangeContents ()); 650 state.style()->setWillChangeContents(state.parentStyle()->willChangeContents ());
651 state.style()->setWillChangeScrollPosition(state.parentStyle()->willChangeSc rollPosition()); 651 state.style()->setWillChangeScrollPosition(state.parentStyle()->willChangeSc rollPosition());
652 state.style()->setWillChangeProperties(state.parentStyle()->willChangeProper ties()); 652 state.style()->setWillChangeProperties(state.parentStyle()->willChangeProper ties());
653 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents()); 653 state.style()->setSubtreeWillChangeContents(state.parentStyle()->subtreeWill ChangeContents());
654 } 654 }
655 655
656 void StyleBuilderFunctions::applyValueCSSPropertyWillChange(StyleResolverState& state, CSSValue* value) 656 void StyleBuilderFunctions::applyValueCSSPropertyWillChange(StyleResolverState& state, CSSValue value)
657 { 657 {
658 ASSERT(value->isValueList()); 658 ASSERT(value.isValueList());
659 bool willChangeContents = false; 659 bool willChangeContents = false;
660 bool willChangeScrollPosition = false; 660 bool willChangeScrollPosition = false;
661 Vector<CSSPropertyID> willChangeProperties; 661 Vector<CSSPropertyID> willChangeProperties;
662 662
663 for (auto& willChangeValue : toCSSValueList(*value)) { 663 for (auto& willChangeValue : toCSSValueList(value)) {
664 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(willChangeValue. get()); 664 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(willChangeValue) ;
665 if (CSSPropertyID propertyID = primitiveValue->getPropertyID()) 665 if (CSSPropertyID propertyID = primitiveValue.getPropertyID())
666 willChangeProperties.append(propertyID); 666 willChangeProperties.append(propertyID);
667 else if (primitiveValue->getValueID() == CSSValueContents) 667 else if (primitiveValue.getValueID() == CSSValueContents)
668 willChangeContents = true; 668 willChangeContents = true;
669 else if (primitiveValue->getValueID() == CSSValueScrollPosition) 669 else if (primitiveValue.getValueID() == CSSValueScrollPosition)
670 willChangeScrollPosition = true; 670 willChangeScrollPosition = true;
671 else 671 else
672 ASSERT_NOT_REACHED(); 672 ASSERT_NOT_REACHED();
673 } 673 }
674 state.style()->setWillChangeContents(willChangeContents); 674 state.style()->setWillChangeContents(willChangeContents);
675 state.style()->setWillChangeScrollPosition(willChangeScrollPosition); 675 state.style()->setWillChangeScrollPosition(willChangeScrollPosition);
676 state.style()->setWillChangeProperties(willChangeProperties); 676 state.style()->setWillChangeProperties(willChangeProperties);
677 state.style()->setSubtreeWillChangeContents(willChangeContents || state.pare ntStyle()->subtreeWillChangeContents()); 677 state.style()->setSubtreeWillChangeContents(willChangeContents || state.pare ntStyle()->subtreeWillChangeContents());
678 } 678 }
679 679
680 void StyleBuilderFunctions::applyInitialCSSPropertyContent(StyleResolverState& s tate) 680 void StyleBuilderFunctions::applyInitialCSSPropertyContent(StyleResolverState& s tate)
681 { 681 {
682 state.style()->clearContent(); 682 state.style()->clearContent();
683 } 683 }
684 684
685 void StyleBuilderFunctions::applyInheritCSSPropertyContent(StyleResolverState&) 685 void StyleBuilderFunctions::applyInheritCSSPropertyContent(StyleResolverState&)
686 { 686 {
687 // FIXME: In CSS3, it will be possible to inherit content. In CSS2 it is not . This 687 // FIXME: In CSS3, it will be possible to inherit content. In CSS2 it is not . This
688 // note is a reminder that eventually "inherit" needs to be supported. 688 // note is a reminder that eventually "inherit" needs to be supported.
689 } 689 }
690 690
691 void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta te, CSSValue* value) 691 void StyleBuilderFunctions::applyValueCSSPropertyContent(StyleResolverState& sta te, CSSValue value)
692 { 692 {
693 // list of string, uri, counter, attr, i 693 // list of string, uri, counter, attr, i
694 694
695 bool didSet = false; 695 bool didSet = false;
696 for (auto& item : toCSSValueList(*value)) { 696 for (auto& item : toCSSValueList(value)) {
697 if (item->isImageGeneratorValue()) { 697 if (item.isImageGeneratorValue()) {
698 state.style()->setContent(StyleGeneratedImage::create(toCSSImageGene ratorValue(item.get())), didSet); 698 state.style()->setContent(StyleGeneratedImage::create(&toCSSImageGen eratorValue(item)), didSet);
699 didSet = true; 699 didSet = true;
700 } else if (item->isImageSetValue()) { 700 } else if (item.isImageSetValue()) {
701 state.style()->setContent(state.elementStyleResources().setOrPending FromValue(CSSPropertyContent, toCSSImageSetValue(item.get())), didSet); 701 state.style()->setContent(state.elementStyleResources().setOrPending FromValue(CSSPropertyContent, toCSSImageSetValue(item)), didSet);
702 didSet = true; 702 didSet = true;
703 } 703 }
704 704
705 if (item->isImageValue()) { 705 if (item.isImageValue()) {
706 state.style()->setContent(state.elementStyleResources().cachedOrPend ingFromValue(state.document(), CSSPropertyContent, toCSSImageValue(item.get())), didSet); 706 state.style()->setContent(state.elementStyleResources().cachedOrPend ingFromValue(state.document(), CSSPropertyContent, toCSSImageValue(item)), didSe t);
707 didSet = true; 707 didSet = true;
708 continue; 708 continue;
709 } 709 }
710 710
711 if (!item->isPrimitiveValue()) 711 if (!item.isPrimitiveValue())
712 continue; 712 continue;
713 713
714 CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get()); 714 CSSPrimitiveValue& contentValue = toCSSPrimitiveValue(item);
715 715
716 if (contentValue->isString()) { 716 if (contentValue.isString()) {
717 state.style()->setContent(contentValue->getStringValue().impl(), did Set); 717 state.style()->setContent(contentValue.getStringValue().impl(), didS et);
718 didSet = true; 718 didSet = true;
719 } else if (contentValue->isAttr()) { 719 } else if (contentValue.isAttr()) {
720 // FIXME: Can a namespace be specified for an attr(foo)? 720 // FIXME: Can a namespace be specified for an attr(foo)?
721 if (state.style()->styleType() == NOPSEUDO) 721 if (state.style()->styleType() == NOPSEUDO)
722 state.style()->setUnique(); 722 state.style()->setUnique();
723 else 723 else
724 state.parentStyle()->setUnique(); 724 state.parentStyle()->setUnique();
725 QualifiedName attr(nullAtom, AtomicString(contentValue->getStringVal ue()), nullAtom); 725 QualifiedName attr(nullAtom, AtomicString(contentValue.getStringValu e()), nullAtom);
726 const AtomicString& value = state.element()->getAttribute(attr); 726 const AtomicString& value = state.element()->getAttribute(attr);
727 state.style()->setContent(value.isNull() ? emptyString() : value.str ing(), didSet); 727 state.style()->setContent(value.isNull() ? emptyString() : value.str ing(), didSet);
728 didSet = true; 728 didSet = true;
729 } else if (contentValue->isCounter()) { 729 } else if (contentValue.isCounter()) {
730 Counter* counterValue = contentValue->getCounterValue(); 730 Counter* counterValue = contentValue.getCounterValue();
731 EListStyleType listStyleType = NoneListStyle; 731 EListStyleType listStyleType = NoneListStyle;
732 CSSValueID listStyleIdent = counterValue->listStyleIdent(); 732 CSSValueID listStyleIdent = counterValue->listStyleIdent();
733 if (listStyleIdent != CSSValueNone) 733 if (listStyleIdent != CSSValueNone)
734 listStyleType = static_cast<EListStyleType>(listStyleIdent - CSS ValueDisc); 734 listStyleType = static_cast<EListStyleType>(listStyleIdent - CSS ValueDisc);
735 OwnPtr<CounterContent> counter = adoptPtr(new CounterContent(AtomicS tring(counterValue->identifier()), listStyleType, AtomicString(counterValue->sep arator()))); 735 OwnPtr<CounterContent> counter = adoptPtr(new CounterContent(AtomicS tring(counterValue->identifier()), listStyleType, AtomicString(counterValue->sep arator())));
736 state.style()->setContent(counter.release(), didSet); 736 state.style()->setContent(counter.release(), didSet);
737 didSet = true; 737 didSet = true;
738 } else { 738 } else {
739 switch (contentValue->getValueID()) { 739 switch (contentValue.getValueID()) {
740 case CSSValueOpenQuote: 740 case CSSValueOpenQuote:
741 state.style()->setContent(OPEN_QUOTE, didSet); 741 state.style()->setContent(OPEN_QUOTE, didSet);
742 didSet = true; 742 didSet = true;
743 break; 743 break;
744 case CSSValueCloseQuote: 744 case CSSValueCloseQuote:
745 state.style()->setContent(CLOSE_QUOTE, didSet); 745 state.style()->setContent(CLOSE_QUOTE, didSet);
746 didSet = true; 746 didSet = true;
747 break; 747 break;
748 case CSSValueNoOpenQuote: 748 case CSSValueNoOpenQuote:
749 state.style()->setContent(NO_OPEN_QUOTE, didSet); 749 state.style()->setContent(NO_OPEN_QUOTE, didSet);
750 didSet = true; 750 didSet = true;
751 break; 751 break;
752 case CSSValueNoCloseQuote: 752 case CSSValueNoCloseQuote:
753 state.style()->setContent(NO_CLOSE_QUOTE, didSet); 753 state.style()->setContent(NO_CLOSE_QUOTE, didSet);
754 didSet = true; 754 didSet = true;
755 break; 755 break;
756 default: 756 default:
757 // normal and none do not have any effect. 757 // normal and none do not have any effect.
758 { } 758 { }
759 } 759 }
760 } 760 }
761 } 761 }
762 if (!didSet) 762 if (!didSet)
763 state.style()->clearContent(); 763 state.style()->clearContent();
764 } 764 }
765 765
766 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, CSSValue* value) 766 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, CSSValue value)
767 { 767 {
768 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 768 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
769 if (primitiveValue->getValueID() == CSSValueAuto) 769 if (primitiveValue.getValueID() == CSSValueAuto)
770 state.style()->setLocale(nullAtom); 770 state.style()->setLocale(nullAtom);
771 else 771 else
772 state.style()->setLocale(AtomicString(primitiveValue->getStringValue())) ; 772 state.style()->setLocale(AtomicString(primitiveValue.getStringValue()));
773 state.fontBuilder().setScript(state.style()->locale()); 773 state.fontBuilder().setScript(state.style()->locale());
774 } 774 }
775 775
776 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&) 776 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&)
777 { 777 {
778 } 778 }
779 779
780 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&) 780 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&)
781 { 781 {
782 } 782 }
783 783
784 void StyleBuilderFunctions::applyValueCSSPropertyWebkitAppRegion(StyleResolverSt ate& state, CSSValue* value) 784 void StyleBuilderFunctions::applyValueCSSPropertyWebkitAppRegion(StyleResolverSt ate& state, CSSValue value)
785 { 785 {
786 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 786 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
787 state.style()->setDraggableRegionMode(primitiveValue->getValueID() == CSSVal ueDrag ? DraggableRegionDrag : DraggableRegionNoDrag); 787 state.style()->setDraggableRegionMode(primitiveValue.getValueID() == CSSValu eDrag ? DraggableRegionDrag : DraggableRegionNoDrag);
788 state.document().setHasAnnotatedRegions(true); 788 state.document().setHasAnnotatedRegions(true);
789 } 789 }
790 790
791 void StyleBuilderFunctions::applyValueCSSPropertyWebkitWritingMode(StyleResolver State& state, CSSValue* value) 791 void StyleBuilderFunctions::applyValueCSSPropertyWebkitWritingMode(StyleResolver State& state, CSSValue value)
792 { 792 {
793 state.setWritingMode(*toCSSPrimitiveValue(value)); 793 state.setWritingMode(toCSSPrimitiveValue(value));
794 } 794 }
795 795
796 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextOrientation(StyleReso lverState& state, CSSValue* value) 796 void StyleBuilderFunctions::applyValueCSSPropertyWebkitTextOrientation(StyleReso lverState& state, CSSValue value)
797 { 797 {
798 state.setTextOrientation(*toCSSPrimitiveValue(value)); 798 state.setTextOrientation(toCSSPrimitiveValue(value));
799 } 799 }
800 800
801 void StyleBuilderFunctions::applyInheritCSSPropertyBaselineShift(StyleResolverSt ate& state) 801 void StyleBuilderFunctions::applyInheritCSSPropertyBaselineShift(StyleResolverSt ate& state)
802 { 802 {
803 const SVGComputedStyle& parentSvgStyle = state.parentStyle()->svgStyle(); 803 const SVGComputedStyle& parentSvgStyle = state.parentStyle()->svgStyle();
804 EBaselineShift baselineShift = parentSvgStyle.baselineShift(); 804 EBaselineShift baselineShift = parentSvgStyle.baselineShift();
805 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle(); 805 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle();
806 svgStyle.setBaselineShift(baselineShift); 806 svgStyle.setBaselineShift(baselineShift);
807 if (baselineShift == BS_LENGTH) 807 if (baselineShift == BS_LENGTH)
808 svgStyle.setBaselineShiftValue(parentSvgStyle.baselineShiftValue()); 808 svgStyle.setBaselineShiftValue(parentSvgStyle.baselineShiftValue());
809 } 809 }
810 810
811 void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat e& state, CSSValue* value) 811 void StyleBuilderFunctions::applyValueCSSPropertyBaselineShift(StyleResolverStat e& state, CSSValue value)
812 { 812 {
813 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle(); 813 SVGComputedStyle& svgStyle = state.style()->accessSVGStyle();
814 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 814 CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value);
815 if (!primitiveValue->isValueID()) { 815 if (!primitiveValue.isValueID()) {
816 svgStyle.setBaselineShift(BS_LENGTH); 816 svgStyle.setBaselineShift(BS_LENGTH);
817 svgStyle.setBaselineShiftValue(StyleBuilderConverter::convertLength(stat e, primitiveValue)); 817 svgStyle.setBaselineShiftValue(StyleBuilderConverter::convertLength(stat e, value));
818 return; 818 return;
819 } 819 }
820 switch (primitiveValue->getValueID()) { 820 switch (primitiveValue.getValueID()) {
821 case CSSValueBaseline: 821 case CSSValueBaseline:
822 svgStyle.setBaselineShift(BS_LENGTH); 822 svgStyle.setBaselineShift(BS_LENGTH);
823 svgStyle.setBaselineShiftValue(Length(Fixed)); 823 svgStyle.setBaselineShiftValue(Length(Fixed));
824 return; 824 return;
825 case CSSValueSub: 825 case CSSValueSub:
826 svgStyle.setBaselineShift(BS_SUB); 826 svgStyle.setBaselineShift(BS_SUB);
827 return; 827 return;
828 case CSSValueSuper: 828 case CSSValueSuper:
829 svgStyle.setBaselineShift(BS_SUPER); 829 svgStyle.setBaselineShift(BS_SUPER);
830 return; 830 return;
831 default: 831 default:
832 ASSERT_NOT_REACHED(); 832 ASSERT_NOT_REACHED();
833 } 833 }
834 } 834 }
835 835
836 } // namespace blink 836 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/resolver/StyleBuilderConverter.cpp ('k') | Source/core/css/resolver/StyleResolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698