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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp

Issue 1380083004: Move viewport descriptor handling into CSSPropertyParser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another attempt Created 5 years, 2 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
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 void CSSPropertyParser::addProperty(CSSPropertyID propId, PassRefPtrWillBeRawPtr <CSSValue> value, bool important, bool implicit) 76 void CSSPropertyParser::addProperty(CSSPropertyID propId, PassRefPtrWillBeRawPtr <CSSValue> value, bool important, bool implicit)
77 { 77 {
78 ASSERT(!isPropertyAlias(propId)); 78 ASSERT(!isPropertyAlias(propId));
79 79
80 int shorthandIndex = 0; 80 int shorthandIndex = 0;
81 bool setFromShorthand = false; 81 bool setFromShorthand = false;
82 82
83 if (m_currentShorthand) { 83 if (m_currentShorthand) {
84 Vector<StylePropertyShorthand, 4> shorthands; 84 Vector<StylePropertyShorthand, 4> shorthands;
85 getMatchingShorthandsForLonghand(propId, &shorthands); 85 getMatchingShorthandsForLonghand(propId, &shorthands);
86 // Viewport descriptors have width and height as shorthands, but it does n't 86 setFromShorthand = true;
87 // make sense for CSSProperties.in to consider them as such. The shortha nd
88 // index is only used by the inspector and doesn't affect viewport
89 // descriptors.
90 if (shorthands.isEmpty())
91 ASSERT(m_currentShorthand == CSSPropertyWidth || m_currentShorthand == CSSPropertyHeight);
92 else
93 setFromShorthand = true;
94
95 if (shorthands.size() > 1) 87 if (shorthands.size() > 1)
96 shorthandIndex = indexOfShorthandForLonghand(m_currentShorthand, sho rthands); 88 shorthandIndex = indexOfShorthandForLonghand(m_currentShorthand, sho rthands);
97 } 89 }
98 90
99 m_parsedProperties.append(CSSProperty(propId, value, important, setFromShort hand, shorthandIndex, m_implicitShorthand || implicit)); 91 m_parsedProperties.append(CSSProperty(propId, value, important, setFromShort hand, shorthandIndex, m_implicitShorthand || implicit));
100 } 92 }
101 93
102 void CSSPropertyParser::rollbackLastProperties(int num) 94 void CSSPropertyParser::rollbackLastProperties(int num)
103 { 95 {
104 ASSERT(num >= 0); 96 ASSERT(num >= 0);
(...skipping 6423 matching lines...) Expand 10 before | Expand all | Expand 10 after
6528 6520
6529 ASSERT(!m_parsedCalculation); 6521 ASSERT(!m_parsedCalculation);
6530 m_parsedCalculation = CSSCalcValue::create(args, range); 6522 m_parsedCalculation = CSSCalcValue::create(args, range);
6531 6523
6532 if (!m_parsedCalculation) 6524 if (!m_parsedCalculation)
6533 return false; 6525 return false;
6534 6526
6535 return true; 6527 return true;
6536 } 6528 }
6537 6529
6538 bool CSSPropertyParser::parseViewportProperty(CSSPropertyID propId, bool importa nt)
6539 {
6540 ASSERT(RuntimeEnabledFeatures::cssViewportEnabled() || isUASheetBehavior(m_c ontext.mode()));
6541
6542 CSSParserValue* value = m_valueList->current();
6543 if (!value)
6544 return false;
6545
6546 CSSValueID id = value->id;
6547 bool validPrimitive = false;
6548
6549 switch (propId) {
6550 case CSSPropertyMinWidth: // auto | extend-to-zoom | <length> | <percentage>
6551 case CSSPropertyMaxWidth:
6552 case CSSPropertyMinHeight:
6553 case CSSPropertyMaxHeight:
6554 if (id == CSSValueAuto || id == CSSValueInternalExtendToZoom)
6555 validPrimitive = true;
6556 else
6557 validPrimitive = validUnit(value, FLength | FPercent | FNonNeg);
6558 break;
6559 case CSSPropertyWidth: // shorthand
6560 return parseViewportShorthand(propId, CSSPropertyMinWidth, CSSPropertyMa xWidth, important);
6561 case CSSPropertyHeight:
6562 return parseViewportShorthand(propId, CSSPropertyMinHeight, CSSPropertyM axHeight, important);
6563 case CSSPropertyMinZoom: // auto | <number> | <percentage>
6564 case CSSPropertyMaxZoom:
6565 case CSSPropertyZoom:
6566 if (id == CSSValueAuto)
6567 validPrimitive = true;
6568 else
6569 validPrimitive = validUnit(value, FNumber | FPercent | FNonNeg);
6570 break;
6571 case CSSPropertyUserZoom: // zoom | fixed
6572 if (id == CSSValueZoom || id == CSSValueFixed)
6573 validPrimitive = true;
6574 break;
6575 case CSSPropertyOrientation: // auto | portrait | landscape
6576 if (id == CSSValueAuto || id == CSSValuePortrait || id == CSSValueLandsc ape)
6577 validPrimitive = true;
6578 default:
6579 break;
6580 }
6581
6582 RefPtrWillBeRawPtr<CSSValue> parsedValue = nullptr;
6583 if (validPrimitive) {
6584 parsedValue = parseValidPrimitive(id, value);
6585 m_valueList->next();
6586 }
6587
6588 if (parsedValue) {
6589 if (!m_valueList->current() || inShorthand()) {
6590 addProperty(propId, parsedValue.release(), important);
6591 return true;
6592 }
6593 }
6594
6595 return false;
6596 }
6597
6598 bool CSSPropertyParser::parseViewportShorthand(CSSPropertyID propId, CSSProperty ID first, CSSPropertyID second, bool important)
6599 {
6600 ASSERT(RuntimeEnabledFeatures::cssViewportEnabled() || isUASheetBehavior(m_c ontext.mode()));
6601 unsigned numValues = m_valueList->size();
6602
6603 if (numValues > 2)
6604 return false;
6605
6606 ShorthandScope scope(this, propId);
6607
6608 if (!parseViewportProperty(first, important))
6609 return false;
6610
6611 // If just one value is supplied, the second value
6612 // is implicitly initialized with the first value.
6613 if (numValues == 1)
6614 m_valueList->previous();
6615
6616 return parseViewportProperty(second, important);
6617 }
6618
6619 template <typename CharacterType> 6530 template <typename CharacterType>
6620 static CSSPropertyID unresolvedCSSPropertyID(const CharacterType* propertyName, unsigned length) 6531 static CSSPropertyID unresolvedCSSPropertyID(const CharacterType* propertyName, unsigned length)
6621 { 6532 {
6622 char buffer[maxCSSPropertyNameLength + 1]; // 1 for null character 6533 char buffer[maxCSSPropertyNameLength + 1]; // 1 for null character
6623 6534
6624 for (unsigned i = 0; i != length; ++i) { 6535 for (unsigned i = 0; i != length; ++i) {
6625 CharacterType c = propertyName[i]; 6536 CharacterType c = propertyName[i];
6626 if (c == 0 || c >= 0x7F) 6537 if (c == 0 || c >= 0x7F)
6627 return CSSPropertyInvalid; // illegal character 6538 return CSSPropertyInvalid; // illegal character
6628 buffer[i] = toASCIILower(c); 6539 buffer[i] = toASCIILower(c);
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
7188 } 7099 }
7189 } 7100 }
7190 7101
7191 if (!list->length()) 7102 if (!list->length())
7192 return nullptr; 7103 return nullptr;
7193 7104
7194 return list.release(); 7105 return list.release();
7195 } 7106 }
7196 7107
7197 } // namespace blink 7108 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698