#pragma once
#include "SVGAttribute.h"
#include "SVGStringListValues.h"
namespace WebCore {
class SVGElement;
class SVGStringList;
template<typename OwnerType, typename... BaseTypes>
class SVGAttributeRegistry;
template<typename OwnerType, typename... BaseTypes>
class SVGAttributeOwnerProxyImpl;
class SVGTests {
WTF_MAKE_NONCOPYABLE(SVGTests);
public:
static bool hasExtension(const String&);
bool isValid() const;
using AttributeRegistry = SVGAttributeRegistry<SVGTests>;
static AttributeRegistry& attributeRegistry();
static bool isKnownAttribute(const QualifiedName& attributeName);
void parseAttribute(const QualifiedName&, const AtomicString&);
void svgAttributeChanged(const QualifiedName&);
static void addSupportedAttributes(HashSet<QualifiedName>&);
WEBCORE_EXPORT static bool hasFeatureForLegacyBindings(const String& feature, const String& version);
Ref<SVGStringList> requiredFeatures();
Ref<SVGStringList> requiredExtensions();
Ref<SVGStringList> systemLanguage();
protected:
SVGTests(SVGElement* contextElement);
private:
using AttributeOwnerProxy = SVGAttributeOwnerProxyImpl<SVGTests>;
static void registerAttributes();
SVGElement& m_contextElement;
SVGStringListValuesAttribute m_requiredFeatures { SVGNames::requiredFeaturesAttr };
SVGStringListValuesAttribute m_requiredExtensions { SVGNames::requiredExtensionsAttr };
SVGStringListValuesAttribute m_systemLanguage { SVGNames::systemLanguageAttr };
};
}