WebKit Bugzilla
Attachment 348100 Details for
Bug 188697
: [css-logical] Flow relative margin, padding and border shorthands
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188697-20180826215558.patch (text/plain), 215.95 KB, created by
Oriol Brufau
on 2018-08-26 12:56:00 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Oriol Brufau
Created:
2018-08-26 12:56:00 PDT
Size:
215.95 KB
patch
obsolete
>Subversion Revision: 235256 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 59ec94c8a91ec483bc2d0ca08fe6e406abd88ee1..631ae6a82387119d59bec9057e8b7799cb5e2009 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2018-08-23 Mark Lam <mark.lam@apple.com> > > Move vmEntryGlobalObject() to VM from CallFrame. >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index 124be2f159ceded9699b5c9319b4a8f76cc69756..82cfcb0408f261591ee142ac1690515fd9cad728 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * wtf/FeatureDefines.h: >+ > 2018-08-23 Don Olmstead <don.olmstead@sony.com> > > [CMake] Add HAVE_MALLOC_TRIM definition >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c48feb6a82d7678456f6cb52a11f244fd5a7c623..79169973bfa209d5b349b2a17d1e1271b3703d08 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,37 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html >+ Test: imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html >+ >+ * Configurations/FeatureDefines.xcconfig: >+ * css/CSSComputedStyleDeclaration.cpp: >+ (WebCore::ComputedStyleExtractor::valueForPropertyinStyle): >+ (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand): >+ (WebCore::ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand): >+ * css/CSSComputedStyleDeclaration.h: >+ * css/CSSProperties.json: >+ * css/StyleProperties.cpp: >+ (WebCore::StyleProperties::getPropertyValue const): >+ (WebCore::StyleProperties::get2Values const): >+ (WebCore::StyleProperties::borderPropertyValue const): >+ * css/StyleProperties.h: >+ * css/parser/CSSPropertyParser.cpp: >+ (WebCore::CSSPropertyParser::consumeBorder): >+ (WebCore::CSSPropertyParser::consume2Values): >+ (WebCore::CSSPropertyParser::parseShorthand): >+ * css/parser/CSSPropertyParser.h: >+ > 2018-08-23 Daniel Bates <dabates@apple.com> > > [iOS] Test editing/undo/replace-text-in-node-preserving-markers-crash.html crashes >diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog >index 52d92d57cc026a048097fd33354eb82b52cef857..5ef78bce518823237fb5bfe29985945b1986abaa 100644 >--- a/Source/WebCore/PAL/ChangeLog >+++ b/Source/WebCore/PAL/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2018-08-23 Andy Estes <aestes@apple.com> > > [Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3d540894add032410063379a23c0ca84ee315647..f2e1cf3bae128b10fb7c1dea53a833d1b4161123 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2018-08-23 Andy Estes <aestes@apple.com> > > [Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave >diff --git a/Source/WebKitLegacy/mac/ChangeLog b/Source/WebKitLegacy/mac/ChangeLog >index dee686d4d4ab0520c5acc024330bef65776c1bec..798e86e1d8eeadb577c4cbc6759c571162c50f2e 100644 >--- a/Source/WebKitLegacy/mac/ChangeLog >+++ b/Source/WebKitLegacy/mac/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Configurations/FeatureDefines.xcconfig: >+ > 2018-08-23 Mark Lam <mark.lam@apple.com> > > Move vmEntryGlobalObject() to VM from CallFrame. >diff --git a/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig b/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig >+++ b/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/Source/WTF/wtf/FeatureDefines.h b/Source/WTF/wtf/FeatureDefines.h >index 0d3e7f745d871a246225d46ddb568691bf0d2c78..e28cfbdd88e72e128266df72815b2bf228721161 100644 >--- a/Source/WTF/wtf/FeatureDefines.h >+++ b/Source/WTF/wtf/FeatureDefines.h >@@ -401,6 +401,10 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */ > #define ENABLE_CSS_IMAGE_RESOLUTION 0 > #endif > >+#if !defined(ENABLE_CSS_LOGICAL) >+#define ENABLE_CSS_LOGICAL 0 >+#endif >+ > #if !defined(ENABLE_CURSOR_SUPPORT) > #define ENABLE_CURSOR_SUPPORT 1 > #endif >diff --git a/Source/WebCore/Configurations/FeatureDefines.xcconfig b/Source/WebCore/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Source/WebCore/Configurations/FeatureDefines.xcconfig >+++ b/Source/WebCore/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig b/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig >+++ b/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >index db9c6d79e087651443f074b6a0800a0f8a3e526c..3ed90351f9bea49c34a9fc40c1ef746043f8c392 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >@@ -3877,24 +3877,52 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyinStyle(const RenderSty > } > return value; > } >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderBlock: { >+ auto value = propertyValue(CSSPropertyBorderBlockStart, DoNotUpdateLayout); >+ if (!compareCSSValuePtr<CSSValue>(value, propertyValue(CSSPropertyBorderBlockEnd, DoNotUpdateLayout))) >+ return nullptr; >+ return value; >+ } >+ case CSSPropertyBorderBlockColor: >+ return getCSSPropertyValuesFor2SidesShorthand(borderBlockColorShorthand()); >+ case CSSPropertyBorderBlockStyle: >+ return getCSSPropertyValuesFor2SidesShorthand(borderBlockStyleShorthand()); >+ case CSSPropertyBorderBlockWidth: >+ return getCSSPropertyValuesFor2SidesShorthand(borderBlockWidthShorthand()); >+#endif > case CSSPropertyBorderBottom: > return getCSSPropertyValuesForShorthandProperties(borderBottomShorthand()); > case CSSPropertyBorderColor: >- return getCSSPropertyValuesForSidesShorthand(borderColorShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(borderColorShorthand()); > case CSSPropertyBorderLeft: > return getCSSPropertyValuesForShorthandProperties(borderLeftShorthand()); > case CSSPropertyBorderImage: > return valueForNinePieceImage(style.borderImage()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderInline: { >+ auto value = propertyValue(CSSPropertyBorderInlineStart, DoNotUpdateLayout); >+ if (!compareCSSValuePtr<CSSValue>(value, propertyValue(CSSPropertyBorderInlineEnd, DoNotUpdateLayout))) >+ return nullptr; >+ return value; >+ } >+ case CSSPropertyBorderInlineColor: >+ return getCSSPropertyValuesFor2SidesShorthand(borderInlineColorShorthand()); >+ case CSSPropertyBorderInlineStyle: >+ return getCSSPropertyValuesFor2SidesShorthand(borderInlineStyleShorthand()); >+ case CSSPropertyBorderInlineWidth: >+ return getCSSPropertyValuesFor2SidesShorthand(borderInlineWidthShorthand()); >+#endif > case CSSPropertyBorderRadius: > return borderRadiusShorthandValue(style); > case CSSPropertyBorderRight: > return getCSSPropertyValuesForShorthandProperties(borderRightShorthand()); > case CSSPropertyBorderStyle: >- return getCSSPropertyValuesForSidesShorthand(borderStyleShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(borderStyleShorthand()); > case CSSPropertyBorderTop: > return getCSSPropertyValuesForShorthandProperties(borderTopShorthand()); > case CSSPropertyBorderWidth: >- return getCSSPropertyValuesForSidesShorthand(borderWidthShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(borderWidthShorthand()); > case CSSPropertyColumnRule: > return getCSSPropertyValuesForShorthandProperties(columnRuleShorthand()); > case CSSPropertyColumns: >@@ -3902,15 +3930,26 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyinStyle(const RenderSty > case CSSPropertyListStyle: > return getCSSPropertyValuesForShorthandProperties(listStyleShorthand()); > case CSSPropertyMargin: >- return getCSSPropertyValuesForSidesShorthand(marginShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(marginShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyMarginBlock: >+ return getCSSPropertyValuesFor2SidesShorthand(marginBlockShorthand()); >+ case CSSPropertyMarginInline: >+ return getCSSPropertyValuesFor2SidesShorthand(marginInlineShorthand()); >+#endif > case CSSPropertyOutline: > return getCSSPropertyValuesForShorthandProperties(outlineShorthand()); > case CSSPropertyPadding: >- return getCSSPropertyValuesForSidesShorthand(paddingShorthand()); >- >+ return getCSSPropertyValuesFor4SidesShorthand(paddingShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyPaddingBlock: >+ return getCSSPropertyValuesFor2SidesShorthand(paddingBlockShorthand()); >+ case CSSPropertyPaddingInline: >+ return getCSSPropertyValuesFor2SidesShorthand(paddingInlineShorthand()); >+#endif > #if ENABLE(CSS_SCROLL_SNAP) > case CSSPropertyScrollSnapMargin: >- return getCSSPropertyValuesForSidesShorthand(scrollSnapMarginShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(scrollSnapMarginShorthand()); > case CSSPropertyScrollSnapMarginBottom: > return zoomAdjustedPixelValueForLength(style.scrollSnapMarginBottom(), style); > case CSSPropertyScrollSnapMarginTop: >@@ -3920,7 +3959,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyinStyle(const RenderSty > case CSSPropertyScrollSnapMarginLeft: > return zoomAdjustedPixelValueForLength(style.scrollSnapMarginLeft(), style); > case CSSPropertyScrollPadding: >- return getCSSPropertyValuesForSidesShorthand(scrollPaddingShorthand()); >+ return getCSSPropertyValuesFor4SidesShorthand(scrollPaddingShorthand()); > case CSSPropertyScrollPaddingBottom: > return zoomAdjustedPixelValueForLength(style.scrollPaddingBottom(), style); > case CSSPropertyScrollPaddingTop: >@@ -4178,7 +4217,28 @@ RefPtr<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesForShorthandPro > return WTFMove(list); > } > >-RefPtr<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesForSidesShorthand(const StylePropertyShorthand& shorthand) >+RefPtr<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesFor2SidesShorthand(const StylePropertyShorthand& shorthand) >+{ >+ auto list = CSSValueList::createSpaceSeparated(); >+ >+ // Assume the properties are in the usual order start, end. >+ auto startValue = propertyValue(shorthand.properties()[0], DoNotUpdateLayout); >+ auto endValue = propertyValue(shorthand.properties()[1], DoNotUpdateLayout); >+ >+ // All 2 properties must be specified. >+ if (!startValue || !endValue) >+ return nullptr; >+ >+ bool showEnd = !compareCSSValuePtr(startValue, endValue); >+ >+ list->append(startValue.releaseNonNull()); >+ if (showEnd) >+ list->append(endValue.releaseNonNull()); >+ >+ return WTFMove(list); >+} >+ >+RefPtr<CSSValueList> ComputedStyleExtractor::getCSSPropertyValuesFor4SidesShorthand(const StylePropertyShorthand& shorthand) > { > auto list = CSSValueList::createSpaceSeparated(); > >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.h b/Source/WebCore/css/CSSComputedStyleDeclaration.h >index bdf343272a6aa41b76e31d2a19ff711772367f73..f04d440db9492971d2a2f9ffdc48fbcb8c8b13fb 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.h >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.h >@@ -92,7 +92,8 @@ private: > RefPtr<CSSPrimitiveValue> currentColorOrValidColor(const RenderStyle*, const Color&) const; > > RefPtr<CSSValueList> getCSSPropertyValuesForShorthandProperties(const StylePropertyShorthand&); >- RefPtr<CSSValueList> getCSSPropertyValuesForSidesShorthand(const StylePropertyShorthand&); >+ RefPtr<CSSValueList> getCSSPropertyValuesFor2SidesShorthand(const StylePropertyShorthand&); >+ RefPtr<CSSValueList> getCSSPropertyValuesFor4SidesShorthand(const StylePropertyShorthand&); > Ref<CSSValueList> getBackgroundShorthandValue(); > RefPtr<CSSValueList> getCSSPropertyValuesForGridShorthand(const StylePropertyShorthand&); > >diff --git a/Source/WebCore/css/CSSProperties.json b/Source/WebCore/css/CSSProperties.json >index 537dd70e58b7666e80058c5d99d4a43d95624810..9121fbd765afa761362164c38f709b90de4741cd 100644 >--- a/Source/WebCore/css/CSSProperties.json >+++ b/Source/WebCore/css/CSSProperties.json >@@ -1192,6 +1192,36 @@ > "url": "https://www.w3.org/TR/css3-background/#the-border-shorthands" > } > }, >+ "border-block": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-block-start-color", >+ "border-block-start-style", >+ "border-block-start-width", >+ "border-block-end-color", >+ "border-block-end-style", >+ "border-block-end-width" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-shorthands" >+ } >+ }, >+ "border-block-color": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-block-start-color", >+ "border-block-end-color" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-color" >+ } >+ }, > "border-block-end": { > "codegen-properties": { > "aliases": [ >@@ -1320,6 +1350,32 @@ > "url": "https://www.w3.org/TR/css-logical/#border-width" > } > }, >+ "border-block-style": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-block-start-style", >+ "border-block-end-style" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-style" >+ } >+ }, >+ "border-block-width": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-block-start-width", >+ "border-block-end-width" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-width" >+ } >+ }, > "border-bottom": { > "codegen-properties": { > "longhands": [ >@@ -1489,6 +1545,36 @@ > "url": "https://www.w3.org/TR/css3-background/#the-border-image-width" > } > }, >+ "border-inline": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-inline-start-color", >+ "border-inline-start-style", >+ "border-inline-start-width", >+ "border-inline-end-color", >+ "border-inline-end-style", >+ "border-inline-end-width" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-shorthands" >+ } >+ }, >+ "border-inline-color": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-inline-start-color", >+ "border-inline-end-color" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-color" >+ } >+ }, > "border-inline-end": { > "codegen-properties": { > "aliases": [ >@@ -1617,6 +1703,32 @@ > "url": "https://www.w3.org/TR/css-logical/#border-width" > } > }, >+ "border-inline-style": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-inline-start-style", >+ "border-inline-end-style" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-style" >+ } >+ }, >+ "border-inline-width": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "border-inline-start-width", >+ "border-inline-end-width" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#border-width" >+ } >+ }, > "border-left": { > "codegen-properties": { > "longhands": [ >@@ -2647,6 +2759,19 @@ > "url": "https://www.w3.org/TR/CSS22/box.html#propdef-margin" > } > }, >+ "margin-block": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "margin-block-start", >+ "margin-block-end" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#margin-properties" >+ } >+ }, > "margin-block-end": { > "codegen-properties": { > "aliases": [ >@@ -2681,6 +2806,19 @@ > "url": "https://www.w3.org/TR/CSS22/box.html#propdef-margin-bottom" > } > }, >+ "margin-inline": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "margin-inline-start", >+ "margin-inline-end" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#margin-properties" >+ } >+ }, > "margin-inline-end": { > "codegen-properties": { > "aliases": [ >@@ -3069,6 +3207,19 @@ > "url": "https://www.w3.org/TR/CSS22/box.html#propdef-padding" > } > }, >+ "padding-block": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "padding-block-start", >+ "padding-block-end" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#padding-properties" >+ } >+ }, > "padding-block-end": { > "codegen-properties": { > "aliases": [ >@@ -3103,6 +3254,19 @@ > "url": "https://www.w3.org/TR/CSS22/box.html#propdef-padding-bottom" > } > }, >+ "padding-inline": { >+ "codegen-properties": { >+ "enable-if": "ENABLE_CSS_LOGICAL", >+ "longhands": [ >+ "padding-inline-start", >+ "padding-inline-end" >+ ] >+ }, >+ "specification": { >+ "category": "css-logical-props", >+ "url": "https://www.w3.org/TR/css-logical/#padding-properties" >+ } >+ }, > "padding-inline-end": { > "codegen-properties": { > "aliases": [ >diff --git a/Source/WebCore/css/StyleProperties.cpp b/Source/WebCore/css/StyleProperties.cpp >index 345013961a16262ad7208b3beebb8f487bfe6b6a..cd90f90309e30aacc5115e881cf8dac8b3eb30d6 100644 >--- a/Source/WebCore/css/StyleProperties.cpp >+++ b/Source/WebCore/css/StyleProperties.cpp >@@ -157,10 +157,38 @@ String StyleProperties::getPropertyValue(CSSPropertyID propertyID) const > return getShorthandValue(borderBottomShorthand()); > case CSSPropertyBorderLeft: > return getShorthandValue(borderLeftShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderBlock: >+ return borderPropertyValue( >+ borderBlockWidthShorthand(), >+ borderBlockStyleShorthand(), >+ borderBlockColorShorthand(), >+ ReturnNullOnUncommonValues); >+ case CSSPropertyBorderBlockColor: >+ return get2Values(borderBlockColorShorthand()); >+ case CSSPropertyBorderBlockStyle: >+ return get2Values(borderBlockStyleShorthand()); >+ case CSSPropertyBorderBlockWidth: >+ return get2Values(borderBlockWidthShorthand()); >+#endif > case CSSPropertyBorderBlockStart: > return getShorthandValue(borderBlockStartShorthand()); > case CSSPropertyBorderBlockEnd: > return getShorthandValue(borderBlockEndShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderInline: >+ return borderPropertyValue( >+ borderInlineWidthShorthand(), >+ borderInlineStyleShorthand(), >+ borderInlineColorShorthand(), >+ ReturnNullOnUncommonValues); >+ case CSSPropertyBorderInlineColor: >+ return get2Values(borderInlineColorShorthand()); >+ case CSSPropertyBorderInlineStyle: >+ return get2Values(borderInlineStyleShorthand()); >+ case CSSPropertyBorderInlineWidth: >+ return get2Values(borderInlineWidthShorthand()); >+#endif > case CSSPropertyBorderInlineStart: > return getShorthandValue(borderInlineStartShorthand()); > case CSSPropertyBorderInlineEnd: >@@ -201,12 +229,24 @@ String StyleProperties::getPropertyValue(CSSPropertyID propertyID) const > return fontValue(); > case CSSPropertyMargin: > return get4Values(marginShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyMarginBlock: >+ return get2Values(marginBlockShorthand()); >+ case CSSPropertyMarginInline: >+ return get2Values(marginInlineShorthand()); >+#endif > case CSSPropertyWebkitMarginCollapse: > return getShorthandValue(webkitMarginCollapseShorthand()); > case CSSPropertyOverflow: > return getCommonValue(overflowShorthand()); > case CSSPropertyPadding: > return get4Values(paddingShorthand()); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyPaddingBlock: >+ return get2Values(paddingBlockShorthand()); >+ case CSSPropertyPaddingInline: >+ return get2Values(paddingInlineShorthand()); >+#endif > case CSSPropertyTransition: > return getLayeredShorthandValue(transitionShorthand()); > case CSSPropertyListStyle: >@@ -354,6 +394,46 @@ String StyleProperties::fontValue() const > return result.toString(); > } > >+String StyleProperties::get2Values(const StylePropertyShorthand& shorthand) const >+{ >+ // Assume the properties are in the usual order start, end. >+ int startValueIndex = findPropertyIndex(shorthand.properties()[0]); >+ int endValueIndex = findPropertyIndex(shorthand.properties()[1]); >+ >+ if (startValueIndex == -1 || endValueIndex == -1) >+ return String(); >+ >+ PropertyReference start = propertyAt(startValueIndex); >+ PropertyReference end = propertyAt(endValueIndex); >+ >+ // All 2 properties must be specified. >+ if (!start.value() || !end.value()) >+ return String(); >+ >+ if (start.isInherited() && end.isInherited()) >+ return getValueName(CSSValueInherit); >+ >+ if (start.value()->isInitialValue() || end.value()->isInitialValue()) { >+ if (start.value()->isInitialValue() && end.value()->isInitialValue() && !start.isImplicit()) { >+ // All components are "initial" and start is not implicit. >+ return getValueName(CSSValueInitial); >+ } >+ return String(); >+ } >+ if (start.isImportant() != end.isImportant()) >+ return String(); >+ >+ bool showEnd = !start.value()->equals(*end.value()); >+ >+ StringBuilder result; >+ result.append(start.value()->cssText()); >+ if (showEnd) { >+ result.append(' '); >+ result.append(end.value()->cssText()); >+ } >+ return result.toString(); >+} >+ > String StyleProperties::get4Values(const StylePropertyShorthand& shorthand) const > { > // Assume the properties are in the usual order top, right, bottom, left. >@@ -617,9 +697,13 @@ String StyleProperties::getAlignmentShorthandValue(const StylePropertyShorthand& > return value; > } > >-String StyleProperties::borderPropertyValue(CommonValueMode valueMode) const >+String StyleProperties::borderPropertyValue( >+ const StylePropertyShorthand& width, >+ const StylePropertyShorthand& style, >+ const StylePropertyShorthand& color, >+ CommonValueMode valueMode) const > { >- const StylePropertyShorthand properties[3] = { borderWidthShorthand(), borderStyleShorthand(), borderColorShorthand() }; >+ const StylePropertyShorthand properties[3] = { width, style, color }; > String commonValue; > StringBuilder result; > for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) { >@@ -645,6 +729,11 @@ String StyleProperties::borderPropertyValue(CommonValueMode valueMode) const > return result.isEmpty() ? String() : result.toString(); > } > >+String StyleProperties::borderPropertyValue(CommonValueMode valueMode) const >+{ >+ return borderPropertyValue(borderWidthShorthand(), borderStyleShorthand(), borderColorShorthand(), valueMode); >+} >+ > RefPtr<CSSValue> StyleProperties::getPropertyCSSValue(CSSPropertyID propertyID) const > { > return getPropertyCSSValueInternal(propertyID); >diff --git a/Source/WebCore/css/StyleProperties.h b/Source/WebCore/css/StyleProperties.h >index a183a9cca2c563e03834beab24ebc250d20543a8..f03f54124cb8d5c68a2fdfd3b43a3449f15a6266 100644 >--- a/Source/WebCore/css/StyleProperties.h >+++ b/Source/WebCore/css/StyleProperties.h >@@ -164,8 +164,14 @@ private: > String getCommonValue(const StylePropertyShorthand&) const; > String getAlignmentShorthandValue(const StylePropertyShorthand&) const; > enum CommonValueMode { OmitUncommonValues, ReturnNullOnUncommonValues }; >+ String borderPropertyValue( >+ const StylePropertyShorthand&, >+ const StylePropertyShorthand&, >+ const StylePropertyShorthand&, >+ CommonValueMode) const; > String borderPropertyValue(CommonValueMode) const; > String getLayeredShorthandValue(const StylePropertyShorthand&) const; >+ String get2Values(const StylePropertyShorthand&) const; > String get4Values(const StylePropertyShorthand&) const; > String borderSpacingValue(const StylePropertyShorthand&) const; > String fontValue() const; >diff --git a/Source/WebCore/css/parser/CSSPropertyParser.cpp b/Source/WebCore/css/parser/CSSPropertyParser.cpp >index 02d293cd2a13ed3b7681e80efc1245700d851aad..91e16cecbb8e8aa695b7ae5cb8d3e9426292344c 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParser.cpp >+++ b/Source/WebCore/css/parser/CSSPropertyParser.cpp >@@ -4895,12 +4895,8 @@ bool CSSPropertyParser::consumeFlex(bool important) > return true; > } > >-bool CSSPropertyParser::consumeBorder(bool important) >+bool CSSPropertyParser::consumeBorder(RefPtr<CSSValue>& width, RefPtr<CSSValue>& style, RefPtr<CSSValue>& color) > { >- RefPtr<CSSValue> width; >- RefPtr<CSSValue> style; >- RefPtr<CSSValue> color; >- > while (!width || !style || !color) { > if (!width) { > width = consumeLineWidth(m_range, m_context.mode, UnitlessQuirk::Forbid); >@@ -4930,10 +4926,23 @@ bool CSSPropertyParser::consumeBorder(bool important) > if (!color) > color = CSSValuePool::singleton().createImplicitInitialValue(); > >- addExpandedPropertyForValue(CSSPropertyBorderWidth, width.releaseNonNull(), important); >- addExpandedPropertyForValue(CSSPropertyBorderStyle, style.releaseNonNull(), important); >- addExpandedPropertyForValue(CSSPropertyBorderColor, color.releaseNonNull(), important); >- addExpandedPropertyForValue(CSSPropertyBorderImage, CSSValuePool::singleton().createImplicitInitialValue(), important); >+ return true; >+} >+ >+bool CSSPropertyParser::consume2Values(const StylePropertyShorthand& shorthand, bool important) >+{ >+ ASSERT(shorthand.length() == 2); >+ const CSSPropertyID* longhands = shorthand.properties(); >+ RefPtr<CSSValue> start = parseSingleValue(longhands[0], shorthand.id()); >+ if (!start) >+ return false; >+ >+ RefPtr<CSSValue> end = parseSingleValue(longhands[1], shorthand.id()); >+ bool endImplicit = !end; >+ if (!end) >+ end = start; >+ addProperty(longhands[0], shorthand.id(), start.releaseNonNull(), important); >+ addProperty(longhands[1], shorthand.id(), end.releaseNonNull(), important, endImplicit); > > return m_range.atEnd(); > } >@@ -5637,8 +5646,20 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID property, bool important) > return consumeShorthandGreedily(webkitTextDecorationShorthand(), important); > case CSSPropertyMargin: > return consume4Values(marginShorthand(), important); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyMarginBlock: >+ return consume2Values(marginBlockShorthand(), important); >+ case CSSPropertyMarginInline: >+ return consume2Values(marginInlineShorthand(), important); >+#endif > case CSSPropertyPadding: > return consume4Values(paddingShorthand(), important); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyPaddingBlock: >+ return consume2Values(paddingBlockShorthand(), important); >+ case CSSPropertyPaddingInline: >+ return consume2Values(paddingInlineShorthand(), important); >+#endif > #if ENABLE(CSS_SCROLL_SNAP) > case CSSPropertyScrollSnapMargin: > return consume4Values(scrollSnapMarginShorthand(), important); >@@ -5649,10 +5670,52 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID property, bool important) > return consumeShorthandGreedily(webkitTextEmphasisShorthand(), important); > case CSSPropertyOutline: > return consumeShorthandGreedily(outlineShorthand(), important); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderInline: { >+ RefPtr<CSSValue> width; >+ RefPtr<CSSValue> style; >+ RefPtr<CSSValue> color; >+ if (!consumeBorder(width, style, color)) >+ return false; >+ >+ addExpandedPropertyForValue(CSSPropertyBorderInlineWidth, width.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderInlineStyle, style.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderInlineColor, color.releaseNonNull(), important); >+ >+ return m_range.atEnd(); >+ } >+ case CSSPropertyBorderInlineColor: >+ return consume2Values(borderInlineColorShorthand(), important); >+ case CSSPropertyBorderInlineStyle: >+ return consume2Values(borderInlineStyleShorthand(), important); >+ case CSSPropertyBorderInlineWidth: >+ return consume2Values(borderInlineWidthShorthand(), important); >+#endif > case CSSPropertyBorderInlineStart: > return consumeShorthandGreedily(borderInlineStartShorthand(), important); > case CSSPropertyBorderInlineEnd: > return consumeShorthandGreedily(borderInlineEndShorthand(), important); >+#if ENABLE(CSS_LOGICAL) >+ case CSSPropertyBorderBlock: { >+ RefPtr<CSSValue> width; >+ RefPtr<CSSValue> style; >+ RefPtr<CSSValue> color; >+ if (!consumeBorder(width, style, color)) >+ return false; >+ >+ addExpandedPropertyForValue(CSSPropertyBorderBlockWidth, width.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderBlockStyle, style.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderBlockColor, color.releaseNonNull(), important); >+ >+ return m_range.atEnd(); >+ } >+ case CSSPropertyBorderBlockColor: >+ return consume2Values(borderBlockColorShorthand(), important); >+ case CSSPropertyBorderBlockStyle: >+ return consume2Values(borderBlockStyleShorthand(), important); >+ case CSSPropertyBorderBlockWidth: >+ return consume2Values(borderBlockWidthShorthand(), important); >+#endif > case CSSPropertyBorderBlockStart: > return consumeShorthandGreedily(borderBlockStartShorthand(), important); > case CSSPropertyBorderBlockEnd: >@@ -5703,8 +5766,20 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID property, bool important) > return consumeShorthandGreedily(borderBottomShorthand(), important); > case CSSPropertyBorderLeft: > return consumeShorthandGreedily(borderLeftShorthand(), important); >- case CSSPropertyBorder: >- return consumeBorder(important); >+ case CSSPropertyBorder: { >+ RefPtr<CSSValue> width; >+ RefPtr<CSSValue> style; >+ RefPtr<CSSValue> color; >+ if (!consumeBorder(width, style, color)) >+ return false; >+ >+ addExpandedPropertyForValue(CSSPropertyBorderWidth, width.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderStyle, style.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderColor, color.releaseNonNull(), important); >+ addExpandedPropertyForValue(CSSPropertyBorderImage, CSSValuePool::singleton().createImplicitInitialValue(), important); >+ >+ return m_range.atEnd(); >+ } > case CSSPropertyBorderImage: > return consumeBorderImage(property, important); > case CSSPropertyWebkitMaskPosition: >diff --git a/Source/WebCore/css/parser/CSSPropertyParser.h b/Source/WebCore/css/parser/CSSPropertyParser.h >index 2ed49322c613c9a23e7ae8fced2b5bbd3cbbadb2..b730e296c8d20d4cfc8c694e54fbd0b245a84b4c 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParser.h >+++ b/Source/WebCore/css/parser/CSSPropertyParser.h >@@ -62,10 +62,11 @@ private: > void addProperty(CSSPropertyID, CSSPropertyID, Ref<CSSValue>&&, bool important, bool implicit = false); > void addExpandedPropertyForValue(CSSPropertyID propId, Ref<CSSValue>&&, bool); > >- bool consumeBorder(bool important); >+ bool consumeBorder(RefPtr<CSSValue>&, RefPtr<CSSValue>&, RefPtr<CSSValue>&); > > bool parseShorthand(CSSPropertyID, bool important); > bool consumeShorthandGreedily(const StylePropertyShorthand&, bool important); >+ bool consume2Values(const StylePropertyShorthand&, bool important); > bool consume4Values(const StylePropertyShorthand&, bool important); > > // Legacy parsing allows <string>s for animation-name >diff --git a/Source/WebKit/Configurations/FeatureDefines.xcconfig b/Source/WebKit/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Source/WebKit/Configurations/FeatureDefines.xcconfig >+++ b/Source/WebKit/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig b/Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig >+++ b/Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/Source/cmake/WebKitFeatures.cmake b/Source/cmake/WebKitFeatures.cmake >index 55fdbd30a153d65891fb6e4a53ec0d5343e88aef..f737f15ae5a32b61aae6211231546fd5742f2810 100644 >--- a/Source/cmake/WebKitFeatures.cmake >+++ b/Source/cmake/WebKitFeatures.cmake >@@ -63,6 +63,123 @@ macro(WEBKIT_OPTION_DEPEND _name _depend) > list(APPEND _WEBKIT_AVAILABLE_OPTIONS_${_name}_DEPENDENCIES ${_depend}) > endmacro() > >+macro(_WEBKIT_OPTION_ENFORCE_DEPENDS _name) >+ foreach (_dependency ${_WEBKIT_AVAILABLE_OPTIONS_${_name}_DEPENDENCIES}) >+ if (NOT ${_dependency}) >+ message(STATUS "Disabling ${_name} since ${_dependency} is disabled.") >+ set(${_name} OFF) >+ set(_OPTION_CHANGED TRUE) >+ break () >+ endif () >+ endforeach () >+endmacro() >+ >+macro(_WEBKIT_OPTION_ENFORCE_ALL_DEPENDS) >+ set(_OPTION_CHANGED TRUE) >+ while (${_OPTION_CHANGED}) >+ set(_OPTION_CHANGED FALSE) >+ foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >+ if (${_name}) >+ _WEBKIT_OPTION_ENFORCE_DEPENDS(${_name}) >+ endif () >+ endforeach () >+ endwhile () >+endmacro() >+ >+macro(_WEBKIT_OPTION_ENFORCE_CONFLICTS _name) >+ foreach (_conflict ${_WEBKIT_AVAILABLE_OPTIONS_${_name}_CONFLICTS}) >+ if (${_conflict}) >+ message(FATAL_ERROR "${_name} conflicts with ${_conflict}. You must disable one or the other.") >+ endif () >+ endforeach () >+endmacro() >+ >+macro(_WEBKIT_OPTION_ENFORCE_ALL_CONFLICTS) >+ foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >+ if (${_name}) >+ _WEBKIT_OPTION_ENFORCE_CONFLICTS(${_name}) >+ endif () >+ endforeach () >+endmacro() >+ >+macro(WEBKIT_OPTION_END) >+ set(_SETTING_WEBKIT_OPTIONS FALSE) >+ >+ list(SORT _WEBKIT_AVAILABLE_OPTIONS) >+ set(_MAX_FEATURE_LENGTH 0) >+ foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >+ string(LENGTH ${_name} _name_length) >+ if (_name_length GREATER _MAX_FEATURE_LENGTH) >+ set(_MAX_FEATURE_LENGTH ${_name_length}) >+ endif () >+ >+ option(${_name} "${_WEBKIT_AVAILABLE_OPTIONS_DESCRIPTION_${_name}}" ${_WEBKIT_AVAILABLE_OPTIONS_INITIAL_VALUE_${_name}}) >+ if (NOT ${_WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name}}) >+ mark_as_advanced(FORCE ${_name}) >+ endif () >+ endforeach () >+ >+ # Run through every possible depends to make sure we have disabled anything >+ # that could cause an unnecessary conflict before processing conflicts. >+ _WEBKIT_OPTION_ENFORCE_ALL_DEPENDS() >+ _WEBKIT_OPTION_ENFORCE_ALL_CONFLICTS() >+ >+ foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >+ if (${_name}) >+ list(APPEND FEATURE_DEFINES ${_name}) >+ set(FEATURE_DEFINES_WITH_SPACE_SEPARATOR "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR} ${_name}") >+ endif () >+ endforeach () >+endmacro() >+ >+macro(PRINT_WEBKIT_OPTIONS) >+ message(STATUS "Enabled features:") >+ >+ set(_should_print_dots ON) >+ foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >+ if (${_WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name}}) >+ string(LENGTH ${_name} _name_length) >+ set(_message " ${_name} ") >+ >+ # Print dots on every other row, for readability. >+ foreach (IGNORE RANGE ${_name_length} ${_MAX_FEATURE_LENGTH}) >+ if (${_should_print_dots}) >+ set(_message "${_message}.") >+ else () >+ set(_message "${_message} ") >+ endif () >+ endforeach () >+ >+ set(_should_print_dots (NOT ${_should_print_dots})) >+ >+ set(_message "${_message} ${${_name}}") >+ message(STATUS "${_message}") >+ endif () >+ endforeach () >+endmacro() >+ >+set(_WEBKIT_CONFIG_FILE_VARIABLES "") >+ >+macro(EXPOSE_VARIABLE_TO_BUILD _variable_name) >+ list(APPEND _WEBKIT_CONFIG_FILE_VARIABLES ${_variable_name}) >+endmacro() >+ >+macro(SET_AND_EXPOSE_TO_BUILD _variable_name) >+ # It's important to handle the case where the value isn't passed, because often >+ # during configuration an empty variable is the result of a failed package search. >+ if (${ARGC} GREATER 1) >+ set(_variable_value ${ARGV1}) >+ else () >+ set(_variable_value OFF) >+ endif () >+ >+ set(${_variable_name} ${_variable_value}) >+ EXPOSE_VARIABLE_TO_BUILD(${_variable_name}) >+endmacro() >+ >+option(ENABLE_EXPERIMENTAL_FEATURES "Enable experimental features" OFF) >+SET_AND_EXPOSE_TO_BUILD(ENABLE_EXPERIMENTAL_FEATURES ${ENABLE_EXPERIMENTAL_FEATURES}) >+ > macro(WEBKIT_OPTION_BEGIN) > set(_SETTING_WEBKIT_OPTIONS TRUE) > >@@ -100,6 +217,7 @@ macro(WEBKIT_OPTION_BEGIN) > WEBKIT_OPTION_DEFINE(ENABLE_CSS_DEVICE_ADAPTATION "Toggle CSS Device Adaptation support" PRIVATE OFF) > WEBKIT_OPTION_DEFINE(ENABLE_CSS_IMAGE_ORIENTATION "Toggle CSS image-orientation support" PRIVATE OFF) > WEBKIT_OPTION_DEFINE(ENABLE_CSS_IMAGE_RESOLUTION "Toggle CSS image-resolution support" PRIVATE OFF) >+ WEBKIT_OPTION_DEFINE(ENABLE_CSS_LOGICAL "Toggle CSS Logical Properties and Values support" PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) > WEBKIT_OPTION_DEFINE(ENABLE_CSS_SCROLL_SNAP "Toggle CSS snap scroll support" PRIVATE OFF) > WEBKIT_OPTION_DEFINE(ENABLE_CSS_SELECTORS_LEVEL4 "Toggle CSS Selectors Level 4 support" PRIVATE ON) > WEBKIT_OPTION_DEFINE(ENABLE_CURSOR_VISIBILITY "Toggle cursor visibility support" PRIVATE OFF) >@@ -211,120 +329,6 @@ macro(WEBKIT_OPTION_BEGIN) > WEBKIT_OPTION_DEPEND(ENABLE_SUBTLE_CRYPTO ENABLE_WEB_CRYPTO) > endmacro() > >-macro(_WEBKIT_OPTION_ENFORCE_DEPENDS _name) >- foreach (_dependency ${_WEBKIT_AVAILABLE_OPTIONS_${_name}_DEPENDENCIES}) >- if (NOT ${_dependency}) >- message(STATUS "Disabling ${_name} since ${_dependency} is disabled.") >- set(${_name} OFF) >- set(_OPTION_CHANGED TRUE) >- break () >- endif () >- endforeach () >-endmacro() >- >-macro(_WEBKIT_OPTION_ENFORCE_ALL_DEPENDS) >- set(_OPTION_CHANGED TRUE) >- while (${_OPTION_CHANGED}) >- set(_OPTION_CHANGED FALSE) >- foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >- if (${_name}) >- _WEBKIT_OPTION_ENFORCE_DEPENDS(${_name}) >- endif () >- endforeach () >- endwhile () >-endmacro() >- >-macro(_WEBKIT_OPTION_ENFORCE_CONFLICTS _name) >- foreach (_conflict ${_WEBKIT_AVAILABLE_OPTIONS_${_name}_CONFLICTS}) >- if (${_conflict}) >- message(FATAL_ERROR "${_name} conflicts with ${_conflict}. You must disable one or the other.") >- endif () >- endforeach () >-endmacro() >- >-macro(_WEBKIT_OPTION_ENFORCE_ALL_CONFLICTS) >- foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >- if (${_name}) >- _WEBKIT_OPTION_ENFORCE_CONFLICTS(${_name}) >- endif () >- endforeach () >-endmacro() >- >-macro(WEBKIT_OPTION_END) >- set(_SETTING_WEBKIT_OPTIONS FALSE) >- >- list(SORT _WEBKIT_AVAILABLE_OPTIONS) >- set(_MAX_FEATURE_LENGTH 0) >- foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >- string(LENGTH ${_name} _name_length) >- if (_name_length GREATER _MAX_FEATURE_LENGTH) >- set(_MAX_FEATURE_LENGTH ${_name_length}) >- endif () >- >- option(${_name} "${_WEBKIT_AVAILABLE_OPTIONS_DESCRIPTION_${_name}}" ${_WEBKIT_AVAILABLE_OPTIONS_INITIAL_VALUE_${_name}}) >- if (NOT ${_WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name}}) >- mark_as_advanced(FORCE ${_name}) >- endif () >- endforeach () >- >- # Run through every possible depends to make sure we have disabled anything >- # that could cause an unnecessary conflict before processing conflicts. >- _WEBKIT_OPTION_ENFORCE_ALL_DEPENDS() >- _WEBKIT_OPTION_ENFORCE_ALL_CONFLICTS() >- >- foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >- if (${_name}) >- list(APPEND FEATURE_DEFINES ${_name}) >- set(FEATURE_DEFINES_WITH_SPACE_SEPARATOR "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR} ${_name}") >- endif () >- endforeach () >-endmacro() >- >-macro(PRINT_WEBKIT_OPTIONS) >- message(STATUS "Enabled features:") >- >- set(_should_print_dots ON) >- foreach (_name ${_WEBKIT_AVAILABLE_OPTIONS}) >- if (${_WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name}}) >- string(LENGTH ${_name} _name_length) >- set(_message " ${_name} ") >- >- # Print dots on every other row, for readability. >- foreach (IGNORE RANGE ${_name_length} ${_MAX_FEATURE_LENGTH}) >- if (${_should_print_dots}) >- set(_message "${_message}.") >- else () >- set(_message "${_message} ") >- endif () >- endforeach () >- >- set(_should_print_dots (NOT ${_should_print_dots})) >- >- set(_message "${_message} ${${_name}}") >- message(STATUS "${_message}") >- endif () >- endforeach () >-endmacro() >- >-set(_WEBKIT_CONFIG_FILE_VARIABLES "") >- >-macro(EXPOSE_VARIABLE_TO_BUILD _variable_name) >- list(APPEND _WEBKIT_CONFIG_FILE_VARIABLES ${_variable_name}) >-endmacro() >- >-macro(SET_AND_EXPOSE_TO_BUILD _variable_name) >- # It's important to handle the case where the value isn't passed, because often >- # during configuration an empty variable is the result of a failed package search. >- if (${ARGC} GREATER 1) >- set(_variable_value ${ARGV1}) >- else () >- set(_variable_value OFF) >- endif () >- >- set(${_variable_name} ${_variable_value}) >- EXPOSE_VARIABLE_TO_BUILD(${_variable_name}) >-endmacro() >- > macro(_ADD_CONFIGURATION_LINE_TO_HEADER_STRING _string _variable_name _output_variable_name) > if (${${_variable_name}}) > set(${_string} "${_file_contents}#define ${_output_variable_name} 1\n") >@@ -379,6 +383,3 @@ macro(WEBKIT_CHECK_HAVE_STRUCT _variable _struct _member _header) > check_struct_has_member(${_struct} ${_member} ${_header} ${_variable}_value) > SET_AND_EXPOSE_TO_BUILD(${_variable} ${${_variable}_value}) > endmacro() >- >-option(ENABLE_EXPERIMENTAL_FEATURES "Enable experimental features" OFF) >-SET_AND_EXPOSE_TO_BUILD(ENABLE_EXPERIMENTAL_FEATURES ${ENABLE_EXPERIMENTAL_FEATURES}) >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 3bb19b87fa2821a344568ffedc2095932c087c47..868826abed089daab4b3f92669481187e39c3c19 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,15 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Scripts/webkitperl/FeatureList.pm: >+ * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: >+ > 2018-08-23 Jonathan Bedard <jbedard@apple.com> > > API tests should output json results >diff --git a/Tools/Scripts/webkitperl/FeatureList.pm b/Tools/Scripts/webkitperl/FeatureList.pm >index 6c9060d020db27cc47e4d6ebc2080a5c7b1c8490..f2e2989d41b29f410c076fbc64db7a4e88155684 100644 >--- a/Tools/Scripts/webkitperl/FeatureList.pm >+++ b/Tools/Scripts/webkitperl/FeatureList.pm >@@ -61,6 +61,7 @@ my ( > $cssImageOrientationSupport, > $cssImageResolutionSupport, > $cssImageSetSupport, >+ $cssLogicalSupport, > $cssShapesSupport, > $customElementsSupport, > $customSchemeHandlerSupport, >@@ -172,6 +173,9 @@ my @features = ( > { option => "css-image-set", desc => "Toggle CSS image-set support", > define => "ENABLE_CSS_IMAGE_SET", value => \$cssImageSetSupport }, > >+ { option => "css-image-set", desc => "Toggle CSS Logical Properties and Values support", >+ define => "ENABLE_CSS_LOGICAL", value => \$cssLogicalSupport }, >+ > { option => "css-shapes", desc => "Toggle CSS Shapes support", > define => "ENABLE_CSS_SHAPES", value => \$cssShapesSupport }, > >diff --git a/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig b/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig >index 36cd38af572b5c532610646c4779a2eecf3cbd3f..74a495e13001adb5360b644a0e9258f0d6f03d6f 100644 >--- a/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig >+++ b/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig >@@ -88,6 +88,8 @@ ENABLE_CSS_IMAGE_ORIENTATION = ; > > ENABLE_CSS_IMAGE_RESOLUTION = ; > >+ENABLE_CSS_LOGICAL = ENABLE_EXPERIMENTAL_FEATURES; >+ > ENABLE_CSS_SCROLL_SNAP = ENABLE_CSS_SCROLL_SNAP; > > ENABLE_CSS_SELECTORS_LEVEL4 = ENABLE_CSS_SELECTORS_LEVEL4; >@@ -376,4 +378,4 @@ ENABLE_WIRELESS_PLAYBACK_TARGET = ENABLE_WIRELESS_PLAYBACK_TARGET; > > ENABLE_XSLT = ENABLE_XSLT; > >-FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >+FEATURE_DEFINES = $(ENABLE_3D_TRANSFORMS) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_APPLE_PAY) $(ENABLE_APPLE_PAY_SESSION_V3) $(ENABLE_APPLE_PAY_SESSION_V4) $(ENABLE_APPLICATION_MANIFEST) $(ENABLE_ATTACHMENT_ELEMENT) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS_ANIMATIONS_LEVEL_2) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_LOGICAL) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_TRAILING_WORD) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATA_INTERACTION) $(ENABLE_DATACUE_VALUE) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DRAG_SUPPORT) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_EXPERIMENTAL_FEATURES) $(ENABLE_FAST_JIT_PERMISSIONS) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FTL_JIT) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(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_INTERSECTION_OBSERVER) $(ENABLE_INTL) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_JIT) $(ENABLE_JS_ASYNC_ITERATION) $(ENABLE_KEYBOARD_CODE_ATTRIBUTE) $(ENABLE_KEYBOARD_KEY_ATTRIBUTE) $(ENABLE_LAYOUT_FORMATTING_CONTEXT) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER) $(ENABLE_LEGACY_ENCRYPTED_MEDIA) $(ENABLE_LETTERPRESS) $(ENABLE_MAC_GESTURE_EVENTS) $(ENABLE_MAC_VIDEO_TOOLBOX) $(ENABLE_MATHML) $(ENABLE_MEDIA_CAPTURE) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SESSION) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_MEDIA_STREAM) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_STANDALONE) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAYMENT_REQUEST) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RESOURCE_USAGE) $(ENABLE_RUBBER_BANDING) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_SERVICE_WORKER) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_STREAMS_API) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_USER_MESSAGE_HANDLERS) $(ENABLE_USERSELECT_ALL) $(ENABLE_VARIATION_FONTS) $(ENABLE_VIDEO) $(ENABLE_VIDEO_PRESENTATION_MODE) $(ENABLE_VIDEO_TRACK) $(ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_AUTHN) $(ENABLE_WEB_RTC) $(ENABLE_WEBASSEMBLY) $(ENABLE_WEBASSEMBLY_STREAMING_API) $(ENABLE_WEBGL) $(ENABLE_WEBGL2) $(ENABLE_WEBGPU) $(ENABLE_WIRELESS_PLAYBACK_TARGET) $(ENABLE_XSLT); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 34775758fdf95e90e34d01ae2cee03dffa5fc56d..fec93735a7eb81d563cda606ccb7a30fed7e0f21 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,18 @@ >+2018-08-26 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ The tests are skipped in platforms where the flag is not enabled. >+ >+ * platform/ios-simulator/TestExpectations: >+ * platform/mac-wk2/TestExpectations: >+ * platform/mac/TestExpectations: >+ > 2018-08-23 Andy Estes <aestes@apple.com> > > [Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index a927bc968fb726b01ddc658465521fb717a73e6a..6b4952ad0138ea01ed3f32bdcc4ddfb461e01487 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,44 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ The test changes are imported from the WPT test suite for CSS Logical >+ Properties and Values spec. >+ >+ The tests still have some failures because sideways writing modes have >+ not been implemented yet. >+ >+ * web-platform-tests/css/css-logical/logical-box-border-color-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-border-color.html: >+ * web-platform-tests/css/css-logical/logical-box-border-shorthands-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-border-shorthands.html: >+ * web-platform-tests/css/css-logical/logical-box-border-style-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-border-style.html: >+ * web-platform-tests/css/css-logical/logical-box-border-width-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-border-width.html: >+ * web-platform-tests/css/css-logical/logical-box-inset-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-inset.html: >+ * web-platform-tests/css/css-logical/logical-box-margin-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-margin.html: >+ * web-platform-tests/css/css-logical/logical-box-padding-expected.txt: >+ * web-platform-tests/css/css-logical/logical-box-padding.html: >+ * web-platform-tests/css/css-logical/logical-box-size.html: >+ * web-platform-tests/css/css-logical/resources/test-box-properties.js: >+ (export.createBoxPropertyGroup): >+ (export.createSizingPropertyGroup): >+ (export.runTests.set test): >+ (export.runTests): >+ * web-platform-tests/css/css-logical/resources/test-shared.js: Added. >+ (export.testCSSValues): >+ (export.testComputedValues): >+ (export.makeDeclaration): >+ * web-platform-tests/css/css-logical/resources/w3c-import.log: >+ > 2018-08-23 Aditya Keerthi <akeerthi@apple.com> > > [iOS] Support the inputmode attribute on contenteditable elements >diff --git a/LayoutTests/fast/css/style-enumerate-properties.html b/LayoutTests/fast/css/style-enumerate-properties.html >index 703d81e5ada34f567df70302f788f8af6e93a687..3555a5c8f3277c2a510b77f8d8ce5c43beed8043 100644 >--- a/LayoutTests/fast/css/style-enumerate-properties.html >+++ b/LayoutTests/fast/css/style-enumerate-properties.html >@@ -40,7 +40,7 @@ > testFailed("Invalid CSS-mapped property order: '" + p + "' after '" + previous + "'"); > break; > } >- if (++cssPropertyCount <= 119) >+ if (++cssPropertyCount <= 127) > previous = p; > else { > if (seenFilter) >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color-expected.txt >index 55ebf1ed217423d1b382be9cdf75bbf17d97960e..a19384a37a8bdd0cabca5500690dd413aa973b37 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical border-*-color properties are supported. >+PASS Test that border-inline-color shorthand sets longhands and serializes correctly. >+PASS Test that border-block-color shorthand sets longhands and serializes correctly. >+PASS Test that border-color shorthand sets longhands and serializes correctly. > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-color expected "rgb(1, 1, 1)" but got "rgb(4, 4, 4)" >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" > FAIL Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-color' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-color expected "rgb(1, 1, 1)" but got "rgb(4, 4, 4)" > FAIL Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-color', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-color expected "rgb(1, 1, 1)" but got "rgb(4, 4, 4)" > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-color expected "rgb(1, 1, 1)" but got "rgb(3, 3, 3)" >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" > FAIL Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-color' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', border-left-color expected "rgb(1, 1, 1)" but got "rgb(5, 5, 5)" > FAIL Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-color', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', border-left-color expected "rgb(1, 1, 1)" but got "rgb(5, 5, 5)" > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-color expected "rgb(1, 1, 1)" but got "rgb(4, 4, 4)" >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" > FAIL Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-color' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', border-left-color expected "rgb(1, 1, 1)" but got "rgb(5, 5, 5)" > FAIL Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-color', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', border-left-color expected "rgb(1, 1, 1)" but got "rgb(5, 5, 5)" > PASS Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+PASS Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical border-*-color properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-color expected "rgb(1, 1, 1)" but got "rgb(3, 3, 3)" >-FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-inline-start-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" >+FAIL Test that border-*-color shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-color expected "rgb(1, 1, 1)" but got "rgb(0, 0, 0)" > FAIL Test that border-*-color properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-color' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-color expected "rgb(1, 1, 1)" but got "rgb(3, 3, 3)" > FAIL Test that border-*-color properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-color', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-color expected "rgb(1, 1, 1)" but got "rgb(3, 3, 3)" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html >index c279ef4cb2aaf2b9ea24ac60801ece5222716c66..b33528d9cd16b6de169cbd03e98b867403f090a6 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html >@@ -9,7 +9,7 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("border-*-color", {type: "color"})); > </script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands-expected.txt >index f83ff576b73264ddb7694f5b178341456a304168..00beeb94084822ed8ee223e588995792ad348fb2 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical border-* properties are supported. >+PASS Test that border-inline shorthand sets longhands and serializes correctly. >+PASS Test that border-block shorthand sets longhands and serializes correctly. >+PASS Test that border shorthand sets longhands and serializes correctly. > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom expected "1px solid rgb(1, 1, 1)" but got "4px double rgb(4, 4, 4)" >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" > FAIL Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end expected "1px solid rgb(1, 1, 1)" but got "4px double rgb(4, 4, 4)" > FAIL Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end expected "1px solid rgb(1, 1, 1)" but got "4px double rgb(4, 4, 4)" > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top expected "1px solid rgb(1, 1, 1)" but got "3px dotted rgb(3, 3, 3)" >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" > FAIL Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', border-left expected "1px solid rgb(1, 1, 1)" but got "5px groove rgb(5, 5, 5)" > FAIL Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', border-left expected "1px solid rgb(1, 1, 1)" but got "5px groove rgb(5, 5, 5)" > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom expected "1px solid rgb(1, 1, 1)" but got "4px double rgb(4, 4, 4)" >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" > FAIL Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', border-left expected "1px solid rgb(1, 1, 1)" but got "5px groove rgb(5, 5, 5)" > FAIL Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', border-left expected "1px solid rgb(1, 1, 1)" but got "5px groove rgb(5, 5, 5)" > PASS Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+PASS Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical border-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top expected "1px solid rgb(1, 1, 1)" but got "3px dotted rgb(3, 3, 3)" >-FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-inline-start expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" >+FAIL Test that border-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top expected "1px solid rgb(1, 1, 1)" but got "0px none rgb(0, 0, 0)" > FAIL Test that border-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start expected "1px solid rgb(1, 1, 1)" but got "3px dotted rgb(3, 3, 3)" > FAIL Test that border-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start expected "1px solid rgb(1, 1, 1)" but got "3px dotted rgb(3, 3, 3)" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html >index 497d9f4867f229f3bcb030f017a78ce49cad9155..d05d864f59261bd1dd0ff2cbd9278a8535a5910e 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html >@@ -9,7 +9,7 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("border-*", {type: ["length", "border-style", "color"]})); > </script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style-expected.txt >index 0406950e2637b62d1629541085f48d78067bd7ec..9e216e067a8103822d43691442e5a99a17c7e243 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical border-*-style properties are supported. >+PASS Test that border-inline-style shorthand sets longhands and serializes correctly. >+PASS Test that border-block-style shorthand sets longhands and serializes correctly. >+PASS Test that border-style shorthand sets longhands and serializes correctly. > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-style expected "solid" but got "double" >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-inline-start-style expected "solid" but got "none" >+FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-style expected "solid" but got "none" > FAIL Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-style' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-style expected "solid" but got "double" > FAIL Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-style', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-style expected "solid" but got "double" > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-style expected "solid" but got "dotted" >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-inline-start-style expected "solid" but got "none" >+FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-style expected "solid" but got "none" > FAIL Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-style' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', border-left-style expected "solid" but got "groove" > FAIL Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-style', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', border-left-style expected "solid" but got "groove" > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-style expected "solid" but got "double" >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-inline-start-style expected "solid" but got "none" >+FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-style expected "solid" but got "none" > FAIL Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-style' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', border-left-style expected "solid" but got "groove" > FAIL Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-style', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', border-left-style expected "solid" but got "groove" > PASS Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', border-inline-start-style expected "solid" but got "none" >+PASS Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical border-*-style properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-style expected "solid" but got "dotted" >-FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-inline-start-style expected "solid" but got "none" >+FAIL Test that border-*-style shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-style expected "solid" but got "none" > FAIL Test that border-*-style properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-style' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-style expected "solid" but got "dotted" > FAIL Test that border-*-style properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-style', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-style expected "solid" but got "dotted" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html >index 4954bac3f0b3e1e3ca10db4f29a9dc2b8a2087ae..448499ddaa47a06bb914ae0fea838065cbf88ead 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html >@@ -9,7 +9,7 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("border-*-style", {type: "border-style"})); > </script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width-expected.txt >index b4a7bb18a9e1d8d5a8e9264e21cfcab04cd34ab0..52a3b8021428824d932b7ffd9bf1e465e234e563 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical border-*-width properties are supported. >+PASS Test that border-inline-width shorthand sets longhands and serializes correctly. >+PASS Test that border-block-width shorthand sets longhands and serializes correctly. >+PASS Test that border-width shorthand sets longhands and serializes correctly. > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-width expected "1px" but got "4px" >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-inline-start-width expected "1px" but got "3px" >+FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', border-bottom-width expected "1px" but got "3px" > FAIL Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-width' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-width expected "1px" but got "4px" > FAIL Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'border-inline-start-width', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', border-block-end-width expected "1px" but got "4px" > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-width expected "1px" but got "3px" >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-inline-start-width expected "1px" but got "3px" >+FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', border-top-width expected "1px" but got "3px" > FAIL Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-width' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', border-left-width expected "1px" but got "5px" > FAIL Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'border-inline-start-width', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', border-left-width expected "1px" but got "5px" > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-width expected "1px" but got "4px" >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-inline-start-width expected "1px" but got "3px" >+FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', border-bottom-width expected "1px" but got "3px" > FAIL Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-width' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', border-left-width expected "1px" but got "5px" > FAIL Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'border-inline-start-width', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', border-left-width expected "1px" but got "5px" > PASS Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', border-inline-start-width expected "1px" but got "3px" >+PASS Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical border-*-width properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-width expected "1px" but got "3px" >-FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-inline-start-width expected "1px" but got "3px" >+FAIL Test that border-*-width shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', border-top-width expected "1px" but got "3px" > FAIL Test that border-*-width properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-width' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-width expected "1px" but got "3px" > FAIL Test that border-*-width properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'border-inline-start-width', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', border-block-start-width expected "1px" but got "3px" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html >index 7396ce745b9fa58857580485c92e8f5c79757cd4..d7cac485b54c3ab479d4f9ff66aff89e10c76468 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html >@@ -9,8 +9,8 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("border-*-width", { > type: "length", > prerequisites: {"border-*-style": "solid"}, >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset-expected.txt >index 2172523855e08ddd12d09bf04ec9a28baae451e1..709eab420d40b6cfcf04a32be16f019a3d2d520e 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset-expected.txt >@@ -1,5 +1,8 @@ > > FAIL Test that logical inset-* properties are supported. assert_equals: logical properties in inline style, inset-inline-start expected "1px" but got "" >+FAIL Test that inset-inline shorthand sets longhands and serializes correctly. assert_equals: shorthand in inline style, inset-inline expected "1px 2px" but got "" >+FAIL Test that inset-block shorthand sets longhands and serializes correctly. assert_equals: shorthand in inline style, inset-block expected "1px 2px" but got "" >+FAIL Test that inset shorthand sets longhands and serializes correctly. assert_equals: shorthand in inline style, inset expected "1px 2px 3px 4px" but got "" > FAIL Test that logical inset-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', inset-inline-start expected "1px" but got "" > FAIL Test that inset-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', inset-inline-start expected "1px" but got "" > FAIL Test that inset-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: 'inset-inline-start' last on single declaration, 'writing-mode: horizontal-tb; direction: ltr; ', left expected "5px" but got "1px" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html >index 005a269276f0ad762d4bffbf0a677c493a2d134e..8587d79ed917d886e33a5f4d11916fd8294b4df7 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html >@@ -9,8 +9,8 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("inset-*", { > type: "length", > prerequisites: {"position": "relative"}, >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin-expected.txt >index 2c95e7413b057b63712997c5598dd06cc922431c..297fd24b55d42fd0314ca9c30883f1f498457c79 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical margin-* properties are supported. >+PASS Test that margin-inline shorthand sets longhands and serializes correctly. >+PASS Test that margin-block shorthand sets longhands and serializes correctly. >+PASS Test that margin shorthand sets longhands and serializes correctly. > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', margin-bottom expected "1px" but got "4px" >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', margin-inline-start expected "1px" but got "0px" >+FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', margin-bottom expected "1px" but got "0px" > FAIL Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'margin-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', margin-block-end expected "1px" but got "4px" > FAIL Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'margin-inline-start', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', margin-block-end expected "1px" but got "4px" > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', margin-top expected "1px" but got "3px" >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', margin-inline-start expected "1px" but got "0px" >+FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', margin-top expected "1px" but got "0px" > FAIL Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'margin-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', margin-left expected "1px" but got "5px" > FAIL Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'margin-inline-start', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', margin-left expected "1px" but got "5px" > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', margin-bottom expected "1px" but got "4px" >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', margin-inline-start expected "1px" but got "0px" >+FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', margin-bottom expected "1px" but got "0px" > FAIL Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'margin-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', margin-left expected "1px" but got "5px" > FAIL Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'margin-inline-start', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', margin-left expected "1px" but got "5px" > PASS Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', margin-inline-start expected "1px" but got "0px" >+PASS Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical margin-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', margin-top expected "1px" but got "3px" >-FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', margin-inline-start expected "1px" but got "0px" >+FAIL Test that margin-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', margin-top expected "1px" but got "0px" > FAIL Test that margin-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'margin-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', margin-block-start expected "1px" but got "3px" > FAIL Test that margin-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'margin-inline-start', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', margin-block-start expected "1px" but got "3px" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html >index 5fcd5c38ed02f5d2db06db33677194d3775568dc..86240f96a6e400ca43dfa35aade47cee2a84dd1d 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html >@@ -9,7 +9,7 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("margin-*", {type: "length"})); > </script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding-expected.txt >index 64760ec7ddd7cd1b0e3b9819b9ea4dfa5ca8194d..c1c7c75181ee973e914cc06a15234768f023d2d5 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding-expected.txt >@@ -1,43 +1,46 @@ > > PASS Test that logical padding-* properties are supported. >+PASS Test that padding-inline shorthand sets longhands and serializes correctly. >+PASS Test that padding-block shorthand sets longhands and serializes correctly. >+PASS Test that padding shorthand sets longhands and serializes correctly. > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: ltr; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: ltr; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: ltr; '. > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: horizontal-tb; direction: rtl; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: horizontal-tb; direction: rtl; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: horizontal-tb; direction: rtl; '. > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: rtl; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: rtl; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: rtl; '. > FAIL Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', padding-bottom expected "1px" but got "4px" >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', padding-inline-start expected "1px" but got "0px" >+FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: rtl; ', padding-bottom expected "1px" but got "0px" > FAIL Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'padding-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: rtl; ', padding-block-end expected "1px" but got "4px" > FAIL Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: rtl; '. assert_equals: 'padding-inline-start', two declarations, 'writing-mode: sideways-rl; direction: rtl; ', padding-block-end expected "1px" but got "4px" > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: vertical-rl; direction: ltr; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-rl; direction: ltr; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-rl; direction: ltr; '. > FAIL Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', padding-top expected "1px" but got "3px" >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', padding-inline-start expected "1px" but got "0px" >+FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-rl; direction: ltr; ', padding-top expected "1px" but got "0px" > FAIL Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'padding-inline-start' last on single declaration, 'writing-mode: sideways-rl; direction: ltr; ', padding-left expected "1px" but got "5px" > FAIL Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-rl; direction: ltr; '. assert_equals: 'padding-inline-start', two declarations, 'writing-mode: sideways-rl; direction: ltr; ', padding-left expected "1px" but got "5px" > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: rtl; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: rtl; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: rtl; '. > FAIL Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', padding-bottom expected "1px" but got "4px" >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', padding-inline-start expected "1px" but got "0px" >+FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: ltr; ', padding-bottom expected "1px" but got "0px" > FAIL Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'padding-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: ltr; ', padding-left expected "1px" but got "5px" > FAIL Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: ltr; '. assert_equals: 'padding-inline-start', two declarations, 'writing-mode: sideways-lr; direction: ltr; ', padding-left expected "1px" but got "5px" > PASS Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: vertical-lr; direction: ltr; '. >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: vertical-lr; direction: ltr; ', padding-inline-start expected "1px" but got "0px" >+PASS Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > PASS Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: vertical-lr; direction: ltr; '. > FAIL Test that logical padding-* properties share computed values with their physical associates, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: logical properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', padding-top expected "1px" but got "3px" >-FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', padding-inline-start expected "1px" but got "0px" >+FAIL Test that padding-* shorthands set the computed value of both logical and physical longhands, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: shorthand properties on one declaration, writing mode properties on another, 'writing-mode: sideways-lr; direction: rtl; ', padding-top expected "1px" but got "0px" > FAIL Test that padding-* properties honor order of appearance when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'padding-inline-start' last on single declaration, 'writing-mode: sideways-lr; direction: rtl; ', padding-block-start expected "1px" but got "3px" > FAIL Test that padding-* properties honor selector specificty when both logical and physical associates are declared, with 'writing-mode: sideways-lr; direction: rtl; '. assert_equals: 'padding-inline-start', two declarations, 'writing-mode: sideways-lr; direction: rtl; ', padding-block-start expected "1px" but got "3px" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html >index b3f6b6fd6dcf6026e117515779b0c04b3e5d9d32..f96f02757c3ba6e07c8059a0fbe3b97b033e1926 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html >@@ -9,7 +9,7 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createBoxPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createBoxPropertyGroup("padding-*", {type: "length"})); > </script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-size.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-size.html >index 90d8e4405825041f601a6e7a5dedc98a85ffaa68..f90346b839c07a457aeb2be4b085cbf0a27606e9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-size.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/logical-box-size.html >@@ -9,8 +9,8 @@ > > <div id="log"></div> > >-<script src="./resources/test-box-properties.js"></script> >-<script> >+<script type="module"> >+import {runTests, createSizingPropertyGroup} from "./resources/test-box-properties.js"; > runTests(createSizingPropertyGroup("")); > runTests(createSizingPropertyGroup("max-")); > runTests(createSizingPropertyGroup("min-")); >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-box-properties.js b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-box-properties.js >index 517076962a3175b62f156f28e56f127033cc7723..1f17ff296ff2c3dcf81db1a112bda24ef04eb126 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-box-properties.js >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-box-properties.js >@@ -1,295 +1,246 @@ >-"use strict"; >-(function(exports) { >- const sheet = document.head.appendChild(document.createElement("style")); >- >- // Specify size for outer <div> to avoid unconstrained-size warnings >- // when writing-mode of the inner test <div> is vertical-* >- const wrapper = document.body.appendChild(document.createElement("div")); >- wrapper.style.cssText = "width:100px; height: 100px;"; >- const testElement = wrapper.appendChild(document.createElement("div")); >- testElement.id = testElement.className = "test"; >- >- // Values to use while testing >- const testValues = { >- "length": ["1px", "2px", "3px", "4px", "5px"], >- "color": ["rgb(1, 1, 1)", "rgb(2, 2, 2)", "rgb(3, 3, 3)", "rgb(4, 4, 4)", "rgb(5, 5, 5)"], >- "border-style": ["solid", "dashed", "dotted", "double", "groove"], >- }; >- >- // Six unique overall writing modes for property-mapping purposes. >- const writingModes = [ >- { >- styles: [ >- {"writing-mode": "horizontal-tb", "direction": "ltr"}, >- ], >- blockStart: "top", blockEnd: "bottom", inlineStart: "left", inlineEnd: "right", >- block: "vertical", inline: "horizontal" }, >- { >- styles: [ >- {"writing-mode": "horizontal-tb", "direction": "rtl"}, >- ], >- blockStart: "top", blockEnd: "bottom", inlineStart: "right", inlineEnd: "left", >- block: "vertical", inline: "horizontal" }, >- { >- styles: [ >- {"writing-mode": "vertical-rl", "direction": "rtl"}, >- {"writing-mode": "sideways-rl", "direction": "rtl"}, >- ], >- blockStart: "right", blockEnd: "left", inlineStart: "bottom", inlineEnd: "top", >- block: "horizontal", inline: "vertical" }, >- { >- styles: [ >- {"writing-mode": "vertical-rl", "direction": "ltr"}, >- {"writing-mode": "sideways-rl", "direction": "ltr"}, >- ], >- blockStart: "right", blockEnd: "left", inlineStart: "top", inlineEnd: "bottom", >- block: "horizontal", inline: "vertical" }, >- { >- styles: [ >- {"writing-mode": "vertical-lr", "direction": "rtl"}, >- {"writing-mode": "sideways-lr", "direction": "ltr"}, >- ], >- blockStart: "left", blockEnd: "right", inlineStart: "bottom", inlineEnd: "top", >- block: "horizontal", inline: "vertical" }, >- { >- styles: [ >- {"writing-mode": "vertical-lr", "direction": "ltr"}, >- {"writing-mode": "sideways-lr", "direction": "rtl"}, >- ], >- blockStart: "left", blockEnd: "right", inlineStart: "top", inlineEnd: "bottom", >- block: "horizontal", inline: "vertical" }, >- ]; >- >- function testCSSValues(testName, style, expectedValues) { >- for (const [property, value] of expectedValues) { >- assert_equals(style.getPropertyValue(property), value, `${testName}, ${property}`); >+import { >+ testElement, >+ writingModes, >+ testCSSValues, >+ testComputedValues, >+ makeDeclaration >+} from "./test-shared.js"; >+ >+// Values to use while testing >+const testValues = { >+ "length": ["1px", "2px", "3px", "4px", "5px"], >+ "color": ["rgb(1, 1, 1)", "rgb(2, 2, 2)", "rgb(3, 3, 3)", "rgb(4, 4, 4)", "rgb(5, 5, 5)"], >+ "border-style": ["solid", "dashed", "dotted", "double", "groove"], >+}; >+ >+/** >+ * Creates a group of physical and logical box properties, such as >+ * >+ * { physical: { >+ * left: "margin-left", right: "margin-right", >+ * top: "margin-top", bottom: "margin-bottom", >+ * }, logical: { >+ * inlineStart: "margin-inline-start", inlineEnd: "margin-inline-end", >+ * blockStart: "margin-block-start", blockEnd: "margin-block-end", >+ * }, shorthands: { >+ * "margin": ["margin-top", "margin-right", "margin-bottom", "margin-left"], >+ * "margin-inline": ["margin-inline-start", "margin-inline-end"], >+ * "margin-block": ["margin-block-start", "margin-block-end"], >+ * }, type: ["length"], prerequisites: "...", property: "margin-*" } >+ * >+ * @param {string} property >+ * A string representing the property names, like "margin-*". >+ * @param {Object} descriptor >+ * @param {string|string[]} descriptor.type >+ * Describes the kind of values accepted by the property, like "length". >+ * Must be a key or a collection of keys from the `testValues` object. >+ * @param {Object={}} descriptor.prerequisites >+ * Represents property declarations that are needed by `property` to work. >+ * For example, border-width properties require a border style. >+ */ >+export function createBoxPropertyGroup(property, descriptor) { >+ const logical = {}; >+ const physical = {}; >+ const shorthands = {}; >+ for (const axis of ["inline", "block"]) { >+ const shorthand = property.replace("*", axis); >+ const longhands = []; >+ shorthands[shorthand] = longhands; >+ for (const side of ["start", "end"]) { >+ const logicalSide = axis + "-" + side; >+ const camelCase = logicalSide.replace(/-(.)/g, (match, $1) => $1.toUpperCase()); >+ const longhand = property.replace("*", logicalSide); >+ logical[camelCase] = longhand; >+ longhands.push(longhand); > } > } >- >- function testComputedValues(testName, rules, expectedValues) { >- sheet.textContent = rules; >- const cs = getComputedStyle(testElement); >- testCSSValues(testName, cs, expectedValues); >- sheet.textContent = ""; >+ const isInset = property === "inset-*"; >+ let prerequisites = ""; >+ for (const physicalSide of ["left", "right", "top", "bottom"]) { >+ physical[physicalSide] = isInset ? physicalSide : property.replace("*", physicalSide); >+ prerequisites += makeDeclaration(descriptor.prerequisites, physicalSide); > } >- >- function makeDeclaration(object = {}, replacement = "*") { >- let decl = ""; >- for (const [property, value] of Object.entries(object)) { >- decl += `${property.replace("*", replacement)}: ${value}; `; >+ shorthands[property.replace("-*", "")] = >+ ["top", "right", "bottom", "left"].map(physicalSide => physical[physicalSide]); >+ const type = [].concat(descriptor.type); >+ return {logical, physical, shorthands, type, prerequisites, property}; >+} >+ >+/** >+ * Creates a group of physical and logical sizing properties. >+ * >+ * @param {string} prefix >+ * One of "", "max-" or "min-". >+ */ >+export function createSizingPropertyGroup(prefix) { >+ return { >+ logical: { >+ inline: `${prefix}inline-size`, >+ block: `${prefix}block-size`, >+ }, >+ physical: { >+ horizontal: `${prefix}width`, >+ vertical: `${prefix}height`, >+ }, >+ type: ["length"], >+ prerequisites: makeDeclaration({display: "block"}), >+ property: (prefix ? prefix.slice(0, -1) + " " : "") + "sizing", >+ }; >+} >+ >+/** >+ * Tests a grup of logical and physical properties in different writing modes. >+ * >+ * @param {Object} group >+ * An object returned by createBoxPropertyGroup or createSizingPropertyGroup. >+ */ >+export function runTests(group) { >+ const values = testValues[group.type[0]].map(function(_, i) { >+ return group.type.map(type => testValues[type][i]).join(" "); >+ }); >+ const logicals = Object.values(group.logical); >+ const physicals = Object.values(group.physical); >+ const shorthands = group.shorthands ? Object.entries(group.shorthands) : null; >+ >+ test(function() { >+ const expected = []; >+ for (const [i, logicalProp] of logicals.entries()) { >+ testElement.style.setProperty(logicalProp, values[i]); >+ expected.push([logicalProp, values[i]]); > } >- return decl; >- } >- >- /** >- * Creates a group of physical and logical box properties, such as >- * >- * { physical: { >- * left: "margin-left", right: "margin-right", >- * top: "margin-top", bottom: "margin-bottom", >- * }, logical: { >- * inlineStart: "margin-inline-start", inlineEnd: "margin-inline-end", >- * blockStart: "margin-block-start", blockEnd: "margin-block-end", >- * }, shorthands: { >- * inline: ["margin-inline-start", "margin-inline-end"], >- * block: ["margin-block-start", "margin-block-end"], >- * }, type: ["length"], prerequisites: "...", property: "'margin-*'" } >- * >- * @param {string} property >- * A string representing the property names, like "margin-*". >- * @param {Object} descriptor >- * @param {string|string[]} descriptor.type >- * Describes the kind of values accepted by the property, like "length". >- * Must be a key or a collection of keys from the `testValues` object. >- * @param {Object={}} descriptor.prerequisites >- * Represents property declarations that are needed by `property` to work. >- * For example, border-width properties require a border style. >- */ >- exports.createBoxPropertyGroup = function(property, descriptor) { >- const logical = {}; >- const physical = {}; >- const shorthands = {}; >- for (const axis of ["inline", "block"]) { >- const shorthand = property.replace("*", axis); >- const longhands = []; >- shorthands[shorthand] = longhands; >- for (const side of ["start", "end"]) { >- const logicalSide = axis + "-" + side; >- const camelCase = logicalSide.replace(/-(.)/g, (match, $1) => $1.toUpperCase()); >- const longhand = property.replace("*", logicalSide); >- logical[camelCase] = longhand; >- longhands.push(longhand); >- } >+ testCSSValues("logical properties in inline style", testElement.style, expected); >+ }, `Test that logical ${group.property} properties are supported.`); >+ testElement.style.cssText = ""; >+ >+ const shorthandValues = {}; >+ for (const [shorthand, longhands] of shorthands || []) { >+ let valueArray; >+ if (group.type.length > 1) { >+ valueArray = [values[0]]; >+ } else { >+ valueArray = testValues[group.type].slice(0, longhands.length); > } >- const isInset = property === "inset-*"; >- let prerequisites = ""; >- for (const physicalSide of ["left", "right", "top", "bottom"]) { >- physical[physicalSide] = isInset ? physicalSide : property.replace("*", physicalSide); >- prerequisites += makeDeclaration(descriptor.prerequisites, physicalSide); >+ shorthandValues[shorthand] = valueArray; >+ const value = valueArray.join(" "); >+ const expected = [[shorthand, value]]; >+ for (let [i, longhand] of longhands.entries()) { >+ expected.push([longhand, valueArray[group.type.length > 1 ? 0 : i]]); > } >- const type = [].concat(descriptor.type); >- return {name, logical, physical, shorthands, type, prerequisites, property}; >- }; >- >- /** >- * Creates a group of physical and logical sizing properties. >- * >- * @param {string} prefix >- * One of "", "max-" or "min-". >- */ >- exports.createSizingPropertyGroup = function(prefix) { >- return { >- logical: { >- inline: `${prefix}inline-size`, >- block: `${prefix}block-size`, >- }, >- physical: { >- horizontal: `${prefix}width`, >- vertical: `${prefix}height`, >- }, >- type: ["length"], >- prerequisites: makeDeclaration({display: "block"}), >- property: (prefix ? prefix.slice(0, -1) + " " : "") + "sizing", >- }; >- }; >- >- /** >- * Tests a grup of logical and physical properties in different writing modes. >- * >- * @param {Object} group >- * An object returned by createBoxPropertyGroup or createSizingPropertyGroup. >- */ >- exports.runTests = function(group) { >- const values = testValues[group.type[0]].map(function(_, i) { >- return group.type.map(type => testValues[type][i]).join(" "); >- }); >- const logicals = Object.values(group.logical); >- const physicals = Object.values(group.physical); >- const shorthands = group.shorthands ? Object.entries(group.shorthands) : null; >- > test(function() { >- const expected = []; >- for (const [i, logicalProp] of logicals.entries()) { >- testElement.style.setProperty(logicalProp, values[i]); >- expected.push([logicalProp, values[i]]); >- } >- testCSSValues("logical properties in inline style", testElement.style, expected); >- }, `Test that logical ${group.property} properties are supported.`); >+ testElement.style.setProperty(shorthand, value); >+ testCSSValues("shorthand in inline style", testElement.style, expected); >+ const stylesheet = `.test { ${group.prerequisites} }`; >+ testComputedValues("shorthand in computed style", stylesheet, expected); >+ }, `Test that ${shorthand} shorthand sets longhands and serializes correctly.`); > testElement.style.cssText = ""; >+ } > >- for (const writingMode of writingModes) { >- for (const style of writingMode.styles) { >- const writingModeDecl = makeDeclaration(style); >- >- const associated = {}; >- for (const [logicalSide, logicalProp] of Object.entries(group.logical)) { >- const physicalProp = group.physical[writingMode[logicalSide]]; >- associated[logicalProp] = physicalProp; >- associated[physicalProp] = logicalProp; >- } >- >- // Test that logical properties are converted to their physical >- // equivalent correctly when all in the group are present on a single >- // declaration, with no overwriting of previous properties and >- // no physical properties present. We put the writing mode properties >- // on a separate declaration to test that the computed values of these >- // properties are used, rather than those on the same declaration. >- test(function() { >- let decl = group.prerequisites; >- const expected = []; >- for (const [i, logicalProp] of logicals.entries()) { >- decl += `${logicalProp}: ${values[i]}; `; >- expected.push([logicalProp, values[i]]); >- expected.push([associated[logicalProp], values[i]]); >- } >- testComputedValues("logical properties on one declaration, writing " + >- `mode properties on another, '${writingModeDecl}'`, >- `.test { ${writingModeDecl} } .test { ${decl} }`, >- expected); >- }, `Test that logical ${group.property} properties share computed values ` >- + `with their physical associates, with '${writingModeDecl}'.`); >+ for (const writingMode of writingModes) { >+ for (const style of writingMode.styles) { >+ const writingModeDecl = makeDeclaration(style); > >+ const associated = {}; >+ for (const [logicalSide, logicalProp] of Object.entries(group.logical)) { >+ const physicalProp = group.physical[writingMode[logicalSide]]; >+ associated[logicalProp] = physicalProp; >+ associated[physicalProp] = logicalProp; >+ } > >- // Test logical shorthand properties. >- if (shorthands) { >- test(function() { >- for (const [shorthand, longhands] of shorthands) { >- let shorthandValues; >- if (group.type.length > 1) { >- shorthandValues = [values[0]]; >- } else { >- shorthandValues = testValues[group.type].slice(0, longhands.length); >- } >- const decl = group.prerequisites + `${shorthand}: ${shorthandValues.join(" ")}; `; >- const expected = []; >- for (let [i, longhand] of longhands.entries()) { >- const longhandValue = shorthandValues[group.type.length > 1 ? 0 : i]; >- expected.push([longhand, longhandValue]); >- expected.push([associated[longhand], longhandValue]); >- } >- testComputedValues("shorthand properties on one declaration, writing " + >- `mode properties on another, '${writingModeDecl}'`, >- `.test { ${writingModeDecl} } .test { ${decl} }`, >- expected); >- } >- }, `Test that ${group.property} shorthands set the computed value of both ` >- + `logical and physical longhands, with '${writingModeDecl}'.`); >+ // Test that logical properties are converted to their physical >+ // equivalent correctly when all in the group are present on a single >+ // declaration, with no overwriting of previous properties and >+ // no physical properties present. We put the writing mode properties >+ // on a separate declaration to test that the computed values of these >+ // properties are used, rather than those on the same declaration. >+ test(function() { >+ let decl = group.prerequisites; >+ const expected = []; >+ for (const [i, logicalProp] of logicals.entries()) { >+ decl += `${logicalProp}: ${values[i]}; `; >+ expected.push([logicalProp, values[i]]); >+ expected.push([associated[logicalProp], values[i]]); > } >- >- // Test that logical and physical properties are cascaded together, >- // honoring their relative order on a single declaration >- // (a) with a single logical property after the physical ones >- // (b) with a single physical property after the logical ones >+ testComputedValues("logical properties on one declaration, writing " + >+ `mode properties on another, '${writingModeDecl}'`, >+ `.test { ${writingModeDecl} } .test { ${decl} }`, >+ expected); >+ }, `Test that logical ${group.property} properties share computed values ` >+ + `with their physical associates, with '${writingModeDecl}'.`); >+ >+ // Test logical shorthand properties. >+ if (shorthands) { > test(function() { >- for (const lastIsLogical of [true, false]) { >- const lasts = lastIsLogical ? logicals : physicals; >- const others = lastIsLogical ? physicals : logicals; >- for (const lastProp of lasts) { >- let decl = writingModeDecl + group.prerequisites; >- const expected = []; >- for (const [i, prop] of others.entries()) { >- decl += `${prop}: ${values[i]}; `; >- const valueIdx = associated[prop] === lastProp ? others.length : i; >- expected.push([prop, values[valueIdx]]); >- expected.push([associated[prop], values[valueIdx]]); >- } >- decl += `${lastProp}: ${values[others.length]}; `; >- testComputedValues(`'${lastProp}' last on single declaration, '${writingModeDecl}'`, >- `.test { ${decl} }`, >- expected); >+ for (const [shorthand, longhands] of shorthands) { >+ let valueArray = shorthandValues[shorthand]; >+ const decl = group.prerequisites + `${shorthand}: ${valueArray.join(" ")}; `; >+ const expected = []; >+ for (let [i, longhand] of longhands.entries()) { >+ const longhandValue = valueArray[group.type.length > 1 ? 0 : i]; >+ expected.push([longhand, longhandValue]); >+ expected.push([associated[longhand], longhandValue]); > } >+ testComputedValues("shorthand properties on one declaration, writing " + >+ `mode properties on another, '${writingModeDecl}'`, >+ `.test { ${writingModeDecl} } .test { ${decl} }`, >+ expected); > } >- }, `Test that ${group.property} properties honor order of appearance when both ` >- + `logical and physical associates are declared, with '${writingModeDecl}'.`); >+ }, `Test that ${group.property} shorthands set the computed value of both ` >+ + `logical and physical longhands, with '${writingModeDecl}'.`); >+ } > >- // Test that logical and physical properties are cascaded properly when >- // on different declarations >- // (a) with a logical property in the high specificity rule >- // (b) with a physical property in the high specificity rule >- test(function() { >- for (const highIsLogical of [true, false]) { >- let lowDecl = writingModeDecl + group.prerequisites; >- const high = highIsLogical ? logicals : physicals; >- const others = highIsLogical ? physicals : logicals; >+ // Test that logical and physical properties are cascaded together, >+ // honoring their relative order on a single declaration >+ // (a) with a single logical property after the physical ones >+ // (b) with a single physical property after the logical ones >+ test(function() { >+ for (const lastIsLogical of [true, false]) { >+ const lasts = lastIsLogical ? logicals : physicals; >+ const others = lastIsLogical ? physicals : logicals; >+ for (const lastProp of lasts) { >+ let decl = writingModeDecl + group.prerequisites; >+ const expected = []; > for (const [i, prop] of others.entries()) { >- lowDecl += `${prop}: ${values[i]}; `; >+ decl += `${prop}: ${values[i]}; `; >+ const valueIdx = associated[prop] === lastProp ? others.length : i; >+ expected.push([prop, values[valueIdx]]); >+ expected.push([associated[prop], values[valueIdx]]); > } >- for (const highProp of high) { >- const highDecl = `${highProp}: ${values[others.length]}; `; >- const expected = []; >- for (const [i, prop] of others.entries()) { >- const valueIdx = associated[prop] === highProp ? others.length : i; >- expected.push([prop, values[valueIdx]]); >- expected.push([associated[prop], values[valueIdx]]); >- } >- testComputedValues(`'${highProp}', two declarations, '${writingModeDecl}'`, >- `#test { ${highDecl} } .test { ${lowDecl} }`, >- expected); >+ decl += `${lastProp}: ${values[others.length]}; `; >+ testComputedValues(`'${lastProp}' last on single declaration, '${writingModeDecl}'`, >+ `.test { ${decl} }`, >+ expected); >+ } >+ } >+ }, `Test that ${group.property} properties honor order of appearance when both ` >+ + `logical and physical associates are declared, with '${writingModeDecl}'.`); >+ >+ // Test that logical and physical properties are cascaded properly when >+ // on different declarations >+ // (a) with a logical property in the high specificity rule >+ // (b) with a physical property in the high specificity rule >+ test(function() { >+ for (const highIsLogical of [true, false]) { >+ let lowDecl = writingModeDecl + group.prerequisites; >+ const high = highIsLogical ? logicals : physicals; >+ const others = highIsLogical ? physicals : logicals; >+ for (const [i, prop] of others.entries()) { >+ lowDecl += `${prop}: ${values[i]}; `; >+ } >+ for (const highProp of high) { >+ const highDecl = `${highProp}: ${values[others.length]}; `; >+ const expected = []; >+ for (const [i, prop] of others.entries()) { >+ const valueIdx = associated[prop] === highProp ? others.length : i; >+ expected.push([prop, values[valueIdx]]); >+ expected.push([associated[prop], values[valueIdx]]); > } >+ testComputedValues(`'${highProp}', two declarations, '${writingModeDecl}'`, >+ `#test { ${highDecl} } .test { ${lowDecl} }`, >+ expected); > } >- }, `Test that ${group.property} properties honor selector specificty when both ` >- + `logical and physical associates are declared, with '${writingModeDecl}'.`); >- } >+ } >+ }, `Test that ${group.property} properties honor selector specificty when both ` >+ + `logical and physical associates are declared, with '${writingModeDecl}'.`); > } >- }; >-})(window); >+ } >+} >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-shared.js b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-shared.js >new file mode 100644 >index 0000000000000000000000000000000000000000..da3db7470134e3e8c2bebfd2a42b32acf4e72cb6 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-shared.js >@@ -0,0 +1,91 @@ >+const sheet = document.head.appendChild(document.createElement("style")); >+ >+// Specify size for outer <div> to avoid unconstrained-size warnings >+// when writing-mode of the inner test <div> is vertical-* >+const wrapper = document.body.appendChild(document.createElement("div")); >+wrapper.style.cssText = "width:100px; height: 100px;"; >+export const testElement = wrapper.appendChild(document.createElement("div")); >+testElement.id = testElement.className = "test"; >+ >+// Six unique overall writing modes for property-mapping purposes. >+export const writingModes = [ >+ { >+ styles: [ >+ {"writing-mode": "horizontal-tb", "direction": "ltr"}, >+ ], >+ blockStart: "top", blockEnd: "bottom", inlineStart: "left", inlineEnd: "right", >+ over: "top", under: "bottom", lineLeft: "left", lineRight: "right", >+ block: "vertical", inline: "horizontal" }, >+ { >+ styles: [ >+ {"writing-mode": "horizontal-tb", "direction": "rtl"}, >+ ], >+ blockStart: "top", blockEnd: "bottom", inlineStart: "right", inlineEnd: "left", >+ over: "top", under: "bottom", lineLeft: "left", lineRight: "right", >+ block: "vertical", inline: "horizontal" }, >+ { >+ styles: [ >+ {"writing-mode": "vertical-rl", "direction": "rtl"}, >+ {"writing-mode": "sideways-rl", "direction": "rtl"}, >+ ], >+ blockStart: "right", blockEnd: "left", inlineStart: "bottom", inlineEnd: "top", >+ over: "right", under: "left", lineLeft: "top", lineRight: "bottom", >+ block: "horizontal", inline: "vertical" }, >+ { >+ styles: [ >+ {"writing-mode": "vertical-rl", "direction": "ltr"}, >+ {"writing-mode": "sideways-rl", "direction": "ltr"}, >+ ], >+ blockStart: "right", blockEnd: "left", inlineStart: "top", inlineEnd: "bottom", >+ over: "right", under: "left", lineLeft: "top", lineRight: "bottom", >+ block: "horizontal", inline: "vertical" }, >+ { >+ styles: [ >+ {"writing-mode": "vertical-lr", "direction": "rtl"}, >+ ], >+ blockStart: "left", blockEnd: "right", inlineStart: "bottom", inlineEnd: "top", >+ over: "right", under: "left", lineLeft: "top", lineRight: "bottom", >+ block: "horizontal", inline: "vertical" }, >+ { >+ styles: [ >+ {"writing-mode": "sideways-lr", "direction": "ltr"}, >+ ], >+ blockStart: "left", blockEnd: "right", inlineStart: "bottom", inlineEnd: "top", >+ over: "left", under: "right", lineLeft: "bottom", lineRight: "top", >+ block: "horizontal", inline: "vertical" }, >+ { >+ styles: [ >+ {"writing-mode": "vertical-lr", "direction": "ltr"}, >+ ], >+ blockStart: "left", blockEnd: "right", inlineStart: "top", inlineEnd: "bottom", >+ over: "right", under: "left", lineLeft: "top", lineRight: "bottom", >+ block: "horizontal", inline: "vertical" }, >+ { >+ styles: [ >+ {"writing-mode": "sideways-lr", "direction": "rtl"}, >+ ], >+ blockStart: "left", blockEnd: "right", inlineStart: "top", inlineEnd: "bottom", >+ over: "left", under: "right", lineLeft: "bottom", lineRight: "top", >+ block: "horizontal", inline: "vertical" }, >+]; >+ >+export function testCSSValues(testName, style, expectedValues) { >+ for (const [property, value] of expectedValues) { >+ assert_equals(style.getPropertyValue(property), value, `${testName}, ${property}`); >+ } >+} >+ >+export function testComputedValues(testName, rules, expectedValues) { >+ sheet.textContent = rules; >+ const cs = getComputedStyle(testElement); >+ testCSSValues(testName, cs, expectedValues); >+ sheet.textContent = ""; >+} >+ >+export function makeDeclaration(object = {}, replacement = "*") { >+ let decl = ""; >+ for (const [property, value] of Object.entries(object)) { >+ decl += `${property.replace("*", replacement)}: ${value}; `; >+ } >+ return decl; >+} >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/w3c-import.log >index 55fec91a633d2cbf2c4302ea9779ef23584bd3b4..70de95c998c2945bd9b4646125d7d22356129622 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/w3c-import.log >@@ -15,3 +15,4 @@ None > ------------------------------------------------------------------------ > List of files: > /LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-box-properties.js >+/LayoutTests/imported/w3c/web-platform-tests/css/css-logical/resources/test-shared.js >diff --git a/LayoutTests/platform/ios-simulator/TestExpectations b/LayoutTests/platform/ios-simulator/TestExpectations >index 3df61d113879200239913391bd7d3b8f7d75f48a..dedd8616025fda3b00abf1f27730e5eec45e5e6f 100644 >--- a/LayoutTests/platform/ios-simulator/TestExpectations >+++ b/LayoutTests/platform/ios-simulator/TestExpectations >@@ -93,3 +93,11 @@ webkit.org/b/183258 imported/w3c/web-platform-tests/css/css-text/word-break/word > imported/w3c/web-platform-tests/css/css-ui/outline-020.html [ ImageOnlyFailure ] > imported/w3c/web-platform-tests/css/selectors/selectors-empty-001.xml [ ImageOnlyFailure ] > imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html [ Pass Failure ] >+ >+# These tests need the ENABLE_CSS_LOGICAL compile flag. >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html [ Skip ] >diff --git a/LayoutTests/platform/mac-wk2/TestExpectations b/LayoutTests/platform/mac-wk2/TestExpectations >index 4dbb4767e795deedf98039a0273b92b0629fe5b8..5a86c80595e583001e9b58ee4f8492844abd954d 100644 >--- a/LayoutTests/platform/mac-wk2/TestExpectations >+++ b/LayoutTests/platform/mac-wk2/TestExpectations >@@ -851,3 +851,11 @@ webkit.org/b/183705 http/tests/workers/service/serviceworkerclients-matchAll.htt > webkit.org/b/187658 http/tests/security/bypassing-cors-checks-for-extension-urls.html [ Pass Failure ] > > [ Mojave+ ] fast/canvas/webgl/context-update-on-display-configuration.html [ Pass ] >+ >+# These tests need the ENABLE_CSS_LOGICAL compile flag. >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html [ Skip ] >diff --git a/LayoutTests/platform/mac/TestExpectations b/LayoutTests/platform/mac/TestExpectations >index 71375966e72f321a762e46d9ebcc216bd5a92777..6c02e237c81f660c3c50cf203cfe7e7728d369d2 100644 >--- a/LayoutTests/platform/mac/TestExpectations >+++ b/LayoutTests/platform/mac/TestExpectations >@@ -1755,3 +1755,11 @@ webkit.org/b/187393 imported/w3c/web-platform-tests/2dcontext/imagebitmap/create > [ Mojave+ ] fast/inline/break-between-nobr.html [ ImageOnlyFailure ] > [ Mojave+ ] imported/blink/fast/text/international/text-shaping-arabic.html [ ImageOnlyFailure ] > [ Mojave+ ] imported/blink/fast/text/international/vertical-positioning-with-combining-marks.html [ ImageOnlyFailure ] >+ >+# These tests need the ENABLE_CSS_LOGICAL compile flag. >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html [ Skip ] >+imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html [ Skip ] >diff --git a/ChangeLog b/ChangeLog >index 5771b6d58543945726bd65c986372f578bc4fa14..75abaff89ac6921455e26e45edad6f0afb48b6d7 100644 >--- a/ChangeLog >+++ b/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * Source/cmake/WebKitFeatures.cmake: >+ > 2018-08-23 Don Olmstead <don.olmstead@sony.com> > > [CMake] Have checks are not getting set inside CMake properly >diff --git a/PerformanceTests/ChangeLog b/PerformanceTests/ChangeLog >index 9b4dd6fbf9aa9b31c90b5e6fb57e51434d5cde66..6ba40f2b70c6843d02fb1d7c37401a5fadbbf6d2 100644 >--- a/PerformanceTests/ChangeLog >+++ b/PerformanceTests/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-22 Oriol Brufau <obrufau@igalia.com> >+ >+ [css-logical] Implement flow-relative margin, padding and border shorthands >+ https://bugs.webkit.org/show_bug.cgi?id=188697 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ They are implemented behind the ENABLE_CSS_LOGICAL compile flag. >+ >+ * StitchMarker/wtf/FeatureDefines.h: >+ > 2018-08-23 Don Olmstead <don.olmstead@sony.com> > > [CMake] Have checks are not getting set inside CMake properly >diff --git a/PerformanceTests/StitchMarker/wtf/FeatureDefines.h b/PerformanceTests/StitchMarker/wtf/FeatureDefines.h >index f33861033e7233dff287370f587fdcfdbcb8cb71..5bb58a884c663d23670c719091eb774cdadbcf2d 100644 >--- a/PerformanceTests/StitchMarker/wtf/FeatureDefines.h >+++ b/PerformanceTests/StitchMarker/wtf/FeatureDefines.h >@@ -396,6 +396,10 @@ the public iOS SDK. We will also need to update the FeatureDefines.xcconfig file > #define ENABLE_CSS_IMAGE_RESOLUTION 0 > #endif > >+#if !defined(ENABLE_CSS_LOGICAL) >+#define ENABLE_CSS_LOGICAL 0 >+#endif >+ > #if !defined(ENABLE_CURSOR_SUPPORT) > #define ENABLE_CURSOR_SUPPORT 1 > #endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188697
:
347814
|
347827
|
347829
|
347830
|
347831
|
347849
|
347859
|
347877
|
347883
|
347884
|
347886
|
347896
|
347970
|
347973
|
348002
|
348006
|
348012
|
348013
|
348016
|
348017
|
348027
|
348029
|
348100
|
348342
|
348354
|
349335
|
349356
|
349604
|
350364
|
350367
|
350758
|
352609
|
352630
|
352658
|
352661
|
352668
|
352671
|
352673
|
352675
|
352678
|
352684
|
352715
|
352720
|
352729
|
352749
|
352784
|
352785
|
352797
|
353532
|
353539
|
353540
|
354934
|
354940
|
354946
|
354949
|
354950
|
354955
|
354961
|
359698