[Webkit-unassigned] [Bug 131093] Move removeEquivalentProperties functions to EditingStyle
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Apr 29 10:32:19 PDT 2014
https://bugs.webkit.org/show_bug.cgi?id=131093
--- Comment #9 from Zsolt Borbely <zsborbely.u-szeged at partner.samsung.com> 2014-04-29 10:32:41 PST ---
(From update of attachment 230297)
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 6c4749e..9a8531e 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2014-04-29 Zsolt Borbely <zsborbely.u-szeged at partner.samsung.com>
+
+ Move removeEquivalentProperties functions to EditingStyle
+ https://bugs.webkit.org/show_bug.cgi?id=131093
+
+ Reviewed by NOBODY (OOPS!).
+
+ Moved the removeEquivalentProperties functions
+ from StyleProperties to EditingStyle class.
+
+ * css/StyleProperties.cpp:
+ (WebCore::MutableStyleProperties::removeEquivalentProperties): Deleted.
+ * css/StyleProperties.h:
+ * editing/EditingStyle.cpp:
+ (WebCore::EditingStyle::removeStyleAddedByNode):
+ (WebCore::EditingStyle::removeStyleConflictingWithStyleOfNode):
+ (WebCore::EditingStyle::prepareToApplyAt):
+ (WebCore::EditingStyle::removeEquivalentProperties):
+ (WebCore::extractPropertiesNotIn):
+ * editing/EditingStyle.h:
+
2014-04-28 Carlos Garcia Campos <cgarcia at igalia.com>
Unreviewed. Update GObject DOM bindings symbols file.
diff --git a/Source/WebCore/css/StyleProperties.cpp b/Source/WebCore/css/StyleProperties.cpp
index 0fd8d16..c06784a 100644
--- a/Source/WebCore/css/StyleProperties.cpp
+++ b/Source/WebCore/css/StyleProperties.cpp
@@ -1173,34 +1173,6 @@ bool StyleProperties::propertyMatches(CSSPropertyID propertyID, const CSSValue*
return propertyAt(foundPropertyIndex).value()->equals(*propertyValue);
}
-void MutableStyleProperties::removeEquivalentProperties(const StyleProperties* style)
-{
- Vector<CSSPropertyID> propertiesToRemove;
- unsigned size = m_propertyVector.size();
- for (unsigned i = 0; i < size; ++i) {
- PropertyReference property = propertyAt(i);
- if (style->propertyMatches(property.id(), property.value()))
- propertiesToRemove.append(property.id());
- }
- // FIXME: This should use mass removal.
- for (unsigned i = 0; i < propertiesToRemove.size(); ++i)
- removeProperty(propertiesToRemove[i]);
-}
-
-void MutableStyleProperties::removeEquivalentProperties(const ComputedStyleExtractor* computedStyle)
-{
- Vector<CSSPropertyID> propertiesToRemove;
- unsigned size = m_propertyVector.size();
- for (unsigned i = 0; i < size; ++i) {
- PropertyReference property = propertyAt(i);
- if (computedStyle->propertyMatches(property.id(), property.value()))
- propertiesToRemove.append(property.id());
- }
- // FIXME: This should use mass removal.
- for (unsigned i = 0; i < propertiesToRemove.size(); ++i)
- removeProperty(propertiesToRemove[i]);
-}
-
PassRef<MutableStyleProperties> StyleProperties::mutableCopy() const
{
return adoptRef(*new MutableStyleProperties(*this));
diff --git a/Source/WebCore/css/StyleProperties.h b/Source/WebCore/css/StyleProperties.h
index f958c84..c9d7c57 100644
--- a/Source/WebCore/css/StyleProperties.h
+++ b/Source/WebCore/css/StyleProperties.h
@@ -211,10 +211,6 @@ public:
void removeBlockProperties();
bool removePropertiesInSet(const CSSPropertyID* set, unsigned length);
- // FIXME: These two can be moved to EditingStyle.cpp
- void removeEquivalentProperties(const StyleProperties*);
- void removeEquivalentProperties(const ComputedStyleExtractor*);
-
void mergeAndOverrideOnConflict(const StyleProperties&);
void clear();
diff --git a/Source/WebCore/editing/EditingStyle.cpp b/Source/WebCore/editing/EditingStyle.cpp
index 000cdbd..a4f6334 100644
--- a/Source/WebCore/editing/EditingStyle.cpp
+++ b/Source/WebCore/editing/EditingStyle.cpp
@@ -593,8 +593,8 @@ void EditingStyle::removeStyleAddedByNode(Node* node)
return;
RefPtr<MutableStyleProperties> parentStyle = copyPropertiesFromComputedStyle(node->parentNode(), EditingPropertiesInEffect);
RefPtr<MutableStyleProperties> nodeStyle = copyPropertiesFromComputedStyle(node, EditingPropertiesInEffect);
- nodeStyle->removeEquivalentProperties(parentStyle.get());
- m_mutableStyle->removeEquivalentProperties(nodeStyle.get());
+ removeEquivalentProperties(*parentStyle);
+ removeEquivalentProperties(*nodeStyle);
}
void EditingStyle::removeStyleConflictingWithStyleOfNode(Node* node)
@@ -603,12 +603,13 @@ void EditingStyle::removeStyleConflictingWithStyleOfNode(Node* node)
return;
RefPtr<MutableStyleProperties> parentStyle = copyPropertiesFromComputedStyle(node->parentNode(), EditingPropertiesInEffect);
- RefPtr<MutableStyleProperties> nodeStyle = copyPropertiesFromComputedStyle(node, EditingPropertiesInEffect);
- nodeStyle->removeEquivalentProperties(parentStyle.get());
+ RefPtr<EditingStyle> nodeStyle = EditingStyle::create(node, EditingPropertiesInEffect);
+ nodeStyle->removeEquivalentProperties(*parentStyle);
- unsigned propertyCount = nodeStyle->propertyCount();
+ MutableStyleProperties* style = nodeStyle->style();
+ unsigned propertyCount = style->propertyCount();
for (unsigned i = 0; i < propertyCount; ++i)
- m_mutableStyle->removeProperty(nodeStyle->propertyAt(i).id());
+ m_mutableStyle->removeProperty(style->propertyAt(i).id());
}
void EditingStyle::collapseTextDecorationProperties()
@@ -916,7 +917,7 @@ void EditingStyle::prepareToApplyAt(const Position& position, ShouldPreserveWrit
direction = m_mutableStyle->getPropertyCSSValue(CSSPropertyDirection);
}
- m_mutableStyle->removeEquivalentProperties(styleAtPosition);
+ removeEquivalentProperties(*styleAtPosition);
if (textAlignResolvingStartAndEnd(m_mutableStyle.get()) == textAlignResolvingStartAndEnd(styleAtPosition))
m_mutableStyle->removeProperty(CSSPropertyTextAlign);
@@ -1191,6 +1192,19 @@ void EditingStyle::removePropertiesInElementDefaultStyle(Element* element)
removePropertiesInStyle(m_mutableStyle.get(), defaultStyle.get());
}
+template<typename T>
+void EditingStyle::removeEquivalentProperties(const T& style)
+{
+ Vector<CSSPropertyID> propertiesToRemove;
+ for (auto& property : m_mutableStyle->m_propertyVector) {
+ if (style.propertyMatches(property.id(), property.value()))
+ propertiesToRemove.append(property.id());
+ }
+ // FIXME: This should use mass removal.
+ for (auto& property : propertiesToRemove)
+ m_mutableStyle->removeProperty(property);
+}
+
void EditingStyle::forceInline()
{
if (!m_mutableStyle)
@@ -1542,28 +1556,28 @@ template<typename T>
static PassRefPtr<MutableStyleProperties> extractPropertiesNotIn(StyleProperties* styleWithRedundantProperties, T* baseStyle)
{
ASSERT(styleWithRedundantProperties);
- RefPtr<MutableStyleProperties> result = styleWithRedundantProperties->mutableCopy();
-
- result->removeEquivalentProperties(baseStyle);
+ RefPtr<EditingStyle> result = EditingStyle::create(styleWithRedundantProperties);
+ result->removeEquivalentProperties(*baseStyle);
+ RefPtr<MutableStyleProperties> mutableStyle = result->style();
RefPtr<CSSValue> baseTextDecorationsInEffect = extractPropertyValue(baseStyle, CSSPropertyWebkitTextDecorationsInEffect);
- diffTextDecorations(result.get(), CSSPropertyTextDecoration, baseTextDecorationsInEffect.get());
- diffTextDecorations(result.get(), CSSPropertyWebkitTextDecorationsInEffect, baseTextDecorationsInEffect.get());
+ diffTextDecorations(mutableStyle.get(), CSSPropertyTextDecoration, baseTextDecorationsInEffect.get());
+ diffTextDecorations(mutableStyle.get(), CSSPropertyWebkitTextDecorationsInEffect, baseTextDecorationsInEffect.get());
- if (extractPropertyValue(baseStyle, CSSPropertyFontWeight) && fontWeightIsBold(result.get()) == fontWeightIsBold(baseStyle))
- result->removeProperty(CSSPropertyFontWeight);
+ if (extractPropertyValue(baseStyle, CSSPropertyFontWeight) && fontWeightIsBold(mutableStyle.get()) == fontWeightIsBold(baseStyle))
+ mutableStyle->removeProperty(CSSPropertyFontWeight);
- if (extractPropertyValue(baseStyle, CSSPropertyColor) && textColorFromStyle(result.get()) == textColorFromStyle(baseStyle))
- result->removeProperty(CSSPropertyColor);
+ if (extractPropertyValue(baseStyle, CSSPropertyColor) && textColorFromStyle(mutableStyle.get()) == textColorFromStyle(baseStyle))
+ mutableStyle->removeProperty(CSSPropertyColor);
if (extractPropertyValue(baseStyle, CSSPropertyTextAlign)
- && textAlignResolvingStartAndEnd(result.get()) == textAlignResolvingStartAndEnd(baseStyle))
- result->removeProperty(CSSPropertyTextAlign);
+ && textAlignResolvingStartAndEnd(mutableStyle.get()) == textAlignResolvingStartAndEnd(baseStyle))
+ mutableStyle->removeProperty(CSSPropertyTextAlign);
- if (extractPropertyValue(baseStyle, CSSPropertyBackgroundColor) && backgroundColorFromStyle(result.get()) == backgroundColorFromStyle(baseStyle))
- result->removeProperty(CSSPropertyBackgroundColor);
+ if (extractPropertyValue(baseStyle, CSSPropertyBackgroundColor) && backgroundColorFromStyle(mutableStyle.get()) == backgroundColorFromStyle(baseStyle))
+ mutableStyle->removeProperty(CSSPropertyBackgroundColor);
- return result.release();
+ return mutableStyle.release();
}
template<typename T>
diff --git a/Source/WebCore/editing/EditingStyle.h b/Source/WebCore/editing/EditingStyle.h
index 8200903..bde713e 100644
--- a/Source/WebCore/editing/EditingStyle.h
+++ b/Source/WebCore/editing/EditingStyle.h
@@ -48,6 +48,7 @@ class CSSStyleDeclaration;
class CSSComputedStyleDeclaration;
class CSSPrimitiveValue;
class CSSValue;
+class ComputedStyleExtractor;
class Document;
class Element;
class HTMLElement;
@@ -108,6 +109,8 @@ public:
void removeBlockProperties();
void removeStyleAddedByNode(Node*);
void removeStyleConflictingWithStyleOfNode(Node*);
+ template<typename T>
+ void removeEquivalentProperties(const T&);
void collapseTextDecorationProperties();
enum ShouldIgnoreTextOnlyProperties { IgnoreTextOnlyProperties, DoNotIgnoreTextOnlyProperties };
TriState triStateOfStyle(EditingStyle*) const;
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list