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

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

Issue 21006006: Add forEach() to CSSVariablesMap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase and review changes Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/StylePropertySet.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 } 279 }
280 280
281 bool MutableStylePropertySet::setVariableValue(const AtomicString& name, const S tring& value, bool important) 281 bool MutableStylePropertySet::setVariableValue(const AtomicString& name, const S tring& value, bool important)
282 { 282 {
283 ASSERT(RuntimeEnabledFeatures::cssVariablesEnabled()); 283 ASSERT(RuntimeEnabledFeatures::cssVariablesEnabled());
284 if (value.isEmpty()) 284 if (value.isEmpty())
285 return removeVariable(name); 285 return removeVariable(name);
286 286
287 size_t index = findVariableIndex(name); 287 size_t index = findVariableIndex(name);
288 if (index != kNotFound) { 288 if (index != kNotFound) {
289 CSSValue* cssValue = m_propertyVector.at(index).value(); 289 const CSSValue* cssValue = m_propertyVector.at(index).value();
290 if (toCSSVariableValue(cssValue)->value() == value) 290 if (toCSSVariableValue(cssValue)->value() == value)
291 return false; 291 return false;
292 } 292 }
293 293
294 CSSProperty property(CSSPropertyVariable, CSSVariableValue::create(name, val ue), important); 294 CSSProperty property(CSSPropertyVariable, CSSVariableValue::create(name, val ue), important);
295 if (index == kNotFound) 295 if (index == kNotFound) {
296 m_propertyVector.append(property); 296 m_propertyVector.append(property);
297 else 297 return true;
298 m_propertyVector.at(index) = property; 298 }
299 return true; 299 m_propertyVector.at(index) = property;
300 return false;
300 } 301 }
301 302
302 void MutableStylePropertySet::appendPrefixingVariantProperty(const CSSProperty& property) 303 void MutableStylePropertySet::appendPrefixingVariantProperty(const CSSProperty& property)
303 { 304 {
304 m_propertyVector.append(property); 305 m_propertyVector.append(property);
305 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id() ); 306 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id() );
306 if (prefixingVariant == property.id()) 307 if (prefixingVariant == property.id())
307 return; 308 return;
308 309
309 m_propertyVector.append(CSSProperty(prefixingVariant, property.value(), prop erty.isImportant(), property.isSetFromShorthand(), getIndexInShorthandVectorForP refixingVariant(property, prefixingVariant), property.metadata().m_implicit)); 310 m_propertyVector.append(CSSProperty(prefixingVariant, property.value(), prop erty.isImportant(), property.isSetFromShorthand(), getIndexInShorthandVectorForP refixingVariant(property, prefixingVariant), property.metadata().m_implicit));
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 return true; 557 return true;
557 } 558 }
558 559
559 bool MutableStylePropertySet::clearVariables() 560 bool MutableStylePropertySet::clearVariables()
560 { 561 {
561 ASSERT(RuntimeEnabledFeatures::cssVariablesEnabled()); 562 ASSERT(RuntimeEnabledFeatures::cssVariablesEnabled());
562 CSSPropertyID variablesId = CSSPropertyVariable; 563 CSSPropertyID variablesId = CSSPropertyVariable;
563 return removePropertiesInSet(&variablesId, 1); 564 return removePropertiesInSet(&variablesId, 1);
564 } 565 }
565 566
567 PassRefPtr<MutableStylePropertySet::VariablesIterator> MutableStylePropertySet:: VariablesIterator::create(MutableStylePropertySet* propertySet)
568 {
569 ASSERT(RuntimeEnabledFeatures::cssVariablesEnabled());
570 const size_t propertyCount = propertySet->propertyCount();
571 size_t variableCount = 0;
572 Vector<AtomicString> remainingNames(propertyCount);
573 for (int i = propertyCount; i--; ) {
574 const PropertyReference& property = propertySet->propertyAt(i);
575 if (property.id() == CSSPropertyVariable)
576 remainingNames[variableCount++] = toCSSVariableValue(property.value( ))->name();
577 }
578 remainingNames.shrink(variableCount);
579
580 RefPtr<VariablesIterator> iterator = adoptRef(new VariablesIterator(property Set));
581 // FIXME: Make use of the Vector move constructor when rvalues are supported on all platforms.
582 iterator->takeRemainingNames(remainingNames);
583 return iterator.release();
584 }
585
586 void MutableStylePropertySet::VariablesIterator::addedVariable(const AtomicStrin g& name)
587 {
588 ASSERT(!m_remainingNames.contains(name));
589 ASSERT(!m_newNames.contains(name));
590 m_newNames.append(name);
591 }
592
593 void MutableStylePropertySet::VariablesIterator::removedVariable(const AtomicStr ing& name)
594 {
595 size_t index = m_remainingNames.find(name);
596 if (index != kNotFound)
597 m_remainingNames.remove(index);
598 index = m_newNames.find(name);
599 if (index != kNotFound)
600 m_newNames.remove(index);
601 }
602
603 void MutableStylePropertySet::VariablesIterator::clearedVariables()
604 {
605 m_remainingNames.clear();
606 m_newNames.clear();
607 }
608
609 void MutableStylePropertySet::VariablesIterator::advance()
610 {
611 if (!atEnd())
612 m_remainingNames.removeLast();
613 if (!m_newNames.isEmpty()) {
614 m_remainingNames.appendVector(m_newNames);
615 m_newNames.clear();
616 }
617 }
618
566 PassRefPtr<MutableStylePropertySet> StylePropertySet::mutableCopy() const 619 PassRefPtr<MutableStylePropertySet> StylePropertySet::mutableCopy() const
567 { 620 {
568 return adoptRef(new MutableStylePropertySet(*this)); 621 return adoptRef(new MutableStylePropertySet(*this));
569 } 622 }
570 623
571 PassRefPtr<MutableStylePropertySet> StylePropertySet::copyPropertiesInSet(const Vector<CSSPropertyID>& properties) const 624 PassRefPtr<MutableStylePropertySet> StylePropertySet::copyPropertiesInSet(const Vector<CSSPropertyID>& properties) const
572 { 625 {
573 Vector<CSSProperty, 256> list; 626 Vector<CSSProperty, 256> list;
574 list.reserveInitialCapacity(properties.size()); 627 list.reserveInitialCapacity(properties.size());
575 for (unsigned i = 0; i < properties.size(); ++i) { 628 for (unsigned i = 0; i < properties.size(); ++i) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 result.appendLiteral(": "); 705 result.appendLiteral(": ");
653 result.append(propertyValue()->cssText()); 706 result.append(propertyValue()->cssText());
654 if (isImportant()) 707 if (isImportant())
655 result.appendLiteral(" !important"); 708 result.appendLiteral(" !important");
656 result.append(';'); 709 result.append(';');
657 return result.toString(); 710 return result.toString();
658 } 711 }
659 712
660 713
661 } // namespace WebCore 714 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/StylePropertySet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698