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

Unified Diff: Source/core/svg/SVGTests.cpp

Issue 148173018: [SVG] SVGAnimatedString{,List} migration to new SVG property impl. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: remove debug print Created 6 years, 11 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
« no previous file with comments | « Source/core/svg/SVGTests.h ('k') | Source/core/svg/SVGTextPathElement.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/svg/SVGTests.cpp
diff --git a/Source/core/svg/SVGTests.cpp b/Source/core/svg/SVGTests.cpp
index add25eb087d2ae7ba3dd8657a670434573148f7b..11a8e75874e73d1ed587b6c530fa1c20a26b797c 100644
--- a/Source/core/svg/SVGTests.cpp
+++ b/Source/core/svg/SVGTests.cpp
@@ -29,67 +29,16 @@
namespace WebCore {
-// Define custom non-animated property 'requiredFeatures'.
-const SVGPropertyInfo* SVGTests::requiredFeaturesPropertyInfo()
+SVGTests::SVGTests(SVGElement* contextElement)
+ : m_requiredFeatures(SVGStaticStringList::create(contextElement, SVGNames::requiredFeaturesAttr))
+ , m_requiredExtensions(SVGStaticStringList::create(contextElement, SVGNames::requiredExtensionsAttr))
+ , m_systemLanguage(SVGStaticStringList::create(contextElement, SVGNames::systemLanguageAttr))
{
- static const SVGPropertyInfo* s_propertyInfo = 0;
- if (!s_propertyInfo) {
- s_propertyInfo = new SVGPropertyInfo(AnimatedUnknown,
- PropertyIsReadWrite,
- SVGNames::requiredFeaturesAttr,
- SVGNames::requiredFeaturesAttr.localName(),
- &SVGElement::synchronizeRequiredFeatures,
- 0);
- }
- return s_propertyInfo;
-}
-
-// Define custom non-animated property 'requiredExtensions'.
-const SVGPropertyInfo* SVGTests::requiredExtensionsPropertyInfo()
-{
- static const SVGPropertyInfo* s_propertyInfo = 0;
- if (!s_propertyInfo) {
- s_propertyInfo = new SVGPropertyInfo(AnimatedUnknown,
- PropertyIsReadWrite,
- SVGNames::requiredExtensionsAttr,
- SVGNames::requiredExtensionsAttr.localName(),
- &SVGElement::synchronizeRequiredExtensions,
- 0);
- }
- return s_propertyInfo;
-}
-
-// Define custom non-animated property 'systemLanguage'.
-const SVGPropertyInfo* SVGTests::systemLanguagePropertyInfo()
-{
- static const SVGPropertyInfo* s_propertyInfo = 0;
- if (!s_propertyInfo) {
- s_propertyInfo = new SVGPropertyInfo(AnimatedUnknown,
- PropertyIsReadWrite,
- SVGNames::systemLanguageAttr,
- SVGNames::systemLanguageAttr.localName(),
- &SVGElement::synchronizeSystemLanguage,
- 0);
- }
- return s_propertyInfo;
-}
-
-SVGTests::SVGTests()
- : m_requiredFeatures(SVGNames::requiredFeaturesAttr)
- , m_requiredExtensions(SVGNames::requiredExtensionsAttr)
- , m_systemLanguage(SVGNames::systemLanguageAttr)
-{
-}
+ ASSERT(contextElement);
-SVGAttributeToPropertyMap& SVGTests::attributeToPropertyMap()
-{
- DEFINE_STATIC_LOCAL(SVGAttributeToPropertyMap, map, ());
- if (!map.isEmpty())
- return map;
- map.addProperty(requiredFeaturesPropertyInfo());
- map.addProperty(requiredExtensionsPropertyInfo());
- map.addProperty(systemLanguagePropertyInfo());
- return map;
+ contextElement->addToPropertyMap(m_requiredFeatures);
+ contextElement->addToPropertyMap(m_requiredExtensions);
+ contextElement->addToPropertyMap(m_systemLanguage);
}
bool SVGTests::hasExtension(const String&) const
@@ -100,21 +49,34 @@ bool SVGTests::hasExtension(const String&) const
bool SVGTests::isValid() const
{
- unsigned featuresSize = m_requiredFeatures.value.size();
- for (unsigned i = 0; i < featuresSize; ++i) {
- String value = m_requiredFeatures.value.at(i);
- if (value.isEmpty() || !DOMImplementation::hasFeature(value, String()))
- return false;
+ if (m_requiredFeatures->isSpecified()) {
+ const Vector<String>& requiredFeatures = m_requiredFeatures->value()->values();
+ Vector<String>::const_iterator it = requiredFeatures.begin();
+ Vector<String>::const_iterator itEnd = requiredFeatures.end();
+ for (; it != itEnd; ++it) {
+ if (it->isEmpty() || !DOMImplementation::hasFeature(*it, String()))
+ return false;
+ }
}
- unsigned systemLanguageSize = m_systemLanguage.value.size();
- for (unsigned i = 0; i < systemLanguageSize; ++i) {
- String value = m_systemLanguage.value.at(i);
- if (value != defaultLanguage().string().substring(0, 2))
+ if (m_systemLanguage->isSpecified()) {
+ bool matchFound = false;
+
+ const Vector<String>& systemLanguage = m_systemLanguage->value()->values();
+ Vector<String>::const_iterator it = systemLanguage.begin();
+ Vector<String>::const_iterator itEnd = systemLanguage.end();
+ for (; it != itEnd; ++it) {
+ if (*it == defaultLanguage().string().substring(0, 2)) {
+ matchFound = true;
+ break;
+ }
+ }
+
+ if (!matchFound)
return false;
}
- if (!m_requiredExtensions.value.isEmpty())
+ if (!m_requiredExtensions->value()->values().isEmpty())
return false;
return true;
@@ -122,20 +84,22 @@ bool SVGTests::isValid() const
bool SVGTests::parseAttribute(const QualifiedName& name, const AtomicString& value)
{
- if (name == SVGNames::requiredFeaturesAttr) {
- m_requiredFeatures.value.reset(value);
- return true;
- }
- if (name == SVGNames::requiredExtensionsAttr) {
- m_requiredExtensions.value.reset(value);
- return true;
- }
- if (name == SVGNames::systemLanguageAttr) {
- m_systemLanguage.value.reset(value);
- return true;
- }
+ // FIXME: Should handle exceptions here.
+ // This is safe as of now, as the current impl of SVGStringList::setValueAsString never fails.
+ SVGParsingError parseError = NoError;
+
+ if (name == SVGNames::requiredFeaturesAttr)
+ m_requiredFeatures->setBaseValueAsString(value, parseError);
+ else if (name == SVGNames::requiredExtensionsAttr)
+ m_requiredExtensions->setBaseValueAsString(value, parseError);
+ else if (name == SVGNames::systemLanguageAttr)
+ m_systemLanguage->setBaseValueAsString(value, parseError);
+ else
+ return false;
- return false;
+ ASSERT(parseError == NoError);
+
+ return true;
}
bool SVGTests::isKnownAttribute(const QualifiedName& attrName)
@@ -152,49 +116,4 @@ void SVGTests::addSupportedAttributes(HashSet<QualifiedName>& supportedAttribute
supportedAttributes.add(SVGNames::systemLanguageAttr);
}
-void SVGTests::synchronizeRequiredFeatures(SVGElement* contextElement)
-{
- ASSERT(contextElement);
- if (!m_requiredFeatures.shouldSynchronize)
- return;
- AtomicString value(m_requiredFeatures.value.valueAsString());
- m_requiredFeatures.synchronize(contextElement, requiredFeaturesPropertyInfo()->attributeName, value);
-}
-
-void SVGTests::synchronizeRequiredExtensions(SVGElement* contextElement)
-{
- ASSERT(contextElement);
- if (!m_requiredExtensions.shouldSynchronize)
- return;
- AtomicString value(m_requiredExtensions.value.valueAsString());
- m_requiredExtensions.synchronize(contextElement, requiredExtensionsPropertyInfo()->attributeName, value);
-}
-
-void SVGTests::synchronizeSystemLanguage(SVGElement* contextElement)
-{
- ASSERT(contextElement);
- if (!m_systemLanguage.shouldSynchronize)
- return;
- AtomicString value(m_systemLanguage.value.valueAsString());
- m_systemLanguage.synchronize(contextElement, systemLanguagePropertyInfo()->attributeName, value);
-}
-
-SVGStringList& SVGTests::requiredFeatures()
-{
- m_requiredFeatures.shouldSynchronize = true;
- return m_requiredFeatures.value;
-}
-
-SVGStringList& SVGTests::requiredExtensions()
-{
- m_requiredExtensions.shouldSynchronize = true;
- return m_requiredExtensions.value;
-}
-
-SVGStringList& SVGTests::systemLanguage()
-{
- m_systemLanguage.shouldSynchronize = true;
- return m_systemLanguage.value;
-}
-
}
« no previous file with comments | « Source/core/svg/SVGTests.h ('k') | Source/core/svg/SVGTextPathElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698