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

Side by Side Diff: sky/engine/core/css/parser/BisonCSSParser-in.cpp

Issue 788113002: Simplify HTMLStyleElement. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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 | « sky/engine/core/css/parser/BisonCSSParser.h ('k') | sky/engine/core/css/parser/CSSGrammar.y » ('j') | 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 BisonCSSParser::BisonCSSParser(const CSSParserContext& context) 101 BisonCSSParser::BisonCSSParser(const CSSParserContext& context)
102 : m_context(context) 102 : m_context(context)
103 , m_important(false) 103 , m_important(false)
104 , m_id(CSSPropertyInvalid) 104 , m_id(CSSPropertyInvalid)
105 , m_styleSheet(nullptr) 105 , m_styleSheet(nullptr)
106 , m_supportsCondition(false) 106 , m_supportsCondition(false)
107 , m_selectorListForParseSelector(0) 107 , m_selectorListForParseSelector(0)
108 , m_numParsedPropertiesBeforeMarginBox(INVALID_NUM_PARSED_PROPERTIES) 108 , m_numParsedPropertiesBeforeMarginBox(INVALID_NUM_PARSED_PROPERTIES)
109 , m_hadSyntacticallyValidCSSRule(false) 109 , m_hadSyntacticallyValidCSSRule(false)
110 , m_logErrors(false)
111 , m_ignoreErrors(false) 110 , m_ignoreErrors(false)
112 , m_defaultNamespace(starAtom) 111 , m_defaultNamespace(starAtom)
113 , m_observer(0) 112 , m_observer(0)
114 , m_source(0) 113 , m_source(0)
115 , m_ruleHeaderType(CSSRuleSourceData::UNKNOWN_RULE) 114 , m_ruleHeaderType(CSSRuleSourceData::UNKNOWN_RULE)
116 , m_allowImportRules(true) 115 , m_allowImportRules(true)
117 , m_allowNamespaceDeclarations(true) 116 , m_allowNamespaceDeclarations(true)
118 , m_inViewport(false) 117 , m_inViewport(false)
119 , m_tokenizer(*this) 118 , m_tokenizer(*this)
120 { 119 {
(...skipping 11 matching lines...) Expand all
132 deleteAllValues(m_floatingValueLists); 131 deleteAllValues(m_floatingValueLists);
133 deleteAllValues(m_floatingFunctions); 132 deleteAllValues(m_floatingFunctions);
134 } 133 }
135 134
136 void BisonCSSParser::setupParser(const char* prefix, unsigned prefixLength, cons t String& string, const char* suffix, unsigned suffixLength) 135 void BisonCSSParser::setupParser(const char* prefix, unsigned prefixLength, cons t String& string, const char* suffix, unsigned suffixLength)
137 { 136 {
138 m_tokenizer.setupTokenizer(prefix, prefixLength, string, suffix, suffixLengt h); 137 m_tokenizer.setupTokenizer(prefix, prefixLength, string, suffix, suffixLengt h);
139 m_ruleHasHeader = true; 138 m_ruleHasHeader = true;
140 } 139 }
141 140
142 void BisonCSSParser::parseSheet(StyleSheetContents* sheet, const String& string, const TextPosition& startPosition, CSSParserObserver* observer, bool logErrors) 141 void BisonCSSParser::parseSheet(StyleSheetContents* sheet, const String& string)
143 { 142 {
144 setStyleSheet(sheet); 143 setStyleSheet(sheet);
145 m_defaultNamespace = starAtom; // Reset the default namespace. 144 m_defaultNamespace = starAtom; // Reset the default namespace.
146 TemporaryChange<CSSParserObserver*> scopedObsever(m_observer, observer);
147 m_logErrors = logErrors && sheet->singleOwnerDocument() && !sheet->baseURL() .isEmpty() && sheet->singleOwnerDocument()->frameHost();
148 m_ignoreErrors = false; 145 m_ignoreErrors = false;
149 m_tokenizer.m_lineNumber = 0; 146 m_tokenizer.m_lineNumber = 0;
150 m_startPosition = startPosition;
151 m_source = &string; 147 m_source = &string;
152 m_tokenizer.m_internal = false; 148 m_tokenizer.m_internal = false;
153 setupParser("", string, ""); 149 setupParser("", string, "");
154 cssyyparse(this); 150 cssyyparse(this);
155 sheet->shrinkToFit(); 151 sheet->shrinkToFit();
156 m_source = 0; 152 m_source = 0;
157 m_rule = nullptr; 153 m_rule = nullptr;
158 m_lineEndings.clear(); 154 m_lineEndings.clear();
159 m_ignoreErrors = false; 155 m_ignoreErrors = false;
160 m_logErrors = false;
161 m_tokenizer.m_internal = true; 156 m_tokenizer.m_internal = true;
162 } 157 }
163 158
164 PassRefPtr<StyleRuleBase> BisonCSSParser::parseRule(StyleSheetContents* sheet, c onst String& string) 159 PassRefPtr<StyleRuleBase> BisonCSSParser::parseRule(StyleSheetContents* sheet, c onst String& string)
165 { 160 {
166 setStyleSheet(sheet); 161 setStyleSheet(sheet);
167 m_allowNamespaceDeclarations = false; 162 m_allowNamespaceDeclarations = false;
168 setupParser("@-internal-rule ", string, ""); 163 setupParser("@-internal-rule ", string, "");
169 cssyyparse(this); 164 cssyyparse(this);
170 return m_rule.release(); 165 return m_rule.release();
(...skipping 1406 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 if (m_tokenizer.is8BitSource()) 1572 if (m_tokenizer.is8BitSource())
1578 location.token.init(m_tokenizer.m_dataStart8.get() + m_ruleHeaderStartOf fset, 0); 1573 location.token.init(m_tokenizer.m_dataStart8.get() + m_ruleHeaderStartOf fset, 0);
1579 else 1574 else
1580 location.token.init(m_tokenizer.m_dataStart16.get() + m_ruleHeaderStartO ffset, 0); 1575 location.token.init(m_tokenizer.m_dataStart16.get() + m_ruleHeaderStartO ffset, 0);
1581 1576
1582 reportError(location, m_ruleHeaderType == CSSRuleSourceData::STYLE_RULE ? In validSelectorCSSError : InvalidRuleCSSError); 1577 reportError(location, m_ruleHeaderType == CSSRuleSourceData::STYLE_RULE ? In validSelectorCSSError : InvalidRuleCSSError);
1583 1578
1584 endRuleHeader(); 1579 endRuleHeader();
1585 } 1580 }
1586 1581
1587 void BisonCSSParser::reportError(const CSSParserLocation&, CSSParserError)
1588 {
1589 // FIXME: error reporting temporatily disabled.
1590 }
1591
1592 bool BisonCSSParser::isLoggingErrors()
1593 {
1594 return m_logErrors && !m_ignoreErrors;
1595 }
1596
1597 void BisonCSSParser::logError(const String& message, const CSSParserLocation& lo cation)
1598 {
1599 unsigned lineNumberInStyleSheet;
1600 unsigned columnNumber = 0;
1601 lineNumberInStyleSheet = location.lineNumber;
1602 FrameConsole& console = m_styleSheet->singleOwnerDocument()->frame()->consol e();
1603 console.addMessage(ConsoleMessage::create(CSSMessageSource, WarningMessageLe vel, message, m_styleSheet->baseURL().string(), lineNumberInStyleSheet + m_start Position.m_line.zeroBasedInt() + 1, columnNumber + 1));
1604 }
1605
1606 StyleRuleKeyframes* BisonCSSParser::createKeyframesRule(const String& name, Pass OwnPtr<Vector<RefPtr<StyleKeyframe> > > popKeyframes, bool isPrefixed) 1582 StyleRuleKeyframes* BisonCSSParser::createKeyframesRule(const String& name, Pass OwnPtr<Vector<RefPtr<StyleKeyframe> > > popKeyframes, bool isPrefixed)
1607 { 1583 {
1608 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes; 1584 OwnPtr<Vector<RefPtr<StyleKeyframe> > > keyframes = popKeyframes;
1609 m_allowImportRules = m_allowNamespaceDeclarations = false; 1585 m_allowImportRules = m_allowNamespaceDeclarations = false;
1610 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create(); 1586 RefPtr<StyleRuleKeyframes> rule = StyleRuleKeyframes::create();
1611 for (size_t i = 0; i < keyframes->size(); ++i) 1587 for (size_t i = 0; i < keyframes->size(); ++i)
1612 rule->parserAppendKeyframe(keyframes->at(i)); 1588 rule->parserAppendKeyframe(keyframes->at(i));
1613 rule->setName(name); 1589 rule->setName(name);
1614 rule->setVendorPrefixed(isPrefixed); 1590 rule->setVendorPrefixed(isPrefixed);
1615 StyleRuleKeyframes* rulePtr = rule.get(); 1591 StyleRuleKeyframes* rulePtr = rule.get();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 if (!m_observer) 1732 if (!m_observer)
1757 return; 1733 return;
1758 1734
1759 if (m_ruleHasHeader) 1735 if (m_ruleHasHeader)
1760 m_observer->endRuleBody(m_tokenizer.safeUserStringTokenOffset(), !valid) ; 1736 m_observer->endRuleBody(m_tokenizer.safeUserStringTokenOffset(), !valid) ;
1761 m_ruleHasHeader = true; 1737 m_ruleHasHeader = true;
1762 } 1738 }
1763 1739
1764 void BisonCSSParser::startRuleHeader(CSSRuleSourceData::Type ruleType) 1740 void BisonCSSParser::startRuleHeader(CSSRuleSourceData::Type ruleType)
1765 { 1741 {
1766 resumeErrorLogging();
1767 m_ruleHeaderType = ruleType; 1742 m_ruleHeaderType = ruleType;
1768 m_ruleHeaderStartOffset = m_tokenizer.safeUserStringTokenOffset(); 1743 m_ruleHeaderStartOffset = m_tokenizer.safeUserStringTokenOffset();
1769 m_ruleHeaderStartLineNumber = m_tokenizer.m_tokenStartLineNumber; 1744 m_ruleHeaderStartLineNumber = m_tokenizer.m_tokenStartLineNumber;
1770 if (m_observer) { 1745 if (m_observer) {
1771 ASSERT(!m_ruleHasHeader); 1746 ASSERT(!m_ruleHasHeader);
1772 m_observer->startRuleHeader(ruleType, m_ruleHeaderStartOffset); 1747 m_observer->startRuleHeader(ruleType, m_ruleHeaderStartOffset);
1773 m_ruleHasHeader = true; 1748 m_ruleHasHeader = true;
1774 } 1749 }
1775 } 1750 }
1776 1751
(...skipping 20 matching lines...) Expand all
1797 } 1772 }
1798 1773
1799 void BisonCSSParser::startRuleBody() 1774 void BisonCSSParser::startRuleBody()
1800 { 1775 {
1801 if (m_observer) 1776 if (m_observer)
1802 m_observer->startRuleBody(m_tokenizer.safeUserStringTokenOffset()); 1777 m_observer->startRuleBody(m_tokenizer.safeUserStringTokenOffset());
1803 } 1778 }
1804 1779
1805 void BisonCSSParser::startProperty() 1780 void BisonCSSParser::startProperty()
1806 { 1781 {
1807 resumeErrorLogging();
1808 if (m_observer) 1782 if (m_observer)
1809 m_observer->startProperty(m_tokenizer.safeUserStringTokenOffset()); 1783 m_observer->startProperty(m_tokenizer.safeUserStringTokenOffset());
1810 } 1784 }
1811 1785
1812 void BisonCSSParser::endProperty(bool isImportantFound, bool isPropertyParsed, C SSParserError errorType) 1786 void BisonCSSParser::endProperty(bool isImportantFound, bool isPropertyParsed, C SSParserError errorType)
1813 { 1787 {
1814 m_id = CSSPropertyInvalid; 1788 m_id = CSSPropertyInvalid;
1815 if (m_observer) 1789 if (m_observer)
1816 m_observer->endProperty(isImportantFound, isPropertyParsed, m_tokenizer. safeUserStringTokenOffset(), errorType); 1790 m_observer->endProperty(isImportantFound, isPropertyParsed, m_tokenizer. safeUserStringTokenOffset(), errorType);
1817 } 1791 }
1818 1792
1819 void BisonCSSParser::startEndUnknownRule() 1793 void BisonCSSParser::startEndUnknownRule()
1820 { 1794 {
1821 if (m_observer) 1795 if (m_observer)
1822 m_observer->startEndUnknownRule(); 1796 m_observer->startEndUnknownRule();
1823 } 1797 }
1824 1798
1825 } 1799 }
OLDNEW
« no previous file with comments | « sky/engine/core/css/parser/BisonCSSParser.h ('k') | sky/engine/core/css/parser/CSSGrammar.y » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698