110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// found in the LICENSE file. 410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#ifndef SizesAttributeParser_h 610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#define SizesAttributeParser_h 710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "core/css/MediaValues.h" 910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "core/css/parser/MediaQueryParser.h" 1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "platform/heap/Handle.h" 1110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "wtf/text/WTFString.h" 1210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 1410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 1510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochclass SizesAttributeParser { 1610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch STACK_ALLOCATED(); 1710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochpublic: 18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) SizesAttributeParser(PassRefPtr<MediaValues>, const String&); 1910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 20c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool viewportDependant() const { return m_viewportDependant; } 21c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) unsigned length(); 2210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 23c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)private: 2410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch bool parse(Vector<MediaQueryToken>& tokens); 25f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu bool parseMediaConditionAndLength(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken); 2610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch unsigned effectiveSize(); 27f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu bool calculateLengthInPixels(MediaQueryTokenIterator startToken, MediaQueryTokenIterator endToken, unsigned& result); 2810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch bool mediaConditionMatches(PassRefPtrWillBeRawPtr<MediaQuerySet> mediaCondition); 2910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch unsigned effectiveSizeDefaultValue(); 3010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 3110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch RefPtrWillBeMember<MediaQuerySet> m_mediaCondition; 3210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch RefPtr<MediaValues> m_mediaValues; 3310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch unsigned m_length; 34f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) bool m_lengthWasSet; 35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool m_viewportDependant; 36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) Vector<MediaQueryToken> m_tokens; 37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool m_isValid; 3810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}; 3910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 4010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch} // namespace 4110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 4210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#endif 4310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 44