blob: 22dc8cd09bc0a62939710c7c0be5f9e123273405 [file] [log] [blame]
// Copyright 2015 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.
#ifndef CSSCustomPropertyDeclaration_h
#define CSSCustomPropertyDeclaration_h
#include "core/css/CSSValue.h"
#include "core/css/CSSVariableData.h"
#include "wtf/RefPtr.h"
#include "wtf/text/AtomicString.h"
namespace blink {
class CSSCustomPropertyDeclaration : public CSSValue {
public:
static PassRefPtrWillBeRawPtr<CSSCustomPropertyDeclaration> create(const AtomicString& name, PassRefPtr<CSSVariableData> value)
{
return adoptRefWillBeNoop(new CSSCustomPropertyDeclaration(name, value));
}
static PassRefPtrWillBeRawPtr<CSSCustomPropertyDeclaration> create(const AtomicString& name, CSSValueID id)
{
return adoptRefWillBeNoop(new CSSCustomPropertyDeclaration(name, id));
}
const AtomicString& name() const { return m_name; }
CSSVariableData* value() const { return m_value.get(); }
CSSValueID id() const { return m_valueId; }
String customCSSText() const;
bool equals(const CSSCustomPropertyDeclaration& other) const { return this == &other; }
DECLARE_TRACE_AFTER_DISPATCH();
private:
CSSCustomPropertyDeclaration(const AtomicString& name, CSSValueID id)
: CSSValue(CustomPropertyDeclarationClass)
, m_name(name)
, m_value(nullptr)
, m_valueId(id)
{
ASSERT(id == CSSValueInherit || id == CSSValueInitial || id == CSSValueUnset);
}
CSSCustomPropertyDeclaration(const AtomicString& name, PassRefPtr<CSSVariableData> value)
: CSSValue(CustomPropertyDeclarationClass)
, m_name(name)
, m_value(value)
, m_valueId(CSSValueInternalVariableValue)
{
}
const AtomicString m_name;
RefPtr<CSSVariableData> m_value;
CSSValueID m_valueId;
};
DEFINE_CSS_VALUE_TYPE_CASTS(CSSCustomPropertyDeclaration, isCustomPropertyDeclaration());
} // namespace blink
#endif // CSSCustomPropertyDeclaration_h