Changeset 172192 in webkit


Ignore:
Timestamp:
Aug 6, 2014 5:19:40 PM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Implement parsing for CSS scroll snap points
https://bugs.webkit.org/show_bug.cgi?id=134301

Source/JavaScriptCore:

Patch by Wenson Hsieh <Wenson Hsieh> 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> 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> 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> on 2014-08-06
Reviewed by Dean Jackson.

  • Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP

Source/WebKit2:

Patch by Wenson Hsieh <Wenson Hsieh> on 2014-08-06
Reviewed by Dean Jackson.

  • Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP

LayoutTests:

Patch by Wenson Hsieh <Wenson Hsieh> 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):

Location:
trunk
Files:
10 added
34 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r172183 r172192  
     12014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Reviewed by Dean Jackson.
     7
     8        Tests that parsing -webkit-scroll-snap-* properties behaves as expected.
     9
     10        * css3/scroll-snap/scroll-snap-property-computed-style-expected.txt: Expected text output of below test.
     11        * css3/scroll-snap/scroll-snap-property-computed-style.html: Tests that scroll snap properties are correctly displayed via getComputedStyle.
     12        * css3/scroll-snap/scroll-snap-property-computed-style.js: Script for above test.
     13        (testComputedScrollSnapRule):
     14        * css3/scroll-snap/scroll-snap-property-parsing-expected.txt: Expected text output of below test.
     15        * css3/scroll-snap/scroll-snap-property-parsing.html: Tests that scroll snap properties are correctly parsed.
     16        * css3/scroll-snap/scroll-snap-property-parsing.js: Script for above test.
     17        (testScrollSnapRule):
     18
    1192014-08-06  Simon Fraser  <simon.fraser@apple.com>
    220
  • trunk/LayoutTests/platform/efl/TestExpectations

    r171990 r172192  
    251251fast/events/drag-and-drop-subframe-dataTransfer.html
    252252fast/events/drag-dataTransferItemList-file-handling.html
     253
     254# ENABLE(CSS_SCROLL_SNAP) is disabled.
     255css3/scroll-snap
    253256
    254257# ENABLE(DRAGGABLE_REGION) is disabled
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r172116 r172192  
    364364# Style scoped support unimplemented
    365365Bug(GTK) fast/css/style-scoped [ Skip ]
     366
     367# ENABLE(CSS_SCROLL_SNAP) is disabled.
     368css3/scroll-snap
    366369
    367370# ENABLE(SHADOW_DOM) is disabled.
  • trunk/LayoutTests/platform/win/TestExpectations

    r171186 r172192  
    14361436# <style scoped> is not yet enabled. http://webkit.org/b/49142
    14371437webkit.org/b/49142 fast/css/style-scoped
     1438
     1439# ENABLE(CSS_SCROLL_SNAP) is disabled.
     1440css3/scroll-snap
    14381441
    14391442# ENABLE(SHADOW_DOM) is disabled.
  • trunk/Source/JavaScriptCore/ChangeLog

    r172190 r172192  
     12014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
     9
    1102014-08-06  Mark Lam  <mark.lam@apple.com>
    211
  • trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig

    r172048 r172192  
    187187ENABLE_SCRIPTED_SPEECH = ;
    188188ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
     189ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
     190ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
    189191ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
    190192ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
     
    249251ENABLE_LLINT_C_LOOP = ;
    250252
    251 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));
     253FEATURE_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));
  • trunk/Source/WebCore/CMakeLists.txt

    r172093 r172192  
    24432443    rendering/style/StyleRareInheritedData.cpp
    24442444    rendering/style/StyleRareNonInheritedData.cpp
     2445    rendering/style/StyleScrollSnapPoints.cpp
    24452446    rendering/style/StyleSurroundData.cpp
    24462447    rendering/style/StyleTransformData.cpp
  • trunk/Source/WebCore/ChangeLog

    r172191 r172192  
     12014-08-06  Wenson Hsieh <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Provided support for parsing -webkit-scroll-snap-* properties, i.e.  type, points-x, points-y, destination, and coordinates.
     7        The exact syntax of the scroll snap CSS properties follow the W3C spec at http://dev.w3.org/csswg/css-snappoints/
     8
     9        Reviewed by Dean Jackson.
     10
     11        Tests: css3/scroll-snap/scroll-snap-property-parsing.html,
     12            css3/scroll-snap/scroll-snap-property-computed-style.html
     13
     14        * CMakeLists.txt: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
     15        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
     16        * WebCore.vcxproj/WebCore.vcxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
     17        * WebCore.vcxproj/WebCore.vcxproj.filters: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp
     18        * WebCore.xcodeproj/project.pbxproj: Added StyleScrollSnapPoints.h, StyleScrollSnapPoints.cpp, LengthRepeat.h
     19        * css/CSSCalculationValue.cpp: Support for LengthRepeat
     20        (WebCore::hasDoubleValue):
     21        * css/CSSComputedStyleDeclaration.cpp: Support for showing computed style for snap point properties.
     22        (WebCore::scrollSnapDestination):
     23        (WebCore::scrollSnapPoints):
     24        (WebCore::scrollSnapCoordinates):
     25        (WebCore::ComputedStyleExtractor::propertyValue):
     26        * css/CSSParser.cpp: Support for parsing snap point properties.
     27        (WebCore::isValidKeywordPropertyAndValue): handle snap point type
     28        (WebCore::isKeywordPropertyID):
     29        (WebCore::CSSParser::parseValue): Added support for parsing snap points.
     30        (WebCore::CSSParser::parseNonElementSnapPoints): Helper for parsing snap points-x/y.
     31        (WebCore::CSSParser::parseScrollSnapDestination): Helper for parsing snap point destinations.
     32        (WebCore::CSSParser::parseScrollSnapCoordinate): Helper for parsing snap point coordinates.
     33        * css/CSSParser.h: Support for parsing snap point properties.
     34        * css/CSSParserValues.cpp:
     35        (WebCore::CSSParserValue::createCSSValue):
     36        * css/CSSPrimitiveValue.cpp:
     37        (WebCore::isValidCSSUnitTypeForDoubleConversion):
     38        (WebCore::CSSPrimitiveValue::init):
     39        (WebCore::CSSPrimitiveValue::cleanup):
     40        (WebCore::CSSPrimitiveValue::getLengthRepeatValue):
     41        (WebCore::CSSPrimitiveValue::formatNumberForcustomCSSText):
     42        (WebCore::CSSPrimitiveValue::cloneForCSSOM):
     43        (WebCore::CSSPrimitiveValue::equals):
     44        * css/CSSPrimitiveValue.h:
     45        (WebCore::CSSPrimitiveValue::isLengthRepeat):
     46        (WebCore::CSSPrimitiveValue::getLengthRepeatValue):
     47        * css/CSSPrimitiveValueMappings.h: Added converters for snap point type properties.
     48        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     49        (WebCore::CSSPrimitiveValue::operator ScrollSnapType):
     50        * css/CSSPropertyNames.in: Added relevant snap point property names.
     51        * css/CSSValueKeywords.in: Added "proximity", "mandatory" and "elements".
     52        * css/LengthRepeat.h: Added to represent values of repeat(<length>)
     53        (WebCore::LengthRepeat::create):
     54        (WebCore::LengthRepeat::cloneForCSSOM):
     55        (WebCore::LengthRepeat::interval):
     56        (WebCore::LengthRepeat::setInterval):
     57        (WebCore::LengthRepeat::equals):
     58        (WebCore::LengthRepeat::cssText):
     59        (WebCore::LengthRepeat::LengthRepeat):
     60        * css/StyleResolver.cpp: Support for handling snap point properties
     61        (WebCore::StyleResolver::applyProperty):Updated switch case to build snap-point-related style data
     62        * rendering/style/RenderStyle.h: Added methods to access and modify snap point data
     63        * rendering/style/RenderStyleConstants.h: Added scroll snap type flags.
     64        * rendering/style/StyleAllInOne.cpp: Added StyleScrollSnapPoints.cpp
     65        * rendering/style/StyleRareNonInheritedData.cpp: Added initiazing for m_scrollSnapPoints, updated equality check
     66        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
     67        (WebCore::StyleRareNonInheritedData::operator==):
     68        * rendering/style/StyleRareNonInheritedData.h: Added field for StyleScrollSnapPoints
     69        * rendering/style/StyleScrollSnapPoints.cpp: Added. Wrapper for basic snap point data structures.
     70        (WebCore::StyleScrollSnapPoints::StyleScrollSnapPoints):
     71        (WebCore::StyleScrollSnapPoints::copy):
     72        (WebCore::StyleScrollSnapPoints::operator==):
     73        * rendering/style/StyleScrollSnapPoints.h: Added.
     74        (WebCore::StyleScrollSnapPoints::create):
     75        (WebCore::StyleScrollSnapPoints::defaultRepeatOffset): Creates a new Length representing the default repeat value of repeat(100%)
     76        (WebCore::StyleScrollSnapPoints::defaultDestinationOffset): Creates a new Length representing a default destination value (0px)
     77        (WebCore::StyleScrollSnapPoints::operator!=):
     78
    1792014-08-06  Andy Estes  <aestes@apple.com>
    280
  • trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig

    r172048 r172192  
    187187ENABLE_SCRIPTED_SPEECH = ;
    188188ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
     189ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
     190ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
    189191ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
    190192ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
     
    249251ENABLE_LLINT_C_LOOP = ;
    250252
    251 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));
     253FEATURE_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));
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r171824 r172192  
    1190611906    </ClCompile>
    1190711907    <ClCompile Include="..\rendering\style\StyleRareNonInheritedData.cpp">
     11908      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     11909      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     11910      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     11911      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     11912      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     11913      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     11914      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     11915      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     11916      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     11917      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     11918      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     11919      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     11920    </ClCompile>
     11921    <ClCompile Include="..\rendering\style\StyleScrollSnapPoints.cpp">
    1190811922      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
    1190911923      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     
    2011120125    <ClInclude Include="..\css\FontLoader.h" />
    2011220126    <ClInclude Include="..\css\LengthFunctions.h" />
     20127    <ClInclude Include="..\css\LengthRepeat.h" />
    2011320128    <ClInclude Include="..\css\MediaFeatureNames.h" />
    2011420129    <ClInclude Include="..\css\MediaList.h" />
     
    2037020385    <ClInclude Include="..\rendering\style\StyleRareNonInheritedData.h" />
    2037120386    <ClInclude Include="..\rendering\style\StyleReflection.h" />
     20387    <ClInclude Include="..\rendering\style\StyleScrollSnapPoints.h" />
    2037220388    <ClInclude Include="..\rendering\style\StyleSurroundData.h" />
    2037320389    <ClInclude Include="..\rendering\style\StyleTransformData.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r171824 r172192  
    28542854      <Filter>rendering\style</Filter>
    28552855    </ClCompile>
     2856    <ClCompile Include="..\rendering\style\StyleScrollSnapPoints.cpp">
     2857      <Filter>rendering\style</Filter>
     2858    </ClCompile>
    28562859    <ClCompile Include="..\rendering\style\StyleSurroundData.cpp">
    28572860      <Filter>rendering\style</Filter>
     
    92629265      <Filter>css</Filter>
    92639266    </ClInclude>
     9267    <ClInclude Include="..\css\LengthRepeat.h">
     9268      <Filter>css</Filter>
     9269    </ClInclude>
    92649270    <ClInclude Include="..\css\MediaFeatureNames.h">
    92659271      <Filter>css</Filter>
     
    99089914    </ClInclude>
    99099915    <ClInclude Include="..\rendering\style\StyleReflection.h">
     9916      <Filter>rendering\style</Filter>
     9917    </ClInclude>
     9918    <ClInclude Include="..\rendering\style\StyleScrollSnapPoints.h">
    99109919      <Filter>rendering\style</Filter>
    99119920    </ClInclude>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r171964 r172192  
    62556255                F3F5CF1112ED81A80084C569 /* InspectorConsoleInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */; };
    62566256                F3F5CF1312ED81B30084C569 /* InspectorDatabaseInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */; };
     6257                F42FFB461984B71600F6837F /* LengthRepeat.h in Headers */ = {isa = PBXBuildFile; fileRef = F42FFB451984B71600F6837F /* LengthRepeat.h */; };
     6258                F47A5E3E195B8C8A00483100 /* StyleScrollSnapPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */; settings = {ATTRIBUTES = (Private, ); }; };
     6259                F47A5E3F195B8E4800483100 /* StyleScrollSnapPoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */; };
    62576260                F50664F7157F52DC00AC226F /* FormController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F50664F5157F52DC00AC226F /* FormController.cpp */; };
    62586261                F50664F8157F52DC00AC226F /* FormController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50664F6157F52DC00AC226F /* FormController.h */; };
     
    1378313786                F3F5CF1012ED81A80084C569 /* InspectorConsoleInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorConsoleInstrumentation.h; sourceTree = "<group>"; };
    1378413787                F3F5CF1212ED81B30084C569 /* InspectorDatabaseInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseInstrumentation.h; sourceTree = "<group>"; };
     13788                F42FFB451984B71600F6837F /* LengthRepeat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthRepeat.h; sourceTree = "<group>"; };
     13789                F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleScrollSnapPoints.cpp; path = style/StyleScrollSnapPoints.cpp; sourceTree = "<group>"; };
     13790                F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleScrollSnapPoints.h; path = style/StyleScrollSnapPoints.h; sourceTree = "<group>"; };
    1378513791                F50664F5157F52DC00AC226F /* FormController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormController.cpp; sourceTree = "<group>"; };
    1378613792                F50664F6157F52DC00AC226F /* FormController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormController.h; sourceTree = "<group>"; };
     
    2109021096                                BC2274770E8366E200E7F975 /* SVGRenderStyleDefs.h */,
    2109121097                                448B1B780F3A2F9B0047A9E2 /* TextSizeAdjustment.h */,
     21098                                F47A5E3A195B8C8A00483100 /* StyleScrollSnapPoints.cpp */,
     21099                                F47A5E3B195B8C8A00483100 /* StyleScrollSnapPoints.h */,
    2109221100                        );
    2109321101                        name = style;
     
    2216022168                                BC4368E70C226E32005EFB5F /* Rect.h */,
    2216122169                                A80E79960A19BD21007FB8C5 /* Rect.idl */,
     22170                                F42FFB451984B71600F6837F /* LengthRepeat.h */,
    2216222171                                BC74DA361013F3F7007987AD /* RGBColor.cpp */,
    2216322172                                BC74DA351013F3F7007987AD /* RGBColor.h */,
     
    2458524594                                A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */,
    2458624595                                97205AB61239291000B17380 /* ImageDocument.h in Headers */,
     24596                                F42FFB461984B71600F6837F /* LengthRepeat.h in Headers */,
    2458724597                                F55B3DC21251F12D003EF269 /* ImageInputType.h in Headers */,
    2458824598                                089582560E857A7E00F82C83 /* ImageLoader.h in Headers */,
     
    2502225032                                B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */,
    2502325033                                24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */,
     25034                                F47A5E3E195B8C8A00483100 /* StyleScrollSnapPoints.h in Headers */,
    2502425035                                07AC47021952102100EE9723 /* ISOVTTCue.h in Headers */,
    2502525036                                6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */,
     
    2782127832                                4A8C96EB0BE69032004EEFF0 /* FrameSelectionMac.mm in Sources */,
    2782227833                                C4CD629A18383766007EBAF1 /* FrameSnapshotting.cpp in Sources */,
     27834                                F47A5E3F195B8E4800483100 /* StyleScrollSnapPoints.cpp in Sources */,
    2782327835                                65A21484097A3F5300B9050A /* FrameTree.cpp in Sources */,
    2782427836                                65CBFEF90974F607001DAC25 /* FrameView.cpp in Sources */,
  • trunk/Source/WebCore/css/CSSCalculationValue.cpp

    r171871 r172192  
    140140    case CSSPrimitiveValue::CSS_SHAPE:
    141141    case CSSPrimitiveValue::CSS_QUAD:
     142#if ENABLE(CSS_SCROLL_SNAP)
     143    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
     144#endif
    142145    case CSSPrimitiveValue::CSS_CALC:
    143146    case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_NUMBER:
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r171591 r172192  
    8484#if ENABLE(DASHBOARD_SUPPORT)
    8585#include "DashboardRegion.h"
     86#endif
     87
     88#if ENABLE(CSS_SCROLL_SNAP)
     89#include "LengthRepeat.h"
     90#include "StyleScrollSnapPoints.h"
    8691#endif
    8792
     
    213218    CSSPropertyWordSpacing,
    214219    CSSPropertyWordWrap,
     220#if ENABLE(CSS_SCROLL_SNAP)
     221    CSSPropertyWebkitScrollSnapType,
     222    CSSPropertyWebkitScrollSnapPointsX,
     223    CSSPropertyWebkitScrollSnapPointsY,
     224    CSSPropertyWebkitScrollSnapDestination,
     225    CSSPropertyWebkitScrollSnapCoordinate,
     226#endif
    215227    CSSPropertyZIndex,
    216228    CSSPropertyZoom,
     
    10721084    return list;
    10731085}
     1086
     1087#if ENABLE(CSS_SCROLL_SNAP)
     1088static PassRef<CSSValueList> scrollSnapDestination(RenderStyle* style, Length x, Length y)
     1089{
     1090    RefPtr<CSSValueList> snapDestinationValue = CSSValueList::createSpaceSeparated();
     1091    if (x.isPercentNotCalculated())
     1092        snapDestinationValue->append(cssValuePool().createValue(x.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
     1093    else
     1094        snapDestinationValue->append(zoomAdjustedPixelValue(valueForLength(x, 0), style));
     1095
     1096    if (y.isPercentNotCalculated())
     1097        snapDestinationValue->append(cssValuePool().createValue(y.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
     1098    else
     1099        snapDestinationValue->append(zoomAdjustedPixelValue(valueForLength(y, 0), style));
     1100
     1101    return snapDestinationValue.releaseNonNull();
     1102}
     1103
     1104static PassRef<CSSValueList> scrollSnapPoints(RenderStyle* style, const Vector<Length>& points, Length repeatPoint, bool hasRepeat)
     1105{
     1106    RefPtr<CSSValueList> snapPointsValue = CSSValueList::createSpaceSeparated();
     1107    for (auto& point : points) {
     1108        if (point.isPercentNotCalculated())
     1109            snapPointsValue->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
     1110        else
     1111            snapPointsValue->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
     1112    }
     1113    if (hasRepeat) {
     1114        if (repeatPoint.isPercentNotCalculated())
     1115            snapPointsValue->append(cssValuePool().createValue(LengthRepeat::create(cssValuePool().createValue(repeatPoint.percent(), CSSPrimitiveValue::CSS_PERCENTAGE))));
     1116        else
     1117            snapPointsValue->append(cssValuePool().createValue(LengthRepeat::create(zoomAdjustedPixelValue(valueForLength(repeatPoint, 0), style))));
     1118    }
     1119    return snapPointsValue.releaseNonNull();
     1120}
     1121
     1122static PassRef<CSSValueList> scrollSnapCoordinates(RenderStyle* style, const Vector<SnapCoordinate>& coordinates)
     1123{
     1124    RefPtr<CSSValueList> snapCoordinatesValue = CSSValueList::createCommaSeparated();
     1125    for (const auto& coordinate : coordinates) {
     1126        RefPtr<CSSValueList> currentCoordinate = CSSValueList::createSpaceSeparated();
     1127        Length point = coordinate.first;
     1128        if (point.isPercentNotCalculated())
     1129            currentCoordinate->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
     1130        else
     1131            currentCoordinate->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
     1132
     1133        point = coordinate.second;
     1134        if (point.isPercentNotCalculated())
     1135            currentCoordinate->append(cssValuePool().createValue(point.percent(), CSSPrimitiveValue::CSS_PERCENTAGE));
     1136        else
     1137            currentCoordinate->append(zoomAdjustedPixelValue(valueForLength(point, 0), style));
     1138
     1139        snapCoordinatesValue->append(PassRefPtr<CSSValueList>(WTF::move(currentCoordinate)));
     1140    }
     1141    return snapCoordinatesValue.releaseNonNull();
     1142}
     1143#endif
    10741144
    10751145static PassRef<CSSValueList> getDelayValue(const AnimationList* animList)
     
    30403110        case CSSPropertyWebkitSvgShadow:
    30413111            return svgPropertyValue(propertyID, DoNotUpdateLayout);
     3112
     3113#if ENABLE(CSS_SCROLL_SNAP)
     3114        case CSSPropertyWebkitScrollSnapType:
     3115            return cssValuePool().createValue(style->scrollSnapType());
     3116        case CSSPropertyWebkitScrollSnapDestination:
     3117            return scrollSnapDestination(style.get(), style->scrollSnapDestinationX(), style->scrollSnapDestinationY());
     3118        case CSSPropertyWebkitScrollSnapPointsX:
     3119            if (style->scrollSnapUsesElementsX())
     3120                return cssValuePool().createValue("elements", CSSPrimitiveValue::CSS_STRING);
     3121            return scrollSnapPoints(style.get(), style->scrollSnapOffsetsX(), style->scrollSnapRepeatOffsetX(), style->scrollSnapHasRepeatX());
     3122        case CSSPropertyWebkitScrollSnapPointsY:
     3123            if (style->scrollSnapUsesElementsY())
     3124                return cssValuePool().createValue("elements", CSSPrimitiveValue::CSS_STRING);
     3125            return scrollSnapPoints(style.get(), style->scrollSnapOffsetsY(), style->scrollSnapRepeatOffsetY(), style->scrollSnapHasRepeatY());
     3126        case CSSPropertyWebkitScrollSnapCoordinate:
     3127            Vector<SnapCoordinate> coords = style->scrollSnapCoordinates();
     3128            if (!coords.size())
     3129                return cssValuePool().createValue("none", CSSPrimitiveValue::CSS_STRING);
     3130            return scrollSnapCoordinates(style.get(), coords);
     3131#endif
    30423132    }
    30433133
  • trunk/Source/WebCore/css/CSSParser.cpp

    r172036 r172192  
    105105#endif
    106106
     107#if ENABLE(CSS_SCROLL_SNAP)
     108#include "LengthRepeat.h"
     109#endif
     110
    107111#if ENABLE(DASHBOARD_SUPPORT)
    108112#include "DashboardRegion.h"
     
    721725            return true;
    722726        break;
     727#if ENABLE(CSS_SCROLL_SNAP)
     728    case CSSPropertyWebkitScrollSnapType: // none | mandatory | proximity
     729        if (valueID == CSSValueNone || valueID == CSSValueMandatory || valueID == CSSValueProximity)
     730            return true;
     731        break;
     732#endif
    723733    case CSSPropertyOverflowX: // visible | hidden | scroll | auto | marquee | overlay | inherit
    724734        if (valueID == CSSValueVisible || valueID == CSSValueHidden || valueID == CSSValueScroll || valueID == CSSValueAuto || valueID == CSSValueOverlay || valueID == CSSValueWebkitMarquee)
     
    11391149    case CSSPropertyWordBreak:
    11401150    case CSSPropertyWordWrap:
     1151#if ENABLE(CSS_SCROLL_SNAP)
     1152    case CSSPropertyWebkitScrollSnapType:
     1153#endif
    11411154        return true;
    11421155    default:
     
    30333046    case CSSPropertyWordBreak:
    30343047    case CSSPropertyWordWrap:
     3048#if ENABLE(CSS_SCROLL_SNAP)
     3049    case CSSPropertyWebkitScrollSnapType:
     3050#endif
    30353051        // These properties should be handled before in isValidKeywordPropertyAndValue().
    30363052        ASSERT_NOT_REACHED();
     
    30473063        break;
    30483064#endif
     3065#if ENABLE(CSS_SCROLL_SNAP)
     3066    case CSSPropertyWebkitScrollSnapPointsX:
     3067    case CSSPropertyWebkitScrollSnapPointsY:
     3068        if (id == CSSValueElements) {
     3069            validPrimitive = true;
     3070            break;
     3071        }
     3072        return parseNonElementSnapPoints(propId, important);
     3073    case CSSPropertyWebkitScrollSnapDestination: // <length>{2}
     3074        return parseScrollSnapDestination(propId, important);
     3075    case CSSPropertyWebkitScrollSnapCoordinate:
     3076        return parseScrollSnapCoordinate(propId, important);
     3077#endif
    30493078    default:
    30503079        return parseSVGValue(propId, important);
     
    31533182    return m_context.useLegacyBackgroundSizeShorthandBehavior;
    31543183}
     3184
     3185#if ENABLE(CSS_SCROLL_SNAP)
     3186bool CSSParser::parseNonElementSnapPoints(CSSPropertyID propId, bool important)
     3187{
     3188    RefPtr<CSSValueList> values = CSSValueList::createSpaceSeparated();
     3189    while (CSSParserValue* val = m_valueList->current()) {
     3190        RefPtr<CSSValue> parsedValue;
     3191        if (validUnit(val, FPercent | FLength)) {
     3192            parsedValue = createPrimitiveNumericValue(val);
     3193            values->append(parsedValue.release());
     3194        } else if (val->unit == CSSParserValue::Function
     3195            && val->function->args != 0
     3196            && val->function->args->size() == 1
     3197            && equalIgnoringCase(val->function->name, "repeat(")) {
     3198            CSSParserValue* parserVal = val->function->args.get()->current();
     3199            if (validUnit(parserVal, FLength | FPercent)) {
     3200                values->append(cssValuePool().createValue(LengthRepeat::create(createPrimitiveNumericValue(parserVal))));
     3201                m_valueList->next();
     3202                if (m_valueList->current())
     3203                    return false;
     3204                break;
     3205            }
     3206        } else
     3207            return false;
     3208        m_valueList->next();
     3209    }
     3210    if (values->length()) {
     3211        addProperty(propId, values.release(), important);
     3212        m_valueList->next();
     3213        return true;
     3214    }
     3215    return false;
     3216}
     3217
     3218bool CSSParser::parseScrollSnapDestination(CSSPropertyID propId, bool important)
     3219{
     3220    RefPtr<CSSValueList> position = CSSValueList::createSpaceSeparated();
     3221    if (m_valueList->size() != 2)
     3222        return false;
     3223    CSSParserValue* curParserVal = m_valueList->current();
     3224    if (!validUnit(curParserVal, FPercent | FLength))
     3225        return false;
     3226    RefPtr<CSSValue> cssValueX = createPrimitiveNumericValue(curParserVal);
     3227    m_valueList->next();
     3228    curParserVal = m_valueList->current();
     3229    if (!validUnit(curParserVal, FPercent | FLength))
     3230        return false;
     3231    RefPtr<CSSValue> cssValueY = createPrimitiveNumericValue(curParserVal);
     3232    position->append(cssValueX.release());
     3233    position->append(cssValueY.release());
     3234    addProperty(propId, position, important);
     3235    m_valueList->next();
     3236    return true;
     3237}
     3238
     3239bool CSSParser::parseScrollSnapCoordinate(CSSPropertyID propId, bool important)
     3240{
     3241    RefPtr<CSSValueList> positions = CSSValueList::createSpaceSeparated();
     3242    while (m_valueList->current()) {
     3243        CSSParserValue* parsedValueX = m_valueList->current();
     3244        // Don't accept odd-length lists of coordinates.
     3245        if (!m_valueList->next())
     3246            return false;
     3247        CSSParserValue* parsedValueY = m_valueList->current();
     3248        if (!validUnit(parsedValueX, FPercent | FLength) || !validUnit(parsedValueY, FPercent | FLength))
     3249            return false;
     3250        positions->append(createPrimitiveNumericValue(parsedValueX));
     3251        positions->append(createPrimitiveNumericValue(parsedValueY));
     3252        m_valueList->next();
     3253    }
     3254    if (positions->length()) {
     3255        addProperty(propId, positions.release(), important);
     3256        return true;
     3257    }
     3258    return false;
     3259}
     3260#endif
    31553261
    31563262const int cMaxFillProperties = 9;
  • trunk/Source/WebCore/css/CSSParser.h

    r171010 r172192  
    535535    SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserValue* value, SizeParameterType prevParamType);
    536536
     537#if ENABLE(CSS_SCROLL_SNAP)
     538    bool parseNonElementSnapPoints(CSSPropertyID propId, bool important);
     539    bool parseScrollSnapDestination(CSSPropertyID propId, bool important);
     540    bool parseScrollSnapCoordinate(CSSPropertyID propId, bool important);
     541#endif
     542
    537543    bool parseFontFaceSrcURI(CSSValueList*);
    538544    bool parseFontFaceSrcLocal(CSSValueList*);
  • trunk/Source/WebCore/css/CSSParserValues.cpp

    r170774 r172192  
    142142    case CSSPrimitiveValue::CSS_SHAPE:
    143143    case CSSPrimitiveValue::CSS_QUAD:
     144#if ENABLE(CSS_SCROLL_SNAP)
     145    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
     146#endif
    144147    case CSSPrimitiveValue::CSS_CALC:
    145148    case CSSPrimitiveValue::CSS_CALC_PERCENTAGE_WITH_NUMBER:
  • trunk/Source/WebCore/css/CSSPrimitiveValue.cpp

    r170774 r172192  
    5050#if ENABLE(DASHBOARD_SUPPORT)
    5151#include "DashboardRegion.h"
     52#endif
     53
     54#if ENABLE(CSS_SCROLL_SNAP)
     55#include "LengthRepeat.h"
    5256#endif
    5357
     
    120124    case CSSPrimitiveValue::CSS_RECT:
    121125    case CSSPrimitiveValue::CSS_QUAD:
     126#if ENABLE(CSS_SCROLL_SNAP)
     127    case CSSPrimitiveValue::CSS_LENGTH_REPEAT:
     128#endif
    122129    case CSSPrimitiveValue::CSS_RGBCOLOR:
    123130    case CSSPrimitiveValue::CSS_SHAPE:
     
    399406}
    400407
     408#if ENABLE(CSS_SCROLL_SNAP)
     409void CSSPrimitiveValue::init(PassRefPtr<LengthRepeat> lengthRepeat)
     410{
     411    m_primitiveUnitType = CSS_LENGTH_REPEAT;
     412    m_hasCachedCSSText = false;
     413    m_value.lengthRepeat = lengthRepeat.leakRef();
     414}
     415#endif
     416
    401417#if ENABLE(DASHBOARD_SUPPORT)
    402418void CSSPrimitiveValue::init(PassRefPtr<DashboardRegion> r)
     
    454470        m_value.quad->deref();
    455471        break;
     472#if ENABLE(CSS_SCROLL_SNAP)
     473    case CSS_LENGTH_REPEAT:
     474        m_value.lengthRepeat->deref();
     475        break;
     476#endif
    456477    case CSS_PAIR:
    457478        m_value.pair->deref();
     
    898919    return m_value.quad;
    899920}
     921
     922#if ENABLE(CSS_SCROLL_SNAP)
     923LengthRepeat* CSSPrimitiveValue::getLengthRepeatValue(ExceptionCode& ec) const
     924{
     925    ec = 0;
     926    if (m_primitiveUnitType != CSS_LENGTH_REPEAT) {
     927        ec = INVALID_ACCESS_ERR;
     928        return 0;
     929    }
     930
     931    return m_value.lengthRepeat;
     932}
     933#endif
    900934
    901935PassRefPtr<RGBColor> CSSPrimitiveValue::getRGBColorValue(ExceptionCode& ec) const
     
    10481082    case CSS_QUAD:
    10491083        return getQuadValue()->cssText();
     1084#if ENABLE(CSS_SCROLL_SNAP)
     1085    case CSS_LENGTH_REPEAT:
     1086        return getLengthRepeatValue()->cssText();
     1087#endif
    10501088    case CSS_RGBCOLOR:
    10511089    case CSS_PARSER_HEXCOLOR: {
     
    11871225        result = CSSPrimitiveValue::create(m_value.quad->cloneForCSSOM());
    11881226        break;
     1227#if ENABLE(CSS_SCROLL_SNAP)
     1228    case CSS_LENGTH_REPEAT:
     1229        result = CSSPrimitiveValue::create(m_value.lengthRepeat->cloneForCSSOM());
     1230        break;
     1231#endif
    11891232    case CSS_PAIR:
    11901233        // Pair is not exposed to the CSSOM, no need for a deep clone.
     
    13171360    case CSS_QUAD:
    13181361        return m_value.quad && other.m_value.quad && m_value.quad->equals(*other.m_value.quad);
     1362#if ENABLE(CSS_SCROLL_SNAP)
     1363    case CSS_LENGTH_REPEAT:
     1364        return m_value.lengthRepeat && other.m_value.lengthRepeat && m_value.lengthRepeat->equals(*other.m_value.lengthRepeat);
     1365#endif
    13191366    case CSS_RGBCOLOR:
    13201367        return m_value.rgbcolor == other.m_value.rgbcolor;
  • trunk/Source/WebCore/css/CSSPrimitiveValue.h

    r169731 r172192  
    4343class RenderStyle;
    4444class CSSBasicShape;
     45
     46#if ENABLE(CSS_SCROLL_SNAP)
     47class LengthRepeat;
     48#endif
    4549
    4650struct Length;
     
    105109        CSS_DPCM = 32,
    106110        CSS_FR = 33,
     111#if ENABLE(CSS_SCROLL_SNAP)
     112        CSS_LENGTH_REPEAT = 34,
     113#endif
    107114        CSS_PAIR = 100, // We envision this being exposed as a means of getting computed style values for pairs (border-spacing/radius, background-position, etc.)
    108115#if ENABLE(DASHBOARD_SUPPORT)
     
    182189    bool isPx() const { return primitiveType() == CSS_PX; }
    183190    bool isRect() const { return m_primitiveUnitType == CSS_RECT; }
     191#if ENABLE(CSS_SCROLL_SNAP)
     192    bool isLengthRepeat() const { return m_primitiveUnitType == CSS_LENGTH_REPEAT; }
     193#endif
    184194    bool isRGBColor() const { return m_primitiveUnitType == CSS_RGBCOLOR; }
    185195    bool isShape() const { return m_primitiveUnitType == CSS_SHAPE; }
     
    304314    Quad* getQuadValue() const { return m_primitiveUnitType != CSS_QUAD ? 0 : m_value.quad; }
    305315
     316#if ENABLE(CSS_SCROLL_SNAP)
     317    LengthRepeat* getLengthRepeatValue(ExceptionCode&) const;
     318    LengthRepeat* getLengthRepeatValue() const { return m_primitiveUnitType != CSS_LENGTH_REPEAT ? 0 : m_value.lengthRepeat; }
     319#endif
     320
    306321    PassRefPtr<RGBColor> getRGBColorValue(ExceptionCode&) const;
    307322    RGBA32 getRGBA32Value() const { return m_primitiveUnitType != CSS_RGBCOLOR ? 0 : m_value.rgbcolor; }
     
    372387    void init(PassRefPtr<Pair>);
    373388    void init(PassRefPtr<Quad>);
     389#if ENABLE(CSS_SCROLL_SNAP)
     390    void init(PassRefPtr<LengthRepeat>);
     391#endif
    374392    void init(PassRefPtr<DashboardRegion>); // FIXME: Dashboard region should not be a primitive value.
    375393    void init(PassRefPtr<CSSBasicShape>);
     
    393411        Rect* rect;
    394412        Quad* quad;
     413#if ENABLE(CSS_SCROLL_SNAP)
     414        LengthRepeat* lengthRepeat;
     415#endif
    395416        unsigned rgbcolor;
    396417        Pair* pair;
  • trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h

    r171871 r172192  
    51845184}
    51855185
    5186 }
    5187 
     5186
     5187#if ENABLE(CSS_SCROLL_SNAP)
     5188template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ScrollSnapType e)
     5189    : CSSValue(PrimitiveClass)
     5190{
     5191    m_primitiveUnitType = CSS_VALUE_ID;
     5192    switch (e) {
     5193    case ScrollSnapType::None:
     5194        m_value.valueID = CSSValueNone;
     5195        break;
     5196    case ScrollSnapType::Proximity:
     5197        m_value.valueID = CSSValueProximity;
     5198        break;
     5199    case ScrollSnapType::Mandatory:
     5200        m_value.valueID = CSSValueMandatory;
     5201        break;
     5202    }
     5203}
     5204
     5205template<> inline CSSPrimitiveValue::operator ScrollSnapType() const
     5206{
     5207    ASSERT(isValueID());
     5208    switch (m_value.valueID) {
     5209    case CSSValueNone:
     5210        return ScrollSnapType::None;
     5211    case CSSValueProximity:
     5212        return ScrollSnapType::Proximity;
     5213    case CSSValueMandatory:
     5214        return ScrollSnapType::Mandatory;
     5215    default:
     5216        break;
     5217    }
     5218    ASSERT_NOT_REACHED();
     5219    return ScrollSnapType::None;
     5220}
    51885221#endif
     5222
     5223}
     5224
     5225#endif
  • trunk/Source/WebCore/css/CSSPropertyNames.in

    r171010 r172192  
    388388-webkit-rtl-ordering [Inherited]
    389389-webkit-ruby-position [Inherited]
     390#if defined(ENABLE_CSS_SCROLL_SNAP)
     391-webkit-scroll-snap-points-x
     392-webkit-scroll-snap-points-y
     393-webkit-scroll-snap-type
     394-webkit-scroll-snap-destination
     395-webkit-scroll-snap-coordinate
     396#endif
    390397-webkit-text-combine [Inherited]
    391398-epub-text-combine = -webkit-text-combine
  • trunk/Source/WebCore/css/CSSValueKeywords.in

    r171677 r172192  
    990990// farthest-side
    991991
     992#if defined(ENABLE_CSS_SCROLL_SNAP)
     993// -webkit-scroll-snap-points-x
     994// -webkit-scroll-snap-points-y
     995elements
     996
     997// -webkit-scroll-snap-type
     998mandatory
     999proximity
     1000#endif
     1001
    9921002// -webkit-region-fragment
    9931003// auto
  • trunk/Source/WebCore/css/StyleResolver.cpp

    r171871 r172192  
    162162#endif
    163163
     164#if ENABLE(CSS_SCROLL_SNAP)
     165#include "LengthRepeat.h"
     166#endif
     167
    164168namespace WebCore {
    165169
     
    28442848        return;
    28452849    }
     2850
     2851#if ENABLE(CSS_SCROLL_SNAP)
     2852    case CSSPropertyWebkitScrollSnapType: {
     2853        state.style()->setScrollSnapType(*primitiveValue);
     2854        return;
     2855    }
     2856    case CSSPropertyWebkitScrollSnapPointsX:
     2857    case CSSPropertyWebkitScrollSnapPointsY: {
     2858        RenderStyle* renderStyle = state.style();
     2859        if (id == CSSPropertyWebkitScrollSnapPointsX)
     2860            renderStyle->setScrollSnapHasRepeatX(false);
     2861        else
     2862            renderStyle->setScrollSnapHasRepeatY(false);
     2863
     2864        if (primitiveValue && primitiveValue->getValueID() == CSSValueElements) {
     2865            if (id == CSSPropertyWebkitScrollSnapPointsX)
     2866                renderStyle->setScrollSnapUsesElementsX(true);
     2867            else
     2868                renderStyle->setScrollSnapUsesElementsY(true);
     2869            return;
     2870        }
     2871        if (id == CSSPropertyWebkitScrollSnapPointsX)
     2872            renderStyle->setScrollSnapUsesElementsX(false);
     2873        else
     2874            renderStyle->setScrollSnapUsesElementsY(false);
     2875
     2876        Vector<Length> offsets;
     2877        for (CSSValueListIterator it(value); it.hasMore(); it.advance()) {
     2878            RefPtr<CSSValue> rawItemValue = it.value();
     2879            CSSPrimitiveValue* primitiveItemValue = toCSSPrimitiveValue(rawItemValue.get());
     2880            if (primitiveItemValue->isLengthRepeat()) {
     2881                LengthRepeat* lengthRepeat = primitiveItemValue->getLengthRepeatValue();
     2882                if (lengthRepeat && lengthRepeat->interval()) {
     2883                    if (id == CSSPropertyWebkitScrollSnapPointsX) {
     2884                        renderStyle->setScrollSnapRepeatOffsetX(lengthRepeat->interval()->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
     2885                        renderStyle->setScrollSnapHasRepeatX(true);
     2886                    } else {
     2887                        renderStyle->setScrollSnapRepeatOffsetY(lengthRepeat->interval()->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
     2888                        renderStyle->setScrollSnapHasRepeatY(true);
     2889                    }
     2890                    break;
     2891                }
     2892            } else
     2893                offsets.append(primitiveItemValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
     2894        }
     2895        if (id == CSSPropertyWebkitScrollSnapPointsX)
     2896            renderStyle->setScrollSnapOffsetsX(offsets);
     2897        else
     2898            renderStyle->setScrollSnapOffsetsY(offsets);
     2899        return;
     2900    }
     2901    case CSSPropertyWebkitScrollSnapDestination: {
     2902        CSSValueList& position = toCSSValueList(*value);
     2903        RefPtr<CSSValue> xCoordinate = position.item(0);
     2904        RefPtr<CSSPrimitiveValue> xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
     2905        state.style()->setScrollSnapDestinationX(xCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
     2906
     2907        RefPtr<CSSValue> yCoordinate = position.item(1);
     2908        RefPtr<CSSPrimitiveValue> yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
     2909        state.style()->setScrollSnapDestinationY(yCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()));
     2910        return;
     2911    }
     2912    case CSSPropertyWebkitScrollSnapCoordinate: {
     2913        Vector<SnapCoordinate> coordinates;
     2914        CSSValueList& valueList = toCSSValueList(*value);
     2915        size_t pointCount = valueList.length();
     2916        // Every x must be followed by a y.
     2917        if (pointCount % 2)
     2918            return;
     2919        pointCount /= 2;
     2920        coordinates.reserveCapacity(pointCount);
     2921        for (size_t i = 0; i < pointCount; i++) {
     2922            RefPtr<CSSValue> xCoordinate = valueList.item(i * 2);
     2923            RefPtr<CSSValue> yCoordinate = valueList.item((i * 2) + 1);
     2924            RefPtr<CSSPrimitiveValue> xCoordinateValue = toCSSPrimitiveValue(xCoordinate.get());
     2925            RefPtr<CSSPrimitiveValue> yCoordinateValue = toCSSPrimitiveValue(yCoordinate.get());
     2926            coordinates.append(SnapCoordinate(xCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData()), yCoordinateValue->convertToLength<FixedIntegerConversion | PercentConversion | AutoConversion>(state.cssToLengthConversionData())));
     2927        }
     2928        state.style()->setScrollSnapCoordinates(coordinates);
     2929        return;
     2930    }
     2931#endif
    28462932    // These properties are aliased and DeprecatedStyleBuilder already applied the property on the prefixed version.
    28472933    case CSSPropertyTransitionDelay:
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r171692 r172192  
    8888#endif
    8989
     90#if ENABLE(CSS_SCROLL_SNAP)
     91#include "StyleScrollSnapPoints.h"
     92#endif
     93
    9094#if ENABLE(IOS_TEXT_AUTOSIZING)
    9195#include "TextSizeAdjustment.h"
     
    10791083    LineBoxContain lineBoxContain() const { return rareInheritedData->m_lineBoxContain; }
    10801084    const LineClampValue& lineClamp() const { return rareNonInheritedData->lineClamp; }
     1085#if ENABLE(CSS_SCROLL_SNAP)
     1086    ScrollSnapType scrollSnapType() const { return static_cast<ScrollSnapType>(rareNonInheritedData->m_scrollSnapType); }
     1087    Vector<Length> scrollSnapOffsetsX() const { return rareNonInheritedData->m_scrollSnapPoints->offsetsX; }
     1088    Vector<Length> scrollSnapOffsetsY() const { return rareNonInheritedData->m_scrollSnapPoints->offsetsY; }
     1089    Length scrollSnapRepeatOffsetX() const { return rareNonInheritedData->m_scrollSnapPoints->repeatOffsetX; }
     1090    Length scrollSnapRepeatOffsetY() const { return rareNonInheritedData->m_scrollSnapPoints->repeatOffsetY; }
     1091    bool scrollSnapHasRepeatX() const { return rareNonInheritedData->m_scrollSnapPoints->hasRepeatX; }
     1092    bool scrollSnapHasRepeatY() const { return rareNonInheritedData->m_scrollSnapPoints->hasRepeatY; }
     1093    Length scrollSnapDestinationX() const { return rareNonInheritedData->m_scrollSnapPoints->destinationX; }
     1094    Length scrollSnapDestinationY() const { return rareNonInheritedData->m_scrollSnapPoints->destinationY; }
     1095    Vector<SnapCoordinate> scrollSnapCoordinates() const { return rareNonInheritedData->m_scrollSnapPoints->coordinates; }
     1096    bool scrollSnapUsesElementsX() const { return rareNonInheritedData->m_scrollSnapPoints->usesElementsX; }
     1097    bool scrollSnapUsesElementsY() const { return rareNonInheritedData->m_scrollSnapPoints->usesElementsY; }
     1098#endif
    10811099#if ENABLE(TOUCH_EVENTS)
    10821100    Color tapHighlightColor() const { return rareInheritedData->tapHighlightColor; }
     
    15951613    void setLineBoxContain(LineBoxContain c) { SET_VAR(rareInheritedData, m_lineBoxContain, c); }
    15961614    void setLineClamp(LineClampValue c) { SET_VAR(rareNonInheritedData, lineClamp, c); }
     1615#if ENABLE(CSS_SCROLL_SNAP)
     1616    void setScrollSnapType(ScrollSnapType type) { SET_VAR(rareNonInheritedData, m_scrollSnapType, type); }
     1617    void setScrollSnapOffsetsX(Vector<Length>& offsets) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, offsetsX, offsets); }
     1618    void setScrollSnapOffsetsY(Vector<Length>& offsets) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, offsetsY, offsets); }
     1619    void setScrollSnapRepeatOffsetX(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, repeatOffsetX, repeatOffset); }
     1620    void setScrollSnapRepeatOffsetY(Length repeatOffset) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, repeatOffsetY, repeatOffset); }
     1621    void setScrollSnapHasRepeatX(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, hasRepeatX, hasRepeat); }
     1622    void setScrollSnapHasRepeatY(bool hasRepeat) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, hasRepeatY, hasRepeat); }
     1623    void setScrollSnapDestinationX(Length destination) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, destinationX, destination); }
     1624    void setScrollSnapDestinationY(Length destination) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, destinationY, destination); }
     1625    void setScrollSnapCoordinates(Vector<SnapCoordinate>& coordinates) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, coordinates, coordinates); }
     1626    void setScrollSnapUsesElementsX(bool usesElements) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, usesElementsX, usesElements); }
     1627    void setScrollSnapUsesElementsY(bool usesElements) { SET_VAR(rareNonInheritedData.access()->m_scrollSnapPoints, usesElementsY, usesElements); }
     1628#endif
     1629
    15971630#if ENABLE(TOUCH_EVENTS)
    15981631    void setTapHighlightColor(const Color& c) { SET_VAR(rareInheritedData, tapHighlightColor, c); }
     
    18981931    static StyleImage* initialMaskBoxImageSource() { return 0; }
    18991932    static PrintColorAdjust initialPrintColorAdjust() { return PrintColorAdjustEconomy; }
     1933#if ENABLE(CSS_SCROLL_SNAP)
     1934    static ScrollSnapType initialScrollSnapType() { return ScrollSnapType::None; }
     1935#endif
    19001936
    19011937#if ENABLE(CSS_GRID_LAYOUT)
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.h

    r171677 r172192  
    576576enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };
    577577
     578#if ENABLE(CSS_SCROLL_SNAP)
     579enum class ScrollSnapType {
     580    None,
     581    Proximity,
     582    Mandatory
     583};
     584#endif
     585
    578586} // namespace WebCore
    579587
  • trunk/Source/WebCore/rendering/style/StyleAllInOne.cpp

    r164659 r172192  
    5757#include "StyleGridItemData.cpp"
    5858#endif
     59
     60#if ENABLE(CSS_SCROLL_SNAP)
     61#include "StyleScrollSnapPoints.cpp"
     62#endif
  • trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp

    r171010 r172192  
    5454    , m_gridItem(StyleGridItemData::create())
    5555#endif
     56#if ENABLE(CSS_SCROLL_SNAP)
     57    , m_scrollSnapPoints(StyleScrollSnapPoints::create())
     58#endif
    5659    , m_mask(FillLayer(MaskFillLayer))
    5760    , m_pageSize()
     
    6669    , m_flowThread(RenderStyle::initialFlowThread())
    6770    , m_regionThread(RenderStyle::initialRegionThread())
     71#if ENABLE(CSS_SCROLL_SNAP)
     72    , m_scrollSnapType(RenderStyle::initialScrollSnapType())
     73#endif
    6874    , m_regionFragment(RenderStyle::initialRegionFragment())
    6975    , m_regionBreakAfter(RenderStyle::NonInheritedFlags::initialPageBreak())
     
    119125    , m_gridItem(o.m_gridItem)
    120126#endif
     127#if ENABLE(CSS_SCROLL_SNAP)
     128    , m_scrollSnapPoints(o.m_scrollSnapPoints)
     129#endif
    121130    , m_content(o.m_content ? o.m_content->clone() : nullptr)
    122131    , m_counterDirectives(o.m_counterDirectives ? clone(*o.m_counterDirectives) : nullptr)
     
    145154    , m_flowThread(o.m_flowThread)
    146155    , m_regionThread(o.m_regionThread)
     156#if ENABLE(CSS_SCROLL_SNAP)
     157    , m_scrollSnapType(o.m_scrollSnapType)
     158#endif
    147159    , m_regionFragment(o.m_regionFragment)
    148160    , m_regionBreakAfter(o.m_regionBreakAfter)
     
    208220        && m_grid == o.m_grid
    209221        && m_gridItem == o.m_gridItem
     222#endif
     223#if ENABLE(CSS_SCROLL_SNAP)
     224        && m_scrollSnapPoints == o.m_scrollSnapPoints
    210225#endif
    211226        && contentDataEquivalent(o)
     
    254269        && m_textCombine == o.m_textCombine
    255270        && m_textDecorationStyle == o.m_textDecorationStyle
     271#if ENABLE(CSS_SCROLL_SNAP)
     272        && m_scrollSnapType == o.m_scrollSnapType
     273#endif
    256274        && !m_runningAcceleratedAnimation && !o.m_runningAcceleratedAnimation
    257275#if ENABLE(CSS_COMPOSITING)
  • trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h

    r171010 r172192  
    5757class StyleResolver;
    5858class StyleTransformData;
     59#if ENABLE(CSS_SCROLL_SNAP)
     60class StyleScrollSnapPoints;
     61#endif
    5962
    6063class ContentData;
     
    125128#endif
    126129
     130#if ENABLE(CSS_SCROLL_SNAP)
     131    DataRef<StyleScrollSnapPoints> m_scrollSnapPoints;
     132#endif
     133
    127134    std::unique_ptr<ContentData> m_content;
    128135    std::unique_ptr<CounterDirectiveMap> m_counterDirectives;
     
    162169    AtomicString m_flowThread;
    163170    AtomicString m_regionThread;
     171
     172#if ENABLE(CSS_SCROLL_SNAP)
     173    ScrollSnapType m_scrollSnapType; // ScrollSnapType
     174#endif
     175
    164176    unsigned m_regionFragment : 1; // RegionFragment
    165177
  • trunk/Source/WebInspectorUI/ChangeLog

    r172162 r172192  
     12014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Reviewed by Dean Jackson.
     7
     8        * UserInterface/Models/CSSKeywordCompletions.js: Added snap point property keywords, such as mandatory, proximity, elements, and repeat.
     9
    1102014-08-06  Brian J. Burg  <burg@cs.washington.edu>
    211
  • trunk/Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js

    r171011 r172192  
    905905    ],
    906906    */
     907    "-webkit-scroll-snap-type": [
     908        "mandatory", "proximity", "none"
     909    ],
     910    "-webkit-scroll-snap-points-x": [
     911        "elements", "repeat"
     912    ],
     913    "-webkit-scroll-snap-points-y": [
     914        "elements", "repeat"
     915    ],
     916    "-webkit-scroll-snap-coordinate": [
     917        "none"
     918    ],
    907919
    908920    // iOS Properties
  • trunk/Source/WebKit/mac/ChangeLog

    r172172 r172192  
     12014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
     9
    1102014-08-06  Alexey Proskuryakov  <ap@apple.com>
    211
  • trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig

    r172048 r172192  
    187187ENABLE_SCRIPTED_SPEECH = ;
    188188ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
     189ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
     190ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
    189191ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
    190192ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
     
    249251ENABLE_LLINT_C_LOOP = ;
    250252
    251 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));
     253FEATURE_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));
  • trunk/Source/WebKit2/ChangeLog

    r172191 r172192  
     12014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Implement parsing for CSS scroll snap points
     4        https://bugs.webkit.org/show_bug.cgi?id=134301
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Added ENABLE_CSS_SCROLL_SNAP
     9
    1102014-08-06  Andy Estes  <aestes@apple.com>
    211
  • trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig

    r172048 r172192  
    187187ENABLE_SCRIPTED_SPEECH = ;
    188188ENABLE_SHARED_WORKERS = ENABLE_SHARED_WORKERS;
     189ENABLE_CSS_SCROLL_SNAP = $(ENABLE_CSS_SCROLL_SNAP_$(PLATFORM_NAME));
     190ENABLE_CSS_SCROLL_SNAP_macosx = ENABLE_CSS_SCROLL_SNAP;
    189191ENABLE_SPEECH_SYNTHESIS = $(ENABLE_SPEECH_SYNTHESIS_$(PLATFORM_NAME));
    190192ENABLE_SPEECH_SYNTHESIS = ENABLE_SPEECH_SYNTHESIS;
     
    249251ENABLE_LLINT_C_LOOP = ;
    250252
    251 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));
     253FEATURE_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));
Note: See TracChangeset for help on using the changeset viewer.