# These are the layout test expectations for Apple's iOS simulator port of WebKit2
#
# See http://trac.webkit.org/wiki/TestExpectations for more information on this file.
#

editing/inserting/insert-paragraph-selection-outside-contenteditable.html [ Failure ]
fast/events/offsetX-offsetY.html [ Failure ]
fast/hidpi/image-srcset-invalid-descriptor.html [ Failure ]
http/tests/cookies/js-get-and-set-http-only-cookie.html [ Failure ]
http/tests/security/cross-origin-worker-indexeddb-allowed.html [ Failure ]
http/tests/security/cross-origin-worker-indexeddb.html [ Failure ]

fast/events/scroll-to-anchor-vertical-lr-writing-mode.html [ ImageOnlyFailure ]
fast/events/scroll-to-anchor-vertical-writing-mode.html [ ImageOnlyFailure ]
fast/sub-pixel/sub-pixel-composited-layers.html [ ImageOnlyFailure ]

webkit.org/b/152439 compositing/overflow/dynamic-composited-scrolling-status.html [ Pass Failure ]

webkit.org/b/173178 [ Release ] svg/animations/svglength-element-removed-crash.svg [ Skip ]

# iOS simulator doesn’t support dashboard.
mathml/mathml-in-dashboard.html [ Failure ]
svg/custom/embedded-svg-allowed-in-dashboard.xml [ Failure ]
svg/custom/manually-parsed-embedded-svg-allowed-in-dashboard.html [ Failure ]
svg/custom/manually-parsed-svg-allowed-in-dashboard.html [ Failure ]
svg/custom/svg-allowed-in-dashboard-object.html [ Failure ]
http/tests/xmlhttprequest/svg-created-by-xhr-allowed-in-dashboard.html [ Failure ]

webkit.org/b/174100 webgl/1.0.2/conformance/glsl/misc/shader-with-non-reserved-words.html [ Skip ]

webkit.org/b/173010 js/slow-stress/Int32Array-alloc-huge.html [ Pass Timeout ]

webkit.org/b/174183 animations/resume-after-page-cache.html [ Pass Failure ]
webkit.org/b/174183 legacy-animation-engine/animations/resume-after-page-cache.html [ Pass Failure ]

webkit.org/b/173861 http/tests/webrtc/filtering-ice-candidate-same-origin-frame2.html [ Skip ]
webkit.org/b/173861 http/tests/webrtc/filtering-ice-candidate-same-origin-frame.html [ Skip ]
webkit.org/b/173861 http/tests/webrtc/filtering-ice-candidate-cross-origin-frame.html [ Skip ]

webkit.org/b/172384 fast/hidpi/hidpi-long-page-with-inset-element.html [ Pass ImageOnlyFailure ]

webkit.org/b/175865 quicklook/multi-sheet-numbers-09.html [ Pass Failure ]

webkit.org/b/187699 [ Debug ] fast/forms/submit-change-fragment.html [ Pass Timeout ]

webkit.org/b/194368 http/tests/workers/service/basic-register-exceptions.html [ Pass Failure ]

webkit.org/b/196218 performance-api/performance-observer-periodic.html [ Pass Failure ]

webkit.org/b/196228 http/tests/cache-storage/cache-clearing-origin.https.html [ Pass Failure ]
webkit.org/b/196228 http/tests/cache-storage/cache-records-persistency.https.html [ Pass Failure ]

webkit.org/b/196233 fast/viewport/ios/initial-scale-after-changing-view-scale.html [ Pass Timeout ]

webkit.org/b/196236 [ Debug ] fast/visual-viewport/ios/min-scale-greater-than-one.html [ Pass Failure ]

webkit.org/b/196269 http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource.html [ Pass Timeout ]
webkit.org/b/196269 http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource.html [ Pass Timeout ]
webkit.org/b/196269 http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource.html [ Pass Timeout ]
webkit.org/b/196269 http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource.html [ Pass Timeout ]

webkit.org/b/191709 editing/deleting/delete-emoji-1.html [ Pass Failure ]
webkit.org/b/191709 editing/deleting/delete-emoji-9.html [ Pass Failure ]
webkit.org/b/191709 editing/deleting/delete-emoji.html [ Pass Failure ]

webkit.org/b/196300 fast/visual-viewport/ios/min-scale-greater-than-one.html [ Pass Failure ]

webkit.org/b/196298 fast/viewport/ios/use-minimum-device-width-for-page-without-viewport-meta.html [ Pass Failure ]

webkit.org/b/162975 http/tests/cache/disk-cache/memory-cache-revalidation-updates-disk-cache.html [ Pass Failure ]

webkit.org/b/196307 http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html [ Pass Failure ]

webkit.org/b/196112 imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-bold.html [ Pass ImageOnlyFailure ]
webkit.org/b/196112 imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck.html [ Pass ImageOnlyFailure ]
webkit.org/b/196112 imported/w3c/web-platform-tests/mathml/relations/css-styling/mathvariant-italic.html [ Pass ImageOnlyFailure ]

http/wpt/cache-storage/quota-third-party.https.html [ Slow ]
http/wpt/fetch/response-opaque-clone.html [ Slow ]
http/wpt/cache-storage/cache-put-keys.https.any.html [ Slow ]
http/wpt/cache-storage/cache-quota-after-restart.any.html [ Slow ]
http/wpt/cache-storage/cache-quota.any.html [ Slow ]
http/wpt/cache-storage/cache-put-keys.https.any.worker.html [ Slow ]
http/wpt/cache-storage/a-cache-open.https.html [ Slow ]
http/wpt/cache-storage/cache-quota-add.any.html [ Slow ]

webkit.org/b/196376 [ Debug ] storage/domstorage/localstorage/private-browsing-affects-storage.html [ Pass Failure ]

webkit.org/b/196403 imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html [ Pass Failure ]

webkit.org/b/196495 fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html [ Pass Failure ]

webkit.org/b/195341 fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html [ Pass Failure ]

webkit.org/b/196612 scrollingcoordinator/ios/ui-scroll-fixed.html [ Pass ImageOnlyFailure ]

webkit.org/b/196654 [ Debug ] editing/execCommand/print.html [ Skip ]

webkit.org/b/186581 [ Debug ] fast/parser/xml-error-adopted.xml [ Pass Timeout ]

webkit.org/b/196944 imported/w3c/web-platform-tests/hr-time/test_cross_frame_start.html [ Pass Failure ]

webkit.org/b/197207 http/wpt/resource-timing/rt-resources-per-frame.html [ Pass Failure ]

webkit.org/b/192501 animations/play-state-in-shorthand.html [ Pass Failure ]

webkit.org/b/182849 imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm [ Pass Failure ]