# Copyright 2016 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 be 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, 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
#
# TODO(pdfium:1811): Remove after associated bug is fixed
11.pdf * * * skia

12.pdf mac * * *
1_1_textbox.pdf * * * *
1_2_typewriter.pdf * * * *
1_3_callout.pdf * * * *

# TODO(pdfium:1805): Remove after associated bug is fixed
1_matrix.pdf * * * skia

1_matrix.pdf mac * * *
1m_diff_lsjdf.pdf mac * * *
1m_same_xxxx.pdf mac * * *
2_11_stamp3.pdf mac * * *
2_6_textbox.pdf * * * *
2_color_calrgb.pdf mac * * *
2_color_indexed.pdf mac * * *

# TODO(pdfium:1867): Remove after associated bug is fixed
2_color_tiling.pdf * * * skia

# TODO(pdfium:1860): Remove after associated bug is fixed
2_halftone.pdf * * * skia

3_4_textbox.pdf * * * *

3_interpolate_image.pdf mac * * *
3bigpreview.pdf mac * * *

4_35.pdf mac * * *

# TODO(pdfium:1859): Remove after associated bug is fixed
4_36.pdf * * * skia

4_39.pdf mac * * *
5.1.pdf mac * * *
5.2.pdf * * * *
5.5_simple_font.pdf mac * * *
8.2_name_dest_f_dest.pdf mac * * *
8.2_outline.pdf mac * * *
8.3_presentation.pdf mac * * *
FRC_10_8.2.2__T8.3_original_file.pdf * * * *
FRC_11_8.2.2__T8.3_first_last_exchange.pdf * * * *
FRC_12_8.2.2__T8.3_first_outline_obj_ID.pdf * * * *
FRC_13_8.2.2__T8.3_Count_edit300.pdf * * * *
FRC_14_8.2.2__T8.3_Count_edit0.pdf * * * *
FRC_15_8.2.2__T8.3_Count_edit1.pdf * * * *
FRC_16_8.2.2__T8.3_Count_edit_1.pdf * * * *
FRC_1_8.2.2__T8.3_First_empty.pdf * * * *
FRC_2_8.2.2__T8.3_Last_empty.pdf * * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_AuthEvent_EFOpen.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_CF_EFF_StdCF_Strf_Stmf_Identity.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_CF_Strf_stmf_StdCF.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_CFM_AESV2__EncryptMetadata_F.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_EncryptMetadata_None.pdf * * * skia

FRC_3.5_P__3616_Password_1.pdf * * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_V_4_CFM_V2_.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_V_5_CFM_AESV3.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_v_1_length_40_Filter_standard.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
FRC_3.5_v_2_length_128_AuthEvent_DocOpen_.pdf * * * skia

FRC_3_8.2.2_Type_empty.pdf * * * *
FRC_4_8.2.2__T8.3_Count_empty.pdf * * * *
FRC_5_8.2.2__T8.3_First_remove.pdf * * * *
FRC_6_8.2.2__T8.3_Last_remove.pdf * * * *
FRC_7_8.2.2_Type_remove.pdf * * * *
FRC_8.4.1_Annotations_M.pdf * * * *
FRC_8.4.1_Annotations_NM.pdf * * * *
FRC_8.5_Page_C_SubmitForm.pdf * * * *
FRC_8.5_Page_PI_ResetForm_Phantom.pdf * * * *

FRC_8.5_Widget_F.pdf * nov8 * *
FRC_8_8.2.2__T8.3_Count_remove.pdf * * * *
FRC_9_8.2.2__T8.3_remove_first_item.pdf * * * *
action.pdf * * * *
action_execute_a_menu_item.pdf mac * * *
action_hide_show_form.pdf mac * * *
action_on_focus.pdf mac * * *
action_open_a_file.pdf mac * * *
action_pdf_save_close.pdf mac * * *
action_reset.pdf mac * * *
action_run_javascript.pdf mac * * *
action_submit_a_form.pdf mac * * *
all_trigger_alert.pdf * * * *
all_trigger_mailmsg.pdf * * * *
all_trigger_print.pdf * * * *
all_trigger_run_js_lunchurl.pdf mac * * *
all_trigger_run_js_maildoc.pdf mac * * *
annotation_highlight_author_content.pdf mac * * *
annotation_highlight_long_content.pdf mac * * *
annotation_highlight_no_author.pdf mac * * *
app_launchurl.pdf mac * * *
appstoredescription3.1_en_updated.pdf mac * * *

