# TEMPORARY overrides of
# src/third_party/WebKit/LayoutTests/platform/chromium/test_expectations.txt
# that are associated with changes to the Skia code.
#
# GUIDELINES:
# - This file should be empty most of the time.
# - Expectations should only be added TEMPORARILY, as a step towards
#   rebaselining layout test results.  If any one expectation remains in here
#   for more than a week or two, then we are probably doing something wrong.
# - Expectations from this file should NOT be rolled into any other
#   test_expectations file.  If there is a test that we expect to fail
#   indefinitely, then we should add that test to the roach motel that is
#   src/third_party/WebKit/LayoutTests/platform/chromium/test_expectations.txt
# - Tests listed in this file should NOT be rebaselined by WebKit Gardeners,
#   unless they have made arrangements with Skia developers.
#
# For more information, see https://bugs.webkit.org/show_bug.cgi?id=86749
# or email skia-dev@google.com .
#
# INSTRUCTIONS:
# If you are rolling Skia's DEPS within Chrome, and trybot results indicate
# that the DEPS roll would break some webkit layout_tests, please follow
# these steps:
#
# 1. Confirm that those layout_test failures are "reasonable"-- Are they
# actually improvements, not regressions?  Or maybe they are very minor
# differences that go along with a performance improvement?
# If not, please fix Skia rather than rolling in the version that will
# regress the webkit layout_tests.
#
# 2. File a bug to yourself to track the rebaselining of results caused by
# your Skia DEPS roll.
#
# 3. Add one or more lines to this file, in the same syntax used in the main
# test_expectations file, to mark those tests as expected-to-fail.
# Add this file to your DEPS roll CL.
#
# 4. Run your DEPS roll CL through the trybots again, and confirm your CL does
# not cause any layout tests to fail.  (If there are still failures as a
# result of your CL, you probably didn't add the test expectations correctly.)
#
# 5. Commit your DEPS roll CL, and keep an eye on the waterfall bots to make
# sure nothing goes red.
#
# 6. Make sure to rebaseline the layout tests as soon as possible!  The longer
# we leave overrides in this file, the harder it will be to rebaseline those
# tests (because other rendering changes might creep in).
#
# START OVERRIDES HERE

crbug.com/379147 svg/W3C-SVG-1.1/filters-color-01-b.svg [ ImageOnlyFailure ]
crbug.com/379147 svg/W3C-SVG-1.1/filters-comptran-01-b.svg [ ImageOnlyFailure ]
crbug.com/379147 svg/batik/filters/feTile.svg [ ImageOnlyFailure ]
crbug.com/379147 svg/filters/big-sized-filter.svg [ ImageOnlyFailure ]
crbug.com/379147 svg/filters/feLighting-crash.svg [ ImageOnlyFailure ]

# END OVERRIDES HERE (this line ensures that the file is newline-terminated)
