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

Side by Side Diff: Source/core/css/CSSParser-in.cpp

Issue 19555002: Translate viewport related meta tags into @viewport descriptors as suggested by the CSS Device Adap… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. 9 * Copyright (C) 2012 Intel Corporation. All rights reserved.
10 * 10 *
(...skipping 2829 matching lines...) Expand 10 before | Expand all | Expand 10 after
2840 case CSSPropertyWebkitUserSelect: 2840 case CSSPropertyWebkitUserSelect:
2841 case CSSPropertyWebkitWrapFlow: 2841 case CSSPropertyWebkitWrapFlow:
2842 case CSSPropertyWebkitWrapThrough: 2842 case CSSPropertyWebkitWrapThrough:
2843 case CSSPropertyWebkitWritingMode: 2843 case CSSPropertyWebkitWritingMode:
2844 case CSSPropertyWhiteSpace: 2844 case CSSPropertyWhiteSpace:
2845 case CSSPropertyWordBreak: 2845 case CSSPropertyWordBreak:
2846 case CSSPropertyWordWrap: 2846 case CSSPropertyWordWrap:
2847 // These properties should be handled before in isValidKeywordPropertyAn dValue(). 2847 // These properties should be handled before in isValidKeywordPropertyAn dValue().
2848 ASSERT_NOT_REACHED(); 2848 ASSERT_NOT_REACHED();
2849 return false; 2849 return false;
2850 // Properties bellow are validated inside parseViewportProperty, because we 2850 // Properties below are validated inside parseViewportProperty, because we
2851 // check for parser state inViewportScope. We need to invalidate if someone 2851 // check for parser state inViewportScope. We need to invalidate if someone
2852 // adds them outside a @viewport rule. 2852 // adds them outside a @viewport rule.
2853 case CSSPropertyMaxZoom: 2853 case CSSPropertyMaxZoom:
2854 case CSSPropertyMinZoom: 2854 case CSSPropertyMinZoom:
2855 case CSSPropertyOrientation: 2855 case CSSPropertyOrientation:
2856 case CSSPropertyUserZoom: 2856 case CSSPropertyUserZoom:
2857 case CSSPropertyInternalPriority:
2857 validPrimitive = false; 2858 validPrimitive = false;
2858 break; 2859 break;
2859 default: 2860 default:
2860 return parseSVGValue(propId, important); 2861 return parseSVGValue(propId, important);
2861 } 2862 }
2862 2863
2863 if (validPrimitive) { 2864 if (validPrimitive) {
2864 parsedValue = parseValidPrimitive(id, value); 2865 parsedValue = parseValidPrimitive(id, value);
2865 m_valueList->next(); 2866 m_valueList->next();
2866 } 2867 }
(...skipping 8736 matching lines...) Expand 10 before | Expand all | Expand 10 after
11603 m_sourceDataHandler->startEndUnknownRule(); 11604 m_sourceDataHandler->startEndUnknownRule();
11604 } 11605 }
11605 11606
11606 unsigned CSSParser::safeUserStringTokenOffset() 11607 unsigned CSSParser::safeUserStringTokenOffset()
11607 { 11608 {
11608 return min(tokenStartOffset(), static_cast<unsigned>(m_length - 1 - m_parsed TextSuffixLength)) - m_parsedTextPrefixLength; 11609 return min(tokenStartOffset(), static_cast<unsigned>(m_length - 1 - m_parsed TextSuffixLength)) - m_parsedTextPrefixLength;
11609 } 11610 }
11610 11611
11611 StyleRuleBase* CSSParser::createViewportRule() 11612 StyleRuleBase* CSSParser::createViewportRule()
11612 { 11613 {
11613 if (!RuntimeEnabledFeatures::cssViewportEnabled())
11614 return 0;
11615
11616 m_allowImportRules = m_allowNamespaceDeclarations = false; 11614 m_allowImportRules = m_allowNamespaceDeclarations = false;
11617 11615
11618 RefPtr<StyleRuleViewport> rule = StyleRuleViewport::create(); 11616 RefPtr<StyleRuleViewport> rule = StyleRuleViewport::create();
11619 11617
11620 rule->setProperties(createStylePropertySet()); 11618 rule->setProperties(createStylePropertySet());
11621 clearProperties(); 11619 clearProperties();
11622 11620
11623 StyleRuleViewport* result = rule.get(); 11621 StyleRuleViewport* result = rule.get();
11624 m_parsedRules.append(rule.release()); 11622 m_parsedRules.append(rule.release());
11625 endRuleBody(); 11623 endRuleBody();
11626 11624
11627 return result; 11625 return result;
11628 } 11626 }
11629 11627
11630 bool CSSParser::parseViewportProperty(CSSPropertyID propId, bool important) 11628 bool CSSParser::parseViewportProperty(CSSPropertyID propId, bool important)
11631 { 11629 {
11632 ASSERT(RuntimeEnabledFeatures::cssViewportEnabled());
11633
11634 CSSParserValue* value = m_valueList->current(); 11630 CSSParserValue* value = m_valueList->current();
11635 if (!value) 11631 if (!value)
11636 return false; 11632 return false;
11637 11633
11638 CSSValueID id = value->id; 11634 CSSValueID id = value->id;
11639 bool validPrimitive = false; 11635 bool validPrimitive = false;
11640 11636
11641 switch (propId) { 11637 switch (propId) {
11638 case CSSPropertyInternalPriority:
11639 if (id == CSSValueAuto)
11640 validPrimitive = true;
11641 else
11642 validPrimitive = (!id && validUnit(value, FNumber | FNonNeg));
11643 break;
11642 case CSSPropertyMinWidth: // auto | extend-to-zoom | <length> | <percentage> 11644 case CSSPropertyMinWidth: // auto | extend-to-zoom | <length> | <percentage>
11643 case CSSPropertyMaxWidth: 11645 case CSSPropertyMaxWidth:
11644 case CSSPropertyMinHeight: 11646 case CSSPropertyMinHeight:
11645 case CSSPropertyMaxHeight: 11647 case CSSPropertyMaxHeight:
11646 if (id == CSSValueAuto || id == CSSValueInternalExtendToZoom) 11648 if (id == CSSValueAuto || id == CSSValueInternalExtendToZoom)
11647 validPrimitive = true; 11649 validPrimitive = true;
11648 else 11650 else
11649 validPrimitive = (!id && validUnit(value, FLength | FPercent | FNonN eg)); 11651 validPrimitive = (!id && validUnit(value, FLength | FPercent | FNonN eg));
11650 break; 11652 break;
11651 case CSSPropertyWidth: // shorthand 11653 case CSSPropertyWidth: // shorthand
(...skipping 30 matching lines...) Expand all
11682 addProperty(propId, parsedValue.release(), important); 11684 addProperty(propId, parsedValue.release(), important);
11683 return true; 11685 return true;
11684 } 11686 }
11685 } 11687 }
11686 11688
11687 return false; 11689 return false;
11688 } 11690 }
11689 11691
11690 bool CSSParser::parseViewportShorthand(CSSPropertyID propId, CSSPropertyID first , CSSPropertyID second, bool important) 11692 bool CSSParser::parseViewportShorthand(CSSPropertyID propId, CSSPropertyID first , CSSPropertyID second, bool important)
11691 { 11693 {
11692 ASSERT(RuntimeEnabledFeatures::cssViewportEnabled());
11693 unsigned numValues = m_valueList->size(); 11694 unsigned numValues = m_valueList->size();
11694 11695
11695 if (numValues > 2) 11696 if (numValues > 2)
11696 return false; 11697 return false;
11697 11698
11698 ShorthandScope scope(this, propId); 11699 ShorthandScope scope(this, propId);
11699 11700
11700 if (!parseViewportProperty(first, important)) 11701 if (!parseViewportProperty(first, important))
11701 return false; 11702 return false;
11702 11703
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
11947 { 11948 {
11948 // The tokenizer checks for the construct of an+b. 11949 // The tokenizer checks for the construct of an+b.
11949 // However, since the {ident} rule precedes the {nth} rule, some of those 11950 // However, since the {ident} rule precedes the {nth} rule, some of those
11950 // tokens are identified as string literal. Furthermore we need to accept 11951 // tokens are identified as string literal. Furthermore we need to accept
11951 // "odd" and "even" which does not match to an+b. 11952 // "odd" and "even" which does not match to an+b.
11952 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even") 11953 return equalIgnoringCase(token, "odd") || equalIgnoringCase(token, "even")
11953 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n"); 11954 || equalIgnoringCase(token, "n") || equalIgnoringCase(token, "-n");
11954 } 11955 }
11955 11956
11956 } 11957 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698