DeprecatedCSSOMValue.h [plain text]
#pragma once
#include "CSSValue.h"
#include "ExceptionOr.h"
#include <wtf/Ref.h>
#include <wtf/RefCounted.h>
#include <wtf/TypeCasts.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class DeprecatedCSSOMValue : public RefCounted<DeprecatedCSSOMValue> {
public:
enum Type {
CSS_INHERIT = 0,
CSS_PRIMITIVE_VALUE = 1,
CSS_VALUE_LIST = 2,
CSS_CUSTOM = 3
};
void deref()
{
if (derefBase())
destroy();
}
WEBCORE_EXPORT unsigned cssValueType() const;
WEBCORE_EXPORT String cssText() const;
ExceptionOr<void> setCssText(const String&) { return { }; }
bool equals(const DeprecatedCSSOMValue& other) const;
bool operator==(const DeprecatedCSSOMValue& other) const { return equals(other); }
bool isComplexValue() const { return m_classType == DeprecatedComplexValueClass; }
bool isPrimitiveValue() const { return m_classType == DeprecatedPrimitiveValueClass; }
bool isValueList() const { return m_classType == DeprecatedValueListClass; }
protected:
static const size_t ClassTypeBits = 2;
enum DeprecatedClassType {
DeprecatedComplexValueClass,
DeprecatedPrimitiveValueClass,
DeprecatedValueListClass
};
DeprecatedClassType classType() const { return static_cast<DeprecatedClassType>(m_classType); }
DeprecatedCSSOMValue(DeprecatedClassType classType)
: m_classType(classType)
{
}
~DeprecatedCSSOMValue() { }
private:
WEBCORE_EXPORT void destroy();
protected:
unsigned m_valueListSeparator : CSSValue::ValueListSeparatorBits;
private:
unsigned m_classType : ClassTypeBits; };
class DeprecatedCSSOMComplexValue : public DeprecatedCSSOMValue {
public:
static Ref<DeprecatedCSSOMComplexValue> create(const CSSValue& value)
{
return adoptRef(*new DeprecatedCSSOMComplexValue(value));
}
bool equals(const DeprecatedCSSOMComplexValue& other) const { return m_value->equals(other.m_value); }
String cssText() const { return m_value->cssText(); }
unsigned cssValueType() const { return m_value->cssValueType(); }
protected:
DeprecatedCSSOMComplexValue(const CSSValue& value)
: DeprecatedCSSOMValue(DeprecatedComplexValueClass)
, m_value(const_cast<CSSValue&>(value))
{
}
private:
Ref<CSSValue> m_value;
};
}
#define SPECIALIZE_TYPE_TRAITS_CSSOM_VALUE(ToValueTypeName, predicate) \
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \
static bool isType(const WebCore::DeprecatedCSSOMValue& value) { return value.predicate; } \
SPECIALIZE_TYPE_TRAITS_END()
SPECIALIZE_TYPE_TRAITS_CSSOM_VALUE(DeprecatedCSSOMComplexValue, isComplexValue())