bookmark.pdf * * * *
bookmarkgetcolor.pdf mac * * *
bug_0_length_line.pdf mac * * *

# TODO(pdfium:1812): Remove after associated bug is fixed
bug_0_length_line.pdf * * * skia

bug_0_width_line.pdf mac * * *
bug_440132.pdf mac * * *
bug_white_space.pdf mac * * *
calcorderindex_test.pdf * * * *
calculate_average.pdf mac * * *
calculate_order.pdf * * * *
calculate_sum_a_b_c.pdf mac * * *
calculate_validate.pdf mac * * *
calculate_validate.pdf * nov8 * *
ch_1.pdf * * * *
check_box.pdf * * * *
color.pdf mac * * *
colorspace.pdf mac * * *
colorspace_test1.pdf mac * * *
combo_box.pdf * * * *
combo_box_format.pdf mac * * *
date.pdf mac * * *
edit_transform.pdf mac * * *
en_contact.pdf mac * * *
en_diy.pdf mac * * *
en_foxit.pdf mac * * *
en_fqa2.pdf mac * * *
en_introduce.pdf mac * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
en_tem.pdf * * * skia

en_tem.pdf mac * * *
en_uicase_.pdf mac * * *
event.change.pdf mac * * *
event.changeex.pdf mac * * *
event.keydown.pdf mac * * *
event.keydown_1_.pdf mac * * *
event.type_name.pdf mac * * *
event.value.pdf mac * * *
event_change.pdf mac * * *
example_001.pdf mac * * *
example_002.pdf mac * * *
example_003.pdf mac * * *
example_004.pdf mac * * *
example_005.pdf mac * * *
example_006.pdf mac * * *
example_007.pdf mac * * *
example_008.pdf mac * * *
example_009.pdf mac * * *
example_010.pdf mac * * *
example_011.pdf mac * * *
example_012.pdf mac * * *
example_013.pdf mac * * *
example_014.pdf mac * * *
example_015.pdf mac * * *
example_016.pdf mac * * *
example_017.pdf mac * * *
example_018.pdf mac * * *
example_019.pdf mac * * *
example_020.pdf mac * * *
example_021.pdf mac * * *
example_022.pdf mac * * *
example_023.pdf mac * * *
example_024.pdf mac * * *
example_025.pdf mac * * *
example_026.pdf mac * * *
example_027.pdf mac * * *
example_028.pdf mac * * *
example_029.pdf mac * * *
example_030.pdf mac * * *
example_031.pdf mac * * *
example_032.pdf mac * * *
example_033.pdf mac * * *
example_034.pdf mac * * *
example_035.pdf mac * * *
example_036.pdf mac * * *
example_037.pdf mac * * *
example_038.pdf mac * * *
example_039.pdf mac * * *
example_040.pdf mac * * *
example_041.pdf mac * * *
example_042.pdf mac * * *
example_043.pdf mac * * *
example_044.pdf mac * * *
example_045.pdf mac * * *
example_046.pdf mac * * *
example_047.pdf mac * * *
example_048.pdf mac * * *
example_049.pdf mac * * *
example_050.pdf mac * * *
example_051.pdf mac * * *
example_052.pdf mac * * *
example_053.pdf mac * * *
example_054.pdf mac * * *
example_055.pdf mac * * *
example_056.pdf mac * * *
example_057.pdf mac * * *
example_058.pdf mac * * *
example_059.pdf mac * * *
example_060.pdf mac * * *
example_061.pdf mac * * *
example_062.pdf mac * * *
example_063.pdf mac * * *
example_064.pdf mac * * *
example_065.pdf mac * * *
fillform.pdf * * * *
form_action_trigger.pdf * * * *
form_button_sign_url.pdf * * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button0.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button1.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button10.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button2.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button3.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button4.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button5.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button7.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button8.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
form_button9.pdf * * * skia

