<!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>[172192] trunk</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/172192">172192</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-08-06 17:19:40 -0700 (Wed, 06 Aug 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Implement parsing for CSS scroll snap points
https://bugs.webkit.org/show_bug.cgi?id=134301

Source/JavaScriptCore:

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP

Source/WebCore:

Provided support for parsing -webkit-scroll-snap-* properties, i.e.  type, points-x, points-y, destination, and coordinates.
The exact syntax of the scroll snap CSS properties follow the W3C spec at http://dev.w3.org/csswg/css-snappoints/

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

Tests: css3/scroll-snap/scroll-snap-property-parsing.html,
    css3/scroll-snap/scroll-snap-property-computed-style.html

* CMakeLists.txt: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
* WebCore.vcxproj/WebCore.vcxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
* WebCore.vcxproj/WebCore.vcxproj.filters: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
* WebCore.xcodeproj/project.pbxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp, LengthRepeat.h
* css/CSSCalculationValue.cpp: Support for LengthRepeat
(WebCore::hasDoubleValue):
* css/CSSComputedStyleDeclaration.cpp: Support for showing computed style for snap point properties.
(WebCore::scrollSnapDestination):
(WebCore::scrollSnapPoints):
(WebCore::scrollSnapCoordinates):
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp: Support for parsing snap point properties.
(WebCore::isValidKeywordPropertyAndValue): handle snap point type
(WebCore::isKeywordPropertyID):
(WebCore::CSSParser::parseValue): Added support for parsing snap points.
(WebCore::CSSParser::parseNonElementSnapPoints): Helper for parsing snap points-x/y.
(WebCore::CSSParser::parseScrollSnapDestination): Helper for parsing snap point destinations.
(WebCore::CSSParser::parseScrollSnapCoordinate): Helper for parsing snap point coordinates.
* css/CSSParser.h: Support for parsing snap point properties.
* css/CSSParserValues.cpp:
(WebCore::CSSParserValue::createCSSValue):
* css/CSSPrimitiveValue.cpp:
(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::CSSPrimitiveValue::init):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::getLengthRepeatValue):
(WebCore::CSSPrimitiveValue::formatNumberForcustomCSSText):
(WebCore::CSSPrimitiveValue::cloneForCSSOM):
(WebCore::CSSPrimitiveValue::equals):
* css/CSSPrimitiveValue.h:
(WebCore::CSSPrimitiveValue::isLengthRepeat):
(WebCore::CSSPrimitiveValue::getLengthRepeatValue):
* css/CSSPrimitiveValueMappings.h: Added converters for snap point type properties.
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ScrollSnapType):
* css/CSSPropertyNames.in: Added relevant snap point property names.
* css/CSSValueKeywords.in: Added &quot;proximity&quot;, &quot;mandatory&quot; and &quot;elements&quot;.
* css/LengthRepeat.h: Added to represent values of repeat(&lt;length&gt;)
(WebCore::LengthRepeat::create):
(WebCore::LengthRepeat::cloneForCSSOM):
(WebCore::LengthRepeat::interval):
(WebCore::LengthRepeat::setInterval):
(WebCore::LengthRepeat::equals):
(WebCore::LengthRepeat::cssText):
(WebCore::LengthRepeat::LengthRepeat):
* css/StyleResolver.cpp: Support for handling snap point properties
(WebCore::StyleResolver::applyProperty):Updated switch case to build snap-point-related style data
* rendering/style/RenderStyle.h: Added methods to access and modify snap point data
* rendering/style/RenderStyleConstants.h: Added scroll snap type flags.
* rendering/style/StyleAllInOne.cpp: Added StyleScrollSnapPoints.cpp
* rendering/style/StyleRareNonInheritedData.cpp: Added initiazing for m_scrollSnapPoints, updated equality check
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
* rendering/style/StyleRareNonInheritedData.h: Added field for StyleScrollSnapPoints
* rendering/style/StyleScrollSnapPoints.cpp: Added. Wrapper for basic snap point data structures.
(WebCore::StyleScrollSnapPoints::StyleScrollSnapPoints):
(WebCore::StyleScrollSnapPoints::copy):
(WebCore::StyleScrollSnapPoints::operator==):
* rendering/style/StyleScrollSnapPoints.h: Added.
(WebCore::StyleScrollSnapPoints::create):
(WebCore::StyleScrollSnapPoints::defaultRepeatOffset): Creates a new Length representing the default repeat value of repeat(100%)
(WebCore::StyleScrollSnapPoints::defaultDestinationOffset): Creates a new Length representing a default destination value (0px)
(WebCore::StyleScrollSnapPoints::operator!=):

Source/WebInspectorUI:

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

* UserInterface/Models/CSSKeywordCompletions.js: Added snap point property keywords, such as mandatory, proximity, elements, and repeat.

Source/WebKit/mac:

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP

Source/WebKit2:

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP

LayoutTests:

Patch by Wenson Hsieh &lt;wenson_hsieh@apple.com&gt; on 2014-08-06
Reviewed by Dean Jackson.

Tests that parsing -webkit-scroll-snap-* properties behaves as expected.

