• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3  * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20 
21 #ifndef MediaList_h
22 #define MediaList_h
23 
24 #include "StyleBase.h"
25 #include <wtf/PassRefPtr.h>
26 #include <wtf/Vector.h>
27 
28 namespace WebCore {
29 
30 class CSSImportRule;
31 class CSSStyleSheet;
32 class MediaQuery;
33 class String;
34 
35 typedef int ExceptionCode;
36 
37 class MediaList : public StyleBase {
38 public:
create()39     static PassRefPtr<MediaList> create()
40     {
41         return adoptRef(new MediaList(0, false));
42     }
create(CSSImportRule * parentRule,const String & media)43     static PassRefPtr<MediaList> create(CSSImportRule* parentRule, const String& media)
44     {
45         return adoptRef(new MediaList(parentRule, media));
46     }
create(CSSStyleSheet * parentSheet,const String & media)47     static PassRefPtr<MediaList> create(CSSStyleSheet* parentSheet, const String& media)
48     {
49         return adoptRef(new MediaList(parentSheet, media, false));
50     }
51 
createAllowingDescriptionSyntax(const String & mediaQueryOrDescription)52     static PassRefPtr<MediaList> createAllowingDescriptionSyntax(const String& mediaQueryOrDescription)
53     {
54         return adoptRef(new MediaList(0, mediaQueryOrDescription, true));
55     }
createAllowingDescriptionSyntax(CSSStyleSheet * parentSheet,const String & mediaQueryOrDescription)56     static PassRefPtr<MediaList> createAllowingDescriptionSyntax(CSSStyleSheet* parentSheet, const String& mediaQueryOrDescription)
57     {
58         return adoptRef(new MediaList(parentSheet, mediaQueryOrDescription, true));
59     }
60 
create(const String & media,bool allowDescriptionSyntax)61     static PassRefPtr<MediaList> create(const String& media, bool allowDescriptionSyntax)
62     {
63         return adoptRef(new MediaList(0, media, allowDescriptionSyntax));
64     }
65 
66     virtual ~MediaList();
67 
length()68     unsigned length() const { return m_queries.size(); }
69     String item(unsigned index) const;
70     void deleteMedium(const String& oldMedium, ExceptionCode&);
71     void appendMedium(const String& newMedium, ExceptionCode&);
72 
73     String mediaText() const;
74     void setMediaText(const String&, ExceptionCode&xo);
75 
76     void appendMediaQuery(MediaQuery*);
mediaQueries()77     const Vector<MediaQuery*>& mediaQueries() const { return m_queries; }
78 
79 private:
80     MediaList(CSSStyleSheet* parentSheet, bool fallbackToDescription);
81     MediaList(CSSStyleSheet* parentSheet, const String& media, bool fallbackToDescription);
82     MediaList(CSSImportRule* parentRule, const String& media);
83 
84     void notifyChanged();
85 
86     Vector<MediaQuery*> m_queries;
87     bool m_fallback; // true if failed media query parsing should fallback to media description parsing
88 };
89 
90 } // namespace
91 
92 #endif
93