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

Side by Side Diff: third_party/WebKit/Source/core/editing/EditingStyle.cpp

Issue 1858753003: Remove RawPtr from core/css (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 if (type == AllEditingProperties) 133 if (type == AllEditingProperties)
134 return style->copyPropertiesInSet(allEditingProperties()); 134 return style->copyPropertiesInSet(allEditingProperties());
135 return style->copyPropertiesInSet(inheritableEditingProperties()); 135 return style->copyPropertiesInSet(inheritableEditingProperties());
136 } 136 }
137 137
138 static inline bool isEditingProperty(int id) 138 static inline bool isEditingProperty(int id)
139 { 139 {
140 return allEditingProperties().contains(static_cast<CSSPropertyID>(id)); 140 return allEditingProperties().contains(static_cast<CSSPropertyID>(id));
141 } 141 }
142 142
143 static RawPtr<MutableStylePropertySet> editingStyleFromComputedStyle(RawPtr<CSSC omputedStyleDeclaration> style, EditingPropertiesType type = OnlyInheritableEdit ingProperties) 143 static MutableStylePropertySet* editingStyleFromComputedStyle(RawPtr<CSSComputed StyleDeclaration> style, EditingPropertiesType type = OnlyInheritableEditingProp erties)
144 { 144 {
145 if (!style) 145 if (!style)
146 return MutableStylePropertySet::create(HTMLQuirksMode); 146 return MutableStylePropertySet::create(HTMLQuirksMode);
147 return copyEditingProperties(style.get(), type); 147 return copyEditingProperties(style.get(), type);
148 } 148 }
149 149
150 static RawPtr<CSSComputedStyleDeclaration> ensureComputedStyle(const Position& p osition) 150 static RawPtr<CSSComputedStyleDeclaration> ensureComputedStyle(const Position& p osition)
151 { 151 {
152 Element* elem = associatedElementOf(position); 152 Element* elem = associatedElementOf(position);
153 if (!elem) 153 if (!elem)
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 } 286 }
287 287
288 HTMLAttributeEquivalent::HTMLAttributeEquivalent(CSSPropertyID id, const Qualifi edName& attrName) 288 HTMLAttributeEquivalent::HTMLAttributeEquivalent(CSSPropertyID id, const Qualifi edName& attrName)
289 : HTMLElementEquivalent(id) 289 : HTMLElementEquivalent(id)
290 , m_attrName(attrName) 290 , m_attrName(attrName)
291 { 291 {
292 } 292 }
293 293
294 bool HTMLAttributeEquivalent::valueIsPresentInStyle(HTMLElement* element, StyleP ropertySet* style) const 294 bool HTMLAttributeEquivalent::valueIsPresentInStyle(HTMLElement* element, StyleP ropertySet* style) const
295 { 295 {
296 RawPtr<CSSValue> value = attributeValueAsCSSValue(element); 296 CSSValue* value = attributeValueAsCSSValue(element);
297 RawPtr<CSSValue> styleValue = style->getPropertyCSSValue(m_propertyID); 297 CSSValue* styleValue = style->getPropertyCSSValue(m_propertyID);
298 298
299 return compareCSSValuePtr(value, styleValue); 299 return compareCSSValuePtr(value, styleValue);
300 } 300 }
301 301
302 void HTMLAttributeEquivalent::addToStyle(Element* element, EditingStyle* style) const 302 void HTMLAttributeEquivalent::addToStyle(Element* element, EditingStyle* style) const
303 { 303 {
304 if (RawPtr<CSSValue> value = attributeValueAsCSSValue(element)) 304 if (RawPtr<CSSValue> value = attributeValueAsCSSValue(element))
305 style->setProperty(m_propertyID, value->cssText()); 305 style->setProperty(m_propertyID, value->cssText());
306 } 306 }
307 307
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 return toCSSColorValue(colorValue)->value(); 400 return toCSSColorValue(colorValue)->value();
401 401
402 Color color = 0; 402 Color color = 0;
403 // FIXME: Why ignore the return value? 403 // FIXME: Why ignore the return value?
404 CSSParser::parseColor(color, colorValue->cssText()); 404 CSSParser::parseColor(color, colorValue->cssText());
405 return color; 405 return color;
406 } 406 }
407 407
408 static inline Color getFontColor(CSSStyleDeclaration* style) 408 static inline Color getFontColor(CSSStyleDeclaration* style)
409 { 409 {
410 return cssValueToColor(style->getPropertyCSSValueInternal(CSSPropertyColor). get()); 410 return cssValueToColor(style->getPropertyCSSValueInternal(CSSPropertyColor)) ;
411 } 411 }
412 412
413 static inline Color getFontColor(StylePropertySet* style) 413 static inline Color getFontColor(StylePropertySet* style)
414 { 414 {
415 return cssValueToColor(style->getPropertyCSSValue(CSSPropertyColor).get()); 415 return cssValueToColor(style->getPropertyCSSValue(CSSPropertyColor));
416 } 416 }
417 417
418 static inline Color getBackgroundColor(CSSStyleDeclaration* style) 418 static inline Color getBackgroundColor(CSSStyleDeclaration* style)
419 { 419 {
420 return cssValueToColor(style->getPropertyCSSValueInternal(CSSPropertyBackgro undColor).get()); 420 return cssValueToColor(style->getPropertyCSSValueInternal(CSSPropertyBackgro undColor));
421 } 421 }
422 422
423 static inline Color getBackgroundColor(StylePropertySet* style) 423 static inline Color getBackgroundColor(StylePropertySet* style)
424 { 424 {
425 return cssValueToColor(style->getPropertyCSSValue(CSSPropertyBackgroundColor ).get()); 425 return cssValueToColor(style->getPropertyCSSValue(CSSPropertyBackgroundColor ));
426 } 426 }
427 427
428 static inline Color backgroundColorInEffect(Node* node) 428 static inline Color backgroundColorInEffect(Node* node)
429 { 429 {
430 return cssValueToColor(backgroundColorValueInEffect(node).get()); 430 return cssValueToColor(backgroundColorValueInEffect(node));
431 } 431 }
432 432
433 static int textAlignResolvingStartAndEnd(int textAlign, int direction) 433 static int textAlignResolvingStartAndEnd(int textAlign, int direction)
434 { 434 {
435 switch (textAlign) { 435 switch (textAlign) {
436 case CSSValueCenter: 436 case CSSValueCenter:
437 case CSSValueWebkitCenter: 437 case CSSValueWebkitCenter:
438 return CSSValueCenter; 438 return CSSValueCenter;
439 case CSSValueJustify: 439 case CSSValueJustify:
440 return CSSValueJustify; 440 return CSSValueJustify;
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 equivalent->addToStyle(element, extractedStyle); 921 equivalent->addToStyle(element, extractedStyle);
922 conflictingAttributes.append(equivalent->attributeName()); 922 conflictingAttributes.append(equivalent->attributeName());
923 removed = true; 923 removed = true;
924 } 924 }
925 925
926 return removed; 926 return removed;
927 } 927 }
928 928
929 bool EditingStyle::styleIsPresentInComputedStyleOfNode(Node* node) const 929 bool EditingStyle::styleIsPresentInComputedStyleOfNode(Node* node) const
930 { 930 {
931 return !m_mutableStyle || getPropertiesNotIn(m_mutableStyle.get(), CSSComput edStyleDeclaration::create(node).get())->isEmpty(); 931 return !m_mutableStyle || getPropertiesNotIn(m_mutableStyle.get(), CSSComput edStyleDeclaration::create(node))->isEmpty();
932 } 932 }
933 933
934 bool EditingStyle::elementIsStyledSpanOrHTMLEquivalent(const HTMLElement* elemen t) 934 bool EditingStyle::elementIsStyledSpanOrHTMLEquivalent(const HTMLElement* elemen t)
935 { 935 {
936 ASSERT(element); 936 ASSERT(element);
937 bool elementIsSpanOrElementEquivalent = false; 937 bool elementIsSpanOrElementEquivalent = false;
938 if (isHTMLSpanElement(*element)) { 938 if (isHTMLSpanElement(*element)) {
939 elementIsSpanOrElementEquivalent = true; 939 elementIsSpanOrElementEquivalent = true;
940 } else { 940 } else {
941 const HeapVector<Member<HTMLElementEquivalent>>& HTMLElementEquivalents = htmlElementEquivalents(); 941 const HeapVector<Member<HTMLElementEquivalent>>& HTMLElementEquivalents = htmlElementEquivalents();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 { 985 {
986 if (!m_mutableStyle) 986 if (!m_mutableStyle)
987 return; 987 return;
988 988
989 // ReplaceSelectionCommand::handleStyleSpans() requires that this function o nly removes the editing style. 989 // ReplaceSelectionCommand::handleStyleSpans() requires that this function o nly removes the editing style.
990 // If this function was modified in the future to delete all redundant prope rties, then add a boolean value to indicate 990 // If this function was modified in the future to delete all redundant prope rties, then add a boolean value to indicate
991 // which one of editingStyleAtPosition or computedStyle is called. 991 // which one of editingStyleAtPosition or computedStyle is called.
992 RawPtr<EditingStyle> editingStyleAtPosition = EditingStyle::create(position, EditingPropertiesInEffect); 992 RawPtr<EditingStyle> editingStyleAtPosition = EditingStyle::create(position, EditingPropertiesInEffect);
993 StylePropertySet* styleAtPosition = editingStyleAtPosition->m_mutableStyle.g et(); 993 StylePropertySet* styleAtPosition = editingStyleAtPosition->m_mutableStyle.g et();
994 994
995 RawPtr<CSSValue> unicodeBidi = nullptr; 995 CSSValue* unicodeBidi = nullptr;
996 RawPtr<CSSValue> direction = nullptr; 996 CSSValue* direction = nullptr;
997 if (shouldPreserveWritingDirection == PreserveWritingDirection) { 997 if (shouldPreserveWritingDirection == PreserveWritingDirection) {
998 unicodeBidi = m_mutableStyle->getPropertyCSSValue(CSSPropertyUnicodeBidi ); 998 unicodeBidi = m_mutableStyle->getPropertyCSSValue(CSSPropertyUnicodeBidi );
999 direction = m_mutableStyle->getPropertyCSSValue(CSSPropertyDirection); 999 direction = m_mutableStyle->getPropertyCSSValue(CSSPropertyDirection);
1000 } 1000 }
1001 1001
1002 m_mutableStyle->removeEquivalentProperties(styleAtPosition); 1002 m_mutableStyle->removeEquivalentProperties(styleAtPosition);
1003 1003
1004 if (textAlignResolvingStartAndEnd(m_mutableStyle.get()) == textAlignResolvin gStartAndEnd(styleAtPosition)) 1004 if (textAlignResolvingStartAndEnd(m_mutableStyle.get()) == textAlignResolvin gStartAndEnd(styleAtPosition))
1005 m_mutableStyle->removeProperty(CSSPropertyTextAlign); 1005 m_mutableStyle->removeProperty(CSSPropertyTextAlign);
1006 1006
1007 if (getFontColor(m_mutableStyle.get()) == getFontColor(styleAtPosition)) 1007 if (getFontColor(m_mutableStyle.get()) == getFontColor(styleAtPosition))
1008 m_mutableStyle->removeProperty(CSSPropertyColor); 1008 m_mutableStyle->removeProperty(CSSPropertyColor);
1009 1009
1010 if (hasTransparentBackgroundColor(m_mutableStyle.get()) 1010 if (hasTransparentBackgroundColor(m_mutableStyle.get())
1011 || cssValueToColor(m_mutableStyle->getPropertyCSSValue(CSSPropertyBackgr oundColor).get()) == backgroundColorInEffect(position.computeContainerNode())) 1011 || cssValueToColor(m_mutableStyle->getPropertyCSSValue(CSSPropertyBackgr oundColor)) == backgroundColorInEffect(position.computeContainerNode()))
1012 m_mutableStyle->removeProperty(CSSPropertyBackgroundColor); 1012 m_mutableStyle->removeProperty(CSSPropertyBackgroundColor);
1013 1013
1014 if (unicodeBidi && unicodeBidi->isPrimitiveValue()) { 1014 if (unicodeBidi && unicodeBidi->isPrimitiveValue()) {
1015 m_mutableStyle->setProperty(CSSPropertyUnicodeBidi, toCSSPrimitiveValue( unicodeBidi.get())->getValueID()); 1015 m_mutableStyle->setProperty(CSSPropertyUnicodeBidi, toCSSPrimitiveValue( unicodeBidi)->getValueID());
1016 if (direction && direction->isPrimitiveValue()) 1016 if (direction && direction->isPrimitiveValue())
1017 m_mutableStyle->setProperty(CSSPropertyDirection, toCSSPrimitiveValu e(direction.get())->getValueID()); 1017 m_mutableStyle->setProperty(CSSPropertyDirection, toCSSPrimitiveValu e(direction)->getValueID());
1018 } 1018 }
1019 } 1019 }
1020 1020
1021 void EditingStyle::mergeTypingStyle(Document* document) 1021 void EditingStyle::mergeTypingStyle(Document* document)
1022 { 1022 {
1023 ASSERT(document); 1023 ASSERT(document);
1024 1024
1025 RawPtr<EditingStyle> typingStyle = document->frame()->selection().typingStyl e(); 1025 RawPtr<EditingStyle> typingStyle = document->frame()->selection().typingStyl e();
1026 if (!typingStyle || typingStyle == this) 1026 if (!typingStyle || typingStyle == this)
1027 return; 1027 return;
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after
1724 { 1724 {
1725 for (Node* ancestor = node; ancestor; ancestor = ancestor->parentNode()) { 1725 for (Node* ancestor = node; ancestor; ancestor = ancestor->parentNode()) {
1726 RawPtr<CSSComputedStyleDeclaration> ancestorStyle = CSSComputedStyleDecl aration::create(ancestor); 1726 RawPtr<CSSComputedStyleDeclaration> ancestorStyle = CSSComputedStyleDecl aration::create(ancestor);
1727 if (!hasTransparentBackgroundColor(ancestorStyle.get())) 1727 if (!hasTransparentBackgroundColor(ancestorStyle.get()))
1728 return ancestorStyle->getPropertyCSSValue(CSSPropertyBackgroundColor ); 1728 return ancestorStyle->getPropertyCSSValue(CSSPropertyBackgroundColor );
1729 } 1729 }
1730 return nullptr; 1730 return nullptr;
1731 } 1731 }
1732 1732
1733 } // namespace blink 1733 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698