The tests in this directory were imported from the W3C repository.
Do NOT modify these tests directly in WebKit.
Instead, create a pull request on the WPT github:
	https://github.com/web-platform-tests/wpt

Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport

Do NOT modify or remove this file.

------------------------------------------------------------------------
Properties requiring vendor prefixes:
None
Property values requiring vendor prefixes:
None
------------------------------------------------------------------------
List of files:
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-animation-with-zero-alpha-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-animation-with-zero-alpha.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-obscured-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-obscured.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-delay-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-delay.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent.html
