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

Side by Side Diff: Source/build/scripts/templates/StyleBuilderFunctions.cpp.tmpl

Issue 333163004: Remove explicit bounds check from CSSValueList::item (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: address comment Created 6 years, 6 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
« no previous file with comments | « no previous file | Source/core/css/CSSValueList.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {% from 'macros.tmpl' import license %} 1 {% from 'macros.tmpl' import license %}
2 {# 2 {#
3 This file is for property handlers which use the templating engine to 3 This file is for property handlers which use the templating engine to
4 reduce (handwritten) code duplication. 4 reduce (handwritten) code duplication.
5 5
6 The `properties' dict can be used to access a property's parameters in 6 The `properties' dict can be used to access a property's parameters in
7 jinja2 templates (i.e. setter, getter, initial, type_name) 7 jinja2 templates (i.e. setter, getter, initial, type_name)
8 #} 8 #}
9 #include "config.h" 9 #include "config.h"
10 #include "StyleBuilderFunctions.h" 10 #include "StyleBuilderFunctions.h"
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 352
353 if (!value->isValueList()) { 353 if (!value->isValueList()) {
354 ASSERT(value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValue ID() == CSSValueNone); 354 ASSERT(value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValue ID() == CSSValueNone);
355 return; 355 return;
356 } 356 }
357 357
358 CSSValueList* list = toCSSValueList(value); 358 CSSValueList* list = toCSSValueList(value);
359 359
360 int length = list ? list->length() : 0; 360 int length = list ? list->length() : 0;
361 for (int i = 0; i < length; ++i) { 361 for (int i = 0; i < length; ++i) {
362 CSSValue* currValue = list->itemWithoutBoundsCheck(i); 362 CSSValue* currValue = list->item(i);
363 if (!currValue->isPrimitiveValue()) 363 if (!currValue->isPrimitiveValue())
364 continue; 364 continue;
365 365
366 Pair* pair = toCSSPrimitiveValue(currValue)->getPairValue(); 366 Pair* pair = toCSSPrimitiveValue(currValue)->getPairValue();
367 if (!pair || !pair->first() || !pair->second()) 367 if (!pair || !pair->first() || !pair->second())
368 continue; 368 continue;
369 369
370 AtomicString identifier(pair->first()->getStringValue()); 370 AtomicString identifier(pair->first()->getStringValue());
371 int value = pair->second()->getIntValue(); 371 int value = pair->second()->getIntValue();
372 CounterDirectives& directives = map.add(identifier, CounterDirectives()) .storedValue->value; 372 CounterDirectives& directives = map.add(identifier, CounterDirectives()) .storedValue->value;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 FillLayer* prevChild = 0; 424 FillLayer* prevChild = 0;
425 if (value->isValueList() && !value->isImageSetValue()) { 425 if (value->isValueList() && !value->isImageSetValue()) {
426 /* Walk each value and put it into a layer, creating new layers as neede d. */ 426 /* Walk each value and put it into a layer, creating new layers as neede d. */
427 CSSValueList* valueList = toCSSValueList(value); 427 CSSValueList* valueList = toCSSValueList(value);
428 for (unsigned int i = 0; i < valueList->length(); i++) { 428 for (unsigned int i = 0; i < valueList->length(); i++) {
429 if (!currChild) { 429 if (!currChild) {
430 /* Need to make a new layer to hold this value */ 430 /* Need to make a new layer to hold this value */
431 currChild = new FillLayer({{fill_layer_type}}); 431 currChild = new FillLayer({{fill_layer_type}});
432 prevChild->setNext(currChild); 432 prevChild->setNext(currChild);
433 } 433 }
434 state.styleMap().{{map_fill}}({{property_id}}, currChild, valueList- >itemWithoutBoundsCheck(i)); 434 state.styleMap().{{map_fill}}({{property_id}}, currChild, valueList- >item(i));
435 prevChild = currChild; 435 prevChild = currChild;
436 currChild = currChild->next(); 436 currChild = currChild->next();
437 } 437 }
438 } else { 438 } else {
439 state.styleMap().{{map_fill}}({{property_id}}, currChild, value); 439 state.styleMap().{{map_fill}}({{property_id}}, currChild, value);
440 currChild = currChild->next(); 440 currChild = currChild->next();
441 } 441 }
442 while (currChild) { 442 while (currChild) {
443 /* Reset all remaining layers to not have the property set. */ 443 /* Reset all remaining layers to not have the property set. */
444 currChild->clear{{fill_type}}(); 444 currChild->clear{{fill_type}}();
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 525 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
526 if (primitiveValue->getValueID() == CSSValueNone) 526 if (primitiveValue->getValueID() == CSSValueNone)
527 {{set_value(property)}}(nullptr); 527 {{set_value(property)}}(nullptr);
528 } else if (value->isImageValue() || value->isImageGeneratorValue() || value- >isImageSetValue()) { 528 } else if (value->isImageValue() || value->isImageGeneratorValue() || value- >isImageSetValue()) {
529 {{set_value(property)}}(ShapeValue::createImageValue(state.styleImage({{ property_id}}, value))); 529 {{set_value(property)}}(ShapeValue::createImageValue(state.styleImage({{ property_id}}, value)));
530 } else if (value->isValueList()) { 530 } else if (value->isValueList()) {
531 RefPtr<BasicShape> shape; 531 RefPtr<BasicShape> shape;
532 CSSBoxType cssBox = BoxMissing; 532 CSSBoxType cssBox = BoxMissing;
533 CSSValueList* valueList = toCSSValueList(value); 533 CSSValueList* valueList = toCSSValueList(value);
534 for (unsigned i = 0; i < valueList->length(); ++i) { 534 for (unsigned i = 0; i < valueList->length(); ++i) {
535 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(valueList->i temWithoutBoundsCheck(i)); 535 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(valueList->i tem(i));
536 if (primitiveValue->isShape()) 536 if (primitiveValue->isShape())
537 shape = basicShapeForValue(state, primitiveValue->getShapeValue( )); 537 shape = basicShapeForValue(state, primitiveValue->getShapeValue( ));
538 else if (primitiveValue->getValueID() == CSSValueContentBox 538 else if (primitiveValue->getValueID() == CSSValueContentBox
539 || primitiveValue->getValueID() == CSSValueBorderBox 539 || primitiveValue->getValueID() == CSSValueBorderBox
540 || primitiveValue->getValueID() == CSSValuePaddingBox 540 || primitiveValue->getValueID() == CSSValuePaddingBox
541 || primitiveValue->getValueID() == CSSValueMarginBox) 541 || primitiveValue->getValueID() == CSSValueMarginBox)
542 cssBox = CSSBoxType(*primitiveValue); 542 cssBox = CSSBoxType(*primitiveValue);
543 else 543 else
544 return; 544 return;
545 } 545 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 color, 610 color,
611 svgPaint->uri(), 611 svgPaint->uri(),
612 state.applyPropertyToRegularStyle(), 612 state.applyPropertyToRegularStyle(),
613 state.applyPropertyToVisitedLinkStyle()); 613 state.applyPropertyToVisitedLinkStyle());
614 } 614 }
615 } 615 }
616 {% endmacro %} 616 {% endmacro %}
617 {{apply_svg_paint('CSSPropertyFill', 'FillPaint')}} 617 {{apply_svg_paint('CSSPropertyFill', 'FillPaint')}}
618 {{apply_svg_paint('CSSPropertyStroke', 'StrokePaint')}} 618 {{apply_svg_paint('CSSPropertyStroke', 'StrokePaint')}}
619 } // namespace WebCore 619 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | Source/core/css/CSSValueList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698