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

Side by Side Diff: Source/WebCore/css/StylePropertySet.cpp

Issue 12470005: Merge 144626 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 9 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 | « Source/WebCore/css/StylePropertySet.h ('k') | Source/WebCore/css/StylePropertyShorthand.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 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 case CSSPropertyWebkitFlexFlow: 165 case CSSPropertyWebkitFlexFlow:
166 return getShorthandValue(webkitFlexFlowShorthand()); 166 return getShorthandValue(webkitFlexFlowShorthand());
167 case CSSPropertyFont: 167 case CSSPropertyFont:
168 return fontValue(); 168 return fontValue();
169 case CSSPropertyMargin: 169 case CSSPropertyMargin:
170 return get4Values(marginShorthand()); 170 return get4Values(marginShorthand());
171 case CSSPropertyOverflow: 171 case CSSPropertyOverflow:
172 return getCommonValue(overflowShorthand()); 172 return getCommonValue(overflowShorthand());
173 case CSSPropertyPadding: 173 case CSSPropertyPadding:
174 return get4Values(paddingShorthand()); 174 return get4Values(paddingShorthand());
175 case CSSPropertyTransition:
176 return getLayeredShorthandValue(transitionShorthand());
175 case CSSPropertyListStyle: 177 case CSSPropertyListStyle:
176 return getShorthandValue(listStyleShorthand()); 178 return getShorthandValue(listStyleShorthand());
177 case CSSPropertyWebkitMaskPosition: 179 case CSSPropertyWebkitMaskPosition:
178 return getLayeredShorthandValue(webkitMaskPositionShorthand()); 180 return getLayeredShorthandValue(webkitMaskPositionShorthand());
179 case CSSPropertyWebkitMaskRepeat: 181 case CSSPropertyWebkitMaskRepeat:
180 return getLayeredShorthandValue(webkitMaskRepeatShorthand()); 182 return getLayeredShorthandValue(webkitMaskRepeatShorthand());
181 case CSSPropertyWebkitMask: 183 case CSSPropertyWebkitMask:
182 return getLayeredShorthandValue(webkitMaskShorthand()); 184 return getLayeredShorthandValue(webkitMaskShorthand());
183 case CSSPropertyWebkitTextEmphasis: 185 case CSSPropertyWebkitTextEmphasis:
184 return getShorthandValue(webkitTextEmphasisShorthand()); 186 return getShorthandValue(webkitTextEmphasisShorthand());
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 return 0; 573 return 0;
572 return propertyAt(foundPropertyIndex).value(); 574 return propertyAt(foundPropertyIndex).value();
573 } 575 }
574 576
575 bool StylePropertySet::removeShorthandProperty(CSSPropertyID propertyID) 577 bool StylePropertySet::removeShorthandProperty(CSSPropertyID propertyID)
576 { 578 {
577 ASSERT(isMutable()); 579 ASSERT(isMutable());
578 StylePropertyShorthand shorthand = shorthandForProperty(propertyID); 580 StylePropertyShorthand shorthand = shorthandForProperty(propertyID);
579 if (!shorthand.length()) 581 if (!shorthand.length())
580 return false; 582 return false;
581 return removePropertiesInSet(shorthand.properties(), shorthand.length()); 583
584 bool ret = removePropertiesInSet(shorthand.properties(), shorthand.length()) ;
585
586 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(propertyID);
587 if (prefixingVariant == propertyID)
588 return ret;
589
590 StylePropertyShorthand shorthandPrefixingVariant = shorthandForProperty(pref ixingVariant);
591 return removePropertiesInSet(shorthandPrefixingVariant.properties(), shortha ndPrefixingVariant.length());
582 } 592 }
583 593
584 bool StylePropertySet::removeProperty(CSSPropertyID propertyID, String* returnTe xt) 594 bool StylePropertySet::removeProperty(CSSPropertyID propertyID, String* returnTe xt)
585 { 595 {
586 ASSERT(isMutable()); 596 ASSERT(isMutable());
587 if (removeShorthandProperty(propertyID)) { 597 if (removeShorthandProperty(propertyID)) {
588 // FIXME: Return an equivalent shorthand when possible. 598 // FIXME: Return an equivalent shorthand when possible.
589 if (returnText) 599 if (returnText)
590 *returnText = ""; 600 *returnText = "";
591 return true; 601 return true;
592 } 602 }
593 603
594 int foundPropertyIndex = findPropertyIndex(propertyID); 604 int foundPropertyIndex = findPropertyIndex(propertyID);
595 if (foundPropertyIndex == -1) { 605 if (foundPropertyIndex == -1) {
596 if (returnText) 606 if (returnText)
597 *returnText = ""; 607 *returnText = "";
598 return false; 608 return false;
599 } 609 }
600 610
601 if (returnText) 611 if (returnText)
602 *returnText = propertyAt(foundPropertyIndex).value()->cssText(); 612 *returnText = propertyAt(foundPropertyIndex).value()->cssText();
603 613
604 // A more efficient removal strategy would involve marking entries as empty 614 // A more efficient removal strategy would involve marking entries as empty
605 // and sweeping them when the vector grows too big. 615 // and sweeping them when the vector grows too big.
606 mutablePropertyVector().remove(foundPropertyIndex); 616 mutablePropertyVector().remove(foundPropertyIndex);
607 617
618 removePrefixedOrUnprefixedProperty(propertyID);
619
608 return true; 620 return true;
609 } 621 }
610 622
623 void StylePropertySet::removePrefixedOrUnprefixedProperty(CSSPropertyID property ID)
624 {
625 int foundPropertyIndex = findPropertyIndex(prefixingVariantForPropertyId(pro pertyID));
626 if (foundPropertyIndex == -1)
627 return;
628 mutablePropertyVector().remove(foundPropertyIndex);
629 }
630
611 bool StylePropertySet::propertyIsImportant(CSSPropertyID propertyID) const 631 bool StylePropertySet::propertyIsImportant(CSSPropertyID propertyID) const
612 { 632 {
613 int foundPropertyIndex = findPropertyIndex(propertyID); 633 int foundPropertyIndex = findPropertyIndex(propertyID);
614 if (foundPropertyIndex != -1) 634 if (foundPropertyIndex != -1)
615 return propertyAt(foundPropertyIndex).isImportant(); 635 return propertyAt(foundPropertyIndex).isImportant();
616 636
617 StylePropertyShorthand shorthand = shorthandForProperty(propertyID); 637 StylePropertyShorthand shorthand = shorthandForProperty(propertyID);
618 if (!shorthand.length()) 638 if (!shorthand.length())
619 return false; 639 return false;
620 640
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 mutablePropertyVector().append(CSSProperty(shorthand.properties()[i], va lue, important)); 692 mutablePropertyVector().append(CSSProperty(shorthand.properties()[i], va lue, important));
673 } 693 }
674 694
675 void StylePropertySet::setProperty(const CSSProperty& property, CSSProperty* slo t) 695 void StylePropertySet::setProperty(const CSSProperty& property, CSSProperty* slo t)
676 { 696 {
677 ASSERT(isMutable()); 697 ASSERT(isMutable());
678 if (!removeShorthandProperty(property.id())) { 698 if (!removeShorthandProperty(property.id())) {
679 CSSProperty* toReplace = slot ? slot : findMutableCSSPropertyWithID(prop erty.id()); 699 CSSProperty* toReplace = slot ? slot : findMutableCSSPropertyWithID(prop erty.id());
680 if (toReplace) { 700 if (toReplace) {
681 *toReplace = property; 701 *toReplace = property;
702 setPrefixingVariantProperty(property);
682 return; 703 return;
683 } 704 }
684 } 705 }
706 appendPrefixingVariantProperty(property);
707 }
708
709 void StylePropertySet::appendPrefixingVariantProperty(const CSSProperty& propert y)
710 {
685 mutablePropertyVector().append(property); 711 mutablePropertyVector().append(property);
712 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id() );
713 if (prefixingVariant == property.id())
714 return;
715 mutablePropertyVector().append(CSSProperty(prefixingVariant, property.value( ), property.isImportant(), property.shorthandID(), property.metadata().m_implici t));
716 }
717
718 void StylePropertySet::setPrefixingVariantProperty(const CSSProperty& property)
719 {
720 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id() );
721 CSSProperty* toReplace = findMutableCSSPropertyWithID(prefixingVariant);
722 if (toReplace)
723 *toReplace = CSSProperty(prefixingVariant, property.value(), property.is Important(), property.shorthandID(), property.metadata().m_implicit);
686 } 724 }
687 725
688 bool StylePropertySet::setProperty(CSSPropertyID propertyID, int identifier, boo l important) 726 bool StylePropertySet::setProperty(CSSPropertyID propertyID, int identifier, boo l important)
689 { 727 {
690 ASSERT(isMutable()); 728 ASSERT(isMutable());
691 setProperty(CSSProperty(propertyID, cssValuePool().createIdentifierValue(ide ntifier), important)); 729 setProperty(CSSProperty(propertyID, cssValuePool().createIdentifierValue(ide ntifier), important));
692 return true; 730 return true;
693 } 731 }
694 732
695 void StylePropertySet::parseDeclaration(const String& styleDeclaration, StyleShe etContents* contextStyleSheet) 733 void StylePropertySet::parseDeclaration(const String& styleDeclaration, StyleShe etContents* contextStyleSheet)
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 case CSSPropertyOverflowX: 864 case CSSPropertyOverflowX:
827 case CSSPropertyOverflowY: 865 case CSSPropertyOverflowY:
828 shorthandPropertyID = CSSPropertyOverflow; 866 shorthandPropertyID = CSSPropertyOverflow;
829 break; 867 break;
830 case CSSPropertyPaddingTop: 868 case CSSPropertyPaddingTop:
831 case CSSPropertyPaddingRight: 869 case CSSPropertyPaddingRight:
832 case CSSPropertyPaddingBottom: 870 case CSSPropertyPaddingBottom:
833 case CSSPropertyPaddingLeft: 871 case CSSPropertyPaddingLeft:
834 shorthandPropertyID = CSSPropertyPadding; 872 shorthandPropertyID = CSSPropertyPadding;
835 break; 873 break;
874 case CSSPropertyTransitionProperty:
875 case CSSPropertyTransitionDuration:
876 case CSSPropertyTransitionTimingFunction:
877 case CSSPropertyTransitionDelay:
878 shorthandPropertyID = CSSPropertyTransition;
879 break;
836 case CSSPropertyWebkitAnimationName: 880 case CSSPropertyWebkitAnimationName:
837 case CSSPropertyWebkitAnimationDuration: 881 case CSSPropertyWebkitAnimationDuration:
838 case CSSPropertyWebkitAnimationTimingFunction: 882 case CSSPropertyWebkitAnimationTimingFunction:
839 case CSSPropertyWebkitAnimationDelay: 883 case CSSPropertyWebkitAnimationDelay:
840 case CSSPropertyWebkitAnimationIterationCount: 884 case CSSPropertyWebkitAnimationIterationCount:
841 case CSSPropertyWebkitAnimationDirection: 885 case CSSPropertyWebkitAnimationDirection:
842 case CSSPropertyWebkitAnimationFillMode: 886 case CSSPropertyWebkitAnimationFillMode:
843 shorthandPropertyID = CSSPropertyWebkitAnimation; 887 shorthandPropertyID = CSSPropertyWebkitAnimation;
844 break; 888 break;
845 case CSSPropertyWebkitFlexDirection: 889 case CSSPropertyWebkitFlexDirection:
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
984 void StylePropertySet::mergeAndOverrideOnConflict(const StylePropertySet* other) 1028 void StylePropertySet::mergeAndOverrideOnConflict(const StylePropertySet* other)
985 { 1029 {
986 ASSERT(isMutable()); 1030 ASSERT(isMutable());
987 unsigned size = other->propertyCount(); 1031 unsigned size = other->propertyCount();
988 for (unsigned n = 0; n < size; ++n) { 1032 for (unsigned n = 0; n < size; ++n) {
989 PropertyReference toMerge = other->propertyAt(n); 1033 PropertyReference toMerge = other->propertyAt(n);
990 CSSProperty* old = findMutableCSSPropertyWithID(toMerge.id()); 1034 CSSProperty* old = findMutableCSSPropertyWithID(toMerge.id());
991 if (old) 1035 if (old)
992 setProperty(toMerge.toCSSProperty(), old); 1036 setProperty(toMerge.toCSSProperty(), old);
993 else 1037 else
994 mutablePropertyVector().append(toMerge.toCSSProperty()); 1038 appendPrefixingVariantProperty(toMerge.toCSSProperty());
995 } 1039 }
996 } 1040 }
997 1041
998 void StylePropertySet::addSubresourceStyleURLs(ListHashSet<KURL>& urls, StyleShe etContents* contextStyleSheet) const 1042 void StylePropertySet::addSubresourceStyleURLs(ListHashSet<KURL>& urls, StyleShe etContents* contextStyleSheet) const
999 { 1043 {
1000 unsigned size = propertyCount(); 1044 unsigned size = propertyCount();
1001 for (unsigned i = 0; i < size; ++i) 1045 for (unsigned i = 0; i < size; ++i)
1002 propertyAt(i).value()->addSubresourceStyleURLs(urls, contextStyleSheet); 1046 propertyAt(i).value()->addSubresourceStyleURLs(urls, contextStyleSheet);
1003 } 1047 }
1004 1048
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 result.appendLiteral(": "); 1306 result.appendLiteral(": ");
1263 result.append(propertyValue()->cssText()); 1307 result.append(propertyValue()->cssText());
1264 if (isImportant()) 1308 if (isImportant())
1265 result.appendLiteral(" !important"); 1309 result.appendLiteral(" !important");
1266 result.append(';'); 1310 result.append(';');
1267 return result.toString(); 1311 return result.toString();
1268 } 1312 }
1269 1313
1270 1314
1271 } // namespace WebCore 1315 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/css/StylePropertySet.h ('k') | Source/WebCore/css/StylePropertyShorthand.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698