#pragma once
#include "SVGAnimatedPropertyMacros.h"
#include "SVGStringListValues.h"
namespace WebCore {
class SVGElement;
class SVGStringList;
class SVGTests {
public:
static bool hasExtension(const String&);
bool isValid() const;
void parseAttribute(const QualifiedName&, const AtomicString&);
static bool isKnownAttribute(const QualifiedName&);
static void addSupportedAttributes(HashSet<QualifiedName>&);
static bool handleAttributeChange(SVGElement*, const QualifiedName&);
static const SVGAttributeToPropertyMap& attributeToPropertyMap();
WEBCORE_EXPORT static bool hasFeatureForLegacyBindings(const String& feature, const String& version);
protected:
SVGTests();
Ref<SVGStringList> requiredFeatures(SVGElement&);
Ref<SVGStringList> requiredExtensions(SVGElement&);
Ref<SVGStringList> systemLanguage(SVGElement&);
void synchronizeRequiredFeatures(SVGElement&);
void synchronizeRequiredExtensions(SVGElement&);
void synchronizeSystemLanguage(SVGElement&);
private:
void synchronizeAttribute(SVGElement& contextElement, SVGSynchronizableAnimatedProperty<SVGStringListValues>&, const QualifiedName& attributeName);
SVGSynchronizableAnimatedProperty<SVGStringListValues> m_requiredFeatures;
SVGSynchronizableAnimatedProperty<SVGStringListValues> m_requiredExtensions;
SVGSynchronizableAnimatedProperty<SVGStringListValues> m_systemLanguage;
};
}