Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: Source/core/css/parser/MediaQueryParser.cpp

Issue 277433002: MQParser memory leak fix (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/css/parser/MediaQueryParser.h" 6 #include "core/css/parser/MediaQueryParser.h"
7 7
8 #include "MediaTypeNames.h" 8 #include "MediaTypeNames.h"
9 #include "core/css/parser/CSSPropertyParser.h" 9 #include "core/css/parser/CSSPropertyParser.h"
10 #include "core/css/parser/MediaQueryTokenizer.h" 10 #include "core/css/parser/MediaQueryTokenizer.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 , m_mediaTypeSet(false) 207 , m_mediaTypeSet(false)
208 { 208 {
209 } 209 }
210 210
211 void MediaQueryData::clear() 211 void MediaQueryData::clear()
212 { 212 {
213 m_restrictor = MediaQuery::None; 213 m_restrictor = MediaQuery::None;
214 m_mediaType = MediaTypeNames::all; 214 m_mediaType = MediaTypeNames::all;
215 m_mediaTypeSet = false; 215 m_mediaTypeSet = false;
216 m_mediaFeature = String(); 216 m_mediaFeature = String();
217 m_valueList.clear(); 217 m_valueList.destroyAndClear();
218 m_expressions = adoptPtrWillBeNoop(new ExpressionHeapVector); 218 m_expressions = adoptPtrWillBeNoop(new ExpressionHeapVector);
219 } 219 }
220 220
221 PassOwnPtrWillBeRawPtr<MediaQuery> MediaQueryData::takeMediaQuery() 221 PassOwnPtrWillBeRawPtr<MediaQuery> MediaQueryData::takeMediaQuery()
222 { 222 {
223 OwnPtrWillBeRawPtr<MediaQuery> mediaQuery = adoptPtrWillBeNoop(new MediaQuer y(m_restrictor, m_mediaType, m_expressions.release())); 223 OwnPtrWillBeRawPtr<MediaQuery> mediaQuery = adoptPtrWillBeNoop(new MediaQuer y(m_restrictor, m_mediaType, m_expressions.release()));
224 clear(); 224 clear();
225 return mediaQuery.release(); 225 return mediaQuery.release();
226 } 226 }
227 227
228 bool MediaQueryData::addExpression() 228 bool MediaQueryData::addExpression()
229 { 229 {
230 OwnPtrWillBeRawPtr<MediaQueryExp> expression = MediaQueryExp::createIfValid( m_mediaFeature, &m_valueList); 230 OwnPtrWillBeRawPtr<MediaQueryExp> expression = MediaQueryExp::createIfValid( m_mediaFeature, &m_valueList);
231 bool isValid = !!expression; 231 bool isValid = !!expression;
232 m_expressions->append(expression.release()); 232 m_expressions->append(expression.release());
233 m_valueList.clear(); 233 m_valueList.destroyAndClear();
234 return isValid; 234 return isValid;
235 } 235 }
236 236
237 void MediaQueryData::addParserValue(MediaQueryTokenType type, const MediaQueryTo ken& token) 237 void MediaQueryData::addParserValue(MediaQueryTokenType type, const MediaQueryTo ken& token)
238 { 238 {
239 CSSParserValue value; 239 CSSParserValue value;
240 if (type == NumberToken || type == PercentageToken || type == DimensionToken ) { 240 if (type == NumberToken || type == PercentageToken || type == DimensionToken ) {
241 value.setFromNumber(token.numericValue(), token.unitType()); 241 value.setFromNumber(token.numericValue(), token.unitType());
242 value.isInt = (token.numericValueType() == IntegerValueType); 242 value.isInt = (token.numericValueType() == IntegerValueType);
243 } else if (type == DelimiterToken) { 243 } else if (type == DelimiterToken) {
(...skipping 10 matching lines...) Expand all
254 m_valueList.addValue(value); 254 m_valueList.addValue(value);
255 } 255 }
256 256
257 void MediaQueryData::setMediaType(const String& mediaType) 257 void MediaQueryData::setMediaType(const String& mediaType)
258 { 258 {
259 m_mediaType = mediaType; 259 m_mediaType = mediaType;
260 m_mediaTypeSet = true; 260 m_mediaTypeSet = true;
261 } 261 }
262 262
263 } // namespace WebCore 263 } // namespace WebCore
OLDNEW
« Source/core/css/CSSParserValues.cpp ('K') | « Source/core/css/CSSParserValues.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698