form_combo_sign_url.pdf * * * *
form_combobox0.pdf * * * *
form_combobox_actioin_goto.pdf * * * *
form_combobox_date.pdf mac * * *
form_combobox_date.pdf * nov8 * *
form_combobox_date1.pdf * * * *
form_combobox_date2.pdf mac * * *
form_combobox_date2.pdf * nov8 * *
form_combobox_importform.pdf * * * *
form_combobox_num.pdf mac * * *
form_combobox_num.pdf * nov8 * *
form_combobox_per.pdf mac * * *
form_combobox_per.pdf * nov8 * *
form_combobox_plus.pdf mac * * *
form_combobox_plus.pdf * nov8 * *

# TODO(pdfium:1963): Remove after associated bug is fixed
form_combobox_plus.pdf * * * skia

form_combobox_product.pdf mac * * *
form_combobox_product.pdf * nov8 * *

# TODO(pdfium:1963): Remove after associated bug is fixed
form_combobox_product.pdf * * * skia

form_combobox_resetform.pdf * * * *
form_combobox_time.pdf mac * * *
form_combobox_time.pdf * nov8 * *
form_list.pdf * * * *
form_list1.pdf * * * *
form_same.pdf mac * * *
form_text_sign_url.pdf * * * *
format_combo_box.pdf mac * * *
format_combo_box.pdf * nov8 * *
format_custom_format.pdf linux,mac * * *
format_custom_format.pdf * nov8 * *
format_custom_keystroke.pdf * * * *
format_date.pdf * nov8 * *
format_number.pdf mac * * *
format_percentage.pdf mac * * *
format_special.pdf * nov8 * *
format_text_color.pdf mac * * *
formfeild.pdf * * * *
getarray.pdf mac * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
image_bmp.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
image_gif.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
image_ico.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
image_jpg.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
image_png.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
image_tif.pdf * * * skia

javascriptaction.pdf * * * *
jetman_std.pdf mac * * *
jetman_std_fixed.pdf mac * * *
js_calculate.pdf * * * *

# TODO(pdfium:1957): Remove after associated bug is fixed
lines.pdf * * * skia

list_box.pdf * * * *

negative.pdf mac * * *
new_certify1.pdf mac * * *

# TODO(pdfium:1863): Remove after associated bug is fixed
new_pdfsign1.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
new_pdfsign2.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
new_pdfsign3.pdf * * * skia

# TODO(pdfium:1856): Remove after associated bug is fixed
new_pdfsign4.pdf * * * skia

new_signature1.pdf mac * * *
new_signature2.pdf mac * * *
new_stamp4.pdf mac * * *
new_stamp5.pdf mac * * *
new_textmarkup1.pdf mac * * *
new_textmarkup1_hidden.pdf mac * * *
new_textmarkup2.pdf mac * * *
new_textmarkup2_hidden.pdf mac * * *
new_textmarkup4.pdf mac * * *
new_textmarkup4_hidden.pdf mac * * *
new_textmarkup5.pdf mac * * *
new_textmarkup5_hidden.pdf mac * * *
new_textmarkup6.pdf mac * * *
new_textmarkup7.pdf mac * * *
new_textmarkup7_hidden.pdf mac * * *
new_textmarkup8.pdf mac * * *
new_textmarkup8_hidden.pdf mac * * *
number.pdf * * * *
octest.pdf mac * * *
open_a_weblink.pdf mac * * *
path_10_jd.pdf mac * * *
path_5_pattern.pdf mac * * *

# TODO(pdfium:1867): Remove after associated bug is fixed
path_5_pattern.pdf * * * skia

path_6_graphics4.5.5.pdf mac * * *
path_7.pdf mac * * *
path_9.pdf mac * * *
percentage.pdf mac * * *
push_button.pdf * * * *

# TODO(pdfium:1960): Remove after associated bug is fixed
quick_start_guide.pdf * * * skia

quick_start_guide.pdf mac * * *
radio_button.pdf * * * *
run_custom_validate_script.pdf * * * *
show_1.pdf mac * * *
signature.pdf * * * *
signature_4.pdf * * * *
simplified_field_notation.pdf mac * * *
special.pdf mac * * *
submit_form.pdf mac * * *
test_app_beep.pdf * * * *
test_control.pdf * * * *
text_field.pdf * * * *
text_field_font_input_decimal_point.pdf mac * * *
text_field_multiline_line_spacing.pdf mac * * *
thread_action.pdf mac * * *
time.pdf mac * * *
transformation.pdf mac * * *
transparent.pdf mac * * *

