# Copyright 2016 The PDFium Authors. All rights reserved.
# 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, skiapaths
#
# 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_10_watermark.pdf * * * *
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,skiapaths

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:1860): Remove after associated bug is fixed
2_halftone.pdf * * * skia

3_4_textbox.pdf * * * *

# TODO(pdfium:1789): Remove after associated bug is fixed
3_image_imagemask.pdf * * * skia

# TODO(pdfium:1790): Remove after associated bug is fixed
3_interpolate_image.pdf * * * skia

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

# TODO(pdfium:1858): Remove after associated bug is fixed
FRC_10_8.2.4_View_C.pdf * * * skia

FRC_11_8.2.2__T8.3_first_last_exchange.pdf * * * *

# TODO(pdfium:1857): Remove after associated bug is fixed
FRC_11_8.2.4_View_edit.pdf * * * skia

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

# TODO(pdfium:1859): Remove after associated bug is fixed
FRC_8.5_Screen_Img_D_Launch.pdf * * * skia

# TODO(pdfium:1859): Remove after associated bug is fixed
FRC_8.5_URI_IsMap.pdf * * * skia

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_browsefordoc.pdf * * * *
all_trigger_mailmsg.pdf * * * *
all_trigger_newdoc.pdf * * * *
all_trigger_print.pdf * * * *
all_trigger_run_js_lunchurl.pdf mac * * *
all_trigger_run_js_maildoc.pdf mac * * *

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

annotation_highlight_author_content.pdf mac * * *
annotation_highlight_long_content.pdf mac * * *
annotation_highlight_no_author.pdf mac * * *

# TODO(pdfium:1803): Remove after associated bug is fixed
annotation_ink_dot.pdf * * * skia,skiapaths

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

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

app_launchurl.pdf mac * * *
appstoredescription3.1_en_updated.pdf mac * * *

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

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,skiapaths

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

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

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

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

en_fqa2.pdf mac * * *
en_introduce.pdf mac * * *
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 * * *

# TODO(pdfium:1807, pdfium:1808): Remove after associated bug is fixed
example_025.pdf * * * skia,skiapaths

example_026.pdf mac * * *
example_027.pdf mac * * *
example_028.pdf mac * * *
example_029.pdf mac * * *
example_030.pdf mac * * *

# TODO(pdfium:1809): Remove after associated bug is fixed
example_030.pdf * * * skia,skiapaths

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 * * * *
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 * *
form_combobox_product.pdf mac * * *
form_combobox_product.pdf * nov8 * *
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:1788): Remove after associated bug is fixed
group_xobject.pdf * * * skia

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

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

# TODO(pdfium:1859): Remove after associated bug is fixed
image_foxit.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 * * * *
list_box.pdf * * * *

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

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

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

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

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 * * *
path_6_graphics4.5.5.pdf mac * * *
path_7.pdf mac * * *
path_9.pdf mac * * *

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

percentage.pdf mac * * *
push_button.pdf * * * *
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:1802): Remove after associated bug is fixed
transparent1.pdf * * * skia

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

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

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

# TODO(pdfium:1804): Remove after associated bug is fixed
# TODO(pdfium:1845): Remove after associated bug is fixed
xfermodes3.pdf * * * skia,skiapaths

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(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(chromium:237527): Remove after associated bug is fixed
bug_237527_1.in * * * *

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

# 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,skiapaths

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

# TODO(pdfium:1310): Remove after associated bug is fixed
radial_shading_point_at_border.in * * * skia,skiapaths

# 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:1168): Remove after associated bug is fixed
xfa_bmp_image.in * * * *
# 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 * * *
