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

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

Issue 2042943003: Move CSSValue->CSSStyleValue logic out of StylePropertyMap and into the StyleValueFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@stylevaue
Patch Set: Created 4 years, 6 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/css/cssom/InlineStylePropertyMap.h" 5 #include "core/css/cssom/InlineStylePropertyMap.h"
6 6
7 #include "bindings/core/v8/Iterable.h" 7 #include "bindings/core/v8/Iterable.h"
8 #include "core/CSSPropertyNames.h" 8 #include "core/CSSPropertyNames.h"
9 #include "core/css/CSSPrimitiveValue.h" 9 #include "core/css/CSSPrimitiveValue.h"
10 #include "core/css/CSSPropertyMetadata.h" 10 #include "core/css/CSSPropertyMetadata.h"
11 #include "core/css/CSSValueList.h" 11 #include "core/css/CSSValueList.h"
12 #include "core/css/StylePropertySet.h" 12 #include "core/css/StylePropertySet.h"
13 #include "core/css/cssom/CSSOMTypes.h" 13 #include "core/css/cssom/CSSOMTypes.h"
14 #include "core/css/cssom/CSSSimpleLength.h" 14 #include "core/css/cssom/CSSSimpleLength.h"
15 #include "core/css/cssom/StyleValueFactory.h"
15 16
16 namespace blink { 17 namespace blink {
17 18
18 StylePropertyMap::StyleValueVector InlineStylePropertyMap::getAll(CSSPropertyID propertyID) 19 CSSStyleValueVector InlineStylePropertyMap::getAll(CSSPropertyID propertyID)
19 { 20 {
20 CSSValue* cssValue = m_ownerElement->ensureMutableInlineStyle().getPropertyC SSValue(propertyID); 21 CSSValue* cssValue = m_ownerElement->ensureMutableInlineStyle().getPropertyC SSValue(propertyID);
21 if (!cssValue) 22 if (!cssValue)
22 return StyleValueVector(); 23 return CSSStyleValueVector();
23 24
24 return cssValueToStyleValueVector(propertyID, *cssValue); 25 return StyleValueFactory::cssValueToStyleValueVector(propertyID, *cssValue);
25 } 26 }
26 27
27 Vector<String> InlineStylePropertyMap::getProperties() 28 Vector<String> InlineStylePropertyMap::getProperties()
28 { 29 {
29 Vector<String> result; 30 Vector<String> result;
30 StylePropertySet& inlineStyleSet = m_ownerElement->ensureMutableInlineStyle( ); 31 StylePropertySet& inlineStyleSet = m_ownerElement->ensureMutableInlineStyle( );
31 for (unsigned i = 0; i < inlineStyleSet.propertyCount(); i++) { 32 for (unsigned i = 0; i < inlineStyleSet.propertyCount(); i++) {
32 CSSPropertyID propertyID = inlineStyleSet.propertyAt(i).id(); 33 CSSPropertyID propertyID = inlineStyleSet.propertyAt(i).id();
33 result.append(getPropertyNameString(propertyID)); 34 result.append(getPropertyNameString(propertyID));
34 } 35 }
(...skipping 10 matching lines...) Expand all
45 } 46 }
46 m_ownerElement->setInlineStyleProperty(propertyID, styleValue->toCSSValu e()); 47 m_ownerElement->setInlineStyleProperty(propertyID, styleValue->toCSSValu e());
47 } else if (item.isCSSStyleValueSequence()) { 48 } else if (item.isCSSStyleValueSequence()) {
48 if (!CSSPropertyMetadata::propertySupportsMultiple(propertyID)) { 49 if (!CSSPropertyMetadata::propertySupportsMultiple(propertyID)) {
49 exceptionState.throwTypeError("Property does not support multiple va lues"); 50 exceptionState.throwTypeError("Property does not support multiple va lues");
50 return; 51 return;
51 } 52 }
52 53
53 // TODO(meade): This won't always work. Figure out what kind of CSSValue List to create properly. 54 // TODO(meade): This won't always work. Figure out what kind of CSSValue List to create properly.
54 CSSValueList* valueList = CSSValueList::createSpaceSeparated(); 55 CSSValueList* valueList = CSSValueList::createSpaceSeparated();
55 StyleValueVector styleValueVector = item.getAsCSSStyleValueSequence(); 56 CSSStyleValueVector styleValueVector = item.getAsCSSStyleValueSequence() ;
56 for (const Member<CSSStyleValue> value : styleValueVector) { 57 for (const Member<CSSStyleValue> value : styleValueVector) {
57 if (!CSSOMTypes::propertyCanTake(propertyID, *value)) { 58 if (!CSSOMTypes::propertyCanTake(propertyID, *value)) {
58 exceptionState.throwTypeError("Invalid type for property"); 59 exceptionState.throwTypeError("Invalid type for property");
59 return; 60 return;
60 } 61 }
61 valueList->append(value->toCSSValue()); 62 valueList->append(value->toCSSValue());
62 } 63 }
63 64
64 m_ownerElement->setInlineStyleProperty(propertyID, valueList); 65 m_ownerElement->setInlineStyleProperty(propertyID, valueList);
65 } else { 66 } else {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 m_ownerElement->removeInlineStyleProperty(propertyID); 119 m_ownerElement->removeInlineStyleProperty(propertyID);
119 } 120 }
120 121
121 HeapVector<StylePropertyMap::StylePropertyMapEntry> InlineStylePropertyMap::getI terationEntries() 122 HeapVector<StylePropertyMap::StylePropertyMapEntry> InlineStylePropertyMap::getI terationEntries()
122 { 123 {
123 HeapVector<StylePropertyMap::StylePropertyMapEntry> result; 124 HeapVector<StylePropertyMap::StylePropertyMapEntry> result;
124 StylePropertySet& inlineStyleSet = m_ownerElement->ensureMutableInlineStyle( ); 125 StylePropertySet& inlineStyleSet = m_ownerElement->ensureMutableInlineStyle( );
125 for (unsigned i = 0; i < inlineStyleSet.propertyCount(); i++) { 126 for (unsigned i = 0; i < inlineStyleSet.propertyCount(); i++) {
126 StylePropertySet::PropertyReference propertyReference = inlineStyleSet.p ropertyAt(i); 127 StylePropertySet::PropertyReference propertyReference = inlineStyleSet.p ropertyAt(i);
127 CSSPropertyID propertyID = propertyReference.id(); 128 CSSPropertyID propertyID = propertyReference.id();
128 StyleValueVector styleValueVector = cssValueToStyleValueVector(propertyI D, *propertyReference.value()); 129 CSSStyleValueVector styleValueVector = StyleValueFactory::cssValueToStyl eValueVector(propertyID, *propertyReference.value());
129 CSSStyleValueOrCSSStyleValueSequence value; 130 CSSStyleValueOrCSSStyleValueSequence value;
130 if (styleValueVector.size() == 1) 131 if (styleValueVector.size() == 1)
131 value.setCSSStyleValue(styleValueVector[0]); 132 value.setCSSStyleValue(styleValueVector[0]);
132 else 133 else
133 value.setCSSStyleValueSequence(styleValueVector); 134 value.setCSSStyleValueSequence(styleValueVector);
134 result.append(std::make_pair(getPropertyNameString(propertyID), value)); 135 result.append(std::make_pair(getPropertyNameString(propertyID), value));
135 } 136 }
136 return result; 137 return result;
137 } 138 }
138 139
139 } // namespace blink 140 } // namespace blink
140 141
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698