* css3/scroll-snap/scroll-snap-property-computed-style-expected.txt: Expected text output of below test.
* css3/scroll-snap/scroll-snap-property-computed-style.html: Tests that scroll snap properties are correctly displayed via getComputedStyle.
* css3/scroll-snap/scroll-snap-property-computed-style.js: Script for above test.
(testComputedScrollSnapRule):
* css3/scroll-snap/scroll-snap-property-parsing-expected.txt: Expected text output of below test.
* css3/scroll-snap/scroll-snap-property-parsing.html: Tests that scroll snap properties are correctly parsed.
* css3/scroll-snap/scroll-snap-property-parsing.js: Script for above test.
(testScrollSnapRule):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformeflTestExpectations">trunk/LayoutTests/platform/efl/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformgtkTestExpectations">trunk/LayoutTests/platform/gtk/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformwinTestExpectations">trunk/LayoutTests/platform/win/TestExpectations</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecssCSSCalculationValuecpp">trunk/Source/WebCore/css/CSSCalculationValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserh">trunk/Source/WebCore/css/CSSParser.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSParserValuescpp">trunk/Source/WebCore/css/CSSParserValues.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValuecpp">trunk/Source/WebCore/css/CSSPrimitiveValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValueh">trunk/Source/WebCore/css/CSSPrimitiveValue.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValueMappingsh">trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueKeywordsin">trunk/Source/WebCore/css/CSSValueKeywords.in</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleConstantsh">trunk/Source/WebCore/rendering/style/RenderStyleConstants.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleAllInOnecpp">trunk/Source/WebCore/rendering/style/StyleAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah">trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsCSSKeywordCompletionsjs">trunk/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/css3/scroll-snap/</li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstyleexpectedtxt">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstylehtml">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.html</a></li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstylejs">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js</a></li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertyparsingexpectedtxt">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertyparsinghtml">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.html</a></li>
<li><a href="#trunkLayoutTestscss3scrollsnapscrollsnappropertyparsingjs">trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.js</a></li>
<li><a href="#trunkSourceWebCorecssLengthRepeath">trunk/Source/WebCore/css/LengthRepeat.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleScrollSnapPointscpp">trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleScrollSnapPointsh">trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/LayoutTests/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2014-08-06  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Reviewed by Dean Jackson.
+
+        Tests that parsing -webkit-scroll-snap-* properties behaves as expected.
+
+        * css3/scroll-snap/scroll-snap-property-computed-style-expected.txt: Expected text output of below test.
+        * css3/scroll-snap/scroll-snap-property-computed-style.html: Tests that scroll snap properties are correctly displayed via getComputedStyle.
+        * css3/scroll-snap/scroll-snap-property-computed-style.js: Script for above test.
+        (testComputedScrollSnapRule):
+        * css3/scroll-snap/scroll-snap-property-parsing-expected.txt: Expected text output of below test.
+        * css3/scroll-snap/scroll-snap-property-parsing.html: Tests that scroll snap properties are correctly parsed.
+        * css3/scroll-snap/scroll-snap-property-parsing.js: Script for above test.
+        (testScrollSnapRule):
+
</ins><span class="cx"> 2014-08-06  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r168119): Album flipping animation doesn’t work
</span></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstyleexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,147 @@
</span><ins>+Test the computed style of the -webkit-scroll-snap-* properties.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+
+invalid snapping type : potato
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-type') is 'none'
+
+invalid points along x axis : hello world
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(100%)'
+
+invalid points along y axis : hello world
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is 'repeat(100%)'
+
+typo in point definition : repaet(50px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(100%)'
+
+another invalid point definition : ??px repeat(50px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(100%)'
+
+invalid destination : foo bar
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '0px 0px'
+
+short one destination value : 50%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '0px 0px'
+
+extra destination value : 50px 100% 75px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '0px 0px'
+
+invalid coordinates : ben bitdiddle
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is 'none'
+
+mismatched x coordinate : 50% 100px 75%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is 'none'
+
+mandatory type : mandatory
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-type') is 'mandatory'
+
+proximity type : proximity
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-type') is 'proximity'
+
+element points along x axis : elements
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'elements'
+
+percentage points along x axis : 100% 50%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100% 50%'
+
+pixel points along x axis : 100px 50px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100px 50px'
+
+percentage points repeat along x axis : repeat(100%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(100%)'
+
+pixel points repeat along x axis : repeat(25px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(25px)'
+
+percentage points along x axis with percentage repeat : 100% repeat(100%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100% repeat(100%)'
+
+pixel points along x axis with percentage repeat : 100px 50px repeat(25%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100px 50px repeat(25%)'
+
+percentage points along x axis with pixel repeat : 100% 50% repeat(40px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100% 50% repeat(40px)'
+
+pixel points along x axis with pixel repeat : 100px repeat(42px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100px repeat(42px)'
+
+element points along y axis : elements
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is 'elements'
+
+percentage points along y axis : 100% 50%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100% 50%'
+
+pixel points along y axis : 100px 50px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100px 50px'
+
+percentage points repeat along y axis : repeat(100%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is 'repeat(100%)'
+
+pixel points repeat along y axis : repeat(25px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is 'repeat(25px)'
+
+percentage points along y axis with percentage repeat : 100% repeat(100%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100% repeat(100%)'
+
+pixel points along y axis with percentage repeat : 100px 50px repeat(25%)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100px 50px repeat(25%)'
+
+percentage points along y axis with pixel repeat : 100% 50% repeat(40px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100% 50% repeat(40px)'
+
+pixel points along y axis with pixel repeat : 100px repeat(42px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-y') is '100px repeat(42px)'
+
+pixel/pixel destination : 10px 50px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '10px 50px'
+
+pixel/percentage destination : 20px 40%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '20px 40%'
+
+percentage/pixel destination : 0% 0px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '0% 0px'
+
+percentage/percentage destination : 5% 100%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '5% 100%'
+
+single pixel coordinate : 50px 100px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '50px 100px'
+
+single percentage coordinate : 50% 100%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '50% 100%'
+
+multiple pixel coordinates : 50px 100px 150px 100px 200px 100px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '50px 100px, 150px 100px, 200px 100px'
+
+multiple percentage coordinates : 50% 100% 150% 100% 200% 100%
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '50% 100%, 150% 100%, 200% 100%'
+
+mm along x axis with pixel repeat : 10mm repeat(42mm)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '37.78125px repeat(158.734375px)'
+
+in along x axis with pixel repeat : 10in repeat(4in)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '960px repeat(384px)'
+
+pt along x axis with pixel repeat : 10pt repeat(42pt)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '13.328125px repeat(56px)'
+
+in/cm destination : 2in 5cm
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '192px 188.96875px'
+
+in/cm coordinate : 2in 5cm 5in 2cm
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '192px 188.96875px, 480px 75.578125px'
+
+subpixel along x axis with pixel repeat : 100.5px repeat(50.25px)
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-points-x') is '100.5px repeat(50.25px)'
+
+subpixel destination : 0.125px 2.4375px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-destination') is '0.125px 2.4375px'
+
+subpixel cordinate : 110.125px 25.4375px
+PASS window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-coordinate') is '110.125px 25.4375px'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstylehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.html (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.html                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.html        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;scroll-snap-property-computed-style.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertycomputedstylejs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+description(&quot;Test the computed style of the -webkit-scroll-snap-* properties.&quot;);
+
+var stylesheet;
+var styleElement = document.createElement(&quot;style&quot;);
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testComputedScrollSnapRule(description, snapProperty, rule, expected)
+{
+    debug(&quot;&quot;);
+    debug(description + &quot; : &quot; + rule);
+
+    stylesheet.insertRule(&quot;body { -webkit-scroll-snap-&quot; + snapProperty + &quot;: &quot; + rule + &quot;; }&quot;, 0);
+
+    shouldBe(&quot;window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-&quot; + snapProperty + &quot;')&quot;, &quot;'&quot; + expected + &quot;'&quot;);
+    stylesheet.deleteRule(0);
+}
+
+testComputedScrollSnapRule(&quot;invalid snapping type&quot;, &quot;type&quot;, &quot;potato&quot;, &quot;none&quot;);
+testComputedScrollSnapRule(&quot;invalid points along x axis&quot;, &quot;points-x&quot;, &quot;hello world&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;invalid points along y axis&quot;, &quot;points-y&quot;, &quot;hello world&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;typo in point definition&quot;, &quot;points-x&quot;, &quot;repaet(50px)&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;another invalid point definition&quot;, &quot;points-x&quot;, &quot;??px repeat(50px)&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;invalid destination&quot;, &quot;destination&quot;, &quot;foo bar&quot;, &quot;0px 0px&quot;);
+testComputedScrollSnapRule(&quot;short one destination value&quot;, &quot;destination&quot;, &quot;50%&quot;, &quot;0px 0px&quot;);
+testComputedScrollSnapRule(&quot;extra destination value&quot;, &quot;destination&quot;, &quot;50px 100% 75px&quot;, &quot;0px 0px&quot;);
+testComputedScrollSnapRule(&quot;invalid coordinates&quot;, &quot;coordinate&quot;, &quot;ben bitdiddle&quot;, &quot;none&quot;)
+testComputedScrollSnapRule(&quot;mismatched x coordinate&quot;, &quot;coordinate&quot;, &quot;50% 100px 75%&quot;, &quot;none&quot;);
+
+testComputedScrollSnapRule(&quot;mandatory type&quot;, &quot;type&quot;, &quot;mandatory&quot;, &quot;mandatory&quot;);
+testComputedScrollSnapRule(&quot;proximity type&quot;, &quot;type&quot;, &quot;proximity&quot;, &quot;proximity&quot;);
+
+testComputedScrollSnapRule(&quot;element points along x axis&quot;, &quot;points-x&quot;, &quot;elements&quot;, &quot;elements&quot;);
+testComputedScrollSnapRule(&quot;percentage points along x axis&quot;, &quot;points-x&quot;, &quot;100% 50%&quot;, &quot;100% 50%&quot;);
+testComputedScrollSnapRule(&quot;pixel points along x axis&quot;, &quot;points-x&quot;, &quot;100px 50px&quot;, &quot;100px 50px&quot;);
+testComputedScrollSnapRule(&quot;percentage points repeat along x axis&quot;, &quot;points-x&quot;, &quot;repeat(100%)&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;pixel points repeat along x axis&quot;, &quot;points-x&quot;, &quot;repeat(25px)&quot;, &quot;repeat(25px)&quot;);
+testComputedScrollSnapRule(&quot;percentage points along x axis with percentage repeat&quot;, &quot;points-x&quot;, &quot;100% repeat(100%)&quot;, &quot;100% repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;pixel points along x axis with percentage repeat&quot;, &quot;points-x&quot;, &quot;100px 50px repeat(25%)&quot;, &quot;100px 50px repeat(25%)&quot;);
+testComputedScrollSnapRule(&quot;percentage points along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100% 50% repeat(40px)&quot;, &quot;100% 50% repeat(40px)&quot;);
+testComputedScrollSnapRule(&quot;pixel points along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100px repeat(42px)&quot;, &quot;100px repeat(42px)&quot;);
+
+testComputedScrollSnapRule(&quot;element points along y axis&quot;, &quot;points-y&quot;, &quot;elements&quot;, &quot;elements&quot;);
+testComputedScrollSnapRule(&quot;percentage points along y axis&quot;, &quot;points-y&quot;, &quot;100% 50%&quot;, &quot;100% 50%&quot;);
+testComputedScrollSnapRule(&quot;pixel points along y axis&quot;, &quot;points-y&quot;, &quot;100px 50px&quot;, &quot;100px 50px&quot;);
+testComputedScrollSnapRule(&quot;percentage points repeat along y axis&quot;, &quot;points-y&quot;, &quot;repeat(100%)&quot;, &quot;repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;pixel points repeat along y axis&quot;, &quot;points-y&quot;, &quot;repeat(25px)&quot;, &quot;repeat(25px)&quot;);
+testComputedScrollSnapRule(&quot;percentage points along y axis with percentage repeat&quot;, &quot;points-y&quot;, &quot;100% repeat(100%)&quot;, &quot;100% repeat(100%)&quot;);
+testComputedScrollSnapRule(&quot;pixel points along y axis with percentage repeat&quot;, &quot;points-y&quot;, &quot;100px 50px repeat(25%)&quot;, &quot;100px 50px repeat(25%)&quot;);
+testComputedScrollSnapRule(&quot;percentage points along y axis with pixel repeat&quot;, &quot;points-y&quot;, &quot;100% 50% repeat(40px)&quot;, &quot;100% 50% repeat(40px)&quot;);
+testComputedScrollSnapRule(&quot;pixel points along y axis with pixel repeat&quot;, &quot;points-y&quot;, &quot;100px repeat(42px)&quot;, &quot;100px repeat(42px)&quot;);
+
+testComputedScrollSnapRule(&quot;pixel/pixel destination&quot;, &quot;destination&quot;, &quot;10px 50px&quot;, &quot;10px 50px&quot;);
+testComputedScrollSnapRule(&quot;pixel/percentage destination&quot;, &quot;destination&quot;, &quot;20px 40%&quot;, &quot;20px 40%&quot;);
+testComputedScrollSnapRule(&quot;percentage/pixel destination&quot;, &quot;destination&quot;, &quot;0% 0px&quot;, &quot;0% 0px&quot;);
+testComputedScrollSnapRule(&quot;percentage/percentage destination&quot;, &quot;destination&quot;, &quot;5% 100%&quot;, &quot;5% 100%&quot;);
+
+testComputedScrollSnapRule(&quot;single pixel coordinate&quot;, &quot;coordinate&quot;, &quot;50px 100px&quot;, &quot;50px 100px&quot;);
+testComputedScrollSnapRule(&quot;single percentage coordinate&quot;, &quot;coordinate&quot;, &quot;50% 100%&quot;, &quot;50% 100%&quot;);
+testComputedScrollSnapRule(&quot;multiple pixel coordinates&quot;, &quot;coordinate&quot;, &quot;50px 100px 150px 100px 200px 100px&quot;, &quot;50px 100px, 150px 100px, 200px 100px&quot;);
+testComputedScrollSnapRule(&quot;multiple percentage coordinates&quot;, &quot;coordinate&quot;, &quot;50% 100% 150% 100% 200% 100%&quot;, &quot;50% 100%, 150% 100%, 200% 100%&quot;);
+
+testComputedScrollSnapRule(&quot;mm along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;10mm repeat(42mm)&quot;, &quot;37.78125px repeat(158.734375px)&quot;);
+testComputedScrollSnapRule(&quot;in along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;10in repeat(4in)&quot;, &quot;960px repeat(384px)&quot;);
+testComputedScrollSnapRule(&quot;pt along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;10pt repeat(42pt)&quot;, &quot;13.328125px repeat(56px)&quot;);
+testComputedScrollSnapRule(&quot;in/cm destination&quot;, &quot;destination&quot;, &quot;2in 5cm&quot;, &quot;192px 188.96875px&quot;);
+testComputedScrollSnapRule(&quot;in/cm coordinate&quot;, &quot;coordinate&quot;, &quot;2in 5cm 5in 2cm&quot;, &quot;192px 188.96875px, 480px 75.578125px&quot;);
+
+testComputedScrollSnapRule(&quot;subpixel along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100.5px repeat(50.25px)&quot;, &quot;100.5px repeat(50.25px)&quot;);
+testComputedScrollSnapRule(&quot;subpixel destination&quot;, &quot;destination&quot;, &quot;0.125px 2.4375px&quot;, &quot;0.125px 2.4375px&quot;);
+testComputedScrollSnapRule(&quot;subpixel cordinate&quot;, &quot;coordinate&quot;, &quot;110.125px 25.4375px&quot;, &quot;110.125px 25.4375px&quot;);
+
+successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertyparsingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing-expected.txt (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing-expected.txt        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,189 @@
</span><ins>+Test the parsing of the -webkit-scroll-snap-* properties.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+
+mandatory type : mandatory
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-type') is 'mandatory'
+
+proximity type : proximity
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-type') is 'proximity'
+
+element points along x axis : elements
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is 'elements'
+
+percentage points along x axis : 100% 50%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100% 50%'
+
+pixel points along x axis : 100px 50px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100px 50px'
+
+percentage points repeat along x axis : repeat(100%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(100%)'
+
+pixe points repeat along x axis : repeat(25px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is 'repeat(25px)'
+
+percentage points along x axis with percentage repeat : 100% repeat(100%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100% repeat(100%)'
+
+pixel points along x axis with percentage repeat : 100px 50px repeat(25%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100px 50px repeat(25%)'
+
+percentage points along x axis with pixel repeat : 100% 50% repeat(40px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100% 50% repeat(40px)'
+
+pixel points along x axis with pixel repeat : 100px repeat(42px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-x') is '100px repeat(42px)'
+
+element points along y axis : elements
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is 'elements'
+
+percentage points along y axis : 100% 50%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100% 50%'
+
+pixel points along y axis : 100px 50px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100px 50px'
+
+percentage points repeat along y axis : repeat(100%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is 'repeat(100%)'
+
+pixe points repeat along y axis : repeat(25px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is 'repeat(25px)'
+
+percentage points along y axis with percentage repeat : 100% repeat(100%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100% repeat(100%)'
+
+pixel points along y axis with percentage repeat : 100px 50px repeat(25%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100px 50px repeat(25%)'
+
+percentage points along y axis with pixel repeat : 100% 50% repeat(40px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100% 50% repeat(40px)'
+
+pixel points along y axis with pixel repeat : 100px repeat(42px)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-points-y') is '100px repeat(42px)'
+
+em points along x axis with pixel repeat : 100em repeat(42em)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+FAIL declaration.getPropertyValue('-webkit-scroll-snap-points-x') should be 100em repeat 42em. Was 100em repeat(42em).
+
+mm along x axis with pixel repeat : 100mm repeat(42mm)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+FAIL declaration.getPropertyValue('-webkit-scroll-snap-points-x') should be 100mm repeat 42mm. Was 100mm repeat(42mm).
+
+in along x axis with pixel repeat : 100in repeat(42in)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+FAIL declaration.getPropertyValue('-webkit-scroll-snap-points-x') should be 100in repeat 42in. Was 100in repeat(42in).
+
+pt along x axis with pixel repeat : 100pt repeat(42pt)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+FAIL declaration.getPropertyValue('-webkit-scroll-snap-points-x') should be 100pt repeat 42pt. Was 100pt repeat(42pt).
+
+pixel/pixel destination : 10px 50px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '10px 50px'
+
+pixel/percentage destination : 20px 40%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '20px 40%'
+
+percentage/pixel destination : 0% 0px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '0% 0px'
+
+percentage/percentage destination : 5% 100%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '5% 100%'
+
+em/ex destination : 12em 16ex
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '12em 16ex'
+
+in/cm destination : 2in 5cm
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-destination') is '2in 5cm'
+
+single pixel coordinate : 50px 100px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '50px 100px'
+
+single percentage coordinate : 50% 100%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '50% 100%'
+
+multiple pixel coordinates : 50px 100px 150px 100px 200px 100px
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '50px 100px 150px 100px 200px 100px'
+
+multiple percentage coordinates : 50% 100% 150% 100% 200% 100%
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '50% 100% 150% 100% 200% 100%'
+
+em/ex coordinate : 12em 16ex 16em 12ex
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '12em 16ex 16em 12ex'
+
+in/cm coordinate : 2in 5cm 5in 2cm
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-scroll-snap-coordinate') is '2in 5cm 5in 2cm'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertyparsinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.html (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.html                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.html        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;scroll-snap-property-parsing.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscss3scrollsnapscrollsnappropertyparsingjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.js (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.js                                (rev 0)
+++ trunk/LayoutTests/css3/scroll-snap/scroll-snap-property-parsing.js        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+description(&quot;Test the parsing of the -webkit-scroll-snap-* properties.&quot;);
+
+var stylesheet, cssRule, declaration;
+var styleElement = document.createElement(&quot;style&quot;);
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testScrollSnapRule(description, snapProperty, rule, expectedValue)
+{
+    debug(&quot;&quot;);
+    debug(description + &quot; : &quot; + rule);
+
+    stylesheet.insertRule(&quot;body { -webkit-scroll-snap-&quot; + snapProperty + &quot;: &quot; + rule + &quot;; }&quot;, 0);
+    cssRule = stylesheet.cssRules.item(0);
+
+    shouldBe(&quot;cssRule.type&quot;, &quot;1&quot;);
+
+    declaration = cssRule.style;
+    shouldBe(&quot;declaration.length&quot;, &quot;1&quot;);
+    shouldBe(&quot;declaration.getPropertyValue('-webkit-scroll-snap-&quot; + snapProperty + &quot;')&quot;, &quot;'&quot; + expectedValue + &quot;'&quot;);
+}
+
+testScrollSnapRule(&quot;mandatory type&quot;, &quot;type&quot;, &quot;mandatory&quot;, &quot;mandatory&quot;);
+testScrollSnapRule(&quot;proximity type&quot;, &quot;type&quot;, &quot;proximity&quot;, &quot;proximity&quot;);
+
+testScrollSnapRule(&quot;element points along x axis&quot;, &quot;points-x&quot;, &quot;elements&quot;, &quot;elements&quot;);
+testScrollSnapRule(&quot;percentage points along x axis&quot;, &quot;points-x&quot;, &quot;100% 50%&quot;, &quot;100% 50%&quot;);
+testScrollSnapRule(&quot;pixel points along x axis&quot;, &quot;points-x&quot;, &quot;100px 50px&quot;, &quot;100px 50px&quot;);
+testScrollSnapRule(&quot;percentage points repeat along x axis&quot;, &quot;points-x&quot;, &quot;repeat(100%)&quot;, &quot;repeat(100%)&quot;);
+testScrollSnapRule(&quot;pixe points repeat along x axis&quot;, &quot;points-x&quot;, &quot;repeat(25px)&quot;, &quot;repeat(25px)&quot;);
+testScrollSnapRule(&quot;percentage points along x axis with percentage repeat&quot;, &quot;points-x&quot;, &quot;100% repeat(100%)&quot;, &quot;100% repeat(100%)&quot;);
+testScrollSnapRule(&quot;pixel points along x axis with percentage repeat&quot;, &quot;points-x&quot;, &quot;100px 50px repeat(25%)&quot;, &quot;100px 50px repeat(25%)&quot;);
+testScrollSnapRule(&quot;percentage points along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100% 50% repeat(40px)&quot;, &quot;100% 50% repeat(40px)&quot;);
+testScrollSnapRule(&quot;pixel points along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100px repeat(42px)&quot;, &quot;100px repeat(42px)&quot;);
+
+testScrollSnapRule(&quot;element points along y axis&quot;, &quot;points-y&quot;, &quot;elements&quot;, &quot;elements&quot;);
+testScrollSnapRule(&quot;percentage points along y axis&quot;, &quot;points-y&quot;, &quot;100% 50%&quot;, &quot;100% 50%&quot;);
+testScrollSnapRule(&quot;pixel points along y axis&quot;, &quot;points-y&quot;, &quot;100px 50px&quot;, &quot;100px 50px&quot;);
+testScrollSnapRule(&quot;percentage points repeat along y axis&quot;, &quot;points-y&quot;, &quot;repeat(100%)&quot;, &quot;repeat(100%)&quot;);
+testScrollSnapRule(&quot;pixe points repeat along y axis&quot;, &quot;points-y&quot;, &quot;repeat(25px)&quot;, &quot;repeat(25px)&quot;);
+testScrollSnapRule(&quot;percentage points along y axis with percentage repeat&quot;, &quot;points-y&quot;, &quot;100% repeat(100%)&quot;, &quot;100% repeat(100%)&quot;);
+testScrollSnapRule(&quot;pixel points along y axis with percentage repeat&quot;, &quot;points-y&quot;, &quot;100px 50px repeat(25%)&quot;, &quot;100px 50px repeat(25%)&quot;);
+testScrollSnapRule(&quot;percentage points along y axis with pixel repeat&quot;, &quot;points-y&quot;, &quot;100% 50% repeat(40px)&quot;, &quot;100% 50% repeat(40px)&quot;);
+testScrollSnapRule(&quot;pixel points along y axis with pixel repeat&quot;, &quot;points-y&quot;, &quot;100px repeat(42px)&quot;, &quot;100px repeat(42px)&quot;);
+
+testScrollSnapRule(&quot;em points along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100em repeat(42em)&quot;, &quot;100em repeat 42em&quot;);
+testScrollSnapRule(&quot;mm along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100mm repeat(42mm)&quot;, &quot;100mm repeat 42mm&quot;);
+testScrollSnapRule(&quot;in along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100in repeat(42in)&quot;, &quot;100in repeat 42in&quot;);
+testScrollSnapRule(&quot;pt along x axis with pixel repeat&quot;, &quot;points-x&quot;, &quot;100pt repeat(42pt)&quot;, &quot;100pt repeat 42pt&quot;);
+
+testScrollSnapRule(&quot;pixel/pixel destination&quot;, &quot;destination&quot;, &quot;10px 50px&quot;, &quot;10px 50px&quot;);
+testScrollSnapRule(&quot;pixel/percentage destination&quot;, &quot;destination&quot;, &quot;20px 40%&quot;, &quot;20px 40%&quot;);
+testScrollSnapRule(&quot;percentage/pixel destination&quot;, &quot;destination&quot;, &quot;0% 0px&quot;, &quot;0% 0px&quot;);
+testScrollSnapRule(&quot;percentage/percentage destination&quot;, &quot;destination&quot;, &quot;5% 100%&quot;, &quot;5% 100%&quot;);
+
+testScrollSnapRule(&quot;em/ex destination&quot;, &quot;destination&quot;, &quot;12em 16ex&quot;, &quot;12em 16ex&quot;);
+testScrollSnapRule(&quot;in/cm destination&quot;, &quot;destination&quot;, &quot;2in 5cm&quot;, &quot;2in 5cm&quot;);
+
+testScrollSnapRule(&quot;single pixel coordinate&quot;, &quot;coordinate&quot;, &quot;50px 100px&quot;, &quot;50px 100px&quot;);
+testScrollSnapRule(&quot;single percentage coordinate&quot;, &quot;coordinate&quot;, &quot;50% 100%&quot;, &quot;50% 100%&quot;);
+testScrollSnapRule(&quot;multiple pixel coordinates&quot;, &quot;coordinate&quot;, &quot;50px 100px 150px 100px 200px 100px&quot;, &quot;50px 100px 150px 100px 200px 100px&quot;);
+testScrollSnapRule(&quot;multiple percentage coordinates&quot;, &quot;coordinate&quot;, &quot;50% 100% 150% 100% 200% 100%&quot;, &quot;50% 100% 150% 100% 200% 100%&quot;);
+
+testScrollSnapRule(&quot;em/ex coordinate&quot;, &quot;coordinate&quot;, &quot;12em 16ex 16em 12ex&quot;, &quot;12em 16ex 16em 12ex&quot;);
+testScrollSnapRule(&quot;in/cm coordinate&quot;, &quot;coordinate&quot;, &quot;2in 5cm 5in 2cm&quot;, &quot;2in 5cm 5in 2cm&quot;);
+
+successfullyParsed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformeflTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/efl/TestExpectations (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/TestExpectations        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/LayoutTests/platform/efl/TestExpectations        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -251,6 +251,9 @@
</span><span class="cx"> fast/events/drag-and-drop-subframe-dataTransfer.html
</span><span class="cx"> fast/events/drag-dataTransferItemList-file-handling.html
</span><span class="cx"> 
</span><ins>+# ENABLE(CSS_SCROLL_SNAP) is disabled.
+css3/scroll-snap
+
</ins><span class="cx"> # ENABLE(DRAGGABLE_REGION) is disabled
</span><span class="cx"> fast/css/draggable-region-parser.html
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/TestExpectations (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/TestExpectations        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/LayoutTests/platform/gtk/TestExpectations        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -364,6 +364,9 @@
</span><span class="cx"> # Style scoped support unimplemented
</span><span class="cx"> Bug(GTK) fast/css/style-scoped [ Skip ]
</span><span class="cx"> 
</span><ins>+# ENABLE(CSS_SCROLL_SNAP) is disabled.
+css3/scroll-snap
+
</ins><span class="cx"> # ENABLE(SHADOW_DOM) is disabled.
</span><span class="cx"> Bug(GTK) fast/dom/shadow [ Skip ]
</span><span class="cx"> Bug(GTK) fast/dom/HTMLTemplateElement/cycles-in-shadow.html [ Skip ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/TestExpectations (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/TestExpectations        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/LayoutTests/platform/win/TestExpectations        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1436,6 +1436,9 @@
</span><span class="cx"> # &lt;style scoped&gt; is not yet enabled. http://webkit.org/b/49142
</span><span class="cx"> webkit.org/b/49142 fast/css/style-scoped
</span><span class="cx"> 
</span><ins>+# ENABLE(CSS_SCROLL_SNAP) is disabled.
+css3/scroll-snap
+
</ins><span class="cx"> # ENABLE(SHADOW_DOM) is disabled.
</span><span class="cx"> editing/shadow
</span><span class="cx"> fast/dom/shadow
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-08-06  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
+
</ins><span class="cx"> 2014-08-06  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Gardening: fix for build failure on GTK bots.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -186,6 +186,8 @@
</span><span class="cx"> ENABLE_RESOLUTION_MEDIA_QUERY = ;
</span><span class="cx"> ENABLE_SCRIPTED_SPEECH = ;
</span><span class="cx"> ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
</span><ins>+ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
+ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
</ins><span class="cx"> ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
</span><span class="cx"> ENABLE_SQL_DATABASE = ENABLE_SQL_DATABASE;
</span><span class="lines">@@ -248,4 +250,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</del><ins>+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</ins></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/CMakeLists.txt        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -2442,6 +2442,7 @@
</span><span class="cx">     rendering/style/StyleMultiColData.cpp
</span><span class="cx">     rendering/style/StyleRareInheritedData.cpp
</span><span class="cx">     rendering/style/StyleRareNonInheritedData.cpp
</span><ins>+    rendering/style/StyleScrollSnapPoints.cpp
</ins><span class="cx">     rendering/style/StyleSurroundData.cpp
</span><span class="cx">     rendering/style/StyleTransformData.cpp
</span><span class="cx">     rendering/style/StyleVisualData.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,81 @@
</span><ins>+2014-08-06  Wenson Hsieh &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Provided support for parsing -webkit-scroll-snap-* properties, i.e.  type, points-x, points-y, destination, and coordinates.
+        The exact syntax of the scroll snap CSS properties follow the W3C spec at http://dev.w3.org/csswg/css-snappoints/
+
+        Reviewed by Dean Jackson.
+
+        Tests: css3/scroll-snap/scroll-snap-property-parsing.html,
+            css3/scroll-snap/scroll-snap-property-computed-style.html
+
+        * CMakeLists.txt: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
+        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
+        * WebCore.vcxproj/WebCore.vcxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
+        * WebCore.vcxproj/WebCore.vcxproj.filters: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
+        * WebCore.xcodeproj/project.pbxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp, LengthRepeat.h
+        * css/CSSCalculationValue.cpp: Support for LengthRepeat
+        (WebCore::hasDoubleValue):
+        * css/CSSComputedStyleDeclaration.cpp: Support for showing computed style for snap point properties.
+        (WebCore::scrollSnapDestination):
+        (WebCore::scrollSnapPoints):
+        (WebCore::scrollSnapCoordinates):
+        (WebCore::ComputedStyleExtractor::propertyValue):
+        * css/CSSParser.cpp: Support for parsing snap point properties.
+        (WebCore::isValidKeywordPropertyAndValue): handle snap point type
+        (WebCore::isKeywordPropertyID):
+        (WebCore::CSSParser::parseValue): Added support for parsing snap points.
+        (WebCore::CSSParser::parseNonElementSnapPoints): Helper for parsing snap points-x/y.
+        (WebCore::CSSParser::parseScrollSnapDestination): Helper for parsing snap point destinations.
+        (WebCore::CSSParser::parseScrollSnapCoordinate): Helper for parsing snap point coordinates.
+        * css/CSSParser.h: Support for parsing snap point properties.
+        * css/CSSParserValues.cpp:
+        (WebCore::CSSParserValue::createCSSValue):
+        * css/CSSPrimitiveValue.cpp:
+        (WebCore::isValidCSSUnitTypeForDoubleConversion):
+        (WebCore::CSSPrimitiveValue::init):
+        (WebCore::CSSPrimitiveValue::cleanup):
+        (WebCore::CSSPrimitiveValue::getLengthRepeatValue):
+        (WebCore::CSSPrimitiveValue::formatNumberForcustomCSSText):
+        (WebCore::CSSPrimitiveValue::cloneForCSSOM):
+        (WebCore::CSSPrimitiveValue::equals):
+        * css/CSSPrimitiveValue.h:
+        (WebCore::CSSPrimitiveValue::isLengthRepeat):
+        (WebCore::CSSPrimitiveValue::getLengthRepeatValue):
+        * css/CSSPrimitiveValueMappings.h: Added converters for snap point type properties.
+        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
+        (WebCore::CSSPrimitiveValue::operator ScrollSnapType):
+        * css/CSSPropertyNames.in: Added relevant snap point property names.
+        * css/CSSValueKeywords.in: Added &quot;proximity&quot;, &quot;mandatory&quot; and &quot;elements&quot;.
+        * css/LengthRepeat.h: Added to represent values of repeat(&lt;length&gt;)
+        (WebCore::LengthRepeat::create):
+        (WebCore::LengthRepeat::cloneForCSSOM):
+        (WebCore::LengthRepeat::interval):
+        (WebCore::LengthRepeat::setInterval):
+        (WebCore::LengthRepeat::equals):
+        (WebCore::LengthRepeat::cssText):
+        (WebCore::LengthRepeat::LengthRepeat):
+        * css/StyleResolver.cpp: Support for handling snap point properties
+        (WebCore::StyleResolver::applyProperty):Updated switch case to build snap-point-related style data
+        * rendering/style/RenderStyle.h: Added methods to access and modify snap point data
+        * rendering/style/RenderStyleConstants.h: Added scroll snap type flags.
+        * rendering/style/StyleAllInOne.cpp: Added StyleScrollSnapPoints.cpp
+        * rendering/style/StyleRareNonInheritedData.cpp: Added initiazing for m_scrollSnapPoints, updated equality check
+        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+        (WebCore::StyleRareNonInheritedData::operator==):
+        * rendering/style/StyleRareNonInheritedData.h: Added field for StyleScrollSnapPoints
+        * rendering/style/StyleScrollSnapPoints.cpp: Added. Wrapper for basic snap point data structures.
+        (WebCore::StyleScrollSnapPoints::StyleScrollSnapPoints):
+        (WebCore::StyleScrollSnapPoints::copy):
+        (WebCore::StyleScrollSnapPoints::operator==):
+        * rendering/style/StyleScrollSnapPoints.h: Added.
+        (WebCore::StyleScrollSnapPoints::create):
+        (WebCore::StyleScrollSnapPoints::defaultRepeatOffset): Creates a new Length representing the default repeat value of repeat(100%)
+        (WebCore::StyleScrollSnapPoints::defaultDestinationOffset): Creates a new Length representing a default destination value (0px)
+        (WebCore::StyleScrollSnapPoints::operator!=):
+
</ins><span class="cx"> 2014-08-06  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Subresources referenced in converted QuickLook documents sometimes fail to load
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -186,6 +186,8 @@
</span><span class="cx"> ENABLE_RESOLUTION_MEDIA_QUERY = ;
</span><span class="cx"> ENABLE_SCRIPTED_SPEECH = ;
</span><span class="cx"> ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
</span><ins>+ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
+ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
</ins><span class="cx"> ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
</span><span class="cx"> ENABLE_SQL_DATABASE = ENABLE_SQL_DATABASE;
</span><span class="lines">@@ -248,4 +250,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</del><ins>+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -11918,6 +11918,20 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\rendering\style\StyleScrollSnapPoints.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\style\StyleSurroundData.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -20110,6 +20124,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\DashboardRegion.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\FontLoader.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\LengthFunctions.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\css\LengthRepeat.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\css\MediaFeatureNames.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\MediaList.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\MediaQuery.h&quot; /&gt;
</span><span class="lines">@@ -20369,6 +20384,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleRareInheritedData.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleRareNonInheritedData.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleReflection.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\rendering\style\StyleScrollSnapPoints.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleSurroundData.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleTransformData.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleVariableData.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -2853,6 +2853,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\style\StyleRareNonInheritedData.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering\style&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\rendering\style\StyleScrollSnapPoints.cpp&quot;&gt;
+      &lt;Filter&gt;rendering\style&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\rendering\style\StyleSurroundData.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering\style&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -9261,6 +9264,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\css\LengthFunctions.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\css\LengthRepeat.h&quot;&gt;
+      &lt;Filter&gt;css&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\css\MediaFeatureNames.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;css&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -9909,6 +9915,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleReflection.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering\style&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\rendering\style\StyleScrollSnapPoints.h&quot;&gt;
+      &lt;Filter&gt;rendering\style&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\rendering\style\StyleSurroundData.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;rendering\style&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -6254,6 +6254,9 @@
</span><span class="cx">                 F3D4C47912E07663003DA150 /* InspectorDOMDebuggerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D4C47712E07663003DA150 /* InspectorDOMDebuggerAgent.h */; };
</span><span class="cx">                 F3F5CF1112ED81A80084C569 /* InspectorConsoleInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */; };
</span><span class="cx">                 F3F5CF1312ED81B30084C569 /* InspectorDatabaseInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */; };
</span><ins>+                F42FFB461984B71600F6837F /* LengthRepeat.h in Headers */ = {isa = PBXBuildFile; fileRef = F42FFB451984B71600F6837F /* LengthRepeat.h */; };
+                F47A5E3E195B8C8A00483100 /* StyleScrollSnapPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                F47A5E3F195B8E4800483100 /* StyleScrollSnapPoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */; };
</ins><span class="cx">                 F50664F7157F52DC00AC226F /* FormController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F50664F5157F52DC00AC226F /* FormController.cpp */; };
</span><span class="cx">                 F50664F8157F52DC00AC226F /* FormController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50664F6157F52DC00AC226F /* FormController.h */; };
</span><span class="cx">                 F513A3EA15FF4841001526DB /* ValidationMessageClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F513A3E915FF4841001526DB /* ValidationMessageClient.h */; };
</span><span class="lines">@@ -13782,6 +13785,9 @@
</span><span class="cx">                 F3D4C47712E07663003DA150 /* InspectorDOMDebuggerAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMDebuggerAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorConsoleInstrumentation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseInstrumentation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                F42FFB451984B71600F6837F /* LengthRepeat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthRepeat.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleScrollSnapPoints.cpp; path = style/StyleScrollSnapPoints.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleScrollSnapPoints.h; path = style/StyleScrollSnapPoints.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 F50664F5157F52DC00AC226F /* FormController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormController.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 F50664F6157F52DC00AC226F /* FormController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 F513A3E915FF4841001526DB /* ValidationMessageClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidationMessageClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -21089,6 +21095,8 @@
</span><span class="cx">                                 BC2274760E8366E200E7F975 /* SVGRenderStyleDefs.cpp */,
</span><span class="cx">                                 BC2274770E8366E200E7F975 /* SVGRenderStyleDefs.h */,
</span><span class="cx">                                 448B1B780F3A2F9B0047A9E2 /* TextSizeAdjustment.h */,
</span><ins>+                                F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */,
+                                F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = style;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -22159,6 +22167,7 @@
</span><span class="cx">                                 93CA4C9F09DF93FA00DF8677 /* quirks.css */,
</span><span class="cx">                                 BC4368E70C226E32005EFB5F /* Rect.h */,
</span><span class="cx">                                 A80E79960A19BD21007FB8C5 /* Rect.idl */,
</span><ins>+                                F42FFB451984B71600F6837F /* LengthRepeat.h */,
</ins><span class="cx">                                 BC74DA361013F3F7007987AD /* RGBColor.cpp */,
</span><span class="cx">                                 BC74DA351013F3F7007987AD /* RGBColor.h */,
</span><span class="cx">                                 858C38EF0AA8FDD100B187A4 /* RGBColor.idl */,
</span><span class="lines">@@ -24584,6 +24593,7 @@
</span><span class="cx">                                 510192D218B6B9AB007FC7A1 /* ImageControlsRootElementMac.h in Headers */,
</span><span class="cx">                                 A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */,
</span><span class="cx">                                 97205AB61239291000B17380 /* ImageDocument.h in Headers */,
</span><ins>+                                F42FFB461984B71600F6837F /* LengthRepeat.h in Headers */,
</ins><span class="cx">                                 F55B3DC21251F12D003EF269 /* ImageInputType.h in Headers */,
</span><span class="cx">                                 089582560E857A7E00F82C83 /* ImageLoader.h in Headers */,
</span><span class="cx">                                 BC7F44A80B9E324E00A9D081 /* ImageObserver.h in Headers */,
</span><span class="lines">@@ -25021,6 +25031,7 @@
</span><span class="cx">                                 E1FF8F65180745D800132674 /* JSSubtleCrypto.h in Headers */,
</span><span class="cx">                                 B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */,
</span><span class="cx">                                 24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */,
</span><ins>+                                F47A5E3E195B8C8A00483100 /* StyleScrollSnapPoints.h in Headers */,
</ins><span class="cx">                                 07AC47021952102100EE9723 /* ISOVTTCue.h in Headers */,
</span><span class="cx">                                 6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */,
</span><span class="cx">                                 24D9129613CA956100D21915 /* JSSVGAltGlyphItemElement.h in Headers */,
</span><span class="lines">@@ -27820,6 +27831,7 @@
</span><span class="cx">                                 93309E0D099E64920056E581 /* FrameSelection.cpp in Sources */,
</span><span class="cx">                                 4A8C96EB0BE69032004EEFF0 /* FrameSelectionMac.mm in Sources */,
</span><span class="cx">                                 C4CD629A18383766007EBAF1 /* FrameSnapshotting.cpp in Sources */,
</span><ins>+                                F47A5E3F195B8E4800483100 /* StyleScrollSnapPoints.cpp in Sources */,
</ins><span class="cx">                                 65A21484097A3F5300B9050A /* FrameTree.cpp in Sources */,
</span><span class="cx">                                 65CBFEF90974F607001DAC25 /* FrameView.cpp in Sources */,
</span><span class="cx">                                 97205AAF123928CA00B17380 /* FTPDirectoryDocument.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSCalculationValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSCalculationValue.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSCalculationValue.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSCalculationValue.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -139,6 +139,9 @@
</span><span class="cx">     case CSSPrimitiveValue::CSS_COUNTER_NAME:
</span><span class="cx">     case CSSPrimitiveValue::CSS_SHAPE:
</span><span class="cx">     case CSSPrimitiveValue::CSS_QUAD:
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
+#endif
</ins><span class="cx">     case CSSPrimitiveValue::CSS_CALC:
</span><span class="cx">     case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_NUMBER:
</span><span class="cx">     case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_LENGTH:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -85,6 +85,11 @@
</span><span class="cx"> #include &quot;DashboardRegion.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;LengthRepeat.h&quot;
+#include &quot;StyleScrollSnapPoints.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> // List of all properties we know how to compute, omitting shorthands.
</span><span class="lines">@@ -212,6 +217,13 @@
</span><span class="cx">     CSSPropertyWordBreak,
</span><span class="cx">     CSSPropertyWordSpacing,
</span><span class="cx">     CSSPropertyWordWrap,
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    CSSPropertyWebkitScrollSnapType,
+    CSSPropertyWebkitScrollSnapPointsX,
+    CSSPropertyWebkitScrollSnapPointsY,
+    CSSPropertyWebkitScrollSnapDestination,
+    CSSPropertyWebkitScrollSnapCoordinate,
+#endif
</ins><span class="cx">     CSSPropertyZIndex,
</span><span class="cx">     CSSPropertyZoom,
</span><span class="cx"> 
</span><span class="lines">@@ -1072,6 +1084,64 @@
</span><span class="cx">     return list;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+static PassRef&lt;CSSValueList&gt; scrollSnapDestination(RenderStyle* style, Length x, Length y)
+{
+    RefPtr&lt;CSSValueList&gt; snapDestinationValue = CSSValueList::createSpaceSeparated();
+    if (x.isPercentNotCalculated())
+        snapDestinationValue-&gt;append(cssValuePool().createValue(x.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+    else
+        snapDestinationValue-&gt;append(zoomAdjustedPixelValue(valueForLength(x, 0), style));
+
+    if (y.isPercentNotCalculated())
+        snapDestinationValue-&gt;append(cssValuePool().createValue(y.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+    else
+        snapDestinationValue-&gt;append(zoomAdjustedPixelValue(valueForLength(y, 0), style));
+
+    return snapDestinationValue.releaseNonNull();
+}
+
+static PassRef&lt;CSSValueList&gt; scrollSnapPoints(RenderStyle* style, const Vector&lt;Length&gt;&amp; points, Length repeatPoint, bool hasRepeat)
+{
+    RefPtr&lt;CSSValueList&gt; snapPointsValue = CSSValueList::createSpaceSeparated();
+    for (auto&amp; point : points) {
+        if (point.isPercentNotCalculated())
+            snapPointsValue-&gt;append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+        else
+            snapPointsValue-&gt;append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+    }
+    if (hasRepeat) {
+        if (repeatPoint.isPercentNotCalculated())
+            snapPointsValue-&gt;append(cssValuePool().createValue(LengthRepeat::create(cssValuePool().createValue(repeatPoint.percent(), CSSPrimitiveValue::CSS_PERCENTAGE))));
+        else
+            snapPointsValue-&gt;append(cssValuePool().createValue(LengthRepeat::create(zoomAdjustedPixelValue(valueForLength(repeatPoint, 0), style))));
+    }
+    return snapPointsValue.releaseNonNull();
+}
+
+static PassRef&lt;CSSValueList&gt; scrollSnapCoordinates(RenderStyle* style, const Vector&lt;SnapCoordinate&gt;&amp; coordinates)
+{
+    RefPtr&lt;CSSValueList&gt; snapCoordinatesValue = CSSValueList::createCommaSeparated();
+    for (const auto&amp; coordinate : coordinates) {
+        RefPtr&lt;CSSValueList&gt; currentCoordinate = CSSValueList::createSpaceSeparated();
+        Length point = coordinate.first;
+        if (point.isPercentNotCalculated())
+            currentCoordinate-&gt;append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+        else
+            currentCoordinate-&gt;append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+
+        point = coordinate.second;
+        if (point.isPercentNotCalculated())
+            currentCoordinate-&gt;append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+        else
+            currentCoordinate-&gt;append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+
+        snapCoordinatesValue-&gt;append(PassRefPtr&lt;CSSValueList&gt;(WTF::move(currentCoordinate)));
+    }
+    return snapCoordinatesValue.releaseNonNull();
+}
+#endif
+
</ins><span class="cx"> static PassRef&lt;CSSValueList&gt; getDelayValue(const AnimationList* animList)
</span><span class="cx"> {
</span><span class="cx">     auto list = CSSValueList::createCommaSeparated();
</span><span class="lines">@@ -3039,6 +3109,26 @@
</span><span class="cx">         case CSSPropertyWritingMode:
</span><span class="cx">         case CSSPropertyWebkitSvgShadow:
</span><span class="cx">             return svgPropertyValue(propertyID, DoNotUpdateLayout);
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+        case CSSPropertyWebkitScrollSnapType:
+            return cssValuePool().createValue(style-&gt;scrollSnapType());
+        case CSSPropertyWebkitScrollSnapDestination:
+            return scrollSnapDestination(style.get(), style-&gt;scrollSnapDestinationX(), style-&gt;scrollSnapDestinationY());
+        case CSSPropertyWebkitScrollSnapPointsX:
+            if (style-&gt;scrollSnapUsesElementsX())
+                return cssValuePool().createValue(&quot;elements&quot;, CSSPrimitiveValue::CSS_STRING);
+            return scrollSnapPoints(style.get(), style-&gt;scrollSnapOffsetsX(), style-&gt;scrollSnapRepeatOffsetX(), style-&gt;scrollSnapHasRepeatX());
+        case CSSPropertyWebkitScrollSnapPointsY:
+            if (style-&gt;scrollSnapUsesElementsY())
+                return cssValuePool().createValue(&quot;elements&quot;, CSSPrimitiveValue::CSS_STRING);
+            return scrollSnapPoints(style.get(), style-&gt;scrollSnapOffsetsY(), style-&gt;scrollSnapRepeatOffsetY(), style-&gt;scrollSnapHasRepeatY());
+        case CSSPropertyWebkitScrollSnapCoordinate:
+            Vector&lt;SnapCoordinate&gt; coords = style-&gt;scrollSnapCoordinates();
+            if (!coords.size())
+                return cssValuePool().createValue(&quot;none&quot;, CSSPrimitiveValue::CSS_STRING);
+            return scrollSnapCoordinates(style.get(), coords);
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     logUnimplementedPropertyID(propertyID);
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -104,6 +104,10 @@
</span><span class="cx"> #include &quot;WebKitCSSFilterValue.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;LengthRepeat.h&quot;
+#endif
+
</ins><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><span class="cx"> #include &quot;DashboardRegion.h&quot;
</span><span class="cx"> #endif
</span><span class="lines">@@ -720,6 +724,12 @@
</span><span class="cx">         if (valueID == CSSValueNormal || valueID == CSSValueBreakWord)
</span><span class="cx">             return true;
</span><span class="cx">         break;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPropertyWebkitScrollSnapType: // none | mandatory | proximity
+        if (valueID == CSSValueNone || valueID == CSSValueMandatory || valueID == CSSValueProximity)
+            return true;
+        break;
+#endif
</ins><span class="cx">     case CSSPropertyOverflowX: // visible | hidden | scroll | auto | marquee | overlay | inherit
</span><span class="cx">         if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID == CSSValueScroll || valueID == CSSValueAuto || valueID == CSSValueOverlay || valueID == CSSValueWebkitMarquee)
</span><span class="cx">             return true;
</span><span class="lines">@@ -1138,6 +1148,9 @@
</span><span class="cx">     case CSSPropertyWhiteSpace:
</span><span class="cx">     case CSSPropertyWordBreak:
</span><span class="cx">     case CSSPropertyWordWrap:
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPropertyWebkitScrollSnapType:
+#endif
</ins><span class="cx">         return true;
</span><span class="cx">     default:
</span><span class="cx">         return false;
</span><span class="lines">@@ -3032,6 +3045,9 @@
</span><span class="cx">     case CSSPropertyWhiteSpace:
</span><span class="cx">     case CSSPropertyWordBreak:
</span><span class="cx">     case CSSPropertyWordWrap:
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPropertyWebkitScrollSnapType:
+#endif
</ins><span class="cx">         // These properties should be handled before in isValidKeywordPropertyAndValue().
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx">         return false;
</span><span class="lines">@@ -3046,6 +3062,19 @@
</span><span class="cx">         validPrimitive = false;
</span><span class="cx">         break;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPropertyWebkitScrollSnapPointsX:
+    case CSSPropertyWebkitScrollSnapPointsY:
+        if (id == CSSValueElements) {
+            validPrimitive = true;
+            break;
+        }
+        return parseNonElementSnapPoints(propId, important);
+    case CSSPropertyWebkitScrollSnapDestination: // &lt;length&gt;{2}
+        return parseScrollSnapDestination(propId, important);
+    case CSSPropertyWebkitScrollSnapCoordinate:
+        return parseScrollSnapCoordinate(propId, important);
+#endif
</ins><span class="cx">     default:
</span><span class="cx">         return parseSVGValue(propId, important);
</span><span class="cx">     }
</span><span class="lines">@@ -3153,6 +3182,83 @@
</span><span class="cx">     return m_context.useLegacyBackgroundSizeShorthandBehavior;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+bool CSSParser::parseNonElementSnapPoints(CSSPropertyID propId, bool important)
+{
+    RefPtr&lt;CSSValueList&gt; values = CSSValueList::createSpaceSeparated();
+    while (CSSParserValue* val = m_valueList-&gt;current()) {
+        RefPtr&lt;CSSValue&gt; parsedValue;
+        if (validUnit(val, FPercent | FLength)) {
+            parsedValue = createPrimitiveNumericValue(val);
+            values-&gt;append(parsedValue.release());
+        } else if (val-&gt;unit == CSSParserValue::Function
+            &amp;&amp; val-&gt;function-&gt;args != 0
+            &amp;&amp; val-&gt;function-&gt;args-&gt;size() == 1
+            &amp;&amp; equalIgnoringCase(val-&gt;function-&gt;name, &quot;repeat(&quot;)) {
+            CSSParserValue* parserVal = val-&gt;function-&gt;args.get()-&gt;current();
+            if (validUnit(parserVal, FLength | FPercent)) {
+                values-&gt;append(cssValuePool().createValue(LengthRepeat::create(createPrimitiveNumericValue(parserVal))));
+                m_valueList-&gt;next();
+                if (m_valueList-&gt;current())
+                    return false;
+                break;
+            }
+        } else
+            return false;
+        m_valueList-&gt;next();
+    }
+    if (values-&gt;length()) {
+        addProperty(propId, values.release(), important);
+        m_valueList-&gt;next();
+        return true;
+    }
+    return false;
+}
+
+bool CSSParser::parseScrollSnapDestination(CSSPropertyID propId, bool important)
+{
+    RefPtr&lt;CSSValueList&gt; position = CSSValueList::createSpaceSeparated();
+    if (m_valueList-&gt;size() != 2)
+        return false;
+    CSSParserValue* curParserVal = m_valueList-&gt;current();
+    if (!validUnit(curParserVal, FPercent | FLength))
+        return false;
+    RefPtr&lt;CSSValue&gt; cssValueX = createPrimitiveNumericValue(curParserVal);
+    m_valueList-&gt;next();
+    curParserVal = m_valueList-&gt;current();
+    if (!validUnit(curParserVal, FPercent | FLength))
+        return false;
+    RefPtr&lt;CSSValue&gt; cssValueY = createPrimitiveNumericValue(curParserVal);
+    position-&gt;append(cssValueX.release());
+    position-&gt;append(cssValueY.release());
+    addProperty(propId, position, important);
+    m_valueList-&gt;next();
+    return true;
+}
+
+bool CSSParser::parseScrollSnapCoordinate(CSSPropertyID propId, bool important)
+{
+    RefPtr&lt;CSSValueList&gt; positions = CSSValueList::createSpaceSeparated();
+    while (m_valueList-&gt;current()) {
+        CSSParserValue* parsedValueX = m_valueList-&gt;current();
+        // Don't accept odd-length lists of coordinates.
+        if (!m_valueList-&gt;next())
+            return false;
+        CSSParserValue* parsedValueY = m_valueList-&gt;current();
+        if (!validUnit(parsedValueX, FPercent | FLength) || !validUnit(parsedValueY, FPercent | FLength))
+            return false;
+        positions-&gt;append(createPrimitiveNumericValue(parsedValueX));
+        positions-&gt;append(createPrimitiveNumericValue(parsedValueY));
+        m_valueList-&gt;next();
+    }
+    if (positions-&gt;length()) {
+        addProperty(propId, positions.release(), important);
+        return true;
+    }
+    return false;
+}
+#endif
+
</ins><span class="cx"> const int cMaxFillProperties = 9;
</span><span class="cx"> 
</span><span class="cx"> bool CSSParser::parseFillShorthand(CSSPropertyID propId, const CSSPropertyID* properties, int numProperties, bool important)
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSParser.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -534,6 +534,12 @@
</span><span class="cx">     bool parseSize(CSSPropertyID propId, bool important);
</span><span class="cx">     SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserValue* value, SizeParameterType prevParamType);
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    bool parseNonElementSnapPoints(CSSPropertyID propId, bool important);
+    bool parseScrollSnapDestination(CSSPropertyID propId, bool important);
+    bool parseScrollSnapCoordinate(CSSPropertyID propId, bool important);
+#endif
+
</ins><span class="cx">     bool parseFontFaceSrcURI(CSSValueList*);
</span><span class="cx">     bool parseFontFaceSrcLocal(CSSValueList*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParserValuescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParserValues.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParserValues.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSParserValues.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -141,6 +141,9 @@
</span><span class="cx">     case CSSPrimitiveValue::CSS_COUNTER_NAME:
</span><span class="cx">     case CSSPrimitiveValue::CSS_SHAPE:
</span><span class="cx">     case CSSPrimitiveValue::CSS_QUAD:
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
+#endif
</ins><span class="cx">     case CSSPrimitiveValue::CSS_CALC:
</span><span class="cx">     case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_NUMBER:
</span><span class="cx">     case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_LENGTH:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -51,6 +51,10 @@
</span><span class="cx"> #include &quot;DashboardRegion.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;LengthRepeat.h&quot;
+#endif
+
</ins><span class="cx"> using namespace WTF;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -119,6 +123,9 @@
</span><span class="cx">     case CSSPrimitiveValue::CSS_PARSER_OPERATOR:
</span><span class="cx">     case CSSPrimitiveValue::CSS_RECT:
</span><span class="cx">     case CSSPrimitiveValue::CSS_QUAD:
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
+#endif
</ins><span class="cx">     case CSSPrimitiveValue::CSS_RGBCOLOR:
</span><span class="cx">     case CSSPrimitiveValue::CSS_SHAPE:
</span><span class="cx">     case CSSPrimitiveValue::CSS_STRING:
</span><span class="lines">@@ -398,6 +405,15 @@
</span><span class="cx">     m_value.quad = quad.leakRef();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+void CSSPrimitiveValue::init(PassRefPtr&lt;LengthRepeat&gt; lengthRepeat)
+{
+    m_primitiveUnitType = CSS_LENGTH_REPEAT;
+    m_hasCachedCSSText = false;
+    m_value.lengthRepeat = lengthRepeat.leakRef();
+}
+#endif
+
</ins><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><span class="cx"> void CSSPrimitiveValue::init(PassRefPtr&lt;DashboardRegion&gt; r)
</span><span class="cx"> {
</span><span class="lines">@@ -453,6 +469,11 @@
</span><span class="cx">     case CSS_QUAD:
</span><span class="cx">         m_value.quad-&gt;deref();
</span><span class="cx">         break;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSS_LENGTH_REPEAT:
+        m_value.lengthRepeat-&gt;deref();
+        break;
+#endif
</ins><span class="cx">     case CSS_PAIR:
</span><span class="cx">         m_value.pair-&gt;deref();
</span><span class="cx">         break;
</span><span class="lines">@@ -898,6 +919,19 @@
</span><span class="cx">     return m_value.quad;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+LengthRepeat* CSSPrimitiveValue::getLengthRepeatValue(ExceptionCode&amp; ec) const
+{
+    ec = 0;
+    if (m_primitiveUnitType != CSS_LENGTH_REPEAT) {
+        ec = INVALID_ACCESS_ERR;
+        return 0;
+    }
+
+    return m_value.lengthRepeat;
+}
+#endif
+
</ins><span class="cx"> PassRefPtr&lt;RGBColor&gt; CSSPrimitiveValue::getRGBColorValue(ExceptionCode&amp; ec) const
</span><span class="cx"> {
</span><span class="cx">     ec = 0;
</span><span class="lines">@@ -1047,6 +1081,10 @@
</span><span class="cx">         return getRectValue()-&gt;cssText();
</span><span class="cx">     case CSS_QUAD:
</span><span class="cx">         return getQuadValue()-&gt;cssText();
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSS_LENGTH_REPEAT:
+        return getLengthRepeatValue()-&gt;cssText();
+#endif
</ins><span class="cx">     case CSS_RGBCOLOR:
</span><span class="cx">     case CSS_PARSER_HEXCOLOR: {
</span><span class="cx">         RGBA32 rgbColor = m_value.rgbcolor;
</span><span class="lines">@@ -1186,6 +1224,11 @@
</span><span class="cx">     case CSS_QUAD:
</span><span class="cx">         result = CSSPrimitiveValue::create(m_value.quad-&gt;cloneForCSSOM());
</span><span class="cx">         break;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSS_LENGTH_REPEAT:
+        result = CSSPrimitiveValue::create(m_value.lengthRepeat-&gt;cloneForCSSOM());
+        break;
+#endif
</ins><span class="cx">     case CSS_PAIR:
</span><span class="cx">         // Pair is not exposed to the CSSOM, no need for a deep clone.
</span><span class="cx">         result = CSSPrimitiveValue::create(m_value.pair);
</span><span class="lines">@@ -1316,6 +1359,10 @@
</span><span class="cx">         return m_value.rect &amp;&amp; other.m_value.rect &amp;&amp; m_value.rect-&gt;equals(*other.m_value.rect);
</span><span class="cx">     case CSS_QUAD:
</span><span class="cx">         return m_value.quad &amp;&amp; other.m_value.quad &amp;&amp; m_value.quad-&gt;equals(*other.m_value.quad);
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSS_LENGTH_REPEAT:
+        return m_value.lengthRepeat &amp;&amp; other.m_value.lengthRepeat &amp;&amp; m_value.lengthRepeat-&gt;equals(*other.m_value.lengthRepeat);
+#endif
</ins><span class="cx">     case CSS_RGBCOLOR:
</span><span class="cx">         return m_value.rgbcolor == other.m_value.rgbcolor;
</span><span class="cx">     case CSS_PAIR:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValue.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -43,6 +43,10 @@
</span><span class="cx"> class RenderStyle;
</span><span class="cx"> class CSSBasicShape;
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+class LengthRepeat;
+#endif
+
</ins><span class="cx"> struct Length;
</span><span class="cx"> struct LengthSize;
</span><span class="cx"> 
</span><span class="lines">@@ -104,6 +108,9 @@
</span><span class="cx">         CSS_DPI = 31,
</span><span class="cx">         CSS_DPCM = 32,
</span><span class="cx">         CSS_FR = 33,
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+        CSS_LENGTH_REPEAT = 34,
+#endif
</ins><span class="cx">         CSS_PAIR = 100, // We envision this being exposed as a means of getting computed style values for pairs (border-spacing/radius, background-position, etc.)
</span><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><span class="cx">         CSS_DASHBOARD_REGION = 101, // FIXME: Dashboard region should not be a primitive value.
</span><span class="lines">@@ -181,6 +188,9 @@
</span><span class="cx">     bool isPercentage() const { return primitiveType() == CSS_PERCENTAGE; }
</span><span class="cx">     bool isPx() const { return primitiveType() == CSS_PX; }
</span><span class="cx">     bool isRect() const { return m_primitiveUnitType == CSS_RECT; }
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    bool isLengthRepeat() const { return m_primitiveUnitType == CSS_LENGTH_REPEAT; }
+#endif
</ins><span class="cx">     bool isRGBColor() const { return m_primitiveUnitType == CSS_RGBCOLOR; }
</span><span class="cx">     bool isShape() const { return m_primitiveUnitType == CSS_SHAPE; }
</span><span class="cx">     bool isString() const { return m_primitiveUnitType == CSS_STRING; }
</span><span class="lines">@@ -303,6 +313,11 @@
</span><span class="cx">     Quad* getQuadValue(ExceptionCode&amp;) const;
</span><span class="cx">     Quad* getQuadValue() const { return m_primitiveUnitType != CSS_QUAD ? 0 : m_value.quad; }
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    LengthRepeat* getLengthRepeatValue(ExceptionCode&amp;) const;
+    LengthRepeat* getLengthRepeatValue() const { return m_primitiveUnitType != CSS_LENGTH_REPEAT ? 0 : m_value.lengthRepeat; }
+#endif
+
</ins><span class="cx">     PassRefPtr&lt;RGBColor&gt; getRGBColorValue(ExceptionCode&amp;) const;
</span><span class="cx">     RGBA32 getRGBA32Value() const { return m_primitiveUnitType != CSS_RGBCOLOR ? 0 : m_value.rgbcolor; }
</span><span class="cx"> 
</span><span class="lines">@@ -371,6 +386,9 @@
</span><span class="cx">     void init(PassRefPtr&lt;Rect&gt;);
</span><span class="cx">     void init(PassRefPtr&lt;Pair&gt;);
</span><span class="cx">     void init(PassRefPtr&lt;Quad&gt;);
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    void init(PassRefPtr&lt;LengthRepeat&gt;);
+#endif
</ins><span class="cx">     void init(PassRefPtr&lt;DashboardRegion&gt;); // FIXME: Dashboard region should not be a primitive value.
</span><span class="cx">     void init(PassRefPtr&lt;CSSBasicShape&gt;);
</span><span class="cx">     void init(PassRefPtr&lt;CSSCalcValue&gt;);
</span><span class="lines">@@ -392,6 +410,9 @@
</span><span class="cx">         Counter* counter;
</span><span class="cx">         Rect* rect;
</span><span class="cx">         Quad* quad;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+        LengthRepeat* lengthRepeat;
+#endif
</ins><span class="cx">         unsigned rgbcolor;
</span><span class="cx">         Pair* pair;
</span><span class="cx">         DashboardRegion* region;
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValueMappingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -5183,6 +5183,43 @@
</span><span class="cx">     return JustifySelfOverflowAlignmentTrue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+template&lt;&gt; inline CSSPrimitiveValue::CSSPrimitiveValue(ScrollSnapType e)
+    : CSSValue(PrimitiveClass)
+{
+    m_primitiveUnitType = CSS_VALUE_ID;
+    switch (e) {
+    case ScrollSnapType::None:
+        m_value.valueID = CSSValueNone;
+        break;
+    case ScrollSnapType::Proximity:
+        m_value.valueID = CSSValueProximity;
+        break;
+    case ScrollSnapType::Mandatory:
+        m_value.valueID = CSSValueMandatory;
+        break;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;&gt; inline CSSPrimitiveValue::operator ScrollSnapType() const
+{
+    ASSERT(isValueID());
+    switch (m_value.valueID) {
+    case CSSValueNone:
+        return ScrollSnapType::None;
+    case CSSValueProximity:
+        return ScrollSnapType::Proximity;
+    case CSSValueMandatory:
+        return ScrollSnapType::Mandatory;
+    default:
+        break;
+    }
+    ASSERT_NOT_REACHED();
+    return ScrollSnapType::None;
+}
</ins><span class="cx"> #endif
</span><ins>+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -387,6 +387,13 @@
</span><span class="cx"> -webkit-print-color-adjust [Inherited]
</span><span class="cx"> -webkit-rtl-ordering [Inherited]
</span><span class="cx"> -webkit-ruby-position [Inherited]
</span><ins>+#if defined(ENABLE_CSS_SCROLL_SNAP)
+-webkit-scroll-snap-points-x
+-webkit-scroll-snap-points-y
+-webkit-scroll-snap-type
+-webkit-scroll-snap-destination
+-webkit-scroll-snap-coordinate
+#endif
</ins><span class="cx"> -webkit-text-combine [Inherited]
</span><span class="cx"> -epub-text-combine = -webkit-text-combine
</span><span class="cx"> #if defined(ENABLE_CSS3_TEXT) &amp;&amp; ENABLE_CSS3_TEXT
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueKeywordsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValueKeywords.in        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -989,6 +989,16 @@
</span><span class="cx"> // closest-side
</span><span class="cx"> // farthest-side
</span><span class="cx"> 
</span><ins>+#if defined(ENABLE_CSS_SCROLL_SNAP)
+// -webkit-scroll-snap-points-x
+// -webkit-scroll-snap-points-y
+elements
+
+// -webkit-scroll-snap-type
+mandatory
+proximity
+#endif
+
</ins><span class="cx"> // -webkit-region-fragment
</span><span class="cx"> // auto
</span><span class="cx"> break
</span></span></pre></div>
<a id="trunkSourceWebCorecssLengthRepeath"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/LengthRepeat.h (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/LengthRepeat.h                                (rev 0)
+++ trunk/Source/WebCore/css/LengthRepeat.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LengthRepeat_h
+#define LengthRepeat_h
+
+#if ENABLE(CSS_SCROLL_SNAP)
+
+#include &quot;CSSPrimitiveValue.h&quot;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/text/StringBuilder.h&gt;
+
+namespace WebCore {
+
+class LengthRepeat : public RefCounted&lt;LengthRepeat&gt; {
+public:
+    static PassRefPtr&lt;LengthRepeat&gt; create(PassRefPtr&lt;CSSPrimitiveValue&gt; interval) { return adoptRef(new LengthRepeat(interval)); }
+
+    PassRefPtr&lt;LengthRepeat&gt; cloneForCSSOM() const { return create(interval()); }
+
+    CSSPrimitiveValue* interval() const { return m_interval.get(); }
+
+    void setInterval(PassRefPtr&lt;CSSPrimitiveValue&gt; interval) { m_interval = interval; }
+
+    bool equals(const LengthRepeat&amp; other) const
+    {
+        return compareCSSValuePtr(m_interval, other.m_interval);
+    }
+
+    String cssText() const
+    {
+        return &quot;repeat(&quot; + interval()-&gt;cssText() + &quot;)&quot;;
+    }
+
+private:
+    LengthRepeat(PassRefPtr&lt;CSSPrimitiveValue&gt; interval)
+        : m_interval(interval)
+    {
+    }
+
+    RefPtr&lt;CSSPrimitiveValue&gt; m_interval;
+};
+
+} // namespace WebCore
+
+#endif /* ENABLE(CSS_SCROLL_SNAP) */
+
+#endif // LengthRepeat_h
</ins></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -161,6 +161,10 @@
</span><span class="cx"> #include &quot;WebVTTElement.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;LengthRepeat.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="lines">@@ -2843,6 +2847,88 @@
</span><span class="cx">             state.style()-&gt;setJustifySelf(*primitiveValue);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+    case CSSPropertyWebkitScrollSnapType: {
+        state.style()-&gt;setScrollSnapType(*primitiveValue);
+        return;
+    }
+    case CSSPropertyWebkitScrollSnapPointsX:
+    case CSSPropertyWebkitScrollSnapPointsY: {
+        RenderStyle* renderStyle = state.style();
+        if (id == CSSPropertyWebkitScrollSnapPointsX)
+            renderStyle-&gt;setScrollSnapHasRepeatX(false);
+        else
+            renderStyle-&gt;setScrollSnapHasRepeatY(false);
+
+        if (primitiveValue &amp;&amp; primitiveValue-&gt;getValueID() == CSSValueElements) {
+            if (id == CSSPropertyWebkitScrollSnapPointsX)
+                renderStyle-&gt;setScrollSnapUsesElementsX(true);
+            else
+                renderStyle-&gt;setScrollSnapUsesElementsY(true);
+            return;
+        }
+        if (id == CSSPropertyWebkitScrollSnapPointsX)
+            renderStyle-&gt;setScrollSnapUsesElementsX(false);
+        else
+            renderStyle-&gt;setScrollSnapUsesElementsY(false);
+
+        Vector&lt;Length&gt; offsets;
+        for (CSSValueListIterator it(value); it.hasMore(); it.advance()) {
+            RefPtr&lt;CSSValue&gt; rawItemValue = it.value();
+            CSSPrimitiveValue* primitiveItemValue = toCSSPrimitiveValue(rawItemValue.get());
+            if (primitiveItemValue-&gt;isLengthRepeat()) {
+                LengthRepeat* lengthRepeat = primitiveItemValue-&gt;getLengthRepeatValue();
+                if (lengthRepeat &amp;&amp; lengthRepeat-&gt;interval()) {
+                    if (id == CSSPropertyWebkitScrollSnapPointsX) {
+                        renderStyle-&gt;setScrollSnapRepeatOffsetX(lengthRepeat-&gt;interval()-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()));
+                        renderStyle-&gt;setScrollSnapHasRepeatX(true);
+                    } else {
+                        renderStyle-&gt;setScrollSnapRepeatOffsetY(lengthRepeat-&gt;interval()-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()));
+                        renderStyle-&gt;setScrollSnapHasRepeatY(true);
+                    }
+                    break;
+                }
+            } else
+                offsets.append(primitiveItemValue-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()));
+        }
+        if (id == CSSPropertyWebkitScrollSnapPointsX)
+            renderStyle-&gt;setScrollSnapOffsetsX(offsets);
+        else
+            renderStyle-&gt;setScrollSnapOffsetsY(offsets);
+        return;
+    }
+    case CSSPropertyWebkitScrollSnapDestination: {
+        CSSValueList&amp; position = toCSSValueList(*value);
+        RefPtr&lt;CSSValue&gt; xCoordinate = position.item(0);
+        RefPtr&lt;CSSPrimitiveValue&gt; xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
+        state.style()-&gt;setScrollSnapDestinationX(xCoordinateValue-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()));
+
+        RefPtr&lt;CSSValue&gt; yCoordinate = position.item(1);
+        RefPtr&lt;CSSPrimitiveValue&gt; yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
+        state.style()-&gt;setScrollSnapDestinationY(yCoordinateValue-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()));
+        return;
+    }
+    case CSSPropertyWebkitScrollSnapCoordinate: {
+        Vector&lt;SnapCoordinate&gt; coordinates;
+        CSSValueList&amp; valueList = toCSSValueList(*value);
+        size_t pointCount = valueList.length();
+        // Every x must be followed by a y.
+        if (pointCount % 2)
+            return;
+        pointCount /= 2;
+        coordinates.reserveCapacity(pointCount);
+        for (size_t i = 0; i &lt; pointCount; i++) {
+            RefPtr&lt;CSSValue&gt; xCoordinate = valueList.item(i * 2);
+            RefPtr&lt;CSSValue&gt; yCoordinate = valueList.item((i * 2) + 1);
+            RefPtr&lt;CSSPrimitiveValue&gt; xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
+            RefPtr&lt;CSSPrimitiveValue&gt; yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
+            coordinates.append(SnapCoordinate(xCoordinateValue-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData()), yCoordinateValue-&gt;convertToLength&lt;FixedIntegerConversion | PercentConversion | AutoConversion&gt;(state.cssToLengthConversionData())));
+        }
+        state.style()-&gt;setScrollSnapCoordinates(coordinates);
+        return;
+    }
+#endif
</ins><span class="cx">     // These properties are aliased and DeprecatedStyleBuilder already applied the property on the prefixed version.
</span><span class="cx">     case CSSPropertyTransitionDelay:
</span><span class="cx">     case CSSPropertyTransitionDuration:
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -87,6 +87,10 @@
</span><span class="cx"> #include &quot;StyleDashboardRegion.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;StyleScrollSnapPoints.h&quot;
+#endif
+
</ins><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx"> #include &quot;TextSizeAdjustment.h&quot;
</span><span class="cx"> #endif
</span><span class="lines">@@ -1078,6 +1082,20 @@
</span><span class="cx"> 
</span><span class="cx">     LineBoxContain lineBoxContain() const { return rareInheritedData-&gt;m_lineBoxContain; }
</span><span class="cx">     const LineClampValue&amp; lineClamp() const { return rareNonInheritedData-&gt;lineClamp; }
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    ScrollSnapType scrollSnapType() const { return static_cast&lt;ScrollSnapType&gt;(rareNonInheritedData-&gt;m_scrollSnapType); }
+    Vector&lt;Length&gt; scrollSnapOffsetsX() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;offsetsX; }
+    Vector&lt;Length&gt; scrollSnapOffsetsY() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;offsetsY; }
+    Length scrollSnapRepeatOffsetX() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;repeatOffsetX; }
+    Length scrollSnapRepeatOffsetY() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;repeatOffsetY; }
+    bool scrollSnapHasRepeatX() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;hasRepeatX; }
+    bool scrollSnapHasRepeatY() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;hasRepeatY; }
+    Length scrollSnapDestinationX() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;destinationX; }
+    Length scrollSnapDestinationY() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;destinationY; }
+    Vector&lt;SnapCoordinate&gt; scrollSnapCoordinates() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;coordinates; }
+    bool scrollSnapUsesElementsX() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;usesElementsX; }
+    bool scrollSnapUsesElementsY() const { return rareNonInheritedData-&gt;m_scrollSnapPoints-&gt;usesElementsY; }
+#endif
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx">     Color tapHighlightColor() const { return rareInheritedData-&gt;tapHighlightColor; }
</span><span class="cx"> #endif
</span><span class="lines">@@ -1594,6 +1612,21 @@
</span><span class="cx"> 
</span><span class="cx">     void setLineBoxContain(LineBoxContain c) { SET_VAR(rareInheritedData, m_lineBoxContain, c); }
</span><span class="cx">     void setLineClamp(LineClampValue c) { SET_VAR(rareNonInheritedData, lineClamp, c); }
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    void setScrollSnapType(ScrollSnapType type) { SET_VAR(rareNonInheritedData, m_scrollSnapType, type); }
+    void setScrollSnapOffsetsX(Vector&lt;Length&gt;&amp; offsets) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, offsetsX, offsets); }
+    void setScrollSnapOffsetsY(Vector&lt;Length&gt;&amp; offsets) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, offsetsY, offsets); }
+    void setScrollSnapRepeatOffsetX(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, repeatOffsetX, repeatOffset); }
+    void setScrollSnapRepeatOffsetY(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, repeatOffsetY, repeatOffset); }
+    void setScrollSnapHasRepeatX(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, hasRepeatX, hasRepeat); }
+    void setScrollSnapHasRepeatY(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, hasRepeatY, hasRepeat); }
+    void setScrollSnapDestinationX(Length destination) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, destinationX, destination); }
+    void setScrollSnapDestinationY(Length destination) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, destinationY, destination); }
+    void setScrollSnapCoordinates(Vector&lt;SnapCoordinate&gt;&amp; coordinates) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, coordinates, coordinates); }
+    void setScrollSnapUsesElementsX(bool usesElements) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, usesElementsX, usesElements); }
+    void setScrollSnapUsesElementsY(bool usesElements) { SET_VAR(rareNonInheritedData.access()-&gt;m_scrollSnapPoints, usesElementsY, usesElements); }
+#endif
+
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx">     void setTapHighlightColor(const Color&amp; c) { SET_VAR(rareInheritedData, tapHighlightColor, c); }
</span><span class="cx"> #endif
</span><span class="lines">@@ -1897,6 +1930,9 @@
</span><span class="cx">     static StyleImage* initialBorderImageSource() { return 0; }
</span><span class="cx">     static StyleImage* initialMaskBoxImageSource() { return 0; }
</span><span class="cx">     static PrintColorAdjust initialPrintColorAdjust() { return PrintColorAdjustEconomy; }
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    static ScrollSnapType initialScrollSnapType() { return ScrollSnapType::None; }
+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx">     // The initial value is 'none' for grid tracks.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleConstantsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyleConstants.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -575,6 +575,14 @@
</span><span class="cx"> // Fill, Stroke, ViewBox are just used for SVG.
</span><span class="cx"> enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+enum class ScrollSnapType {
+    None,
+    Proximity,
+    Mandatory
+};
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // RenderStyleConstants_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleAllInOne.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleAllInOne.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/rendering/style/StyleAllInOne.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -56,3 +56,7 @@
</span><span class="cx"> #include &quot;StyleGridData.cpp&quot;
</span><span class="cx"> #include &quot;StyleGridItemData.cpp&quot;
</span><span class="cx"> #endif
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+#include &quot;StyleScrollSnapPoints.cpp&quot;
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -53,6 +53,9 @@
</span><span class="cx">     , m_grid(StyleGridData::create())
</span><span class="cx">     , m_gridItem(StyleGridItemData::create())
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    , m_scrollSnapPoints(StyleScrollSnapPoints::create())
+#endif
</ins><span class="cx">     , m_mask(FillLayer(MaskFillLayer))
</span><span class="cx">     , m_pageSize()
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="lines">@@ -65,6 +68,9 @@
</span><span class="cx">     , m_order(RenderStyle::initialOrder())
</span><span class="cx">     , m_flowThread(RenderStyle::initialFlowThread())
</span><span class="cx">     , m_regionThread(RenderStyle::initialRegionThread())
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    , m_scrollSnapType(RenderStyle::initialScrollSnapType())
+#endif
</ins><span class="cx">     , m_regionFragment(RenderStyle::initialRegionFragment())
</span><span class="cx">     , m_regionBreakAfter(RenderStyle::NonInheritedFlags::initialPageBreak())
</span><span class="cx">     , m_regionBreakBefore(RenderStyle::NonInheritedFlags::initialPageBreak())
</span><span class="lines">@@ -118,6 +124,9 @@
</span><span class="cx">     , m_grid(o.m_grid)
</span><span class="cx">     , m_gridItem(o.m_gridItem)
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    , m_scrollSnapPoints(o.m_scrollSnapPoints)
+#endif
</ins><span class="cx">     , m_content(o.m_content ? o.m_content-&gt;clone() : nullptr)
</span><span class="cx">     , m_counterDirectives(o.m_counterDirectives ? clone(*o.m_counterDirectives) : nullptr)
</span><span class="cx">     , m_boxShadow(o.m_boxShadow ? std::make_unique&lt;ShadowData&gt;(*o.m_boxShadow) : nullptr)
</span><span class="lines">@@ -144,6 +153,9 @@
</span><span class="cx">     , m_order(o.m_order)
</span><span class="cx">     , m_flowThread(o.m_flowThread)
</span><span class="cx">     , m_regionThread(o.m_regionThread)
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    , m_scrollSnapType(o.m_scrollSnapType)
+#endif
</ins><span class="cx">     , m_regionFragment(o.m_regionFragment)
</span><span class="cx">     , m_regionBreakAfter(o.m_regionBreakAfter)
</span><span class="cx">     , m_regionBreakBefore(o.m_regionBreakBefore)
</span><span class="lines">@@ -208,6 +220,9 @@
</span><span class="cx">         &amp;&amp; m_grid == o.m_grid
</span><span class="cx">         &amp;&amp; m_gridItem == o.m_gridItem
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+        &amp;&amp; m_scrollSnapPoints == o.m_scrollSnapPoints
+#endif
</ins><span class="cx">         &amp;&amp; contentDataEquivalent(o)
</span><span class="cx">         &amp;&amp; counterDataEquivalent(o)
</span><span class="cx">         &amp;&amp; shadowDataEquivalent(o)
</span><span class="lines">@@ -253,6 +268,9 @@
</span><span class="cx">         &amp;&amp; m_borderFit == o.m_borderFit
</span><span class="cx">         &amp;&amp; m_textCombine == o.m_textCombine
</span><span class="cx">         &amp;&amp; m_textDecorationStyle == o.m_textDecorationStyle
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+        &amp;&amp; m_scrollSnapType == o.m_scrollSnapType
+#endif
</ins><span class="cx">         &amp;&amp; !m_runningAcceleratedAnimation &amp;&amp; !o.m_runningAcceleratedAnimation
</span><span class="cx"> #if ENABLE(CSS_COMPOSITING)
</span><span class="cx">         &amp;&amp; m_effectiveBlendMode == o.m_effectiveBlendMode
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareNonInheritedDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -56,6 +56,9 @@
</span><span class="cx"> class StyleReflection;
</span><span class="cx"> class StyleResolver;
</span><span class="cx"> class StyleTransformData;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+class StyleScrollSnapPoints;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> class ContentData;
</span><span class="cx"> struct LengthSize;
</span><span class="lines">@@ -124,6 +127,10 @@
</span><span class="cx">     DataRef&lt;StyleGridItemData&gt; m_gridItem;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+    DataRef&lt;StyleScrollSnapPoints&gt; m_scrollSnapPoints;
+#endif
+
</ins><span class="cx">     std::unique_ptr&lt;ContentData&gt; m_content;
</span><span class="cx">     std::unique_ptr&lt;CounterDirectiveMap&gt; m_counterDirectives;
</span><span class="cx">     String m_altText;
</span><span class="lines">@@ -161,6 +168,11 @@
</span><span class="cx"> 
</span><span class="cx">     AtomicString m_flowThread;
</span><span class="cx">     AtomicString m_regionThread;
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+    ScrollSnapType m_scrollSnapType; // ScrollSnapType
+#endif
+
</ins><span class="cx">     unsigned m_regionFragment : 1; // RegionFragment
</span><span class="cx"> 
</span><span class="cx">     unsigned m_regionBreakAfter : 2; // EPageBreak
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleScrollSnapPointscpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.cpp (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.cpp                                (rev 0)
+++ trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.cpp        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;StyleScrollSnapPoints.h&quot;
+
+#if ENABLE(CSS_SCROLL_SNAP)
+
+namespace WebCore {
+
+StyleScrollSnapPoints::StyleScrollSnapPoints()
+    : repeatOffsetX(StyleScrollSnapPoints::defaultRepeatOffset())
+    , repeatOffsetY(StyleScrollSnapPoints::defaultRepeatOffset())
+    , destinationX(StyleScrollSnapPoints::defaultDestinationOffset())
+    , destinationY(StyleScrollSnapPoints::defaultDestinationOffset())
+    , hasRepeatX(true)
+    , hasRepeatY(true)
+    , usesElementsX(false)
+    , usesElementsY(false)
+{
+}
+
+inline StyleScrollSnapPoints::StyleScrollSnapPoints(const StyleScrollSnapPoints&amp; o)
+    : repeatOffsetX(o.repeatOffsetX)
+    , repeatOffsetY(o.repeatOffsetY)
+    , destinationX(o.destinationX)
+    , destinationY(o.destinationY)
+    , hasRepeatX(o.hasRepeatX)
+    , hasRepeatY(o.hasRepeatY)
+    , usesElementsX(o.usesElementsX)
+    , usesElementsY(o.usesElementsY)
+    , offsetsX(o.offsetsX)
+    , offsetsY(o.offsetsY)
+    , coordinates(o.coordinates)
+{
+}
+
+PassRef&lt;StyleScrollSnapPoints&gt; StyleScrollSnapPoints::copy() const
+{
+    return adoptRef(*new StyleScrollSnapPoints(*this));
+}
+
+bool StyleScrollSnapPoints::operator==(const StyleScrollSnapPoints&amp; o) const
+{
+    return (offsetsX == o.offsetsX
+        &amp;&amp; offsetsY == o.offsetsY
+        &amp;&amp; repeatOffsetX == o.repeatOffsetX
+        &amp;&amp; hasRepeatX == o.hasRepeatX
+        &amp;&amp; hasRepeatY == o.hasRepeatY
+        &amp;&amp; destinationX == o.destinationX
+        &amp;&amp; destinationY == o.destinationY
+        &amp;&amp; coordinates == o.coordinates
+        &amp;&amp; usesElementsX == o.usesElementsX
+        &amp;&amp; usesElementsY == o.usesElementsY);
+}
+    
+} // namespace WebCore
+
+#endif /* ENABLE(CSS_SCROLL_SNAP) */
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleScrollSnapPointsh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.h (0 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.h                                (rev 0)
+++ trunk/Source/WebCore/rendering/style/StyleScrollSnapPoints.h        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef StyleScrollSnapPoints_h
+#define StyleScrollSnapPoints_h
+
+#if ENABLE(CSS_SCROLL_SNAP)
+
+#include &quot;Length.h&quot;
+
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+namespace WebCore {
+
+typedef std::pair&lt;Length, Length&gt; SnapCoordinate;
+
+class StyleScrollSnapPoints : public RefCounted&lt;StyleScrollSnapPoints&gt; {
+public:
+    static PassRef&lt;StyleScrollSnapPoints&gt; create() { return adoptRef(*new StyleScrollSnapPoints); }
+    
+    static Length defaultRepeatOffset()
+    {
+        return Length(100, Percent);
+    }
+    
+    static Length defaultDestinationOffset()
+    {
+        return Length(0, Fixed);
+    }
+
+    PassRef&lt;StyleScrollSnapPoints&gt; copy() const;
+    
+    bool operator==(const StyleScrollSnapPoints&amp;) const;
+    bool operator!=(const StyleScrollSnapPoints&amp; o) const
+    {
+        return !(*this == o);
+    }
+    
+    Length repeatOffsetX;
+    Length repeatOffsetY;
+    Length destinationX;
+    Length destinationY;
+    bool hasRepeatX;
+    bool hasRepeatY;
+    bool usesElementsX;
+    bool usesElementsY;
+    Vector&lt;Length&gt; offsetsX;
+    Vector&lt;Length&gt; offsetsY;
+    Vector&lt;SnapCoordinate&gt; coordinates;
+    
+private:
+    StyleScrollSnapPoints();
+    StyleScrollSnapPoints(const StyleScrollSnapPoints&amp;);
+};
+
+} // namespace WebCore
+
+#endif /* ENABLE(CSS_SCROLL_SNAP) */
+
+#endif // StyleScrollSnapPoints_h
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebInspectorUI/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-08-06  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Reviewed by Dean Jackson.
+
+        * UserInterface/Models/CSSKeywordCompletions.js: Added snap point property keywords, such as mandatory, proximity, elements, and repeat.
+
</ins><span class="cx"> 2014-08-06  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION(r172094): tests fail because Inspector test harness does not include UIString
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsCSSKeywordCompletionsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -904,6 +904,18 @@
</span><span class="cx">         &quot;none&quot;, &quot;checkbox&quot;, &quot;radio&quot;, &quot;push-button&quot;, &quot;square-button&quot;, &quot;button&quot;, &quot;button-bevel&quot;, &quot;default-button&quot;, &quot;inner-spin-button&quot;, &quot;-webkit-input-speech-button&quot;, &quot;listbox&quot;, &quot;listitem&quot;, &quot;media-enter-fullscreen-button&quot;, &quot;media-exit-fullscreen-button&quot;, &quot;media-fullscreen-volume-slider&quot;, &quot;media-fullscreen-volume-slider-thumb&quot;, &quot;media-mute-button&quot;, &quot;media-play-button&quot;, &quot;media-overlay-play-button&quot;, &quot;media-seek-back-button&quot;, &quot;media-seek-forward-button&quot;, &quot;media-rewind-button&quot;, &quot;media-return-to-realtime-button&quot;, &quot;media-toggle-closed-captions-button&quot;, &quot;media-slider&quot;, &quot;media-sliderthumb&quot;, &quot;media-volume-slider-container&quot;, &quot;media-volume-slider&quot;, &quot;media-volume-sliderthumb&quot;, &quot;media-volume-slider-mute-button&quot;, &quot;media-controls-background&quot;, &quot;media-controls-fullscreen-background&quot;, &quot;media-current-time-display&quot;, &quot;media-time-remaining-display&quot;, &quot;menulist&quot;, &quot;menulist-button&quot;, &quot;menulist-text&quot;, &quot;menulist-textfield&quot;, &quot;meter&quot;, &quot;progress-bar&quot;, &quot;progress-bar-value&quot;, &quot;slider-horizontal&quot;, &quot;slider-vertical&quot;, &quot;sliderthumb-horizontal&quot;, &quot;sliderthumb-vertical&quot;, &quot;caret&quot;, &quot;searchfield&quot;, &quot;searchfield-decoration&quot;, &quot;searchfield-results-decoration&quot;, &quot;searchfield-results-button&quot;, &quot;searchfield-cancel-button&quot;, &quot;snapshotted-plugin-overlay&quot;, &quot;textfield&quot;, &quot;relevancy-level-indicator&quot;, &quot;continuous-capacity-level-indicator&quot;, &quot;discrete-capacity-level-indicator&quot;, &quot;rating-level-indicator&quot;, &quot;textarea&quot;
</span><span class="cx">     ],
</span><span class="cx">     */
</span><ins>+    &quot;-webkit-scroll-snap-type&quot;: [
+        &quot;mandatory&quot;, &quot;proximity&quot;, &quot;none&quot;
+    ],
+    &quot;-webkit-scroll-snap-points-x&quot;: [
+        &quot;elements&quot;, &quot;repeat&quot;
+    ],
+    &quot;-webkit-scroll-snap-points-y&quot;: [
+        &quot;elements&quot;, &quot;repeat&quot;
+    ],
+    &quot;-webkit-scroll-snap-coordinate&quot;: [
+        &quot;none&quot;
+    ],
</ins><span class="cx"> 
</span><span class="cx">     // iOS Properties
</span><span class="cx">     &quot;-webkit-text-size-adjust&quot;: [
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-08-06  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
+
</ins><span class="cx"> 2014-08-06  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (WebKit2): iOS Safari default encoding doesn't follow system language
</span></span></pre></div>
<a id="trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -186,6 +186,8 @@
</span><span class="cx"> ENABLE_RESOLUTION_MEDIA_QUERY = ;
</span><span class="cx"> ENABLE_SCRIPTED_SPEECH = ;
</span><span class="cx"> ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
</span><ins>+ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
+ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
</ins><span class="cx"> ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
</span><span class="cx"> ENABLE_SQL_DATABASE = ENABLE_SQL_DATABASE;
</span><span class="lines">@@ -248,4 +250,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</del><ins>+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebKit2/ChangeLog        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-08-06  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Implement parsing for CSS scroll snap points
+        https://bugs.webkit.org/show_bug.cgi?id=134301
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
+
</ins><span class="cx"> 2014-08-06  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Subresources referenced in converted QuickLook documents sometimes fail to load
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig (172191 => 172192)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-08-07 00:16:36 UTC (rev 172191)
+++ trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-08-07 00:19:40 UTC (rev 172192)
</span><span class="lines">@@ -186,6 +186,8 @@
</span><span class="cx"> ENABLE_RESOLUTION_MEDIA_QUERY = ;
</span><span class="cx"> ENABLE_SCRIPTED_SPEECH = ;
</span><span class="cx"> ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
</span><ins>+ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
+ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
</ins><span class="cx"> ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
</span><span class="cx"> ENABLE_SQL_DATABASE = ENABLE_SQL_DATABASE;
</span><span class="lines">@@ -248,4 +250,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</del><ins>+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LONG_MOUSE_PRESS) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
</ins></span></pre>
</div>
</div>

</body>
</html>