Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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->isURI()) { | |
| 575 String cssURLValue = primitiveValue->getStringValue(); | |
| 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) | |
| 578 state.style()->setClipPath(ReferenceClipPathOperation::create(cssURL Value, AtomicString(url.fragmentIdentifier()))); | |
| 579 } | 574 } |
| 575 } else if (value->isURIValue()) { | |
| 576 String cssURLValue = toCSSURIValue(value)->value(); | |
| 577 KURL url = state.document().completeURL(cssURLValue); | |
| 578 // FIXME: It doesn't work with forward or external SVG references (see h ttps://bugs.webkit.org/show_bug.cgi?id=90405) | |
| 579 state.style()->setClipPath(ReferenceClipPathOperation::create(cssURLValu e, AtomicString(url.fragmentIdentifier()))); | |
| 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 // FIXME: We should just make this a converter | 585 // FIXME: We should just make this a converter |
| 586 FilterOperations operations; | 586 FilterOperations operations; |
| 587 FilterOperationResolver::createFilterOperations(*value, state.cssToLengthCon versionData(), operations, state); | 587 FilterOperationResolver::createFilterOperations(*value, state.cssToLengthCon versionData(), operations, state); |
| 588 state.style()->setFilter(operations); | 588 state.style()->setFilter(operations); |
| 589 } | 589 } |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 619 CSSPrimitiveValue* value = toCSSPrimitiveValue(list->item(i)); | 619 CSSPrimitiveValue* value = toCSSPrimitiveValue(list->item(i)); |
| 620 if (value->getValueID() == CSSValueFilled || value->getValueID() == CSSValueOpen) | 620 if (value->getValueID() == CSSValueFilled || value->getValueID() == CSSValueOpen) |
| 621 state.style()->setTextEmphasisFill(*value); | 621 state.style()->setTextEmphasisFill(*value); |
| 622 else | 622 else |
| 623 state.style()->setTextEmphasisMark(*value); | 623 state.style()->setTextEmphasisMark(*value); |
| 624 } | 624 } |
| 625 state.style()->setTextEmphasisCustomMark(nullAtom); | 625 state.style()->setTextEmphasisCustomMark(nullAtom); |
| 626 return; | 626 return; |
| 627 } | 627 } |
| 628 | 628 |
| 629 if (value->isStringValue()) { | |
| 630 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); | |
| 631 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom); | |
| 632 state.style()->setTextEmphasisCustomMark(AtomicString(toCSSStringValue(v alue)->value())); | |
| 633 return; | |
| 634 } | |
| 635 | |
| 629 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 636 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
| 630 | |
| 631 if (primitiveValue->isString()) { | |
| 632 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); | |
| 633 state.style()->setTextEmphasisMark(TextEmphasisMarkCustom); | |
| 634 state.style()->setTextEmphasisCustomMark(AtomicString(primitiveValue->ge tStringValue())); | |
| 635 return; | |
| 636 } | |
| 637 | |
| 638 state.style()->setTextEmphasisCustomMark(nullAtom); | 637 state.style()->setTextEmphasisCustomMark(nullAtom); |
| 639 | 638 |
| 640 if (primitiveValue->getValueID() == CSSValueFilled || primitiveValue->getVal ueID() == CSSValueOpen) { | 639 if (primitiveValue->getValueID() == CSSValueFilled || primitiveValue->getVal ueID() == CSSValueOpen) { |
| 641 state.style()->setTextEmphasisFill(*primitiveValue); | 640 state.style()->setTextEmphasisFill(*primitiveValue); |
| 642 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto); | 641 state.style()->setTextEmphasisMark(TextEmphasisMarkAuto); |
| 643 } else { | 642 } else { |
| 644 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); | 643 state.style()->setTextEmphasisFill(TextEmphasisFillFilled); |
| 645 state.style()->setTextEmphasisMark(*primitiveValue); | 644 state.style()->setTextEmphasisMark(*primitiveValue); |
| 646 } | 645 } |
| 647 } | 646 } |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 729 } | 728 } |
| 730 | 729 |
| 731 if (item->isFunctionValue()) { | 730 if (item->isFunctionValue()) { |
| 732 CSSFunctionValue* functionValue = toCSSFunctionValue(item.get()); | 731 CSSFunctionValue* functionValue = toCSSFunctionValue(item.get()); |
| 733 ASSERT(functionValue->functionType() == CSSValueAttr); | 732 ASSERT(functionValue->functionType() == CSSValueAttr); |
| 734 // FIXME: Can a namespace be specified for an attr(foo)? | 733 // FIXME: Can a namespace be specified for an attr(foo)? |
| 735 if (state.style()->styleType() == NOPSEUDO) | 734 if (state.style()->styleType() == NOPSEUDO) |
| 736 state.style()->setUnique(); | 735 state.style()->setUnique(); |
| 737 else | 736 else |
| 738 state.parentStyle()->setUnique(); | 737 state.parentStyle()->setUnique(); |
| 739 QualifiedName attr(nullAtom, AtomicString(toCSSPrimitiveValue(functi onValue->item(0))->getStringValue()), nullAtom); | 738 QualifiedName attr(nullAtom, AtomicString(toCSSCustomIdentValue(func tionValue->item(0))->value()), nullAtom); |
| 740 const AtomicString& value = state.element()->getAttribute(attr); | 739 const AtomicString& value = state.element()->getAttribute(attr); |
| 741 state.style()->setContent(value.isNull() ? emptyString() : value.str ing(), didSet); | 740 state.style()->setContent(value.isNull() ? emptyString() : value.str ing(), didSet); |
| 742 didSet = true; | 741 didSet = true; |
| 743 } | 742 } |
| 744 | 743 |
| 745 if (!item->isPrimitiveValue()) | 744 if (!item->isPrimitiveValue() && !item->isStringValue()) |
|
alancutter (OOO until 2018)
2015/09/17 02:59:29
Shouldn't this be ||?
sashab
2015/09/17 04:19:49
It's a bit confusing, but it should be &&. "If the
| |
| 746 continue; | 745 continue; |
| 747 | 746 |
| 748 CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get()); | 747 if (item->isStringValue()) { |
| 749 | 748 CSSStringValue* contentValue = toCSSStringValue(item.get()); |
| 750 if (contentValue->isString()) { | 749 state.style()->setContent(contentValue->value().impl(), didSet); |
| 751 state.style()->setContent(contentValue->getStringValue().impl(), did Set); | |
| 752 didSet = true; | 750 didSet = true; |
| 753 } else { | 751 } else { |
| 752 CSSPrimitiveValue* contentValue = toCSSPrimitiveValue(item.get()); | |
| 754 switch (contentValue->getValueID()) { | 753 switch (contentValue->getValueID()) { |
| 755 case CSSValueOpenQuote: | 754 case CSSValueOpenQuote: |
| 756 state.style()->setContent(OPEN_QUOTE, didSet); | 755 state.style()->setContent(OPEN_QUOTE, didSet); |
| 757 didSet = true; | 756 didSet = true; |
| 758 break; | 757 break; |
| 759 case CSSValueCloseQuote: | 758 case CSSValueCloseQuote: |
| 760 state.style()->setContent(CLOSE_QUOTE, didSet); | 759 state.style()->setContent(CLOSE_QUOTE, didSet); |
| 761 didSet = true; | 760 didSet = true; |
| 762 break; | 761 break; |
| 763 case CSSValueNoOpenQuote: | 762 case CSSValueNoOpenQuote: |
| 764 state.style()->setContent(NO_OPEN_QUOTE, didSet); | 763 state.style()->setContent(NO_OPEN_QUOTE, didSet); |
| 765 didSet = true; | 764 didSet = true; |
| 766 break; | 765 break; |
| 767 case CSSValueNoCloseQuote: | 766 case CSSValueNoCloseQuote: |
| 768 state.style()->setContent(NO_CLOSE_QUOTE, didSet); | 767 state.style()->setContent(NO_CLOSE_QUOTE, didSet); |
| 769 didSet = true; | 768 didSet = true; |
| 770 break; | 769 break; |
| 771 default: | 770 default: |
| 772 // normal and none do not have any effect. | 771 // normal and none do not have any effect. |
| 773 { } | 772 { } |
| 774 } | 773 } |
| 775 } | 774 } |
| 776 } | 775 } |
| 777 if (!didSet) | 776 if (!didSet) |
| 778 state.style()->clearContent(); | 777 state.style()->clearContent(); |
| 779 } | 778 } |
| 780 | 779 |
| 781 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, CSSValue* value) | 780 void StyleBuilderFunctions::applyValueCSSPropertyWebkitLocale(StyleResolverState & state, CSSValue* value) |
| 782 { | 781 { |
| 783 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 782 if (value->isPrimitiveValue() && toCSSPrimitiveValue(value)->getValueID() == CSSValueAuto) { |
| 784 if (primitiveValue->getValueID() == CSSValueAuto) { | |
| 785 state.style()->setLocale(nullAtom); | 783 state.style()->setLocale(nullAtom); |
| 786 } else { | 784 } else { |
| 787 ASSERT(primitiveValue->isString()); | 785 state.style()->setLocale(AtomicString(toCSSStringValue(value)->value())) ; |
| 788 state.style()->setLocale(AtomicString(primitiveValue->getStringValue())) ; | |
| 789 } | 786 } |
| 790 state.fontBuilder().setScript(state.style()->locale()); | 787 state.fontBuilder().setScript(state.style()->locale()); |
| 791 } | 788 } |
| 792 | 789 |
| 793 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&) | 790 void StyleBuilderFunctions::applyInitialCSSPropertyWebkitAppRegion(StyleResolver State&) |
| 794 { | 791 { |
| 795 } | 792 } |
| 796 | 793 |
| 797 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&) | 794 void StyleBuilderFunctions::applyInheritCSSPropertyWebkitAppRegion(StyleResolver State&) |
| 798 { | 795 { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 844 return; | 841 return; |
| 845 case CSSValueSuper: | 842 case CSSValueSuper: |
| 846 svgStyle.setBaselineShift(BS_SUPER); | 843 svgStyle.setBaselineShift(BS_SUPER); |
| 847 return; | 844 return; |
| 848 default: | 845 default: |
| 849 ASSERT_NOT_REACHED(); | 846 ASSERT_NOT_REACHED(); |
| 850 } | 847 } |
| 851 } | 848 } |
| 852 | 849 |
| 853 } // namespace blink | 850 } // namespace blink |
| OLD | NEW |