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

# 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:1870): Remove after associated bug is fixed
annotation_highlight_opacity.pdf * * * skiapaths

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

# TODO(pdfium:1871): Remove after associated bug is fixed
annotation_square_dash.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 * * *

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

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

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

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

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

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

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

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

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

# TODO(pdfium:1819): Remove after associated bug is fixed
ch_7_8.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 * * *
