blob: 6b542fc71ed087462e96791773049965cf0fd7e4 [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 CSSVariableResolver_h
#define CSSVariableResolver_h
#include "core/CSSPropertyNames.h"
#include "core/css/parser/CSSParserToken.h"
#include "wtf/HashSet.h"
#include "wtf/text/AtomicString.h"
#include "wtf/text/AtomicStringHash.h"
namespace blink {
class CSSParserTokenRange;
class CSSVariableReferenceValue;
class StyleResolverState;
class StyleVariableData;
class CSSVariableResolver {
public:
static void resolveVariableDefinitions(StyleVariableData*);
static void resolveAndApplyVariableReferences(StyleResolverState&, CSSPropertyID, const CSSVariableReferenceValue&);
private:
CSSVariableResolver(StyleVariableData*);
CSSVariableResolver(StyleVariableData*, AtomicString& variable);
bool resolveVariableTokensRecursive(CSSParserTokenRange, Vector<CSSParserToken>& result);
bool resolveVariableReferencesFromTokens(CSSParserTokenRange tokens, Vector<CSSParserToken>& result);
StyleVariableData* m_styleVariableData;
HashSet<AtomicString> m_variablesSeen;
bool m_cycleDetected;
};
} // namespace blink
#endif // CSSVariableResolver