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

Side by Side Diff: third_party/WebKit/Source/core/css/StylePropertySet.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 * (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, 2013 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved.
5 * Copyright (C) 2013 Intel Corporation. All rights reserved. 5 * Copyright (C) 2013 Intel Corporation. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 27 matching lines...) Expand all
38 #include <stdio.h> 38 #include <stdio.h>
39 #endif 39 #endif
40 40
41 namespace blink { 41 namespace blink {
42 42
43 static size_t sizeForImmutableStylePropertySetWithPropertyCount(unsigned count) 43 static size_t sizeForImmutableStylePropertySetWithPropertyCount(unsigned count)
44 { 44 {
45 return sizeof(ImmutableStylePropertySet) - sizeof(void*) + sizeof(Member<CSS Value>) * count + sizeof(StylePropertyMetadata) * count; 45 return sizeof(ImmutableStylePropertySet) - sizeof(void*) + sizeof(Member<CSS Value>) * count + sizeof(StylePropertyMetadata) * count;
46 } 46 }
47 47
48 RawPtr<ImmutableStylePropertySet> ImmutableStylePropertySet::create(const CSSPro perty* properties, unsigned count, CSSParserMode cssParserMode) 48 ImmutableStylePropertySet* ImmutableStylePropertySet::create(const CSSProperty* properties, unsigned count, CSSParserMode cssParserMode)
49 { 49 {
50 ASSERT(count <= MaxArraySize); 50 ASSERT(count <= MaxArraySize);
51 void* slot = Heap::allocate<StylePropertySet>(sizeForImmutableStylePropertyS etWithPropertyCount(count)); 51 void* slot = Heap::allocate<StylePropertySet>(sizeForImmutableStylePropertyS etWithPropertyCount(count));
52 return new (slot) ImmutableStylePropertySet(properties, count, cssParserMode ); 52 return new (slot) ImmutableStylePropertySet(properties, count, cssParserMode );
53 } 53 }
54 54
55 RawPtr<ImmutableStylePropertySet> StylePropertySet::immutableCopyIfNeeded() cons t 55 ImmutableStylePropertySet* StylePropertySet::immutableCopyIfNeeded() const
56 { 56 {
57 if (!isMutable()) 57 if (!isMutable())
58 return toImmutableStylePropertySet(const_cast<StylePropertySet*>(this)); 58 return toImmutableStylePropertySet(const_cast<StylePropertySet*>(this));
59 const MutableStylePropertySet* mutableThis = toMutableStylePropertySet(this) ; 59 const MutableStylePropertySet* mutableThis = toMutableStylePropertySet(this) ;
60 return ImmutableStylePropertySet::create(mutableThis->m_propertyVector.data( ), mutableThis->m_propertyVector.size(), cssParserMode()); 60 return ImmutableStylePropertySet::create(mutableThis->m_propertyVector.data( ), mutableThis->m_propertyVector.size(), cssParserMode());
61 } 61 }
62 62
63 MutableStylePropertySet::MutableStylePropertySet(CSSParserMode cssParserMode) 63 MutableStylePropertySet::MutableStylePropertySet(CSSParserMode cssParserMode)
64 : StylePropertySet(cssParserMode) 64 : StylePropertySet(cssParserMode)
65 { 65 {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 168
169 static String serializeShorthand(const StylePropertySet&, const AtomicString& cu stomPropertyName) 169 static String serializeShorthand(const StylePropertySet&, const AtomicString& cu stomPropertyName)
170 { 170 {
171 // Custom properties are never shorthands. 171 // Custom properties are never shorthands.
172 return ""; 172 return "";
173 } 173 }
174 174
175 template<typename T> 175 template<typename T>
176 String StylePropertySet::getPropertyValue(T property) const 176 String StylePropertySet::getPropertyValue(T property) const
177 { 177 {
178 RawPtr<CSSValue> value = getPropertyCSSValue(property); 178 CSSValue* value = getPropertyCSSValue(property);
179 if (value) 179 if (value)
180 return value->cssText(); 180 return value->cssText();
181 return serializeShorthand(*this, property); 181 return serializeShorthand(*this, property);
182 } 182 }
183 template CORE_EXPORT String StylePropertySet::getPropertyValue<CSSPropertyID>(CS SPropertyID) const; 183 template CORE_EXPORT String StylePropertySet::getPropertyValue<CSSPropertyID>(CS SPropertyID) const;
184 template CORE_EXPORT String StylePropertySet::getPropertyValue<AtomicString>(Ato micString) const; 184 template CORE_EXPORT String StylePropertySet::getPropertyValue<AtomicString>(Ato micString) const;
185 185
186 template<typename T> 186 template<typename T>
187 RawPtr<CSSValue> StylePropertySet::getPropertyCSSValue(T property) const 187 CSSValue* StylePropertySet::getPropertyCSSValue(T property) const
188 { 188 {
189 int foundPropertyIndex = findPropertyIndex(property); 189 int foundPropertyIndex = findPropertyIndex(property);
190 if (foundPropertyIndex == -1) 190 if (foundPropertyIndex == -1)
191 return nullptr; 191 return nullptr;
192 return propertyAt(foundPropertyIndex).value(); 192 return propertyAt(foundPropertyIndex).value();
193 } 193 }
194 template CORE_EXPORT RawPtr<CSSValue> StylePropertySet::getPropertyCSSValue<CSSP ropertyID>(CSSPropertyID) const; 194 template CORE_EXPORT CSSValue* StylePropertySet::getPropertyCSSValue<CSSProperty ID>(CSSPropertyID) const;
195 template CORE_EXPORT RawPtr<CSSValue> StylePropertySet::getPropertyCSSValue<Atom icString>(AtomicString) const; 195 template CORE_EXPORT CSSValue* StylePropertySet::getPropertyCSSValue<AtomicStrin g>(AtomicString) const;
196 196
197 DEFINE_TRACE(StylePropertySet) 197 DEFINE_TRACE(StylePropertySet)
198 { 198 {
199 if (m_isMutable) 199 if (m_isMutable)
200 toMutableStylePropertySet(this)->traceAfterDispatch(visitor); 200 toMutableStylePropertySet(this)->traceAfterDispatch(visitor);
201 else 201 else
202 toImmutableStylePropertySet(this)->traceAfterDispatch(visitor); 202 toImmutableStylePropertySet(this)->traceAfterDispatch(visitor);
203 } 203 }
204 204
205 #if ENABLE(OILPAN) 205 #if ENABLE(OILPAN)
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 return CSSParser::parseValue(this, unresolvedProperty, value, important, con textStyleSheet); 313 return CSSParser::parseValue(this, unresolvedProperty, value, important, con textStyleSheet);
314 } 314 }
315 315
316 bool MutableStylePropertySet::setProperty(const AtomicString& customPropertyName , const String& value, bool important, StyleSheetContents* contextStyleSheet) 316 bool MutableStylePropertySet::setProperty(const AtomicString& customPropertyName , const String& value, bool important, StyleSheetContents* contextStyleSheet)
317 { 317 {
318 if (value.isEmpty()) 318 if (value.isEmpty())
319 return removeProperty(customPropertyName); 319 return removeProperty(customPropertyName);
320 return CSSParser::parseValueForCustomProperty(this, customPropertyName, valu e, important, contextStyleSheet); 320 return CSSParser::parseValueForCustomProperty(this, customPropertyName, valu e, important, contextStyleSheet);
321 } 321 }
322 322
323 void MutableStylePropertySet::setProperty(CSSPropertyID propertyID, RawPtr<CSSVa lue> prpValue, bool important) 323 void MutableStylePropertySet::setProperty(CSSPropertyID propertyID, CSSValue* va lue, bool important)
324 { 324 {
325 StylePropertyShorthand shorthand = shorthandForProperty(propertyID); 325 StylePropertyShorthand shorthand = shorthandForProperty(propertyID);
326 if (!shorthand.length()) { 326 if (!shorthand.length()) {
327 setProperty(CSSProperty(propertyID, prpValue, important)); 327 setProperty(CSSProperty(propertyID, value, important));
328 return; 328 return;
329 } 329 }
330 330
331 removePropertiesInSet(shorthand.properties(), shorthand.length()); 331 removePropertiesInSet(shorthand.properties(), shorthand.length());
332 332
333 RawPtr<CSSValue> value = prpValue;
334 for (unsigned i = 0; i < shorthand.length(); ++i) 333 for (unsigned i = 0; i < shorthand.length(); ++i)
335 m_propertyVector.append(CSSProperty(shorthand.properties()[i], value, im portant)); 334 m_propertyVector.append(CSSProperty(shorthand.properties()[i], value, im portant));
336 } 335 }
337 336
338 bool MutableStylePropertySet::setProperty(const CSSProperty& property, CSSProper ty* slot) 337 bool MutableStylePropertySet::setProperty(const CSSProperty& property, CSSProper ty* slot)
339 { 338 {
340 if (!removeShorthandProperty(property.id())) { 339 if (!removeShorthandProperty(property.id())) {
341 const AtomicString& name = (property.id() == CSSPropertyVariable) ? 340 const AtomicString& name = (property.id() == CSSPropertyVariable) ?
342 toCSSCustomPropertyDeclaration(property.value())->name() : nullAtom; 341 toCSSCustomPropertyDeclaration(property.value())->name() : nullAtom;
343 CSSProperty* toReplace = slot ? slot : findCSSPropertyWithID(property.id (), name); 342 CSSProperty* toReplace = slot ? slot : findCSSPropertyWithID(property.id (), name);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 for (unsigned i = 0; i < size; ++i) { 497 for (unsigned i = 0; i < size; ++i) {
499 PropertyReference property = propertyAt(i); 498 PropertyReference property = propertyAt(i);
500 if (style->cssPropertyMatches(property.id(), property.value())) 499 if (style->cssPropertyMatches(property.id(), property.value()))
501 propertiesToRemove.append(property.id()); 500 propertiesToRemove.append(property.id());
502 } 501 }
503 // FIXME: This should use mass removal. 502 // FIXME: This should use mass removal.
504 for (unsigned i = 0; i < propertiesToRemove.size(); ++i) 503 for (unsigned i = 0; i < propertiesToRemove.size(); ++i)
505 removeProperty(propertiesToRemove[i]); 504 removeProperty(propertiesToRemove[i]);
506 } 505 }
507 506
508 RawPtr<MutableStylePropertySet> StylePropertySet::mutableCopy() const 507 MutableStylePropertySet* StylePropertySet::mutableCopy() const
509 { 508 {
510 return new MutableStylePropertySet(*this); 509 return new MutableStylePropertySet(*this);
511 } 510 }
512 511
513 RawPtr<MutableStylePropertySet> StylePropertySet::copyPropertiesInSet(const Vect or<CSSPropertyID>& properties) const 512 MutableStylePropertySet* StylePropertySet::copyPropertiesInSet(const Vector<CSSP ropertyID>& properties) const
514 { 513 {
515 HeapVector<CSSProperty, 256> list; 514 HeapVector<CSSProperty, 256> list;
516 list.reserveInitialCapacity(properties.size()); 515 list.reserveInitialCapacity(properties.size());
517 for (unsigned i = 0; i < properties.size(); ++i) { 516 for (unsigned i = 0; i < properties.size(); ++i) {
518 RawPtr<CSSValue> value = getPropertyCSSValue(properties[i]); 517 CSSValue* value = getPropertyCSSValue(properties[i]);
519 if (value) 518 if (value)
520 list.append(CSSProperty(properties[i], value.release(), false)); 519 list.append(CSSProperty(properties[i], value, false));
521 } 520 }
522 return MutableStylePropertySet::create(list.data(), list.size()); 521 return MutableStylePropertySet::create(list.data(), list.size());
523 } 522 }
524 523
525 CSSStyleDeclaration* MutableStylePropertySet::ensureCSSStyleDeclaration() 524 CSSStyleDeclaration* MutableStylePropertySet::ensureCSSStyleDeclaration()
526 { 525 {
527 // FIXME: get rid of this weirdness of a CSSStyleDeclaration inside of a 526 // FIXME: get rid of this weirdness of a CSSStyleDeclaration inside of a
528 // style property set. 527 // style property set.
529 if (m_cssomWrapper) { 528 if (m_cssomWrapper) {
530 ASSERT(!static_cast<CSSStyleDeclaration*>(m_cssomWrapper.get())->parentR ule()); 529 ASSERT(!static_cast<CSSStyleDeclaration*>(m_cssomWrapper.get())->parentR ule());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 }; 570 };
572 static_assert(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), "S tylePropertySet should stay small"); 571 static_assert(sizeof(StylePropertySet) == sizeof(SameSizeAsStylePropertySet), "S tylePropertySet should stay small");
573 572
574 #ifndef NDEBUG 573 #ifndef NDEBUG
575 void StylePropertySet::showStyle() 574 void StylePropertySet::showStyle()
576 { 575 {
577 fprintf(stderr, "%s\n", asText().ascii().data()); 576 fprintf(stderr, "%s\n", asText().ascii().data());
578 } 577 }
579 #endif 578 #endif
580 579
581 RawPtr<MutableStylePropertySet> MutableStylePropertySet::create(CSSParserMode cs sParserMode) 580 MutableStylePropertySet* MutableStylePropertySet::create(CSSParserMode cssParser Mode)
582 { 581 {
583 return new MutableStylePropertySet(cssParserMode); 582 return new MutableStylePropertySet(cssParserMode);
584 } 583 }
585 584
586 RawPtr<MutableStylePropertySet> MutableStylePropertySet::create(const CSSPropert y* properties, unsigned count) 585 MutableStylePropertySet* MutableStylePropertySet::create(const CSSProperty* prop erties, unsigned count)
587 { 586 {
588 return new MutableStylePropertySet(properties, count); 587 return new MutableStylePropertySet(properties, count);
589 } 588 }
590 589
591 } // namespace blink 590 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/StylePropertySet.h ('k') | third_party/WebKit/Source/core/css/StyleRule.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698