# Copyright 2017 The PDFium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# List of tests to have image diff tests skipped, one per line.
# There are four space-separated columns per line
# Each column (except column 0) can contain a comma-separated list of values.
#
# Column 0: test file name
# Column 1: platform: *, win, mac, linux
# Column 2: v8 support: *, nov8, v8
# Column 3: xfa support: *, noxfa, xfa
# Column 4: rendering support: *, agg, gdi, skia
#
# All columns on a line on a line must match, but filenames may be repeated
# on subsequent lines to suppress more cases.  Within each column, any one of
# the comma-separated values must match in order for the colum to "match".
# The filenames and keywords are case-sensitive.
#
# Try to keep the file alphabetized within each category of test.

#
# Corpus tests
#
FRC_3.5_CF_Strf_stmf_DefaultCryptFilter.pdf * * * *
FRC_3.5_EncryptMetadata_T.pdf * * * *
FRC_3.5_Encrypt_is_damage.pdf * * * *
FRC_3.5_Filter_PubSec_SubFilter_s5.pdf * * * *
FRC_3.5_Filter_PubSec_Sub_SubFilter_s4.pdf * * * *
MouseEvents.pdf * * * *
Oneof.pdf * * * *
bug_651304.pdf * * * *
outline.pdf * * * *
