| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008, 2009 Apple Computer, Inc. | 2 * Copyright (C) 2007, 2008, 2009 Apple Computer, Inc. |
| 3 * Copyright (C) 2010, 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2010, 2011 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 | 629 |
| 630 RefPtr<MutableStylePropertySet> parentStyle = editingStyleFromComputedStyle(
CSSComputedStyleDeclaration::create(node->parentNode()), AllEditingProperties); | 630 RefPtr<MutableStylePropertySet> parentStyle = editingStyleFromComputedStyle(
CSSComputedStyleDeclaration::create(node->parentNode()), AllEditingProperties); |
| 631 RefPtr<MutableStylePropertySet> nodeStyle = editingStyleFromComputedStyle(CS
SComputedStyleDeclaration::create(node), AllEditingProperties); | 631 RefPtr<MutableStylePropertySet> nodeStyle = editingStyleFromComputedStyle(CS
SComputedStyleDeclaration::create(node), AllEditingProperties); |
| 632 nodeStyle->removeEquivalentProperties(parentStyle->ensureCSSStyleDeclaration
()); | 632 nodeStyle->removeEquivalentProperties(parentStyle->ensureCSSStyleDeclaration
()); |
| 633 | 633 |
| 634 unsigned propertyCount = nodeStyle->propertyCount(); | 634 unsigned propertyCount = nodeStyle->propertyCount(); |
| 635 for (unsigned i = 0; i < propertyCount; ++i) | 635 for (unsigned i = 0; i < propertyCount; ++i) |
| 636 m_mutableStyle->removeProperty(nodeStyle->propertyAt(i).id()); | 636 m_mutableStyle->removeProperty(nodeStyle->propertyAt(i).id()); |
| 637 } | 637 } |
| 638 | 638 |
| 639 void EditingStyle::removeNonEditingProperties() | |
| 640 { | |
| 641 if (m_mutableStyle) | |
| 642 m_mutableStyle = copyEditingProperties(m_mutableStyle.get()); | |
| 643 } | |
| 644 | |
| 645 void EditingStyle::collapseTextDecorationProperties() | 639 void EditingStyle::collapseTextDecorationProperties() |
| 646 { | 640 { |
| 647 if (!m_mutableStyle) | 641 if (!m_mutableStyle) |
| 648 return; | 642 return; |
| 649 | 643 |
| 650 RefPtr<CSSValue> textDecorationsInEffect = m_mutableStyle->getPropertyCSSVal
ue(CSSPropertyWebkitTextDecorationsInEffect); | 644 RefPtr<CSSValue> textDecorationsInEffect = m_mutableStyle->getPropertyCSSVal
ue(CSSPropertyWebkitTextDecorationsInEffect); |
| 651 if (!textDecorationsInEffect) | 645 if (!textDecorationsInEffect) |
| 652 return; | 646 return; |
| 653 | 647 |
| 654 if (textDecorationsInEffect->isValueList()) | 648 if (textDecorationsInEffect->isValueList()) |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 } | 987 } |
| 994 } | 988 } |
| 995 | 989 |
| 996 static inline bool elementMatchesAndPropertyIsNotInInlineStyleDecl(const HTMLEle
mentEquivalent* equivalent, const Element* element, | 990 static inline bool elementMatchesAndPropertyIsNotInInlineStyleDecl(const HTMLEle
mentEquivalent* equivalent, const Element* element, |
| 997 EditingStyle::CSSPropertyOverrideMode mode, StylePropertySet* style) | 991 EditingStyle::CSSPropertyOverrideMode mode, StylePropertySet* style) |
| 998 { | 992 { |
| 999 return equivalent->matches(element) && (!element->inlineStyle() || !equivale
nt->propertyExistsInStyle(element->inlineStyle())) | 993 return equivalent->matches(element) && (!element->inlineStyle() || !equivale
nt->propertyExistsInStyle(element->inlineStyle())) |
| 1000 && (mode == EditingStyle::OverrideValues || !equivalent->propertyExistsI
nStyle(style)); | 994 && (mode == EditingStyle::OverrideValues || !equivalent->propertyExistsI
nStyle(style)); |
| 1001 } | 995 } |
| 1002 | 996 |
| 997 static PassRefPtr<MutableStylePropertySet> extractEditingProperties(const StyleP
ropertySet* style, EditingStyle::PropertiesToInclude propertiesToInclude) |
| 998 { |
| 999 if (!style) |
| 1000 return 0; |
| 1001 |
| 1002 switch (propertiesToInclude) { |
| 1003 case EditingStyle::AllProperties: |
| 1004 case EditingStyle::EditingPropertiesInEffect: |
| 1005 return copyEditingProperties(style, AllEditingProperties); |
| 1006 case EditingStyle::OnlyEditingInheritableProperties: |
| 1007 return copyEditingProperties(style, OnlyInheritableEditingProperties); |
| 1008 } |
| 1009 |
| 1010 ASSERT_NOT_REACHED(); |
| 1011 return 0; |
| 1012 } |
| 1013 |
| 1003 void EditingStyle::mergeInlineAndImplicitStyleOfElement(Element* element, CSSPro
pertyOverrideMode mode, PropertiesToInclude propertiesToInclude) | 1014 void EditingStyle::mergeInlineAndImplicitStyleOfElement(Element* element, CSSPro
pertyOverrideMode mode, PropertiesToInclude propertiesToInclude) |
| 1004 { | 1015 { |
| 1005 RefPtr<EditingStyle> styleFromRules = EditingStyle::create(); | 1016 RefPtr<EditingStyle> styleFromRules = EditingStyle::create(); |
| 1006 styleFromRules->mergeStyleFromRulesForSerialization(element); | 1017 styleFromRules->mergeStyleFromRulesForSerialization(element); |
| 1007 styleFromRules->removeNonEditingProperties(); | 1018 styleFromRules->m_mutableStyle = extractEditingProperties(styleFromRules->m_
mutableStyle.get(), propertiesToInclude); |
| 1008 mergeStyle(styleFromRules->m_mutableStyle.get(), mode); | 1019 mergeStyle(styleFromRules->m_mutableStyle.get(), mode); |
| 1009 | 1020 |
| 1010 mergeInlineStyleOfElement(element, mode, propertiesToInclude); | 1021 mergeInlineStyleOfElement(element, mode, propertiesToInclude); |
| 1011 | 1022 |
| 1012 const Vector<OwnPtr<HTMLElementEquivalent> >& elementEquivalents = htmlEleme
ntEquivalents(); | 1023 const Vector<OwnPtr<HTMLElementEquivalent> >& elementEquivalents = htmlEleme
ntEquivalents(); |
| 1013 for (size_t i = 0; i < elementEquivalents.size(); ++i) { | 1024 for (size_t i = 0; i < elementEquivalents.size(); ++i) { |
| 1014 if (elementMatchesAndPropertyIsNotInInlineStyleDecl(elementEquivalents[i
].get(), element, mode, m_mutableStyle.get())) | 1025 if (elementMatchesAndPropertyIsNotInInlineStyleDecl(elementEquivalents[i
].get(), element, mode, m_mutableStyle.get())) |
| 1015 elementEquivalents[i]->addToStyle(element, this); | 1026 elementEquivalents[i]->addToStyle(element, this); |
| 1016 } | 1027 } |
| 1017 | 1028 |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1621 { | 1632 { |
| 1622 for (Node* ancestor = node; ancestor; ancestor = ancestor->parentNode()) { | 1633 for (Node* ancestor = node; ancestor; ancestor = ancestor->parentNode()) { |
| 1623 RefPtr<CSSComputedStyleDeclaration> ancestorStyle = CSSComputedStyleDecl
aration::create(ancestor); | 1634 RefPtr<CSSComputedStyleDeclaration> ancestorStyle = CSSComputedStyleDecl
aration::create(ancestor); |
| 1624 if (!hasTransparentBackgroundColor(ancestorStyle.get())) | 1635 if (!hasTransparentBackgroundColor(ancestorStyle.get())) |
| 1625 return ancestorStyle->getPropertyCSSValue(CSSPropertyBackgroundColor
); | 1636 return ancestorStyle->getPropertyCSSValue(CSSPropertyBackgroundColor
); |
| 1626 } | 1637 } |
| 1627 return 0; | 1638 return 0; |
| 1628 } | 1639 } |
| 1629 | 1640 |
| 1630 } | 1641 } |
| OLD | NEW |