21
21
22
22
#include " bindings/core/v8/ExceptionState.h"
23
23
#include " core/css/CSSStyleSheet.h"
24
- #include " core/css/MediaQuery.h"
25
24
#include " core/css/MediaQueryExp.h"
26
25
#include " core/css/parser/MediaQueryParser.h"
27
26
#include " wtf/text/StringBuilder.h"
@@ -58,15 +57,15 @@ MediaQuerySet::MediaQuerySet(const MediaQuerySet& o)
58
57
m_queries[i] = o.m_queries [i]->copy ();
59
58
}
60
59
61
- MediaQuerySet* MediaQuerySet::create (const String& mediaString) {
60
+ RefPtr< MediaQuerySet> MediaQuerySet::create (const String& mediaString) {
62
61
if (mediaString.isEmpty ())
63
62
return MediaQuerySet::create ();
64
63
65
64
return MediaQueryParser::parseMediaQuerySet (mediaString);
66
65
}
67
66
68
67
bool MediaQuerySet::set (const String& mediaString) {
69
- MediaQuerySet* result = create (mediaString);
68
+ RefPtr< MediaQuerySet> result = create (mediaString);
70
69
m_queries.swap (result->m_queries );
71
70
return true ;
72
71
}
@@ -75,46 +74,46 @@ bool MediaQuerySet::add(const String& queryString) {
75
74
// To "parse a media query" for a given string means to follow "the parse
76
75
// a media query list" steps and return "null" if more than one media query
77
76
// is returned, or else the returned media query.
78
- MediaQuerySet* result = create (queryString);
77
+ RefPtr< MediaQuerySet> result = create (queryString);
79
78
80
79
// Only continue if exactly one media query is found, as described above.
81
80
if (result->m_queries .size () != 1 )
82
81
return true ;
83
82
84
- MediaQuery* newQuery = result->m_queries [0 ]. release ( );
83
+ std::unique_ptr< MediaQuery> newQuery = std::move ( result->m_queries [0 ]);
85
84
ASSERT (newQuery);
86
85
87
86
// If comparing with any of the media queries in the collection of media
88
87
// queries returns true terminate these steps.
89
88
for (size_t i = 0 ; i < m_queries.size (); ++i) {
90
- MediaQuery* query = m_queries[i]. get () ;
91
- if (* query == *newQuery)
89
+ MediaQuery& query = * m_queries[i];
90
+ if (query == *newQuery)
92
91
return true ;
93
92
}
94
93
95
- m_queries.push_back (newQuery);
94
+ m_queries.push_back (std::move ( newQuery) );
96
95
return true ;
97
96
}
98
97
99
98
bool MediaQuerySet::remove (const String& queryStringToRemove) {
100
99
// To "parse a media query" for a given string means to follow "the parse
101
100
// a media query list" steps and return "null" if more than one media query
102
101
// is returned, or else the returned media query.
103
- MediaQuerySet* result = create (queryStringToRemove);
102
+ RefPtr< MediaQuerySet> result = create (queryStringToRemove);
104
103
105
104
// Only continue if exactly one media query is found, as described above.
106
105
if (result->m_queries .size () != 1 )
107
106
return true ;
108
107
109
- MediaQuery* newQuery = result->m_queries [0 ]. release ( );
108
+ std::unique_ptr< MediaQuery> newQuery = std::move ( result->m_queries [0 ]);
110
109
ASSERT (newQuery);
111
110
112
111
// Remove any media query from the collection of media queries for which
113
112
// comparing with the media query returns true.
114
113
bool found = false ;
115
114
for (size_t i = 0 ; i < m_queries.size (); ++i) {
116
- MediaQuery* query = m_queries[i]. get () ;
117
- if (* query == *newQuery) {
115
+ MediaQuery& query = * m_queries[i];
116
+ if (query == *newQuery) {
118
117
m_queries.remove (i);
119
118
--i;
120
119
found = true ;
@@ -124,8 +123,8 @@ bool MediaQuerySet::remove(const String& queryStringToRemove) {
124
123
return found;
125
124
}
126
125
127
- void MediaQuerySet::addMediaQuery (MediaQuery* mediaQuery) {
128
- m_queries.push_back (mediaQuery);
126
+ void MediaQuerySet::addMediaQuery (std::unique_ptr< MediaQuery> mediaQuery) {
127
+ m_queries.push_back (std::move ( mediaQuery) );
129
128
}
130
129
131
130
String MediaQuerySet::mediaText () const {
@@ -142,16 +141,13 @@ String MediaQuerySet::mediaText() const {
142
141
return text.toString ();
143
142
}
144
143
145
- DEFINE_TRACE (MediaQuerySet) {
146
- visitor->trace (m_queries);
147
- }
148
-
149
- MediaList::MediaList (MediaQuerySet* mediaQueries, CSSStyleSheet* parentSheet)
144
+ MediaList::MediaList (RefPtr<MediaQuerySet> mediaQueries,
145
+ CSSStyleSheet* parentSheet)
150
146
: m_mediaQueries(mediaQueries),
151
147
m_parentStyleSheet (parentSheet),
152
148
m_parentRule(nullptr ) {}
153
149
154
- MediaList::MediaList (MediaQuerySet* mediaQueries, CSSRule* parentRule)
150
+ MediaList::MediaList (RefPtr< MediaQuerySet> mediaQueries, CSSRule* parentRule)
155
151
: m_mediaQueries(mediaQueries),
156
152
m_parentStyleSheet(nullptr ),
157
153
m_parentRule(parentRule) {}
@@ -166,7 +162,8 @@ void MediaList::setMediaText(const String& value) {
166
162
}
167
163
168
164
String MediaList::item (unsigned index) const {
169
- const HeapVector<Member<MediaQuery>>& queries = m_mediaQueries->queryVector ();
165
+ const Vector<std::unique_ptr<MediaQuery>>& queries =
166
+ m_mediaQueries->queryVector ();
170
167
if (index < queries.size ())
171
168
return queries[index]->cssText ();
172
169
return String ();
@@ -202,13 +199,12 @@ void MediaList::appendMedium(const String& medium,
202
199
m_parentStyleSheet->didMutate ();
203
200
}
204
201
205
- void MediaList::reattach (MediaQuerySet* mediaQueries) {
202
+ void MediaList::reattach (RefPtr< MediaQuerySet> mediaQueries) {
206
203
ASSERT (mediaQueries);
207
204
m_mediaQueries = mediaQueries;
208
205
}
209
206
210
207
DEFINE_TRACE (MediaList) {
211
- visitor->trace (m_mediaQueries);
212
208
visitor->trace (m_parentStyleSheet);
213
209
visitor->trace (m_parentRule);
214
210
}
0 commit comments