<!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 <wenson_hsieh@apple.com> 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 <wenson_hsieh@apple.com> 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 "proximity", "mandatory" and "elements".
* css/LengthRepeat.h: Added to represent values of repeat(<length>)
(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 <wenson_hsieh@apple.com> 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 <wenson_hsieh@apple.com> on 2014-08-06
Reviewed by Dean Jackson.
* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
Source/WebKit2:
Patch by Wenson Hsieh <wenson_hsieh@apple.com> on 2014-08-06
Reviewed by Dean Jackson.
* Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
LayoutTests:
Patch by Wenson Hsieh <wenson_hsieh@apple.com> 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 <wenson_hsieh@apple.com>
+
+ 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 <simon.fraser@apple.com>
</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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+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>+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="scroll-snap-property-computed-style.js"></script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</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("Test the computed style of the -webkit-scroll-snap-* properties.");
+
+var stylesheet;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testComputedScrollSnapRule(description, snapProperty, rule, expected)
+{
+ debug("");
+ debug(description + " : " + rule);
+
+ stylesheet.insertRule("body { -webkit-scroll-snap-" + snapProperty + ": " + rule + "; }", 0);
+
+ shouldBe("window.getComputedStyle(document.body).getPropertyValue('-webkit-scroll-snap-" + snapProperty + "')", "'" + expected + "'");
+ stylesheet.deleteRule(0);
+}
+
+testComputedScrollSnapRule("invalid snapping type", "type", "potato", "none");
+testComputedScrollSnapRule("invalid points along x axis", "points-x", "hello world", "repeat(100%)");
+testComputedScrollSnapRule("invalid points along y axis", "points-y", "hello world", "repeat(100%)");
+testComputedScrollSnapRule("typo in point definition", "points-x", "repaet(50px)", "repeat(100%)");
+testComputedScrollSnapRule("another invalid point definition", "points-x", "??px repeat(50px)", "repeat(100%)");
+testComputedScrollSnapRule("invalid destination", "destination", "foo bar", "0px 0px");
+testComputedScrollSnapRule("short one destination value", "destination", "50%", "0px 0px");
+testComputedScrollSnapRule("extra destination value", "destination", "50px 100% 75px", "0px 0px");
+testComputedScrollSnapRule("invalid coordinates", "coordinate", "ben bitdiddle", "none")
+testComputedScrollSnapRule("mismatched x coordinate", "coordinate", "50% 100px 75%", "none");
+
+testComputedScrollSnapRule("mandatory type", "type", "mandatory", "mandatory");
+testComputedScrollSnapRule("proximity type", "type", "proximity", "proximity");
+
+testComputedScrollSnapRule("element points along x axis", "points-x", "elements", "elements");
+testComputedScrollSnapRule("percentage points along x axis", "points-x", "100% 50%", "100% 50%");
+testComputedScrollSnapRule("pixel points along x axis", "points-x", "100px 50px", "100px 50px");
+testComputedScrollSnapRule("percentage points repeat along x axis", "points-x", "repeat(100%)", "repeat(100%)");
+testComputedScrollSnapRule("pixel points repeat along x axis", "points-x", "repeat(25px)", "repeat(25px)");
+testComputedScrollSnapRule("percentage points along x axis with percentage repeat", "points-x", "100% repeat(100%)", "100% repeat(100%)");
+testComputedScrollSnapRule("pixel points along x axis with percentage repeat", "points-x", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
+testComputedScrollSnapRule("percentage points along x axis with pixel repeat", "points-x", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
+testComputedScrollSnapRule("pixel points along x axis with pixel repeat", "points-x", "100px repeat(42px)", "100px repeat(42px)");
+
+testComputedScrollSnapRule("element points along y axis", "points-y", "elements", "elements");
+testComputedScrollSnapRule("percentage points along y axis", "points-y", "100% 50%", "100% 50%");
+testComputedScrollSnapRule("pixel points along y axis", "points-y", "100px 50px", "100px 50px");
+testComputedScrollSnapRule("percentage points repeat along y axis", "points-y", "repeat(100%)", "repeat(100%)");
+testComputedScrollSnapRule("pixel points repeat along y axis", "points-y", "repeat(25px)", "repeat(25px)");
+testComputedScrollSnapRule("percentage points along y axis with percentage repeat", "points-y", "100% repeat(100%)", "100% repeat(100%)");
+testComputedScrollSnapRule("pixel points along y axis with percentage repeat", "points-y", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
+testComputedScrollSnapRule("percentage points along y axis with pixel repeat", "points-y", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
+testComputedScrollSnapRule("pixel points along y axis with pixel repeat", "points-y", "100px repeat(42px)", "100px repeat(42px)");
+
+testComputedScrollSnapRule("pixel/pixel destination", "destination", "10px 50px", "10px 50px");
+testComputedScrollSnapRule("pixel/percentage destination", "destination", "20px 40%", "20px 40%");
+testComputedScrollSnapRule("percentage/pixel destination", "destination", "0% 0px", "0% 0px");
+testComputedScrollSnapRule("percentage/percentage destination", "destination", "5% 100%", "5% 100%");
+
+testComputedScrollSnapRule("single pixel coordinate", "coordinate", "50px 100px", "50px 100px");
+testComputedScrollSnapRule("single percentage coordinate", "coordinate", "50% 100%", "50% 100%");
+testComputedScrollSnapRule("multiple pixel coordinates", "coordinate", "50px 100px 150px 100px 200px 100px", "50px 100px, 150px 100px, 200px 100px");
+testComputedScrollSnapRule("multiple percentage coordinates", "coordinate", "50% 100% 150% 100% 200% 100%", "50% 100%, 150% 100%, 200% 100%");
+
+testComputedScrollSnapRule("mm along x axis with pixel repeat", "points-x", "10mm repeat(42mm)", "37.78125px repeat(158.734375px)");
+testComputedScrollSnapRule("in along x axis with pixel repeat", "points-x", "10in repeat(4in)", "960px repeat(384px)");
+testComputedScrollSnapRule("pt along x axis with pixel repeat", "points-x", "10pt repeat(42pt)", "13.328125px repeat(56px)");
+testComputedScrollSnapRule("in/cm destination", "destination", "2in 5cm", "192px 188.96875px");
+testComputedScrollSnapRule("in/cm coordinate", "coordinate", "2in 5cm 5in 2cm", "192px 188.96875px, 480px 75.578125px");
+
+testComputedScrollSnapRule("subpixel along x axis with pixel repeat", "points-x", "100.5px repeat(50.25px)", "100.5px repeat(50.25px)");
+testComputedScrollSnapRule("subpixel destination", "destination", "0.125px 2.4375px", "0.125px 2.4375px");
+testComputedScrollSnapRule("subpixel cordinate", "coordinate", "110.125px 25.4375px", "110.125px 25.4375px");
+
+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 "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+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>+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="scroll-snap-property-parsing.js"></script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</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("Test the parsing of the -webkit-scroll-snap-* properties.");
+
+var stylesheet, cssRule, declaration;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testScrollSnapRule(description, snapProperty, rule, expectedValue)
+{
+ debug("");
+ debug(description + " : " + rule);
+
+ stylesheet.insertRule("body { -webkit-scroll-snap-" + snapProperty + ": " + rule + "; }", 0);
+ cssRule = stylesheet.cssRules.item(0);
+
+ shouldBe("cssRule.type", "1");
+
+ declaration = cssRule.style;
+ shouldBe("declaration.length", "1");
+ shouldBe("declaration.getPropertyValue('-webkit-scroll-snap-" + snapProperty + "')", "'" + expectedValue + "'");
+}
+
+testScrollSnapRule("mandatory type", "type", "mandatory", "mandatory");
+testScrollSnapRule("proximity type", "type", "proximity", "proximity");
+
+testScrollSnapRule("element points along x axis", "points-x", "elements", "elements");
+testScrollSnapRule("percentage points along x axis", "points-x", "100% 50%", "100% 50%");
+testScrollSnapRule("pixel points along x axis", "points-x", "100px 50px", "100px 50px");
+testScrollSnapRule("percentage points repeat along x axis", "points-x", "repeat(100%)", "repeat(100%)");
+testScrollSnapRule("pixe points repeat along x axis", "points-x", "repeat(25px)", "repeat(25px)");
+testScrollSnapRule("percentage points along x axis with percentage repeat", "points-x", "100% repeat(100%)", "100% repeat(100%)");
+testScrollSnapRule("pixel points along x axis with percentage repeat", "points-x", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
+testScrollSnapRule("percentage points along x axis with pixel repeat", "points-x", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
+testScrollSnapRule("pixel points along x axis with pixel repeat", "points-x", "100px repeat(42px)", "100px repeat(42px)");
+
+testScrollSnapRule("element points along y axis", "points-y", "elements", "elements");
+testScrollSnapRule("percentage points along y axis", "points-y", "100% 50%", "100% 50%");
+testScrollSnapRule("pixel points along y axis", "points-y", "100px 50px", "100px 50px");
+testScrollSnapRule("percentage points repeat along y axis", "points-y", "repeat(100%)", "repeat(100%)");
+testScrollSnapRule("pixe points repeat along y axis", "points-y", "repeat(25px)", "repeat(25px)");
+testScrollSnapRule("percentage points along y axis with percentage repeat", "points-y", "100% repeat(100%)", "100% repeat(100%)");
+testScrollSnapRule("pixel points along y axis with percentage repeat", "points-y", "100px 50px repeat(25%)", "100px 50px repeat(25%)");
+testScrollSnapRule("percentage points along y axis with pixel repeat", "points-y", "100% 50% repeat(40px)", "100% 50% repeat(40px)");
+testScrollSnapRule("pixel points along y axis with pixel repeat", "points-y", "100px repeat(42px)", "100px repeat(42px)");
+
+testScrollSnapRule("em points along x axis with pixel repeat", "points-x", "100em repeat(42em)", "100em repeat 42em");
+testScrollSnapRule("mm along x axis with pixel repeat", "points-x", "100mm repeat(42mm)", "100mm repeat 42mm");
+testScrollSnapRule("in along x axis with pixel repeat", "points-x", "100in repeat(42in)", "100in repeat 42in");
+testScrollSnapRule("pt along x axis with pixel repeat", "points-x", "100pt repeat(42pt)", "100pt repeat 42pt");
+
+testScrollSnapRule("pixel/pixel destination", "destination", "10px 50px", "10px 50px");
+testScrollSnapRule("pixel/percentage destination", "destination", "20px 40%", "20px 40%");
+testScrollSnapRule("percentage/pixel destination", "destination", "0% 0px", "0% 0px");
+testScrollSnapRule("percentage/percentage destination", "destination", "5% 100%", "5% 100%");
+
+testScrollSnapRule("em/ex destination", "destination", "12em 16ex", "12em 16ex");
+testScrollSnapRule("in/cm destination", "destination", "2in 5cm", "2in 5cm");
+
+testScrollSnapRule("single pixel coordinate", "coordinate", "50px 100px", "50px 100px");
+testScrollSnapRule("single percentage coordinate", "coordinate", "50% 100%", "50% 100%");
+testScrollSnapRule("multiple pixel coordinates", "coordinate", "50px 100px 150px 100px 200px 100px", "50px 100px 150px 100px 200px 100px");
+testScrollSnapRule("multiple percentage coordinates", "coordinate", "50% 100% 150% 100% 200% 100%", "50% 100% 150% 100% 200% 100%");
+
+testScrollSnapRule("em/ex coordinate", "coordinate", "12em 16ex 16em 12ex", "12em 16ex 16em 12ex");
+testScrollSnapRule("in/cm coordinate", "coordinate", "2in 5cm 5in 2cm", "2in 5cm 5in 2cm");
+
+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"> # <style scoped> 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 <wenson_hsieh@apple.com>
+
+ 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 <mark.lam@apple.com>
</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 <wenson_hsieh@apple.com>
+
+ 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 "proximity", "mandatory" and "elements".
+ * css/LengthRepeat.h: Added to represent values of repeat(<length>)
+ (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 <aestes@apple.com>
</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"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
</span><span class="cx"> </ClCompile>
</span><ins>+ <ClCompile Include="..\rendering\style\StyleScrollSnapPoints.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
+ </ClCompile>
</ins><span class="cx"> <ClCompile Include="..\rendering\style\StyleSurroundData.cpp">
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
</span><span class="cx"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</span><span class="lines">@@ -20110,6 +20124,7 @@
</span><span class="cx"> <ClInclude Include="..\css\DashboardRegion.h" />
</span><span class="cx"> <ClInclude Include="..\css\FontLoader.h" />
</span><span class="cx"> <ClInclude Include="..\css\LengthFunctions.h" />
</span><ins>+ <ClInclude Include="..\css\LengthRepeat.h" />
</ins><span class="cx"> <ClInclude Include="..\css\MediaFeatureNames.h" />
</span><span class="cx"> <ClInclude Include="..\css\MediaList.h" />
</span><span class="cx"> <ClInclude Include="..\css\MediaQuery.h" />
</span><span class="lines">@@ -20369,6 +20384,7 @@
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleRareInheritedData.h" />
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleRareNonInheritedData.h" />
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleReflection.h" />
</span><ins>+ <ClInclude Include="..\rendering\style\StyleScrollSnapPoints.h" />
</ins><span class="cx"> <ClInclude Include="..\rendering\style\StyleSurroundData.h" />
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleTransformData.h" />
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleVariableData.h" />
</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"> <ClCompile Include="..\rendering\style\StyleRareNonInheritedData.cpp">
</span><span class="cx"> <Filter>rendering\style</Filter>
</span><span class="cx"> </ClCompile>
</span><ins>+ <ClCompile Include="..\rendering\style\StyleScrollSnapPoints.cpp">
+ <Filter>rendering\style</Filter>
+ </ClCompile>
</ins><span class="cx"> <ClCompile Include="..\rendering\style\StyleSurroundData.cpp">
</span><span class="cx"> <Filter>rendering\style</Filter>
</span><span class="cx"> </ClCompile>
</span><span class="lines">@@ -9261,6 +9264,9 @@
</span><span class="cx"> <ClInclude Include="..\css\LengthFunctions.h">
</span><span class="cx"> <Filter>css</Filter>
</span><span class="cx"> </ClInclude>
</span><ins>+ <ClInclude Include="..\css\LengthRepeat.h">
+ <Filter>css</Filter>
+ </ClInclude>
</ins><span class="cx"> <ClInclude Include="..\css\MediaFeatureNames.h">
</span><span class="cx"> <Filter>css</Filter>
</span><span class="cx"> </ClInclude>
</span><span class="lines">@@ -9909,6 +9915,9 @@
</span><span class="cx"> <ClInclude Include="..\rendering\style\StyleReflection.h">
</span><span class="cx"> <Filter>rendering\style</Filter>
</span><span class="cx"> </ClInclude>
</span><ins>+ <ClInclude Include="..\rendering\style\StyleScrollSnapPoints.h">
+ <Filter>rendering\style</Filter>
+ </ClInclude>
</ins><span class="cx"> <ClInclude Include="..\rendering\style\StyleSurroundData.h">
</span><span class="cx"> <Filter>rendering\style</Filter>
</span><span class="cx"> </ClInclude>
</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 = "<group>"; };
</span><span class="cx">                 F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorConsoleInstrumentation.h; sourceTree = "<group>"; };
</span><span class="cx">                 F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseInstrumentation.h; sourceTree = "<group>"; };
</span><ins>+                F42FFB451984B71600F6837F /* LengthRepeat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthRepeat.h; sourceTree = "<group>"; };
+                F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleScrollSnapPoints.cpp; path = style/StyleScrollSnapPoints.cpp; sourceTree = "<group>"; };
+                F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleScrollSnapPoints.h; path = style/StyleScrollSnapPoints.h; sourceTree = "<group>"; };
</ins><span class="cx">                 F50664F5157F52DC00AC226F /* FormController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormController.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 F50664F6157F52DC00AC226F /* FormController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormController.h; sourceTree = "<group>"; };
</span><span class="cx">                 F513A3E915FF4841001526DB /* ValidationMessageClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidationMessageClient.h; sourceTree = "<group>"; };
</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 = "<group>";
</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 "DashboardRegion.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include "LengthRepeat.h"
+#include "StyleScrollSnapPoints.h"
+#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<CSSValueList> scrollSnapDestination(RenderStyle* style, Length x, Length y)
+{
+ RefPtr<CSSValueList> snapDestinationValue = CSSValueList::createSpaceSeparated();
+ if (x.isPercentNotCalculated())
+ snapDestinationValue->append(cssValuePool().createValue(x.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ snapDestinationValue->append(zoomAdjustedPixelValue(valueForLength(x, 0), style));
+
+ if (y.isPercentNotCalculated())
+ snapDestinationValue->append(cssValuePool().createValue(y.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ snapDestinationValue->append(zoomAdjustedPixelValue(valueForLength(y, 0), style));
+
+ return snapDestinationValue.releaseNonNull();
+}
+
+static PassRef<CSSValueList> scrollSnapPoints(RenderStyle* style, const Vector<Length>& points, Length repeatPoint, bool hasRepeat)
+{
+ RefPtr<CSSValueList> snapPointsValue = CSSValueList::createSpaceSeparated();
+ for (auto& point : points) {
+ if (point.isPercentNotCalculated())
+ snapPointsValue->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ snapPointsValue->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+ }
+ if (hasRepeat) {
+ if (repeatPoint.isPercentNotCalculated())
+ snapPointsValue->append(cssValuePool().createValue(LengthRepeat::create(cssValuePool().createValue(repeatPoint.percent(), CSSPrimitiveValue::CSS_PERCENTAGE))));
+ else
+ snapPointsValue->append(cssValuePool().createValue(LengthRepeat::create(zoomAdjustedPixelValue(valueForLength(repeatPoint, 0), style))));
+ }
+ return snapPointsValue.releaseNonNull();
+}
+
+static PassRef<CSSValueList> scrollSnapCoordinates(RenderStyle* style, const Vector<SnapCoordinate>& coordinates)
+{
+ RefPtr<CSSValueList> snapCoordinatesValue = CSSValueList::createCommaSeparated();
+ for (const auto& coordinate : coordinates) {
+ RefPtr<CSSValueList> currentCoordinate = CSSValueList::createSpaceSeparated();
+ Length point = coordinate.first;
+ if (point.isPercentNotCalculated())
+ currentCoordinate->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ currentCoordinate->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+
+ point = coordinate.second;
+ if (point.isPercentNotCalculated())
+ currentCoordinate->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
+ else
+ currentCoordinate->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
+
+ snapCoordinatesValue->append(PassRefPtr<CSSValueList>(WTF::move(currentCoordinate)));
+ }
+ return snapCoordinatesValue.releaseNonNull();
+}
+#endif
+
</ins><span class="cx"> static PassRef<CSSValueList> 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->scrollSnapType());
+ case CSSPropertyWebkitScrollSnapDestination:
+ return scrollSnapDestination(style.get(), style->scrollSnapDestinationX(), style->scrollSnapDestinationY());
+ case CSSPropertyWebkitScrollSnapPointsX:
+ if (style->scrollSnapUsesElementsX())
+ return cssValuePool().createValue("elements", CSSPrimitiveValue::CSS_STRING);
+ return scrollSnapPoints(style.get(), style->scrollSnapOffsetsX(), style->scrollSnapRepeatOffsetX(), style->scrollSnapHasRepeatX());
+ case CSSPropertyWebkitScrollSnapPointsY:
+ if (style->scrollSnapUsesElementsY())
+ return cssValuePool().createValue("elements", CSSPrimitiveValue::CSS_STRING);
+ return scrollSnapPoints(style.get(), style->scrollSnapOffsetsY(), style->scrollSnapRepeatOffsetY(), style->scrollSnapHasRepeatY());
+ case CSSPropertyWebkitScrollSnapCoordinate:
+ Vector<SnapCoordinate> coords = style->scrollSnapCoordinates();
+ if (!coords.size())
+ return cssValuePool().createValue("none", 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 "WebKitCSSFilterValue.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include "LengthRepeat.h"
+#endif
+
</ins><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><span class="cx"> #include "DashboardRegion.h"
</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: // <length>{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<CSSValueList> values = CSSValueList::createSpaceSeparated();
+ while (CSSParserValue* val = m_valueList->current()) {
+ RefPtr<CSSValue> parsedValue;
+ if (validUnit(val, FPercent | FLength)) {
+ parsedValue = createPrimitiveNumericValue(val);
+ values->append(parsedValue.release());
+ } else if (val->unit == CSSParserValue::Function
+ && val->function->args != 0
+ && val->function->args->size() == 1
+ && equalIgnoringCase(val->function->name, "repeat(")) {
+ CSSParserValue* parserVal = val->function->args.get()->current();
+ if (validUnit(parserVal, FLength | FPercent)) {
+ values->append(cssValuePool().createValue(LengthRepeat::create(createPrimitiveNumericValue(parserVal))));
+ m_valueList->next();
+ if (m_valueList->current())
+ return false;
+ break;
+ }
+ } else
+ return false;
+ m_valueList->next();
+ }
+ if (values->length()) {
+ addProperty(propId, values.release(), important);
+ m_valueList->next();
+ return true;
+ }
+ return false;
+}
+
+bool CSSParser::parseScrollSnapDestination(CSSPropertyID propId, bool important)
+{
+ RefPtr<CSSValueList> position = CSSValueList::createSpaceSeparated();
+ if (m_valueList->size() != 2)
+ return false;
+ CSSParserValue* curParserVal = m_valueList->current();
+ if (!validUnit(curParserVal, FPercent | FLength))
+ return false;
+ RefPtr<CSSValue> cssValueX = createPrimitiveNumericValue(curParserVal);
+ m_valueList->next();
+ curParserVal = m_valueList->current();
+ if (!validUnit(curParserVal, FPercent | FLength))
+ return false;
+ RefPtr<CSSValue> cssValueY = createPrimitiveNumericValue(curParserVal);
+ position->append(cssValueX.release());
+ position->append(cssValueY.release());
+ addProperty(propId, position, important);
+ m_valueList->next();
+ return true;
+}
+
+bool CSSParser::parseScrollSnapCoordinate(CSSPropertyID propId, bool important)
+{
+ RefPtr<CSSValueList> positions = CSSValueList::createSpaceSeparated();
+ while (m_valueList->current()) {
+ CSSParserValue* parsedValueX = m_valueList->current();
+ // Don't accept odd-length lists of coordinates.
+ if (!m_valueList->next())
+ return false;
+ CSSParserValue* parsedValueY = m_valueList->current();
+ if (!validUnit(parsedValueX, FPercent | FLength) || !validUnit(parsedValueY, FPercent | FLength))
+ return false;
+ positions->append(createPrimitiveNumericValue(parsedValueX));
+ positions->append(createPrimitiveNumericValue(parsedValueY));
+ m_valueList->next();
+ }
+ if (positions->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 "DashboardRegion.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include "LengthRepeat.h"
+#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<LengthRepeat> 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<DashboardRegion> 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->deref();
</span><span class="cx"> break;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ case CSS_LENGTH_REPEAT:
+ m_value.lengthRepeat->deref();
+ break;
+#endif
</ins><span class="cx"> case CSS_PAIR:
</span><span class="cx"> m_value.pair->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& 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<RGBColor> CSSPrimitiveValue::getRGBColorValue(ExceptionCode& 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()->cssText();
</span><span class="cx"> case CSS_QUAD:
</span><span class="cx"> return getQuadValue()->cssText();
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ case CSS_LENGTH_REPEAT:
+ return getLengthRepeatValue()->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->cloneForCSSOM());
</span><span class="cx"> break;
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ case CSS_LENGTH_REPEAT:
+ result = CSSPrimitiveValue::create(m_value.lengthRepeat->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 && other.m_value.rect && m_value.rect->equals(*other.m_value.rect);
</span><span class="cx"> case CSS_QUAD:
</span><span class="cx"> return m_value.quad && other.m_value.quad && m_value.quad->equals(*other.m_value.quad);
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ case CSS_LENGTH_REPEAT:
+ return m_value.lengthRepeat && other.m_value.lengthRepeat && m_value.lengthRepeat->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&) 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&) const;
+ LengthRepeat* getLengthRepeatValue() const { return m_primitiveUnitType != CSS_LENGTH_REPEAT ? 0 : m_value.lengthRepeat; }
+#endif
+
</ins><span class="cx"> PassRefPtr<RGBColor> getRGBColorValue(ExceptionCode&) 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<Rect>);
</span><span class="cx"> void init(PassRefPtr<Pair>);
</span><span class="cx"> void init(PassRefPtr<Quad>);
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ void init(PassRefPtr<LengthRepeat>);
+#endif
</ins><span class="cx"> void init(PassRefPtr<DashboardRegion>); // FIXME: Dashboard region should not be a primitive value.
</span><span class="cx"> void init(PassRefPtr<CSSBasicShape>);
</span><span class="cx"> void init(PassRefPtr<CSSCalcValue>);
</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<> 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<> 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) && 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 "CSSPrimitiveValue.h"
+#include <wtf/RefPtr.h>
+#include <wtf/text/StringBuilder.h>
+
+namespace WebCore {
+
+class LengthRepeat : public RefCounted<LengthRepeat> {
+public:
+ static PassRefPtr<LengthRepeat> create(PassRefPtr<CSSPrimitiveValue> interval) { return adoptRef(new LengthRepeat(interval)); }
+
+ PassRefPtr<LengthRepeat> cloneForCSSOM() const { return create(interval()); }
+
+ CSSPrimitiveValue* interval() const { return m_interval.get(); }
+
+ void setInterval(PassRefPtr<CSSPrimitiveValue> interval) { m_interval = interval; }
+
+ bool equals(const LengthRepeat& other) const
+ {
+ return compareCSSValuePtr(m_interval, other.m_interval);
+ }
+
+ String cssText() const
+ {
+ return "repeat(" + interval()->cssText() + ")";
+ }
+
+private:
+ LengthRepeat(PassRefPtr<CSSPrimitiveValue> interval)
+ : m_interval(interval)
+ {
+ }
+
+ RefPtr<CSSPrimitiveValue> 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 "WebVTTElement.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include "LengthRepeat.h"
+#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()->setJustifySelf(*primitiveValue);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+ case CSSPropertyWebkitScrollSnapType: {
+ state.style()->setScrollSnapType(*primitiveValue);
+ return;
+ }
+ case CSSPropertyWebkitScrollSnapPointsX:
+ case CSSPropertyWebkitScrollSnapPointsY: {
+ RenderStyle* renderStyle = state.style();
+ if (id == CSSPropertyWebkitScrollSnapPointsX)
+ renderStyle->setScrollSnapHasRepeatX(false);
+ else
+ renderStyle->setScrollSnapHasRepeatY(false);
+
+ if (primitiveValue && primitiveValue->getValueID() == CSSValueElements) {
+ if (id == CSSPropertyWebkitScrollSnapPointsX)
+ renderStyle->setScrollSnapUsesElementsX(true);
+ else
+ renderStyle->setScrollSnapUsesElementsY(true);
+ return;
+ }
+ if (id == CSSPropertyWebkitScrollSnapPointsX)
+ renderStyle->setScrollSnapUsesElementsX(false);
+ else
+ renderStyle->setScrollSnapUsesElementsY(false);
+
+ Vector<Length> offsets;
+ for (CSSValueListIterator it(value); it.hasMore(); it.advance()) {
+ RefPtr<CSSValue> rawItemValue = it.value();
+ CSSPrimitiveValue* primitiveItemValue = toCSSPrimitiveValue(rawItemValue.get());
+ if (primitiveItemValue->isLengthRepeat()) {
+ LengthRepeat* lengthRepeat = primitiveItemValue->getLengthRepeatValue();
+ if (lengthRepeat && lengthRepeat->interval()) {
+ if (id == CSSPropertyWebkitScrollSnapPointsX) {
+ renderStyle->setScrollSnapRepeatOffsetX(lengthRepeat->interval()->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
+ renderStyle->setScrollSnapHasRepeatX(true);
+ } else {
+ renderStyle->setScrollSnapRepeatOffsetY(lengthRepeat->interval()->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
+ renderStyle->setScrollSnapHasRepeatY(true);
+ }
+ break;
+ }
+ } else
+ offsets.append(primitiveItemValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
+ }
+ if (id == CSSPropertyWebkitScrollSnapPointsX)
+ renderStyle->setScrollSnapOffsetsX(offsets);
+ else
+ renderStyle->setScrollSnapOffsetsY(offsets);
+ return;
+ }
+ case CSSPropertyWebkitScrollSnapDestination: {
+ CSSValueList& position = toCSSValueList(*value);
+ RefPtr<CSSValue> xCoordinate = position.item(0);
+ RefPtr<CSSPrimitiveValue> xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
+ state.style()->setScrollSnapDestinationX(xCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
+
+ RefPtr<CSSValue> yCoordinate = position.item(1);
+ RefPtr<CSSPrimitiveValue> yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
+ state.style()->setScrollSnapDestinationY(yCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
+ return;
+ }
+ case CSSPropertyWebkitScrollSnapCoordinate: {
+ Vector<SnapCoordinate> coordinates;
+ CSSValueList& 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 < pointCount; i++) {
+ RefPtr<CSSValue> xCoordinate = valueList.item(i * 2);
+ RefPtr<CSSValue> yCoordinate = valueList.item((i * 2) + 1);
+ RefPtr<CSSPrimitiveValue> xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
+ RefPtr<CSSPrimitiveValue> yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
+ coordinates.append(SnapCoordinate(xCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()), yCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData())));
+ }
+ state.style()->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 "StyleDashboardRegion.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+#include "StyleScrollSnapPoints.h"
+#endif
+
</ins><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx"> #include "TextSizeAdjustment.h"
</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->m_lineBoxContain; }
</span><span class="cx"> const LineClampValue& lineClamp() const { return rareNonInheritedData->lineClamp; }
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ ScrollSnapType scrollSnapType() const { return static_cast<ScrollSnapType>(rareNonInheritedData->m_scrollSnapType); }
+ Vector<Length> scrollSnapOffsetsX() const { return rareNonInheritedData->m_scrollSnapPoints->offsetsX; }
+ Vector<Length> scrollSnapOffsetsY() const { return rareNonInheritedData->m_scrollSnapPoints->offsetsY; }
+ Length scrollSnapRepeatOffsetX() const { return rareNonInheritedData->m_scrollSnapPoints->repeatOffsetX; }
+ Length scrollSnapRepeatOffsetY() const { return rareNonInheritedData->m_scrollSnapPoints->repeatOffsetY; }
+ bool scrollSnapHasRepeatX() const { return rareNonInheritedData->m_scrollSnapPoints->hasRepeatX; }
+ bool scrollSnapHasRepeatY() const { return rareNonInheritedData->m_scrollSnapPoints->hasRepeatY; }
+ Length scrollSnapDestinationX() const { return rareNonInheritedData->m_scrollSnapPoints->destinationX; }
+ Length scrollSnapDestinationY() const { return rareNonInheritedData->m_scrollSnapPoints->destinationY; }
+ Vector<SnapCoordinate> scrollSnapCoordinates() const { return rareNonInheritedData->m_scrollSnapPoints->coordinates; }
+ bool scrollSnapUsesElementsX() const { return rareNonInheritedData->m_scrollSnapPoints->usesElementsX; }
+ bool scrollSnapUsesElementsY() const { return rareNonInheritedData->m_scrollSnapPoints->usesElementsY; }
+#endif
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> Color tapHighlightColor() const { return rareInheritedData->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<Length>& offsets) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, offsetsX, offsets); }
+ void setScrollSnapOffsetsY(Vector<Length>& offsets) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, offsetsY, offsets); }
+ void setScrollSnapRepeatOffsetX(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, repeatOffsetX, repeatOffset); }
+ void setScrollSnapRepeatOffsetY(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, repeatOffsetY, repeatOffset); }
+ void setScrollSnapHasRepeatX(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, hasRepeatX, hasRepeat); }
+ void setScrollSnapHasRepeatY(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, hasRepeatY, hasRepeat); }
+ void setScrollSnapDestinationX(Length destination) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, destinationX, destination); }
+ void setScrollSnapDestinationY(Length destination) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, destinationY, destination); }
+ void setScrollSnapCoordinates(Vector<SnapCoordinate>& coordinates) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, coordinates, coordinates); }
+ void setScrollSnapUsesElementsX(bool usesElements) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, usesElementsX, usesElements); }
+ void setScrollSnapUsesElementsY(bool usesElements) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, usesElementsY, usesElements); }
+#endif
+
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> void setTapHighlightColor(const Color& 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 "StyleGridData.cpp"
</span><span class="cx"> #include "StyleGridItemData.cpp"
</span><span class="cx"> #endif
</span><ins>+
+#if ENABLE(CSS_SCROLL_SNAP)
+#include "StyleScrollSnapPoints.cpp"
+#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->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<ShadowData>(*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"> && 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"> && contentDataEquivalent(o)
</span><span class="cx"> && counterDataEquivalent(o)
</span><span class="cx"> && shadowDataEquivalent(o)
</span><span class="lines">@@ -253,6 +268,9 @@
</span><span class="cx"> && m_borderFit == o.m_borderFit
</span><span class="cx"> && m_textCombine == o.m_textCombine
</span><span class="cx"> && m_textDecorationStyle == o.m_textDecorationStyle
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ && m_scrollSnapType == o.m_scrollSnapType
+#endif
</ins><span class="cx"> && !m_runningAcceleratedAnimation && !o.m_runningAcceleratedAnimation
</span><span class="cx"> #if ENABLE(CSS_COMPOSITING)
</span><span class="cx"> && 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<StyleGridItemData> m_gridItem;
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(CSS_SCROLL_SNAP)
+ DataRef<StyleScrollSnapPoints> m_scrollSnapPoints;
+#endif
+
</ins><span class="cx"> std::unique_ptr<ContentData> m_content;
</span><span class="cx"> std::unique_ptr<CounterDirectiveMap> 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 "config.h"
+#include "StyleScrollSnapPoints.h"
+
+#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& 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<StyleScrollSnapPoints> StyleScrollSnapPoints::copy() const
+{
+ return adoptRef(*new StyleScrollSnapPoints(*this));
+}
+
+bool StyleScrollSnapPoints::operator==(const StyleScrollSnapPoints& o) const
+{
+ return (offsetsX == o.offsetsX
+ && offsetsY == o.offsetsY
+ && repeatOffsetX == o.repeatOffsetX
+ && hasRepeatX == o.hasRepeatX
+ && hasRepeatY == o.hasRepeatY
+ && destinationX == o.destinationX
+ && destinationY == o.destinationY
+ && coordinates == o.coordinates
+ && usesElementsX == o.usesElementsX
+ && 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 "Length.h"
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+typedef std::pair<Length, Length> SnapCoordinate;
+
+class StyleScrollSnapPoints : public RefCounted<StyleScrollSnapPoints> {
+public:
+ static PassRef<StyleScrollSnapPoints> create() { return adoptRef(*new StyleScrollSnapPoints); }
+
+ static Length defaultRepeatOffset()
+ {
+ return Length(100, Percent);
+ }
+
+ static Length defaultDestinationOffset()
+ {
+ return Length(0, Fixed);
+ }
+
+ PassRef<StyleScrollSnapPoints> copy() const;
+
+ bool operator==(const StyleScrollSnapPoints&) const;
+ bool operator!=(const StyleScrollSnapPoints& o) const
+ {
+ return !(*this == o);
+ }
+
+ Length repeatOffsetX;
+ Length repeatOffsetY;
+ Length destinationX;
+ Length destinationY;
+ bool hasRepeatX;
+ bool hasRepeatY;
+ bool usesElementsX;
+ bool usesElementsY;
+ Vector<Length> offsetsX;
+ Vector<Length> offsetsY;
+ Vector<SnapCoordinate> coordinates;
+
+private:
+ StyleScrollSnapPoints();
+ StyleScrollSnapPoints(const StyleScrollSnapPoints&);
+};
+
+} // 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 <wenson_hsieh@apple.com>
+
+ 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 <burg@cs.washington.edu>
</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"> "none", "checkbox", "radio", "push-button", "square-button", "button", "button-bevel", "default-button", "inner-spin-button", "-webkit-input-speech-button", "listbox", "listitem", "media-enter-fullscreen-button", "media-exit-fullscreen-button", "media-fullscreen-volume-slider", "media-fullscreen-volume-slider-thumb", "media-mute-button", "media-play-button", "media-overlay-play-button", "media-seek-back-button", "media-seek-forward-button", "media-rewind-button", "media-return-to-realtime-button", "media-toggle-closed-captions-button", "media-slider", "media-sliderthumb", "media-volume-slider-container", "media-volume-slider", "media-volume-sliderthumb", "media-volume-slider-mute-button", "media-controls-background", "media-controls-fullscreen-background", "media-current-time-display", "media-time-remaining-display", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "meter", "progress-bar", "progress-bar-value", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "caret", "searchfield", "searchfield-decoration", "searchfield-results-decoration", "searchfield-results-button", "searchfield-cancel-button", "snapshotted-plugin-overlay", "textfield", "relevancy-level-indicator", "continuous-capacity-level-indicator", "discrete-capacity-level-indicator", "rating-level-indicator", "textarea"
</span><span class="cx"> ],
</span><span class="cx"> */
</span><ins>+ "-webkit-scroll-snap-type": [
+ "mandatory", "proximity", "none"
+ ],
+ "-webkit-scroll-snap-points-x": [
+ "elements", "repeat"
+ ],
+ "-webkit-scroll-snap-points-y": [
+ "elements", "repeat"
+ ],
+ "-webkit-scroll-snap-coordinate": [
+ "none"
+ ],
</ins><span class="cx">
</span><span class="cx"> // iOS Properties
</span><span class="cx"> "-webkit-text-size-adjust": [
</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 <wenson_hsieh@apple.com>
+
+ 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 <ap@apple.com>
</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 <wenson_hsieh@apple.com>
+
+ 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 <aestes@apple.com>
</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>