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

Side by Side Diff: third_party/WebKit/Source/core/css/StylePropertySet.cpp

Issue 2044023005: Make PropertyReference value() return a const CSSValue& (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_remove_style_property_set_mutable_overload
Patch Set: Rebase Created 4 years, 5 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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 171 }
172 template CORE_EXPORT String StylePropertySet::getPropertyValue<CSSPropertyID>(CS SPropertyID) const; 172 template CORE_EXPORT String StylePropertySet::getPropertyValue<CSSPropertyID>(CS SPropertyID) const;
173 template CORE_EXPORT String StylePropertySet::getPropertyValue<AtomicString>(Ato micString) const; 173 template CORE_EXPORT String StylePropertySet::getPropertyValue<AtomicString>(Ato micString) const;
174 174
175 template<typename T> 175 template<typename T>
176 const CSSValue* StylePropertySet::getPropertyCSSValue(T property) const 176 const CSSValue* StylePropertySet::getPropertyCSSValue(T property) const
177 { 177 {
178 int foundPropertyIndex = findPropertyIndex(property); 178 int foundPropertyIndex = findPropertyIndex(property);
179 if (foundPropertyIndex == -1) 179 if (foundPropertyIndex == -1)
180 return nullptr; 180 return nullptr;
181 return propertyAt(foundPropertyIndex).value(); 181 return &propertyAt(foundPropertyIndex).value();
182 } 182 }
183 template CORE_EXPORT const CSSValue* StylePropertySet::getPropertyCSSValue<CSSPr opertyID>(CSSPropertyID) const; 183 template CORE_EXPORT const CSSValue* StylePropertySet::getPropertyCSSValue<CSSPr opertyID>(CSSPropertyID) const;
184 template CORE_EXPORT const CSSValue* StylePropertySet::getPropertyCSSValue<Atomi cString>(AtomicString) const; 184 template CORE_EXPORT const CSSValue* StylePropertySet::getPropertyCSSValue<Atomi cString>(AtomicString) const;
185 185
186 DEFINE_TRACE(StylePropertySet) 186 DEFINE_TRACE(StylePropertySet)
187 { 187 {
188 if (m_isMutable) 188 if (m_isMutable)
189 toMutableStylePropertySet(this)->traceAfterDispatch(visitor); 189 toMutableStylePropertySet(this)->traceAfterDispatch(visitor);
190 else 190 else
191 toImmutableStylePropertySet(this)->traceAfterDispatch(visitor); 191 toImmutableStylePropertySet(this)->traceAfterDispatch(visitor);
(...skipping 18 matching lines...) Expand all
210 210
211 bool MutableStylePropertySet::removePropertyAtIndex(int propertyIndex, String* r eturnText) 211 bool MutableStylePropertySet::removePropertyAtIndex(int propertyIndex, String* r eturnText)
212 { 212 {
213 if (propertyIndex == -1) { 213 if (propertyIndex == -1) {
214 if (returnText) 214 if (returnText)
215 *returnText = ""; 215 *returnText = "";
216 return false; 216 return false;
217 } 217 }
218 218
219 if (returnText) 219 if (returnText)
220 *returnText = propertyAt(propertyIndex).value()->cssText(); 220 *returnText = propertyAt(propertyIndex).value().cssText();
221 221
222 // A more efficient removal strategy would involve marking entries as empty 222 // A more efficient removal strategy would involve marking entries as empty
223 // and sweeping them when the vector grows too big. 223 // and sweeping them when the vector grows too big.
224 m_propertyVector.remove(propertyIndex); 224 m_propertyVector.remove(propertyIndex);
225 225
226 return true; 226 return true;
227 } 227 }
228 228
229 template<typename T> 229 template<typename T>
230 bool MutableStylePropertySet::removeProperty(T property, String* returnText) 230 bool MutableStylePropertySet::removeProperty(T property, String* returnText)
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 setProperty(toMerge.toCSSProperty(), old); 390 setProperty(toMerge.toCSSProperty(), old);
391 else 391 else
392 m_propertyVector.append(toMerge.toCSSProperty()); 392 m_propertyVector.append(toMerge.toCSSProperty());
393 } 393 }
394 } 394 }
395 395
396 bool StylePropertySet::hasFailedOrCanceledSubresources() const 396 bool StylePropertySet::hasFailedOrCanceledSubresources() const
397 { 397 {
398 unsigned size = propertyCount(); 398 unsigned size = propertyCount();
399 for (unsigned i = 0; i < size; ++i) { 399 for (unsigned i = 0; i < size; ++i) {
400 if (propertyAt(i).value()->hasFailedOrCanceledSubresources()) 400 if (propertyAt(i).value().hasFailedOrCanceledSubresources())
401 return true; 401 return true;
402 } 402 }
403 return false; 403 return false;
404 } 404 }
405 405
406 void MutableStylePropertySet::clear() 406 void MutableStylePropertySet::clear()
407 { 407 {
408 m_propertyVector.clear(); 408 m_propertyVector.clear();
409 } 409 }
410 410
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 foundPropertyIndex = findPropertyIndex(customPropertyName); 448 foundPropertyIndex = findPropertyIndex(customPropertyName);
449 } else { 449 } else {
450 ASSERT(customPropertyName.isNull()); 450 ASSERT(customPropertyName.isNull());
451 foundPropertyIndex = findPropertyIndex(propertyID); 451 foundPropertyIndex = findPropertyIndex(propertyID);
452 } 452 }
453 if (foundPropertyIndex == -1) 453 if (foundPropertyIndex == -1)
454 return nullptr; 454 return nullptr;
455 return &m_propertyVector.at(foundPropertyIndex); 455 return &m_propertyVector.at(foundPropertyIndex);
456 } 456 }
457 457
458 bool StylePropertySet::propertyMatches(CSSPropertyID propertyID, const CSSValue* propertyValue) const 458 bool StylePropertySet::propertyMatches(CSSPropertyID propertyID, const CSSValue& propertyValue) const
459 { 459 {
460 int foundPropertyIndex = findPropertyIndex(propertyID); 460 int foundPropertyIndex = findPropertyIndex(propertyID);
461 if (foundPropertyIndex == -1) 461 if (foundPropertyIndex == -1)
462 return false; 462 return false;
463 return propertyAt(foundPropertyIndex).value()->equals(*propertyValue); 463 return propertyAt(foundPropertyIndex).value().equals(propertyValue);
464 } 464 }
465 465
466 void MutableStylePropertySet::removeEquivalentProperties(const StylePropertySet* style) 466 void MutableStylePropertySet::removeEquivalentProperties(const StylePropertySet* style)
467 { 467 {
468 Vector<CSSPropertyID> propertiesToRemove; 468 Vector<CSSPropertyID> propertiesToRemove;
469 unsigned size = m_propertyVector.size(); 469 unsigned size = m_propertyVector.size();
470 for (unsigned i = 0; i < size; ++i) { 470 for (unsigned i = 0; i < size; ++i) {
471 PropertyReference property = propertyAt(i); 471 PropertyReference property = propertyAt(i);
472 if (style->propertyMatches(property.id(), property.value())) 472 if (style->propertyMatches(property.id(), property.value()))
473 propertiesToRemove.append(property.id()); 473 propertiesToRemove.append(property.id());
474 } 474 }
475 // FIXME: This should use mass removal. 475 // FIXME: This should use mass removal.
476 for (unsigned i = 0; i < propertiesToRemove.size(); ++i) 476 for (unsigned i = 0; i < propertiesToRemove.size(); ++i)
477 removeProperty(propertiesToRemove[i]); 477 removeProperty(propertiesToRemove[i]);
478 } 478 }
479 479
480 void MutableStylePropertySet::removeEquivalentProperties(const CSSStyleDeclarati on* style) 480 void MutableStylePropertySet::removeEquivalentProperties(const CSSStyleDeclarati on* style)
481 { 481 {
482 Vector<CSSPropertyID> propertiesToRemove; 482 Vector<CSSPropertyID> propertiesToRemove;
483 unsigned size = m_propertyVector.size(); 483 unsigned size = m_propertyVector.size();
484 for (unsigned i = 0; i < size; ++i) { 484 for (unsigned i = 0; i < size; ++i) {
485 PropertyReference property = propertyAt(i); 485 PropertyReference property = propertyAt(i);
486 if (style->cssPropertyMatches(property.id(), property.value())) 486 if (style->cssPropertyMatches(property.id(), &property.value()))
487 propertiesToRemove.append(property.id()); 487 propertiesToRemove.append(property.id());
488 } 488 }
489 // FIXME: This should use mass removal. 489 // FIXME: This should use mass removal.
490 for (unsigned i = 0; i < propertiesToRemove.size(); ++i) 490 for (unsigned i = 0; i < propertiesToRemove.size(); ++i)
491 removeProperty(propertiesToRemove[i]); 491 removeProperty(propertiesToRemove[i]);
492 } 492 }
493 493
494 MutableStylePropertySet* StylePropertySet::mutableCopy() const 494 MutableStylePropertySet* StylePropertySet::mutableCopy() const
495 { 495 {
496 return new MutableStylePropertySet(*this); 496 return new MutableStylePropertySet(*this);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 { 568 {
569 return new MutableStylePropertySet(cssParserMode); 569 return new MutableStylePropertySet(cssParserMode);
570 } 570 }
571 571
572 MutableStylePropertySet* MutableStylePropertySet::create(const CSSProperty* prop erties, unsigned count) 572 MutableStylePropertySet* MutableStylePropertySet::create(const CSSProperty* prop erties, unsigned count)
573 { 573 {
574 return new MutableStylePropertySet(properties, count); 574 return new MutableStylePropertySet(properties, count);
575 } 575 }
576 576
577 } // namespace blink 577 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698