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 3 // found in the LICENSE file. 4 5 #ifndef SizesAttributeParser_h 6 #define SizesAttributeParser_h 7 8 #include "core/css/MediaValues.h" 9 #include "core/css/parser/MediaQueryParser.h" 10 #include "platform/heap/Handle.h" 11 #include "wtf/text/WTFString.h" 12 13 namespace blink { 14 15 class SizesAttributeParser { 16 STACK_ALLOCATED(); 17 public: 18 SizesAttributeParser(PassRefPtr<MediaValues>, const String&); 19 viewportDependant()20 bool viewportDependant() const { return m_viewportDependant; } 21 unsigned length(); 22 23 private: 24 bool parse(Vector<MediaQueryToken>& tokens); 25 bool parseMediaConditionAndLength(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken); 26 unsigned effectiveSize(); 27 bool calculateLengthInPixels(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken, unsigned& result); 28 bool mediaConditionMatches(PassRefPtrWillBeRawPtr<MediaQuerySet> mediaCondition); 29 unsigned effectiveSizeDefaultValue(); 30 31 RefPtrWillBeMember<MediaQuerySet> m_mediaCondition; 32 RefPtr<MediaValues> m_mediaValues; 33 unsigned m_length; 34 bool m_lengthWasSet; 35 bool m_viewportDependant; 36 Vector<MediaQueryToken> m_tokens; 37 bool m_isValid; 38 }; 39 40 } // namespace 41 42 #endif 43 44