// 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


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