# These are the layout test expectations for the WK1 GTK port of WebKit.
#
# See http://trac.webkit.org/wiki/TestExpectations for more information on this file.

# This list is divided into several sections to make it easy for us to triage and close issues.
# 1. TESTS THAT REQUIRE NEW RESULTS
# Please don't add any tests to this list. Instead just ping a GTK+ developer
# to generate results for you.

# 2. EXPECTED FAILURES
# This list is divided into two parts:
# a. Tests that we never expect to pass, because they use features we likely
#    will never implement (Mac-only features, for instance).
# b. Missing WebCore/WebKit features that we'll want someday.

# 3. TESTS CRASHING
# Please open a bug for each test crashing with any important information.
# These are in a separate section than failing tests, because they should be
# priority fixes.

# 4. FLAKY TESTS
# When appropriate, open a bug for flaky tests with the test diff and information
# about which bots the test fails on.

# 5. SLOW TESTS
# These tests are assigned the SLOW modifier to prevent them timing out as they
# otherwise pass, but take a long time to complete due to the nature of test,
# debug configuration or some other performance-affecting factor.

# 6. TESTS TIMING OUT
# Please open a bug for each test timing out with any important information.

# 7. TESTS WITH ARCHITECTURE-SPECIFIC RESULTS
# Tests with different results (of which at least one is failure) on 32-bit and 64-bit builders.
# These tests are essentially marked as flaky, but are noted as failing only on specific architecture.

# 8. TESTS FAILING
# Each test should (eventually) have a bug. Missing DRT features also go here.

#////////////////////////////////////////////////////////////////////////////////////////
# Tests that require new results.
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# End of Tests that require new results.
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Expected failures
#////////////////////////////////////////////////////////////////////////////////////////

# Modal dialogs will not be supported in WebKit1. These expectations should eventually
# be moved into WebKit1-specific TestExpectations file (once it's created).
fast/animation/request-animation-frame-during-modal.html [ WontFix Failure ]
fast/events/show-modal-dialog-onblur-onfocus.html [ WontFix Timeout ]
fast/events/scroll-event-during-modal-dialog.html [ WontFix Failure ]
fast/harness/show-modal-dialog.html [ WontFix Timeout ]
http/tests/security/cross-frame-access-call.html [ WontFix Failure ]
http/tests/security/cross-frame-access-get.html [ WontFix Failure ]

# This policy delegate is implemented, but it needs the DOM node path in the output.
Bug(GTK) fast/encoding/mailto-always-utf-8.html [ Failure ]

# Missing support in DRT for Geolocation's Coordinate attributes.
Bug(GTK) fast/dom/Geolocation/coordinates-interface-attributes.html [ Failure ]

webkit.org/b/87951 fast/dom/Window/mozilla-focus-blur.html [ Failure ]

# Misses setMediaType() implementation
Bug(GTK) fast/media/print-restores-previous-mediatype.html [ Timeout ]

# Needs further investigating.
webkit.org/b/107962 webkit.org/b/108380 http/tests/cache/iframe-304-crash.html [ Failure ]

Bug(GTK) http/tests/loading/bad-server-subframe.html [ Failure ]

# Requires willSendRequestReturnsNullOnRedirect + willSendRequest + didFinishLoading
Bug(GTK) http/tests/misc/will-send-request-returns-null-on-redirect.html [ Failure ]

webkit.org/b/108747 inspector-protocol/page/javascriptDialogEvents.html [ Failure ]

# This test is for clients that choose to make the missing plugin indicator a button
Bug(GTK) plugins/clicking-missing-plugin-fires-delegate.html [ Failure ]

# Support for Web Audio tests is missing in DumpRenderTree
webkit.org/b/67187 webaudio [ Skip ]

# We lack userscripts support.
webkit.org/b/56132 userscripts [ Skip ]

# LayoutTestController::applicationCacheDiskUsageForOrigin isn't implemented.
webkit.org/b/57127 http/tests/appcache/origin-usage.html [ Failure ]

#////////////////////////////////////////////////////////////////////////////////////////
# End of Expected failures
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Crashing tests
#////////////////////////////////////////////////////////////////////////////////////////

webkit.org/b/86443 plugins/npruntime/delete-plugin-within-getProperty.html [ Crash ]

webkit.org/b/117688 http/tests/security/video-poster-cross-origin-crash.html [ Crash Pass ]

webkit.org/b/118421 [ Debug ] fast/repaint/fixed-right-bottom-in-page-scale.html [ Crash ]

#////////////////////////////////////////////////////////////////////////////////////////
# End of Crashing tests
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Flaky tests
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# End of Flaky tests
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Slow tests
#////////////////////////////////////////////////////////////////////////////////////////

webkit.org/b/108363 fullscreen/video-specified-size.html [ Pass Slow ]

#////////////////////////////////////////////////////////////////////////////////////////
# End of slow tests
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Tests timing out
#////////////////////////////////////////////////////////////////////////////////////////

webkit.org/b/61118 fullscreen/full-screen-keyboard-enabled.html [ Timeout ]

#////////////////////////////////////////////////////////////////////////////////////////
# End of Tests timing out
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Tests with architecture-specific results
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# End of tests with architecture-specific results
#////////////////////////////////////////////////////////////////////////////////////////

#////////////////////////////////////////////////////////////////////////////////////////
# Tests failing
#////////////////////////////////////////////////////////////////////////////////////////

Bug(GTK) http/tests/appcache/origin-quota.html [ Failure ]
Bug(GTK) http/tests/appcache/origin-quota-continued-download.html [ Failure ]
Bug(GTK) http/tests/appcache/origin-quota-continued-download-multiple-manifests.html [ Failure ]
Bug(GTK) http/tests/appcache/origin-delete.html [ Failure ]
Bug(GTK) http/tests/appcache/origins-with-appcache.html [ Failure ]

Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-deny.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny.html [ Failure ]
Bug(GTK) http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html [ Failure ]

# Gtk's DRT doesn't implement dumpResourceResponseMIMETypes which is required for the preloader tests.
webkit.org/b/58222 fast/dom/HTMLLinkElement/link-and-subresource-test.html [ Failure ]
webkit.org/b/58222 fast/dom/HTMLLinkElement/prefetch.html [ Failure ]
webkit.org/b/58222 fast/dom/HTMLLinkElement/subresource.html [ Failure ]
webkit.org/b/58222 fast/preloader [ Failure ]
webkit.org/b/58222 fast/preloader/scan-body-from-head-import.html [ Pass ]
webkit.org/b/58222 fast/preloader/scan-body-from-head-script.html [ Pass ]
webkit.org/b/58222 http/tests/mime/uppercase-mime-type.html [ Failure ]
webkit.org/b/58222 http/tests/misc/prefetch-purpose.html [ Failure ]

Bug(GTK) http/tests/xmlhttprequest/abort-should-cancel-load.html [ Failure ]
Bug(GTK) http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers.html [ Failure ]

webkit.org/b/93978 fast/hidpi/clip-text-in-hidpi.html [ Failure ]
webkit.org/b/93978 fast/hidpi/image-set-background-dynamic.html [ Failure ]
webkit.org/b/93978 fast/hidpi/image-set-border-image-dynamic.html [ Failure ]

webkit.org/b/87088 js/names.html [ Failure ]

webkit.org/b/68855 editing/selection/select-bidi-run.html [ Failure ]

webkit.org/b/77015 fast/events/clear-drag-state.html [ Failure ]
webkit.org/b/77015 fast/events/clear-edit-drag-state.html [ Failure ]

webkit.org/b/74276 fast/events/dont-loose-last-event.html [ Failure ]

webkit.org/b/70485 fast/events/drag-selects-image.html [ Failure ]

# Let MemoryCache reuse cached XHRs (REGRESSION caused by r107672)
webkit.org/b/76564 fast/workers/worker-crash-with-invalid-location.html [ Failure ]

# Need testRunner.setShouldStayOnPageAfterHandlingBeforeUnload
webkit.org/b/67014 fast/loader/form-submission-after-beforeunload-cancel.html [ Failure ]

# Tests failing because of missing policy delegate callbacks.
Bug(GTK) fast/loader/onload-policy-ignore-for-frame.html [ Failure ]
Bug(GTK) fast/loader/policy-delegate-action-hit-test-zoomed.html [ Failure ]
Bug(GTK) fast/loader/reload-policy-delegate.html [ Failure ]
Bug(GTK) fast/loader/stop-provisional-loads.html [ Failure ]
Bug(GTK) http/tests/security/feed-urls-from-remote.html [ Timeout ]

# Missing DRT API.
Bug(GTK) http/tests/loading/preload-slow-loading.php [ Failure ]

Bug(GTK) http/tests/misc/policy-delegate-called-twice.html [ Failure ]
Bug(GTK) http/tests/misc/window-dot-stop.html [ Failure ]

Bug(GTK) http/tests/plugins/npapi-response-headers.html [ Failure ]

# Need to implement getFormValue().
Bug(GTK) plugins/form-value.html [ Failure ]

webkit.org/b/116807 fast/dom/Window/window-focus-self.html [ Failure ]

webkit.org/b/119730 fast/dom/Window/open-zero-size-as-default.html [ Failure ]

webkit.org/b/87355 canvas/philip/tests/2d.text.draw.fontface.notinpage.html [ Failure ]

webkit.org/b/113747 svg/repaint/buffered-rendering-static-image.html [ ImageOnlyFailure ]

webkit.org/b/119734 plugins/navigator-plugins-disabled.html [ Failure ]

webkit.org/b/119735 plugins/unavailable-plugin-indicator-obscurity.html [ Failure ]

webkit.org/b/107194 storage/indexeddb/transaction-abort.html [ Failure ]

webkit.org/b/114625 http/tests/cache/willsendrequest-returns-null-for-memory-cache-load.html [ Failure ]

webkit.org/b/120776 fast/hidpi/image-srcset-change-dynamically-from-js-2x.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-fraction.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-fraction-1.5x.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-invalid-inputs-correct-src.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-invalid-inputs-except-one.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-simple-2x.html [ Failure ]
webkit.org/b/120776 fast/hidpi/image-srcset-src-selection-2x.html [ Failure ]

# Needed to cover the fix for <rdar://problem/6727495>
Bug(rdar6727495) http/tests/loading/text-content-type-with-binary-extension.html [ Failure ]

webkit.org/b/112109 fast/box-shadow/box-shadow-with-zero-radius.html [ ImageOnlyFailure ]

webkit.org/b/90589 fast/css/user-drag-none.html [ Failure ]

webkit.org/b/119733 fast/regions/overflow-scrollable-2.html [ ImageOnlyFailure ]

# Needs to update the gtk databaseQuotaExceeded() test function to handle quota expansion requests.
Bug(GTK) storage/websql/open-database-expand-quota.html [ Failure ]

# Needs to make sure the redirect-chain scenario in https://bugs.webkit.org/show_bug.cgi?id=31410 works
webkit.org/b/35300 http/tests/loading/307-after-303-after-post.html [ Failure ]

# Needs custom policy delegate enhancement to log downloads
Bug(GTK) http/tests/download [ Failure ]

# Touch support only implemented in WK2
fast/events/touch [ Skip ]

#////////////////////////////////////////////////////////////////////////////////////////
# End of Tests failing
#////////////////////////////////////////////////////////////////////////////////////////
