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

Unified Diff: third_party/WebKit/Source/core/css/cssom/FilteredComputedStylePropertyMap.cpp

Issue 2054633002: [Typed OM] Implement FilteredComputedStylePropertyMap (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CORE_EXPORT FilteredCSPMap 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/cssom/FilteredComputedStylePropertyMap.cpp
diff --git a/third_party/WebKit/Source/core/css/cssom/FilteredComputedStylePropertyMap.cpp b/third_party/WebKit/Source/core/css/cssom/FilteredComputedStylePropertyMap.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9d7af980851c69a7f767379e0ef41a0fbab9adad
--- /dev/null
+++ b/third_party/WebKit/Source/core/css/cssom/FilteredComputedStylePropertyMap.cpp
@@ -0,0 +1,87 @@
+// Copyright 2016 the Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/css/cssom/FilteredComputedStylePropertyMap.h"
+
+#include "core/css/parser/CSSVariableParser.h"
+
+namespace blink {
+
+FilteredComputedStylePropertyMap::FilteredComputedStylePropertyMap(CSSComputedStyleDeclaration* computedStyleDeclaration, const Vector<CSSPropertyID>& nativeProperties, const Vector<AtomicString>& customProperties)
+ : ComputedStylePropertyMap(computedStyleDeclaration)
+{
+ for (const auto& nativeProperty : nativeProperties) {
+ m_nativeProperties.add(nativeProperty);
+ }
+
+ for (const auto& customProperty: customProperties) {
+ m_customProperties.add(customProperty);
+ }
+}
+
+
+CSSStyleValue* FilteredComputedStylePropertyMap::get(const String& propertyName, ExceptionState& exceptionState)
+{
+ CSSPropertyID propertyID = cssPropertyID(propertyName);
+ if (propertyID != CSSPropertyInvalid && m_nativeProperties.contains(propertyID)) {
+ CSSStyleValueVector styleVector = getAllInternal(propertyID);
+ if (styleVector.isEmpty())
+ return nullptr;
+
+ return styleVector[0];
+ }
+
+ if (propertyID == CSSPropertyInvalid && CSSVariableParser::isValidVariableName(propertyName) && m_customProperties.contains(AtomicString(propertyName))) {
+ CSSStyleValueVector styleVector = getAllInternal(AtomicString(propertyName));
+ if (styleVector.isEmpty())
+ return nullptr;
+
+ return styleVector[0];
+ }
+
+ exceptionState.throwTypeError("Invalid propertyName: " + propertyName);
+ return nullptr;
+}
+
+CSSStyleValueVector FilteredComputedStylePropertyMap::getAll(const String& propertyName, ExceptionState& exceptionState)
+{
+ CSSPropertyID propertyID = cssPropertyID(propertyName);
+ if (propertyID != CSSPropertyInvalid && m_nativeProperties.contains(propertyID))
+ return getAllInternal(propertyID);
+
+ if (propertyID == CSSPropertyInvalid && CSSVariableParser::isValidVariableName(propertyName) && m_customProperties.contains(AtomicString(propertyName)))
+ return getAllInternal(AtomicString(propertyName));
+
+ exceptionState.throwTypeError("Invalid propertyName: " + propertyName);
+ return CSSStyleValueVector();
+}
+
+bool FilteredComputedStylePropertyMap::has(const String& propertyName, ExceptionState& exceptionState)
+{
+ CSSPropertyID propertyID = cssPropertyID(propertyName);
+ if (propertyID != CSSPropertyInvalid && m_nativeProperties.contains(propertyID))
+ return !getAllInternal(propertyID).isEmpty();
+
+ if (propertyID == CSSPropertyInvalid && CSSVariableParser::isValidVariableName(propertyName) && m_customProperties.contains(AtomicString(propertyName)))
+ return !getAllInternal(AtomicString(propertyName)).isEmpty();
+
+ exceptionState.throwTypeError("Invalid propertyName: " + propertyName);
+ return false;
+}
+
+Vector<String> FilteredComputedStylePropertyMap::getProperties()
+{
+ Vector<String> result;
+ for (const auto& nativeProperty : m_nativeProperties) {
+ result.append(getPropertyNameString(nativeProperty));
+ }
+
+ for (const auto& customProperty : m_customProperties) {
+ result.append(customProperty);
+ }
+
+ return result;
+}
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698