#ifndef MediaQueryExp_h
#define MediaQueryExp_h
#include "CSSValue.h"
#include "MediaFeatureNames.h"
#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/text/AtomicString.h>
namespace WebCore {
class CSSParserValueList;
class MediaQueryExp {
WTF_MAKE_FAST_ALLOCATED;
public:
static PassOwnPtr<MediaQueryExp> create(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->cssText() == m_value->cssText()));
}
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;
private:
MediaQueryExp(const AtomicString& mediaFeature, CSSParserValueList* values);
AtomicString m_mediaFeature;
RefPtr<CSSValue> m_value;
bool m_isValid;
String m_serializationCache;
};
}
#endif