4 * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>.
5 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #ifndef MediaQueryExp_h
30 #define MediaQueryExp_h
32 #include "core/CSSValueKeywords.h"
33 #include "core/CoreExport.h"
34 #include "core/MediaFeatureNames.h"
35 #include "core/css/CSSPrimitiveValue.h"
36 #include "core/css/CSSValue.h"
37 #include "wtf/Allocator.h"
38 #include "wtf/PassOwnPtr.h"
39 #include "wtf/RefPtr.h"
45 struct MediaQueryExpValue
{
46 DISALLOW_ALLOCATION();
49 CSSPrimitiveValue::UnitType unit
;
60 , unit(CSSPrimitiveValue::UnitType::Unknown
)
69 bool isValid() const { return (isID
|| isValue
|| isRatio
); }
70 String
cssText() const;
71 bool equals(const MediaQueryExpValue
& expValue
) const
74 return (id
== expValue
.id
);
76 return (value
== expValue
.value
);
78 return (numerator
== expValue
.numerator
&& denominator
== expValue
.denominator
);
79 return !expValue
.isValid();
83 class CORE_EXPORT MediaQueryExp
: public NoBaseWillBeGarbageCollectedFinalized
<MediaQueryExp
> {
84 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(MediaQueryExp
);
86 static PassOwnPtrWillBeRawPtr
<MediaQueryExp
> createIfValid(const String
& mediaFeature
, const Vector
<CSSParserToken
, 4>&);
89 const String
& mediaFeature() const { return m_mediaFeature
; }
91 MediaQueryExpValue
expValue() const { return m_expValue
; }
93 bool operator==(const MediaQueryExp
& other
) const;
95 bool isViewportDependent() const;
97 String
serialize() const;
99 PassOwnPtrWillBeRawPtr
<MediaQueryExp
> copy() const { return adoptPtrWillBeNoop(new MediaQueryExp(*this)); }
101 MediaQueryExp(const MediaQueryExp
& other
);
103 DEFINE_INLINE_TRACE() { }
106 MediaQueryExp(const String
&, const MediaQueryExpValue
&);
108 String m_mediaFeature
;
109 MediaQueryExpValue m_expValue
;