# TODO(pdfium:1856): Remove after associated bug is fixed
whats_new_in_v3.0.pdf * * * skia

whats_new_in_v3.0.pdf mac * * *
widget_javascript.pdf mac * * *

# TODO(pdfium:1959): Remove after associated bug is fixed
xfermodes2.pdf * * * skia

# TODO(pdfium:1959): Remove after associated bug is fixed
xfermodes3.pdf * * * skia

zh_file1.pdf mac * * *
zh_function_list.pdf mac * * *
zh_shared_document.pdf mac * * *

# TODO(hnakashima): These might never have been run. Go over them and fix.

FRC_8.5_E&X.pdf * * * *
FRC_8.5_O&PO_GoToE.pdf * * * *
FRC_8.5_OpenAction&O_URI.pdf * * * *
FRC_8.5_PC&C_GoToE_T_T.pdf * * * *
FRC_8.5_PC_GoToE_T_R&P&A.pdf * * * *
FRC_8.5_PO_GoToE_T_R&N.pdf * * * *

# xfa_specific

Choose.pdf * * * *
data_binding.pdf * * * *
# TODO(npm): Add proper evt for MouseEvents.
MouseEvents_enter.pdf * * * *
MouseEvents_exit.pdf * * * *
Oneof3.pdf * * * *
Sum.pdf * * * *
TimeField.pdf win,linux * * *
Test_CheckBox.pdf * * * *
Test_DateField_locale_zh_HK.pdf mac,win * * *

#
# JavaScript tests
#
bug_679642.in * * noxfa *
bug_679643.in * * noxfa *
bug_735912.in * * noxfa *

# JS tests in nov8 mode expect empty results. This one will
# not be empty as the callback is not js-based.
named_action.in * nov8 * *

# xfa_specific

# TODO(pdfium:1106): Remove after associated bug is fixed
resolve_nodes_1.pdf * * * *

#
# Pixel tests
#

# TODO(pdfium:1747): Remove after associated bug is fixed
bug_1258634.in * * * skia

# TODO(pdfium:1331): Remove after associated bug is fixed
bug_1331.in * * * *

# TODO(chromium:1356149): Remove after associated bug is fixed
bug_1356149.in mac * * agg

# TODO(pdfium:1457): Remove after associated bug is fixed
bug_1457.in * * * *

# TODO(pdfium:1519): Remove after associated bug is fixed
bug_1519.in * * * *

# TODO(pdfium:1571): Remove after associated bug is fixed
bug_1571.in * * * *

# TODO(pdfium:1723): Remove after associated bug is fixed
bug_1723.in * * * *

# TODO(pdfium:1846): Remove after associated bug is fixed
bug_1846.in * * * agg

# TODO(pdfium:1963): Remove after associated bug is fixed
bug_1963.in * * * skia

# TODO(chromium:237527): Remove after associated bug is fixed
bug_237527_1.in * * * *

# TODO(chromium:451366): Remove after associated bug is fixed
bug_451366.in * * * agg

# TODO(pdfium:492): Remove after associated bug is fixed
bug_492.in * nov8 * *

# TODO(chromium:725555, skia:9265): Remove after associated bug is fixed
bug_725555.in * * * skia

# TODO(pdfium:983289): Remove after associated bug is fixed
bug_983289.in * * * agg

# TODO(chromium:1028991): Remove after associated bug is fixed
reset_button.in * * * *

# xfa_specific

# TODO(pdfium:1095): Remove after associated bug is fixed
bug_997412.in win * * *
# TODO(pdfium:1107): Remove after associated bug is fixed
standard_symbols.pdf * * * *
# TODO(pdfium:1902): Remove after associated bug is fixed
xfa_bmp_image.in * * * skia
# TODO(pdfium:1095): Remove after associated bug is fixed
xfa_example.in win * * *
# TODO(pdfium:1095): Remove after associated bug is fixed
xfa_textfield.in win * * *
