| Index: Source/core/editing/EditingStyle.cpp
|
| diff --git a/Source/core/editing/EditingStyle.cpp b/Source/core/editing/EditingStyle.cpp
|
| index c1c141582fbdfdde9a97c688909e06d72f49bb36..46b80e580f8af140d226952f15f3f32f27f45ce7 100644
|
| --- a/Source/core/editing/EditingStyle.cpp
|
| +++ b/Source/core/editing/EditingStyle.cpp
|
| @@ -127,7 +127,7 @@ static PassRefPtr<MutableStylePropertySet> editingStyleFromComputedStyle(PassRef
|
| return copyEditingProperties(style.get(), type);
|
| }
|
|
|
| -static PassRefPtr<StylePropertySet> getPropertiesNotIn(StylePropertySet* styleWithRedundantProperties, CSSStyleDeclaration* baseStyle);
|
| +static PassRefPtr<MutableStylePropertySet> getPropertiesNotIn(StylePropertySet* styleWithRedundantProperties, CSSStyleDeclaration* baseStyle);
|
| enum LegacyFontSizeMode { AlwaysUseLegacyFontSize, UseLegacyFontSizeOnlyIfPixelValuesMatch };
|
| static int legacyFontSizeFromCSSValue(Document*, CSSPrimitiveValue*, bool shouldUseFixedFontDefaultSize, LegacyFontSizeMode);
|
| static bool isTransparentColorValue(CSSValue*);
|
| @@ -542,7 +542,7 @@ bool EditingStyle::textDirection(WritingDirection& writingDirection) const
|
| return false;
|
| }
|
|
|
| -void EditingStyle::setStyle(PassRefPtr<StylePropertySet> style)
|
| +void EditingStyle::setStyle(PassRefPtr<MutableStylePropertySet> style)
|
| {
|
| m_mutableStyle = style;
|
| // FIXME: We should be able to figure out whether or not font is fixed width for mutable style.
|
| @@ -671,12 +671,12 @@ TriState EditingStyle::triStateOfStyle(EditingStyle* style) const
|
| {
|
| if (!style || !style->m_mutableStyle)
|
| return FalseTriState;
|
| - return triStateOfStyle(static_pointer_cast<MutableStylePropertySet>(style->m_mutableStyle)->ensureCSSStyleDeclaration(), DoNotIgnoreTextOnlyProperties);
|
| + return triStateOfStyle(style->m_mutableStyle->ensureCSSStyleDeclaration(), DoNotIgnoreTextOnlyProperties);
|
| }
|
|
|
| TriState EditingStyle::triStateOfStyle(CSSStyleDeclaration* styleToCompare, ShouldIgnoreTextOnlyProperties shouldIgnoreTextOnlyProperties) const
|
| {
|
| - RefPtr<StylePropertySet> difference = getPropertiesNotIn(m_mutableStyle.get(), styleToCompare);
|
| + RefPtr<MutableStylePropertySet> difference = getPropertiesNotIn(m_mutableStyle.get(), styleToCompare);
|
|
|
| if (shouldIgnoreTextOnlyProperties == IgnoreTextOnlyProperties)
|
| difference->removePropertiesInSet(textOnlyProperties, WTF_ARRAY_LENGTH(textOnlyProperties));
|
| @@ -1108,7 +1108,7 @@ static PassRefPtr<MutableStylePropertySet> styleFromMatchedRulesForElement(Eleme
|
|
|
| void EditingStyle::mergeStyleFromRules(StyledElement* element)
|
| {
|
| - RefPtr<StylePropertySet> styleFromMatchedRules = styleFromMatchedRulesForElement(element,
|
| + RefPtr<MutableStylePropertySet> styleFromMatchedRules = styleFromMatchedRulesForElement(element,
|
| StyleResolver::AuthorCSSRules | StyleResolver::CrossOriginCSSRules);
|
| // Styles from the inline style declaration, held in the variable "style", take precedence
|
| // over those from matched rules.
|
| @@ -1144,7 +1144,7 @@ void EditingStyle::mergeStyleFromRulesForSerialization(StyledElement* element)
|
| m_mutableStyle->mergeAndOverrideOnConflict(fromComputedStyle.get());
|
| }
|
|
|
| -static void removePropertiesInStyle(StylePropertySet* styleToRemovePropertiesFrom, StylePropertySet* style)
|
| +static void removePropertiesInStyle(MutableStylePropertySet* styleToRemovePropertiesFrom, StylePropertySet* style)
|
| {
|
| unsigned propertyCount = style->propertyCount();
|
| Vector<CSSPropertyID> propertiesToRemove(propertyCount);
|
| @@ -1172,7 +1172,7 @@ void EditingStyle::removeStyleFromRulesAndContext(StyledElement* element, Node*
|
| computedStyle->m_mutableStyle->setProperty(CSSPropertyBackgroundColor, CSSValueTransparent);
|
|
|
| removePropertiesInStyle(computedStyle->m_mutableStyle.get(), styleFromMatchedRules.get());
|
| - m_mutableStyle = getPropertiesNotIn(m_mutableStyle.get(), static_pointer_cast<MutableStylePropertySet>(computedStyle->m_mutableStyle)->ensureCSSStyleDeclaration());
|
| + m_mutableStyle = getPropertiesNotIn(m_mutableStyle.get(), computedStyle->m_mutableStyle->ensureCSSStyleDeclaration());
|
| }
|
|
|
| // 3. If this element is a span and has display: inline or float: none, remove them unless they are overriden by rules.
|
| @@ -1331,7 +1331,7 @@ WritingDirection EditingStyle::textDirectionForSelection(const VisibleSelection&
|
| return foundDirection;
|
| }
|
|
|
| -static void reconcileTextDecorationProperties(StylePropertySet* style)
|
| +static void reconcileTextDecorationProperties(MutableStylePropertySet* style)
|
| {
|
| RefPtr<CSSValue> textDecorationsInEffect = style->getPropertyCSSValue(CSSPropertyWebkitTextDecorationsInEffect);
|
| RefPtr<CSSValue> textDecoration = style->getPropertyCSSValue(CSSPropertyTextDecoration);
|
| @@ -1362,7 +1362,7 @@ StyleChange::StyleChange(EditingStyle* style, const Position& position)
|
|
|
| RefPtr<CSSComputedStyleDeclaration> computedStyle = position.computedStyle();
|
| // FIXME: take care of background-color in effect
|
| - RefPtr<StylePropertySet> mutableStyle = getPropertiesNotIn(style->style(), computedStyle.get());
|
| + RefPtr<MutableStylePropertySet> mutableStyle = getPropertiesNotIn(style->style(), computedStyle.get());
|
|
|
| reconcileTextDecorationProperties(mutableStyle.get());
|
| if (!document->frame()->editor()->shouldStyleWithCSS())
|
| @@ -1381,7 +1381,7 @@ StyleChange::StyleChange(EditingStyle* style, const Position& position)
|
| m_cssStyle = mutableStyle->asText().stripWhiteSpace();
|
| }
|
|
|
| -static void setTextDecorationProperty(StylePropertySet* style, const CSSValueList* newTextDecoration, CSSPropertyID propertyID)
|
| +static void setTextDecorationProperty(MutableStylePropertySet* style, const CSSValueList* newTextDecoration, CSSPropertyID propertyID)
|
| {
|
| if (newTextDecoration->length())
|
| style->setProperty(propertyID, newTextDecoration->cssText(), style->propertyIsImportant(propertyID));
|
| @@ -1392,7 +1392,7 @@ static void setTextDecorationProperty(StylePropertySet* style, const CSSValueLis
|
| }
|
| }
|
|
|
| -void StyleChange::extractTextStyles(Document* document, StylePropertySet* style, bool shouldUseFixedFontDefaultSize)
|
| +void StyleChange::extractTextStyles(Document* document, MutableStylePropertySet* style, bool shouldUseFixedFontDefaultSize)
|
| {
|
| ASSERT(style);
|
|
|
| @@ -1457,7 +1457,7 @@ void StyleChange::extractTextStyles(Document* document, StylePropertySet* style,
|
| }
|
| }
|
|
|
| -static void diffTextDecorations(StylePropertySet* style, CSSPropertyID propertID, CSSValue* refTextDecoration)
|
| +static void diffTextDecorations(MutableStylePropertySet* style, CSSPropertyID propertID, CSSValue* refTextDecoration)
|
| {
|
| RefPtr<CSSValue> textDecoration = style->getPropertyCSSValue(propertID);
|
| if (!textDecoration || !textDecoration->isValueList() || !refTextDecoration || !refTextDecoration->isValueList())
|
| @@ -1515,7 +1515,7 @@ static bool fontWeightIsBold(StylePropertySet* style)
|
| return fontWeightIsBold(fontWeight.get());
|
| }
|
|
|
| -PassRefPtr<StylePropertySet> getPropertiesNotIn(StylePropertySet* styleWithRedundantProperties, CSSStyleDeclaration* baseStyle)
|
| +PassRefPtr<MutableStylePropertySet> getPropertiesNotIn(StylePropertySet* styleWithRedundantProperties, CSSStyleDeclaration* baseStyle)
|
| {
|
| ASSERT(styleWithRedundantProperties);
|
| ASSERT(baseStyle);
|
| @@ -1540,7 +1540,7 @@ PassRefPtr<StylePropertySet> getPropertiesNotIn(StylePropertySet* styleWithRedun
|
| if (baseStyle->getPropertyCSSValueInternal(CSSPropertyBackgroundColor) && getRGBABackgroundColor(result.get()) == getRGBABackgroundColor(baseStyle))
|
| result->removeProperty(CSSPropertyBackgroundColor);
|
|
|
| - return result;
|
| + return result.release();
|
| }
|
|
|
| int getIdentifierValue(StylePropertySet* style, CSSPropertyID propertyID)
|
|
|