#ifndef MediaQueryExp_h
#define MediaQueryExp_h
#include "CSSValue.h"
#include "MediaFeatureNames.h"
#include <memory>
#include <wtf/RefPtr.h>
#include <wtf/text/AtomicString.h>
namespace WebCore {
class CSSParserValueList;
class MediaQueryExp {
WTF_MAKE_FAST_ALLOCATED;
public:
MediaQueryExp(const AtomicString& mediaFeature, CSSParserValueList* values);
~MediaQueryExp();
AtomicString mediaFeature() const { return m_mediaFeature; }
CSSValue* value() const { return m_value.get(); }
bool operator==(const MediaQueryExp& other) const
{
return (other.m_mediaFeature == m_mediaFeature)
&& ((!other.m_value && !m_value)
|| (other.m_value && m_value && other.m_value->equals(*m_value)));
}
bool isValid() const { return m_isValid; }
bool isViewportDependent() const { return m_mediaFeature == MediaFeatureNames::widthMediaFeature
|| m_mediaFeature == MediaFeatureNames::heightMediaFeature
|| m_mediaFeature == MediaFeatureNames::min_widthMediaFeature
|| m_mediaFeature == MediaFeatureNames::min_heightMediaFeature
|| m_mediaFeature == MediaFeatureNames::max_widthMediaFeature
|| m_mediaFeature == MediaFeatureNames::max_heightMediaFeature
|| m_mediaFeature == MediaFeatureNames::orientationMediaFeature
|| m_mediaFeature == MediaFeatureNames::aspect_ratioMediaFeature
|| m_mediaFeature == MediaFeatureNames::min_aspect_ratioMediaFeature
|| m_mediaFeature == MediaFeatureNames::max_aspect_ratioMediaFeature; }
String serialize() const;
std::unique_ptr<MediaQueryExp> copy() const { return std::make_unique<MediaQueryExp>(*this); }
private:
AtomicString m_mediaFeature;
RefPtr<CSSValue> m_value;
bool m_isValid;
String m_serializationCache;
};
}
#endif