| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |