<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[209318] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/209318">209318</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2016-12-05 09:13:42 -0800 (Mon, 05 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Parser] Add parseValue support to new parser. Use new parser for UA sheet too if useNewParser is set.
https://bugs.webkit.org/show_bug.cgi?id=165376

Reviewed by Zalan Bujtas.

* css/StyleColor.cpp:
(WebCore::StyleColor::isColorKeyword):
Include system colors when using the fast parseValue path.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::setupParser):
Add an assert to catch any code path using the old parser when the new parser flag is set.

(WebCore::CSSParser::parseSheet):
(WebCore::CSSParser::parseRule):
(WebCore::CSSParser::parseKeyframeRule):
(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseSelector):
(WebCore::CSSParser::parseDeclaration):
Patched to use the new parser in UASheetMode as well as other modes when the new parser flag
is set. parseValue is patched to use the new parser's fast paths and to call into CSSParserImpl's
parseValue.

* css/parser/CSSParserFastPaths.cpp:
(WebCore::isSimpleLengthPropertyID):
Support CSSPropertyShapeMargin in the fast path since the old parser did in its fast path.

(WebCore::parseSimpleLengthValue):
Don't ever return unitless numbers. If we accept a unitless number, convert the unit to PX still.

(WebCore::CSSParserFastPaths::parseColor):
Use the CSSValuePool when creating colors on the fast path.

* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parseValue):
* css/parser/CSSParserImpl.h:
Change the return type to be compatible with the old parser's ParseResult flag.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssStyleColorcpp">trunk/Source/WebCore/css/StyleColor.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParsercpp">trunk/Source/WebCore/css/parser/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserFastPathscpp">trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserImplcpp">trunk/Source/WebCore/css/parser/CSSParserImpl.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserImplh">trunk/Source/WebCore/css/parser/CSSParserImpl.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/ChangeLog        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -1,3 +1,44 @@
</span><ins>+2016-12-05  Dave Hyatt  &lt;hyatt@apple.com&gt;
+
+        [CSS Parser] Add parseValue support to new parser. Use new parser for UA sheet too if useNewParser is set.
+        https://bugs.webkit.org/show_bug.cgi?id=165376
+
+        Reviewed by Zalan Bujtas.
+
+        * css/StyleColor.cpp:
+        (WebCore::StyleColor::isColorKeyword):
+        Include system colors when using the fast parseValue path.
+
+        * css/parser/CSSParser.cpp:
+        (WebCore::CSSParser::setupParser):
+        Add an assert to catch any code path using the old parser when the new parser flag is set.
+
+        (WebCore::CSSParser::parseSheet):
+        (WebCore::CSSParser::parseRule):
+        (WebCore::CSSParser::parseKeyframeRule):
+        (WebCore::CSSParser::parseSupportsCondition):
+        (WebCore::CSSParser::parseValue):
+        (WebCore::CSSParser::parseSelector):
+        (WebCore::CSSParser::parseDeclaration):
+        Patched to use the new parser in UASheetMode as well as other modes when the new parser flag
+        is set. parseValue is patched to use the new parser's fast paths and to call into CSSParserImpl's
+        parseValue.
+
+        * css/parser/CSSParserFastPaths.cpp:
+        (WebCore::isSimpleLengthPropertyID):
+        Support CSSPropertyShapeMargin in the fast path since the old parser did in its fast path.
+
+        (WebCore::parseSimpleLengthValue):
+        Don't ever return unitless numbers. If we accept a unitless number, convert the unit to PX still.
+
+        (WebCore::CSSParserFastPaths::parseColor):
+        Use the CSSValuePool when creating colors on the fast path.
+
+        * css/parser/CSSParserImpl.cpp:
+        (WebCore::CSSParserImpl::parseValue):
+        * css/parser/CSSParserImpl.h:
+        Change the return type to be compatible with the old parser's ParseResult flag.
+
</ins><span class="cx"> 2016-12-05  Konstantin Tokarev  &lt;annulen@yandex.ru&gt;
</span><span class="cx"> 
</span><span class="cx">         Removed MediaPlayerPrivateTaskTimer
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleColorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleColor.cpp (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleColor.cpp        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/css/StyleColor.cpp        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> {
</span><span class="cx">     return (id &gt;= CSSValueAlpha &amp;&amp; id &lt;= CSSValueWebkitText)
</span><span class="cx">         || (id &gt;= CSSValueAliceblue &amp;&amp; id &lt;= CSSValueYellowgreen)
</span><del>-        || id == CSSValueMenu;
</del><ins>+        || id == CSSValueMenu || isSystemColor(id);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool StyleColor::isSystemColor(CSSValueID id)
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParser.cpp (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParser.cpp        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/css/parser/CSSParser.cpp        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -312,6 +312,8 @@
</span><span class="cx"> 
</span><span class="cx"> void CSSParser::setupParser(const char* prefix, unsigned prefixLength, StringView string, const char* suffix, unsigned suffixLength)
</span><span class="cx"> {
</span><ins>+    ASSERT(!m_context.useNewParser);
+
</ins><span class="cx">     m_parsedTextPrefixLength = prefixLength;
</span><span class="cx">     unsigned stringLength = string.length();
</span><span class="cx">     unsigned length = stringLength + m_parsedTextPrefixLength + suffixLength + 1;
</span><span class="lines">@@ -368,7 +370,7 @@
</span><span class="cx">     // FIXME-NEWPARSER: It's easier for testing to let the entire UA sheet parse with the old
</span><span class="cx">     // parser. That way we can still have the default styles look correct while we add in support for
</span><span class="cx">     // properties.
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode)
</del><ins>+    if (m_context.useNewParser)
</ins><span class="cx">         return CSSParserImpl::parseStyleSheet(string, m_context, sheet);
</span><span class="cx">     
</span><span class="cx">     setStyleSheet(sheet);
</span><span class="lines">@@ -400,7 +402,7 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;StyleRuleBase&gt; CSSParser::parseRule(StyleSheetContents* sheet, const String&amp; string)
</span><span class="cx"> {
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode)
</del><ins>+    if (m_context.useNewParser)
</ins><span class="cx">         return CSSParserImpl::parseRule(string, m_context, sheet, CSSParserImpl::AllowImportRules);
</span><span class="cx">     setStyleSheet(sheet);
</span><span class="cx">     m_allowNamespaceDeclarations = false;
</span><span class="lines">@@ -411,7 +413,7 @@
</span><span class="cx"> 
</span><span class="cx"> RefPtr&lt;StyleKeyframe&gt; CSSParser::parseKeyframeRule(StyleSheetContents* sheet, const String&amp; string)
</span><span class="cx"> {
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode) {
</del><ins>+    if (m_context.useNewParser) {
</ins><span class="cx">         RefPtr&lt;StyleRuleBase&gt; keyframe = CSSParserImpl::parseRule(string, m_context, nullptr, CSSParserImpl::KeyframeRules);
</span><span class="cx">         return downcast&lt;StyleKeyframe&gt;(keyframe.get());
</span><span class="cx">     }
</span><span class="lines">@@ -424,10 +426,10 @@
</span><span class="cx"> 
</span><span class="cx"> bool CSSParser::parseSupportsCondition(const String&amp; condition)
</span><span class="cx"> {
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode) {
</del><ins>+    if (m_context.useNewParser) {
</ins><span class="cx">         CSSTokenizer::Scope scope(condition);
</span><span class="cx">         CSSParserTokenRange range = scope.tokenRange();
</span><del>-        CSSParserImpl parser(strictCSSParserContext());
</del><ins>+        CSSParserImpl parser(m_context);
</ins><span class="cx">         return CSSSupportsParser::supportsCondition(range, parser) == CSSSupportsParser::Supported;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1334,21 +1336,28 @@
</span><span class="cx"> CSSParser::ParseResult CSSParser::parseValue(MutableStyleProperties&amp; declaration, CSSPropertyID propertyID, const String&amp; string, bool important, const CSSParserContext&amp; context, StyleSheetContents* contextStyleSheet)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!string.isEmpty());
</span><del>-    CSSParser::ParseResult result = parseSimpleLengthValue(declaration, propertyID, string, important, context.mode);
-    if (result != ParseResult::Error)
-        return result;
</del><ins>+    if (context.useNewParser) {
+        RefPtr&lt;CSSValue&gt; value = CSSParserFastPaths::maybeParseValue(propertyID, string, context.mode, contextStyleSheet);
+        if (value)
+            return declaration.addParsedProperty(CSSProperty(propertyID, WTFMove(value), important)) ? CSSParser::ParseResult::Changed : CSSParser::ParseResult::Unchanged;
+    } else {
+        // FIXME-NEWPARSER: Remove all this code when the old parser goes away.
+        CSSParser::ParseResult result = parseSimpleLengthValue(declaration, propertyID, string, important, context.mode);
+        if (result != ParseResult::Error)
+            return result;
</ins><span class="cx"> 
</span><del>-    result = parseColorValue(declaration, propertyID, string, important,  context.mode);
-    if (result != ParseResult::Error)
-        return result;
</del><ins>+        result = parseColorValue(declaration, propertyID, string, important,  context.mode);
+        if (result != ParseResult::Error)
+            return result;
</ins><span class="cx"> 
</span><del>-    result = parseKeywordValue(declaration, propertyID, string, important, context, contextStyleSheet);
-    if (result != ParseResult::Error)
-        return result;
</del><ins>+        result = parseKeywordValue(declaration, propertyID, string, important, context, contextStyleSheet);
+        if (result != ParseResult::Error)
+            return result;
</ins><span class="cx"> 
</span><del>-    result = parseTranslateTransformValue(declaration, propertyID, string, important);
-    if (result != ParseResult::Error)
-        return result;
</del><ins>+        result = parseTranslateTransformValue(declaration, propertyID, string, important);
+        if (result != ParseResult::Error)
+            return result;
+    }
</ins><span class="cx"> 
</span><span class="cx">     CSSParser parser(context);
</span><span class="cx">     return parser.parseValue(declaration, propertyID, string, important, contextStyleSheet);
</span><span class="lines">@@ -1363,6 +1372,9 @@
</span><span class="cx"> 
</span><span class="cx"> CSSParser::ParseResult CSSParser::parseValue(MutableStyleProperties&amp; declaration, CSSPropertyID propertyID, const String&amp; string, bool important, StyleSheetContents* contextStyleSheet)
</span><span class="cx"> {
</span><ins>+    if (m_context.useNewParser)
+        return CSSParserImpl::parseValue(&amp;declaration, propertyID, string, important, m_context);
+
</ins><span class="cx">     setStyleSheet(contextStyleSheet);
</span><span class="cx"> 
</span><span class="cx">     setupParser(&quot;@-webkit-value{&quot;, string, &quot;} &quot;);
</span><span class="lines">@@ -1436,7 +1448,7 @@
</span><span class="cx"> 
</span><span class="cx"> void CSSParser::parseSelector(const String&amp; string, CSSSelectorList&amp; selectorList)
</span><span class="cx"> {
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode) {
</del><ins>+    if (m_context.useNewParser) {
</ins><span class="cx">         CSSTokenizer::Scope scope(string);
</span><span class="cx">         selectorList = CSSSelectorParser::parseSelector(scope.tokenRange(), m_context, nullptr);
</span><span class="cx">         return;
</span><span class="lines">@@ -1480,7 +1492,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool CSSParser::parseDeclaration(MutableStyleProperties&amp; declaration, const String&amp; string, RefPtr&lt;CSSRuleSourceData&gt;&amp;&amp; ruleSourceData, StyleSheetContents* contextStyleSheet)
</span><span class="cx"> {
</span><del>-    if (m_context.useNewParser &amp;&amp; m_context.mode != UASheetMode)
</del><ins>+    if (m_context.useNewParser)
</ins><span class="cx">         return CSSParserImpl::parseDeclarationList(&amp;declaration, string, m_context);
</span><span class="cx"> 
</span><span class="cx">     // Length of the &quot;@-webkit-decls{&quot; prefix.
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserFastPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     case CSSPropertyWebkitPaddingBefore:
</span><span class="cx">     case CSSPropertyWebkitPaddingEnd:
</span><span class="cx">     case CSSPropertyWebkitPaddingStart:
</span><del>-  //  case CSSPropertyShapeMargin:
</del><ins>+    case CSSPropertyShapeMargin:
</ins><span class="cx">     case CSSPropertyR:
</span><span class="cx">     case CSSPropertyRx:
</span><span class="cx">     case CSSPropertyRy:
</span><span class="lines">@@ -84,7 +84,6 @@
</span><span class="cx">     case CSSPropertyMarginLeft:
</span><span class="cx">     case CSSPropertyMarginRight:
</span><span class="cx">     case CSSPropertyMarginTop:
</span><del>- //   case CSSPropertyMotionOffset:
</del><span class="cx">     case CSSPropertyRight:
</span><span class="cx">     case CSSPropertyTop:
</span><span class="cx">     case CSSPropertyWebkitMarginAfter:
</span><span class="lines">@@ -144,10 +143,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (unit == CSSPrimitiveValue::UnitTypes::CSS_NUMBER) {
</span><del>-        if (!number)
-            unit = CSSPrimitiveValue::UnitTypes::CSS_PX;
-        else if (cssParserMode != SVGAttributeMode)
</del><ins>+        if (number &amp;&amp; cssParserMode != SVGAttributeMode)
</ins><span class="cx">             return nullptr;
</span><ins>+        unit = CSSPrimitiveValue::UnitTypes::CSS_PX;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (number &lt; 0 &amp;&amp; !acceptsNegativeNumbers)
</span><span class="lines">@@ -481,7 +479,7 @@
</span><span class="cx">     if (StyleColor::isColorKeyword(valueID)) {
</span><span class="cx">         if (!isValueAllowedInMode(valueID, parserMode))
</span><span class="cx">             return nullptr;
</span><del>-        return CSSPrimitiveValue::createIdentifier(valueID);
</del><ins>+        return CSSValuePool::singleton().createIdentifierValue(valueID);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool quirksMode = isQuirksModeBehavior(parserMode);
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParserImpl.cpp (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParserImpl.cpp        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/css/parser/CSSParserImpl.cpp        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool CSSParserImpl::parseValue(MutableStyleProperties* declaration, CSSPropertyID propertyID, const String&amp; string, bool important, const CSSParserContext&amp; context)
</del><ins>+CSSParser::ParseResult CSSParserImpl::parseValue(MutableStyleProperties* declaration, CSSPropertyID propertyID, const String&amp; string, bool important, const CSSParserContext&amp; context)
</ins><span class="cx"> {
</span><span class="cx">     CSSParserImpl parser(context);
</span><span class="cx">     StyleRule::Type ruleType = StyleRule::Style;
</span><span class="lines">@@ -73,8 +73,8 @@
</span><span class="cx">     CSSTokenizer::Scope scope(string);
</span><span class="cx">     parser.consumeDeclarationValue(scope.tokenRange(), propertyID, important, ruleType);
</span><span class="cx">     if (parser.m_parsedProperties.isEmpty())
</span><del>-        return false;
-    return declaration-&gt;addParsedProperties(parser.m_parsedProperties);
</del><ins>+        return CSSParser::ParseResult::Error;
+    return declaration-&gt;addParsedProperties(parser.m_parsedProperties) ? CSSParser::ParseResult::Changed : CSSParser::ParseResult::Unchanged;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline void filterProperties(bool important, const ParsedPropertyVector&amp; input, ParsedPropertyVector&amp; output, size_t&amp; unusedEntries, std::bitset&lt;numCSSProperties&gt;&amp; seenProperties, HashSet&lt;AtomicString&gt;&amp; seenCustomProperties)
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParserImpl.h (209317 => 209318)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParserImpl.h        2016-12-05 17:06:28 UTC (rev 209317)
+++ trunk/Source/WebCore/css/parser/CSSParserImpl.h        2016-12-05 17:13:42 UTC (rev 209318)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><ins>+#include &quot;CSSParser.h&quot;
</ins><span class="cx"> #include &quot;CSSParserMode.h&quot;
</span><span class="cx"> #include &quot;CSSParserTokenRange.h&quot;
</span><span class="cx"> #include &quot;CSSProperty.h&quot;
</span><span class="lines">@@ -61,7 +62,7 @@
</span><span class="cx"> class ImmutableStyleProperties;
</span><span class="cx"> class Element;
</span><span class="cx"> class MutableStyleProperties;
</span><del>-
</del><ins>+    
</ins><span class="cx"> class CSSParserImpl {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(CSSParserImpl);
</span><span class="cx"> public:
</span><span class="lines">@@ -82,7 +83,7 @@
</span><span class="cx">         NoRules, // For parsing at-rules inside declaration lists
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static bool parseValue(MutableStyleProperties*, CSSPropertyID, const String&amp;, bool important, const CSSParserContext&amp;);
</del><ins>+    static CSSParser::ParseResult parseValue(MutableStyleProperties*, CSSPropertyID, const String&amp;, bool important, const CSSParserContext&amp;);
</ins><span class="cx">     static Ref&lt;ImmutableStyleProperties&gt; parseInlineStyleDeclaration(const String&amp;, Element*);
</span><span class="cx">     static bool parseDeclarationList(MutableStyleProperties*, const String&amp;, const CSSParserContext&amp;);
</span><span class="cx">     static RefPtr&lt;StyleRuleBase&gt; parseRule(const String&amp;, const CSSParserContext&amp;, StyleSheetContents*, AllowedRulesType);
</span></span></pre>
</div>
</div>

</body>
</html>