mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #21907 - servo-wpt-sync:wpt_update_10-10-2018, r=jdm
Sync WPT with upstream (10-10-2018) Automated downstream sync of changes from upstream as of 10-10-2018. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21907) <!-- Reviewable:end -->
This commit is contained in:
commit
35bf180dcb
87 changed files with 1442 additions and 452 deletions
|
@ -129333,6 +129333,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-position/position-sticky-child-multicolumn.html": [
|
||||
[
|
||||
"/css/css-position/position-sticky-child-multicolumn.html",
|
||||
[
|
||||
[
|
||||
"/css/css-position/position-sticky-child-multicolumn-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-position/position-sticky-flexbox.html": [
|
||||
[
|
||||
"/css/css-position/position-sticky-flexbox.html",
|
||||
|
@ -171217,6 +171229,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html",
|
||||
[
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html",
|
||||
|
@ -171409,6 +171433,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html",
|
||||
[
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html": [
|
||||
[
|
||||
"/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html",
|
||||
|
@ -222588,6 +222624,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/delayed_frame.py": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/form_action_navigation.sub.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -222648,6 +222689,26 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/support/wait_for_navigation.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -262343,6 +262404,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-position/position-sticky-child-multicolumn-ref.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-position/position-sticky-flexbox-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -275573,6 +275639,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-002-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -275638,6 +275709,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -315058,6 +315134,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [
|
||||
[
|
||||
{}
|
||||
|
@ -330715,9 +330796,7 @@
|
|||
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/child-navigates-parent-allowed.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [
|
||||
|
@ -330825,9 +330904,7 @@
|
|||
"content-security-policy/navigate-to/link-click-allowed.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/link-click-allowed.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-blocked.sub.html": [
|
||||
|
@ -330839,33 +330916,25 @@
|
|||
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/link-click-redirected-allowed.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
|
||||
|
@ -330916,6 +330985,30 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/spv-only-sent-to-initiator.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [
|
||||
[
|
||||
"/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
|
||||
[
|
||||
"/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html",
|
||||
|
@ -398398,6 +398491,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"service-workers/service-worker/fetch-audio-tainting.https.html": [
|
||||
[
|
||||
"/service-workers/service-worker/fetch-audio-tainting.https.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [
|
||||
[
|
||||
"/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html",
|
||||
|
@ -404646,6 +404745,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [
|
||||
[
|
||||
"/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
|
||||
[
|
||||
"/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html",
|
||||
|
@ -463714,7 +463819,7 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
|
||||
"6c05478190f5c33b42ee87fe94d012eacaecb89c",
|
||||
"7b4b455d8d4e783d6006e58d9423943efa0241df",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/child-navigates-parent-allowed.html.headers": [
|
||||
|
@ -463722,7 +463827,7 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [
|
||||
"2acf417a3b901d6e6cdac4eded279444c6ad0cf4",
|
||||
"4e50617e3c253eae90e7e4ea5094e4cbca3b5fd0",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html.headers": [
|
||||
|
@ -463730,19 +463835,19 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html": [
|
||||
"452b881829f65ba7f69cd2eb4780b6be802e4dcd",
|
||||
"458373fbc01591c25a901379282a5370989b5084",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html": [
|
||||
"44dcc516357ce96d635ec95d3fd515dd4605811f",
|
||||
"3ed4815bff6c363661ab94bdc1796067870aadab",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html": [
|
||||
"5e6557d9d9bb0a5f64f495b21d30a84763e3495d",
|
||||
"f3f7896e932aafa137cf11b76c38246a101f4a00",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html": [
|
||||
"9f9c803d53ad05a3c621159e19df762ee2e30a0a",
|
||||
"08e0cbe3fb9b39f8b4945b422c5e459a2f862fb9",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-allowed.html": [
|
||||
|
@ -463750,7 +463855,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-blocked.sub.html": [
|
||||
"beb22214faaec7d109b6757ff85cefc846a41fba",
|
||||
"72db7b8d1d584292ac3eeaef6919229d3cedf369",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-cross-origin-allowed.sub.html": [
|
||||
|
@ -463758,7 +463863,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-cross-origin-blocked.sub.html": [
|
||||
"49fe958adb771249198f641a926fc0404217e8eb",
|
||||
"be5f70c8b1e07de9b8d7934d7427cfc445d6226f",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-redirected-allowed.html": [
|
||||
|
@ -463766,7 +463871,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/form-redirected-blocked.sub.html": [
|
||||
"6adc9efdaaf827bf2f4ee0e394619c101bdacd50",
|
||||
"d60b8a7aa8d41d9498a72a60e5d3ae807d31fea2",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-allowed.html": [
|
||||
|
@ -463774,7 +463879,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-blocked.sub.html": [
|
||||
"6aef250eeedd1a0163fa32b000ee740e233d0d6c",
|
||||
"721f055c71507ec85fea9a4d86b107fe0e91d2f7",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-cross-origin-allowed.sub.html": [
|
||||
|
@ -463782,7 +463887,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html": [
|
||||
"894719b3ac869d517b353623127666ae848af044",
|
||||
"cd0cd9106dbb429e2d8ec4cbbc7c3fcb6c56aa93",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-redirected-allowed.html": [
|
||||
|
@ -463790,31 +463895,31 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/href-location-redirected-blocked.sub.html": [
|
||||
"b91c473bef4148bd8943d30fcae56d9f7dfb3df8",
|
||||
"5d8fafb31313f0ec18306d4ee1c071f278a34272",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-allowed.html": [
|
||||
"667a3a59f2fafd4022f769a05e7e83d1eddcb4c3",
|
||||
"977b85dfb2cbaaa4a69288e8d283c483e35eed97",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-blocked.sub.html": [
|
||||
"0ad98264c9636884ad353efa875110f9c6bea4e0",
|
||||
"29686fcaeff6b57eca88ccfd599727bd2cc06464",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
|
||||
"2f9f0e2af0ce68585a9d0f96d3afc067c5c1a75b",
|
||||
"4381bcb08d6ed73abf13da54c9ccf583bd5d7523",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
|
||||
"970f5a2d3065c66dbc650dcff0de7b1227a8e038",
|
||||
"f2b106c57730c00b95cbe6cb66582c2d33dcdede",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
|
||||
"81c4f4e1677f07df0e2ab3187e8b03d5978e74c5",
|
||||
"87dea95b1dc0b238b8c033b815daba960935f5d8",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
|
||||
"bb61126244e5602f76d080746302bdfbb32e2ca0",
|
||||
"9b9205a526a4834e8ba918e86c67710353a4ccd8",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
|
||||
|
@ -463822,7 +463927,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-blocked.sub.html": [
|
||||
"d4d52a51ccbc959694e738fb7824cc74bddd9ad8",
|
||||
"1292c9ba5fc0b7bb7383e584296c29c627a87a96",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-cross-origin-allowed.sub.html": [
|
||||
|
@ -463830,7 +463935,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html": [
|
||||
"2118b27ba33c784066faaa5dee114fc455ea7e92",
|
||||
"d7ccd336205da0087c67bc8cdb778d426f167188",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-redirected-allowed.html": [
|
||||
|
@ -463838,11 +463943,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html": [
|
||||
"55e3295ec1abc57a0ec57076b518b61c094446d3",
|
||||
"0734473ee6331318a3913e6dd2ba41d52ed2c02c",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/parent-navigates-child-allowed.html": [
|
||||
"e5455ceaa275b0723b90bac2f3fcfe8f37a6591c",
|
||||
"47a661157c3f9b27184cf6f391bd0c55ecb2cc72",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/parent-navigates-child-allowed.html.headers": [
|
||||
|
@ -463850,13 +463955,21 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/parent-navigates-child-blocked.html": [
|
||||
"fc549b47fd8b6e941ab92d4e8a0cca69afe2bd89",
|
||||
"c662da95fa1b89e13c61c7b65226cb55a15d93e1",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/parent-navigates-child-blocked.html.sub.headers": [
|
||||
"6784a56c8eb5e84d9434676d2c335173c7de1970",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [
|
||||
"a09057e71567efa082578541a624b9fe51e13737",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/delayed_frame.py": [
|
||||
"21886c7092a63b77239ba3af92194b5d185ac2d1",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/form_action_navigation.sub.html": [
|
||||
"3e3e2afcaccec7ea72f0b1b4a7afab46d8900ba3",
|
||||
"support"
|
||||
|
@ -463866,7 +463979,7 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/href_location_navigation.sub.html": [
|
||||
"c577e935cd43d558fcdba417606c512fdd79753e",
|
||||
"15b1365cc21fbccb02fd11c9e46a067a8fa40b6f",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/href_location_navigation.sub.html.sub.headers": [
|
||||
|
@ -463874,7 +463987,7 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/link_click_navigation.sub.html": [
|
||||
"f1b42428344368f8567bb254e1fe40a7a0f87897",
|
||||
"2434271211f36a456ea2bf61e717e4233a660bba",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/link_click_navigation.sub.html.sub.headers": [
|
||||
|
@ -463902,7 +464015,23 @@
|
|||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py": [
|
||||
"652f9a57b967c64630bc30203e6370ce43da0745",
|
||||
"d22e9202a2a57fac314b1fee26a9a88d68db6c26",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [
|
||||
"9e26c02be3110c19b7b6f69719fc5cd9cfcf2086",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [
|
||||
"50d77dc7dbb24583e7e91a4e8e2128e73c69336a",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [
|
||||
"1329683c88bf584cbc63479f3ba3f6e06281f223",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [
|
||||
"09dbf6863dc7c8374fc082aa63f36690fe80a4a0",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/support/wait_for_navigation.html": [
|
||||
|
@ -463913,6 +464042,18 @@
|
|||
"d3c635b9a062bba15489562293cf0ebf3d2aa0c1",
|
||||
"support"
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [
|
||||
"192477296b61d283d9a229ede466a4ed516e46f3",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [
|
||||
"74fe8f2e7a673564ebf2502d07ec4136802b1537",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [
|
||||
"86e54b3d93745d4eb892ba33074f66fa4dfa9bd9",
|
||||
"testharness"
|
||||
],
|
||||
"content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
|
||||
"21c4fb33ce2d66db750d92a892e3871bd5d9b576",
|
||||
"testharness"
|
||||
|
@ -553138,7 +553279,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-paint-api/registered-property-type.https.html": [
|
||||
"6ff7ce4e0af6b290ea269573c596caa364a5c1c8",
|
||||
"8f02008333c9ed50091fb6605c5d4432ff0a87b4",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-paint-api/resources/html5.png": [
|
||||
|
@ -553301,6 +553442,14 @@
|
|||
"ba23f0145cf497c4d21b36f387d2017acf45bf34",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-position/position-sticky-child-multicolumn-ref.html": [
|
||||
"c44f9f43eb51df8a8499a53db3d7c47d76f38829",
|
||||
"support"
|
||||
],
|
||||
"css/css-position/position-sticky-child-multicolumn.html": [
|
||||
"b5b180a4b1b85ee40120c4e2a5b2af8a02529370",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-position/position-sticky-flexbox-ref.html": [
|
||||
"554ffa6d6bc9a7d76087b45649c1a69824eb2e59",
|
||||
"support"
|
||||
|
@ -553582,7 +553731,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-properties-values-api/typedom.tentative.html": [
|
||||
"1d757df168b0db1acfdbd358951b30dbb25d3016",
|
||||
"6d0623bba420dfe5becafb9eb59cbdf4ad115954",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-properties-values-api/unit-cycles.html": [
|
||||
|
@ -586133,6 +586282,14 @@
|
|||
"a8520ee2d1c81d46dac54d8fb4bcb667fa22d40f",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [
|
||||
"eb787424ed47314b50fa9a47986a68e785d346fa",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [
|
||||
"d9f976deb8ca604315f105a339de9eac7ee48741",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [
|
||||
"bd2f4cb8178054e0aab0b208610e8a2ba97b1141",
|
||||
"reftest"
|
||||
|
@ -586249,6 +586406,14 @@
|
|||
"d37464228658dbf60e8dfbb59ee86dcd9c9f6ad7",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [
|
||||
"8a698b9d2ce2deea6b86aa667e53247f57f3d998",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [
|
||||
"eb21a2d460957cb6fdd887c69dec4f9247bcd951",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [
|
||||
"d23678941e2f0188a2cadfe06264a98ffd161bcb",
|
||||
"support"
|
||||
|
@ -586298,11 +586463,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html": [
|
||||
"b8f983a8153bcbaf5f1de41ca41aba2cca4b9fea",
|
||||
"7f13a517a6656dbe70957b0a12f3c6688d16c75e",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html": [
|
||||
"c5bdc6adead0dd31147ded92e3c2cf2db87d86e4",
|
||||
"20272cff8ff20b4330a8fb987a31ef62a93358c0",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-button-001-ref.html": [
|
||||
|
@ -586314,19 +586479,19 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html": [
|
||||
"a7869752692542a724826426f026c32db6f3ae51",
|
||||
"6a77ee68879cddb13bfd01ac4e9271f341d93e9c",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html": [
|
||||
"c21e5517225e81b086ea7d24a6e8a40b787a168a",
|
||||
"8cea7f5a60e71cf598ce5889df3af2dfe78bc329",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html": [
|
||||
"040da171aaf07aef505d89802ee228c645cd1626",
|
||||
"31ca88312da778b688138e3313e4bde43ec93554",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html": [
|
||||
"18d6ad8c3c692689f30f44e64caaac0ab105ef95",
|
||||
"67aa64bb271c924dd4e36fcec625053a0c4a7acf",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-flex-001-ref.html": [
|
||||
|
@ -586346,19 +586511,19 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html": [
|
||||
"56d1cdd8cee77b81d3229e6843b8a646608928ae",
|
||||
"92a6c7de5ee4fdc19be842955fc413f36097cc4b",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html": [
|
||||
"48f8bc279a6a43848232fee8dcd8a57a82fedfdd",
|
||||
"41458550272f896d47e15210c82f4c22d386d9e0",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html": [
|
||||
"fb013752d058a263474183b7cfb20e7d122a6841",
|
||||
"93a263b5b2ffc131bdfe4989c3d90c312cadf6e4",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html": [
|
||||
"e79d0c18599f655d9ed49637fa32158ea31ef530",
|
||||
"15a2c943bb65e658de58330b4cec76fbdc5294ad",
|
||||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-001-ref.html": [
|
||||
|
@ -586394,7 +586559,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list": [
|
||||
"6b2e31bcd46c4dd38bbf45f2515a6bdc84128e43",
|
||||
"6b872e79f2e15cdb55d9a12ea95c5d981e9ed2d0",
|
||||
"support"
|
||||
],
|
||||
"css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin-ref.html": [
|
||||
|
@ -599454,15 +599619,15 @@
|
|||
"support"
|
||||
],
|
||||
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
|
||||
"c591be46479223b686f8e831c36dfd7b70d62257",
|
||||
"e2b52f257a12aae267c96eab1a20cc805f007abb",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html": [
|
||||
"8a0a4374b2dfed303b112121eb24decfbb9f848e",
|
||||
"0c3897a4ad0f33c1cffd90f063c9d3425d506bd0",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html": [
|
||||
"0f8a0c0665250a659c0452a20f0b60a951346b02",
|
||||
"1ecd874c009a89241902950ac916b5cac22799eb",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html.headers": [
|
||||
|
@ -599470,11 +599635,11 @@
|
|||
"support"
|
||||
],
|
||||
"feature-policy/picture-in-picture-default-feature-policy.https.sub.html": [
|
||||
"f47661bd7d50cd6afb66c00dec630c8b2439fed0",
|
||||
"12bbf7f2f1f80fa28c43c85e028649e3bcedc896",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html": [
|
||||
"2f7576b16e1355a3fe7c6e81b385386e83356335",
|
||||
"b36afbda503f523d7298021ee8ea3f7a2f71a433",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html.headers": [
|
||||
|
@ -599550,7 +599715,7 @@
|
|||
"support"
|
||||
],
|
||||
"feature-policy/reporting/picture-in-picture-reporting.html": [
|
||||
"a8a998ed2a15af10ffa6dba02273bc8d0b2d5eb4",
|
||||
"60e4825d988218bda9422ec6342597823aebabef",
|
||||
"testharness"
|
||||
],
|
||||
"feature-policy/reporting/picture-in-picture-reporting.html.headers": [
|
||||
|
@ -599622,7 +599787,7 @@
|
|||
"support"
|
||||
],
|
||||
"feature-policy/resources/feature-policy-picture-in-picture.html": [
|
||||
"436682d8754bb5855e1bdee68a9fe5560a7f417d",
|
||||
"2f33c449536d1b0253a9a1c0b52073bc500121f3",
|
||||
"support"
|
||||
],
|
||||
"feature-policy/resources/feature-policy-usb-worker.html": [
|
||||
|
@ -599650,7 +599815,7 @@
|
|||
"support"
|
||||
],
|
||||
"feature-policy/resources/picture-in-picture.js": [
|
||||
"e7aabcd5083355e5fd9b6300c90a7f29d07ba702",
|
||||
"e245d798acfc2ebbe9e1524ec8413156b8967a84",
|
||||
"support"
|
||||
],
|
||||
"feature-policy/resources/redirect-on-load.html": [
|
||||
|
@ -623682,7 +623847,7 @@
|
|||
"manual"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [
|
||||
"fc2e619a463c6e18433f395090fdb7a42d863cb6",
|
||||
"4b9a3c8246d04aafff5877fc78001a5f9d00f82d",
|
||||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-add-audio-track.https.html": [
|
||||
|
@ -634178,47 +634343,47 @@
|
|||
"support"
|
||||
],
|
||||
"picture-in-picture/disable-picture-in-picture.html": [
|
||||
"efde31bc3a30914d4e2e932a7de3522c105f5d62",
|
||||
"31e0d12ad770fb9bcc8bbc2f7f86d690efe3c06d",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/enter-picture-in-picture.html": [
|
||||
"9df2bfabcf272a25a6f5177c128e095f8b970427",
|
||||
"a9d7b5c04899c72f91c07d614dbf7df3b37757bc",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/exit-picture-in-picture.html": [
|
||||
"9a5eedd9be8f98e8d0317de7ea2cb644d353f4e1",
|
||||
"c8d76f5244a41754e4a8a5b0c9fd01d056caee96",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/idlharness.window.js": [
|
||||
"a7f25e3be588e876168625c254b3d5e4a79ecaba",
|
||||
"31cd4a14177bccd277023a98ea5956e5f018e2e1",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/leave-picture-in-picture.html": [
|
||||
"5a5182bf64d7fd6414e1e0b264759f6a53950537",
|
||||
"04de95e47ecc6373fd45906b28ba88ad46f4fcc8",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/picture-in-picture-element.html": [
|
||||
"809b3eeabcc30acc48d65e8d63ffcd52bf9a8e95",
|
||||
"2763eca476d716aeb88bf923f32279a3bc55998a",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/picture-in-picture-window.html": [
|
||||
"693a13717e2e283e25d1cb338e7310728bbd521b",
|
||||
"c32787f46f771c7e8d7f689ea328f626dce70908",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/request-picture-in-picture-twice.html": [
|
||||
"0924ad21a4f5eaad75b43fb19d3ad8eb2bc51e91",
|
||||
"17e494bbe88b52b68a6e34e5be37a346479087e1",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/request-picture-in-picture.html": [
|
||||
"403d416c7d454fb0a6a2f8442cc23c53f83212e1",
|
||||
"37ae94829f3c6590ef61841c070eeffaf28e770a",
|
||||
"testharness"
|
||||
],
|
||||
"picture-in-picture/resources/picture-in-picture-helpers.js": [
|
||||
"55eed5393d62628313a558fab121230705fd85ac",
|
||||
"96972dcbc8ef07aa7ea0150c4ee645507eea0856",
|
||||
"support"
|
||||
],
|
||||
"picture-in-picture/shadow-dom.html": [
|
||||
"e36acc02193c6ef10daa1ef74a511adffe5515f3",
|
||||
"17816b93c94b1de504062f934437ecc090213819",
|
||||
"testharness"
|
||||
],
|
||||
"pointerevents/META.yml": [
|
||||
|
@ -646589,6 +646754,10 @@
|
|||
"8e790d0ef5ad6d851534362de5647d96699a65f7",
|
||||
"testharness"
|
||||
],
|
||||
"service-workers/service-worker/fetch-audio-tainting.https.html": [
|
||||
"9821759bc7b311672a54387edc7d8c26a11d5e54",
|
||||
"testharness"
|
||||
],
|
||||
"service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [
|
||||
"213238112257923657fe84a637ddd45cc0c038c5",
|
||||
"testharness"
|
||||
|
@ -659178,7 +659347,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/testrunner.py": [
|
||||
"46e3ff7926de2f2a2c86c8971e9f5a07f1f33a8a",
|
||||
"2b7c091c84722c750b46d6143c74c8d329a7fd99",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/tests/__init__.py": [
|
||||
|
@ -663125,6 +663294,10 @@
|
|||
"546bd1d0d0e34480113290bcc5008f0240be8d4a",
|
||||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [
|
||||
"8194d1977ad452390efb870197057bcf48fad499",
|
||||
"testharness"
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
|
||||
"d87e35b571d75c0ff595ab023f4a54a420111523",
|
||||
"testharness"
|
||||
|
@ -663205,6 +663378,10 @@
|
|||
"5a8baf03372d25b906948dcdd6c40990eeb860fa",
|
||||
"support"
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [
|
||||
"2ccacccd4bb0a4d289ddccd9cafa4e29a0484730",
|
||||
"support"
|
||||
],
|
||||
"webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [
|
||||
"714e32dbb5c1d0fbe4d0ff2ae38deaed75b4b96e",
|
||||
"support"
|
||||
|
|
|
@ -71,3 +71,6 @@
|
|||
[bottom intermediate]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width end]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[fetch-in-iframe.html]
|
||||
expected: CRASH
|
||||
[Untitled]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -5,20 +5,20 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
||||
expected: TIMEOUT
|
||||
|
||||
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
|
||||
expected: TIMEOUT
|
||||
|
||||
[img (srcset 1 cand) valid image, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
[picture: source (max-width:500px) broken image, img valid image, resize to narrow]
|
||||
[picture: same URL in source (max-width:500px) and img, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
[img (srcset 1 cand) valid image, resize to narrow]
|
||||
expected: FAIL
|
||||
|
||||
[picture: same URL in source (max-width:500px) and img, resize to narrow]
|
||||
[picture: source (max-width:500px) valid image, img broken image, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
|
@ -1,283 +0,0 @@
|
|||
[limited-quirks.html]
|
||||
[top: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[top: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #01]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[top: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: a]
|
||||
expected: FAIL
|
||||
|
||||
[top: A]
|
||||
expected: FAIL
|
||||
|
||||
[top: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: +a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #01]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: -A]
|
||||
expected: FAIL
|
||||
|
||||
[top: -a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
|
@ -1,10 +1,4 @@
|
|||
[urlencoded-parser.any.html]
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: &&&a=b&&&&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -17,17 +11,11 @@
|
|||
[response.formData() with input: a=b&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[urlencoded-parser.any.worker.html]
|
||||
[request.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -40,6 +28,3 @@
|
|||
[request.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[audioworklet-postmessage-sharedarraybuffer.https.html]
|
||||
[\n Test passing SharedArrayBuffer to an AudioWorklet\n ]
|
||||
expected: FAIL
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child)");
|
||||
var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child, which has the policy `navigate-to 'self'`)");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
|
|
|
@ -6,7 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child can't navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child which has the policy `navigate-to 'none'`)");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
<iframe srcdoc="<iframe src='support/navigate_parent.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}'>"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
|
||||
</body>
|
||||
</body>
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
</script>
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html">
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
|
||||
</body>
|
|
@ -12,5 +12,5 @@
|
|||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
</script>
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html">
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
|
||||
</body>
|
|
@ -13,5 +13,5 @@
|
|||
assert_equals(e.data.violatedDirective, 'form-action');
|
||||
});
|
||||
</script>
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html">
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
|
||||
</body>
|
|
@ -13,5 +13,5 @@
|
|||
assert_equals(e.data.violatedDirective, 'form-action');
|
||||
});
|
||||
</script>
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html">
|
||||
<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy">
|
||||
</body>
|
|
@ -6,6 +6,13 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&action=post_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -6,6 +6,13 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -6,6 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
|
||||
<iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
|
||||
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html", "_blank");
|
||||
</script>
|
||||
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
|
||||
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank");
|
||||
</script>
|
||||
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
|
||||
window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank");
|
||||
</script>
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
|
|
@ -6,7 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
</body>
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
|
|
@ -1,12 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
|
||||
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -6,6 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
|
||||
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -6,6 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
|
||||
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -6,6 +6,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is not allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
</script>
|
||||
|
||||
<iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent)");
|
||||
var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to 'self'`)");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
|
@ -23,4 +23,4 @@
|
|||
i.src = "support/wait_for_navigation.html?csp=navigate-to%20%none%27";
|
||||
document.body.appendChild(i);
|
||||
</script>
|
||||
</body>
|
||||
</body>
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the parent can't navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to support/wait_for_navigation.html;`)");
|
||||
window.onmessage = t.unreached_func("Should not have received a message as the navigation should not have been successful");
|
||||
window.addEventListener('securitypolicyviolation', t.step_func_done(function(e) {
|
||||
assert_equals(e.violatedDirective, 'navigate-to');
|
||||
}));
|
||||
|
||||
var i = document.createElement('iframe');
|
||||
var src_changed = false;
|
||||
i.onload = function() {
|
||||
|
@ -17,5 +23,6 @@
|
|||
i.src = "support/wait_for_navigation.html?csp=navigate-to%20%27self%27";
|
||||
document.body.appendChild(i);
|
||||
</script>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20support%2Fwait_for_navigation.html'></script>
|
||||
</body>
|
||||
</body>
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- This tests that a navigation initiator that has been replaced by the time
|
||||
the navigation it initiates is blocked, will not receive the SPV event.
|
||||
|
||||
An iframe will navigate another iframe and the navigate itself.
|
||||
The second iframe's navigation response will be delayed by the server but will
|
||||
eventually be blocked by the CSP of the first iframe.
|
||||
By the time this happens the first iframe should be an entirely different
|
||||
document and it should not receive a SPV event -->
|
||||
<script>
|
||||
var t = async_test("Test that no spv event is raised");
|
||||
window.onmessage = t.step_func(function(e) {
|
||||
if (e.data == "end_test") t.done();
|
||||
else assert_unreached("Should not have raised a spv event");
|
||||
});
|
||||
|
||||
var frames_loaded_count = 0;
|
||||
var frame_loaded = function() {
|
||||
if (++frames_loaded_count == 2) {
|
||||
// both child frame have loaded we can start the
|
||||
// test now, send a message to iframe1 so it knows to start
|
||||
document.getElementById('iframe1').contentWindow.postMessage('start_test', '*');
|
||||
}
|
||||
}
|
||||
var i1 = document.createElement('iframe');
|
||||
i1.src = "support/spv-test-iframe1.sub.html?report_id={{$id:uuid()}}";
|
||||
i1.id = "iframe1";
|
||||
i1.name = "iframe1";
|
||||
i1.onload = frame_loaded;
|
||||
document.body.appendChild(i1);
|
||||
|
||||
var i2 = document.createElement('iframe');
|
||||
i2.src = "support/spv-test-iframe2.sub.html";
|
||||
i2.id = "iframe2";
|
||||
i2.name = "iframe2";
|
||||
i2.onload = frame_loaded;
|
||||
document.body.appendChild(i2);
|
||||
</script>
|
||||
|
||||
<script async defer src='../support/checkReport.sub.js?reportExists=false&reportID={{$id}}'></script>
|
||||
|
||||
</body>
|
|
@ -0,0 +1,12 @@
|
|||
import time
|
||||
def main(request, response):
|
||||
time.sleep(1)
|
||||
headers = [("Content-Type", "text/html")]
|
||||
return headers, '''
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
DELAYED FRAME
|
||||
</body
|
||||
'''
|
|
@ -6,6 +6,10 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
opener.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*');
|
||||
});
|
||||
|
||||
try {
|
||||
location.href = "{{GET[target]}}";
|
||||
} catch(ex) {}
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
<body>
|
||||
<a href="{{GET[target]}}" id="link">dummy link</a>
|
||||
<script>
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
top.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*');
|
||||
});
|
||||
|
||||
document.getElementById('link').click();
|
||||
</script>
|
||||
</body>
|
|
@ -3,4 +3,4 @@ def main(request, response):
|
|||
if "location" in request.GET:
|
||||
response.headers.set("Location", request.GET["location"])
|
||||
else:
|
||||
response.headers.set("Location", "post_message_to_frame_owner.html")
|
||||
response.headers.set("Location", "post_message_to_frame_owner.html")
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<script>
|
||||
window.onmessage = function(e) {
|
||||
if (e.data == "start_test") {
|
||||
document.getElementById('link').click();
|
||||
location.href = "{{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html";
|
||||
}
|
||||
}
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a href="{{location[server]}}/content-security-policy/navigate-to/support/delayed_frame.py" id="link" target="iframe2">dummy link</a>
|
||||
IFRAME 1
|
||||
</body>
|
|
@ -0,0 +1,4 @@
|
|||
Expires: Mon, 26 Jul 1997 05:00:00 GMT
|
||||
Cache-Control: no-store, no-cache, must-revalidate
|
||||
Pragma: no-cache
|
||||
Content-Security-Policy: navigate-to {{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html 'unsafe-allow-redirects'; report-uri /content-security-policy/support/report.py?op=put&reportID={{GET[report_id]}}
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*');
|
||||
});
|
||||
setTimeout(function() {
|
||||
top.postMessage("end_test", "*");
|
||||
}, 4000);
|
||||
</script>
|
||||
IFRAME 2
|
||||
</body>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<script>
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
top.postMessage({iframe: 'iframe3', violatedDirective: e.violatedDirective}, '*');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
IFRAME 3
|
||||
</body>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
|
||||
// the iframe will navigate to:
|
||||
// [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
|
||||
// [www1]/..../post_message_to_frame_owner.html which is not exactly in
|
||||
// the list but the check should be reduced to an origin check since there has been a redirect.
|
||||
// Because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
|
||||
|
||||
var i = document.createElement('iframe');
|
||||
i.src = "../support/link_click_navigation.sub.html" +
|
||||
"?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/some-path/ 'unsafe-allow-redirects'") +
|
||||
"&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
|
||||
encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
|
||||
document.body.appendChild(i);
|
||||
</script>
|
||||
|
||||
</body>
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is allowed");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'success');
|
||||
});
|
||||
|
||||
// the iframe will navigate to:
|
||||
// [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
|
||||
// [www1]/..../post_message_to_frame_owner.html which is in the list
|
||||
// because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
|
||||
|
||||
var i = document.createElement('iframe');
|
||||
i.src = "../support/link_click_navigation.sub.html" +
|
||||
"?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") +
|
||||
"&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
|
||||
encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
|
||||
document.body.appendChild(i);
|
||||
</script>
|
||||
|
||||
</body>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
var t = async_test("Test that the child iframe navigation is blocked");
|
||||
window.onmessage = t.step_func_done(function(e) {
|
||||
assert_equals(e.data.result, 'fail');
|
||||
assert_equals(e.data.violatedDirective, 'navigate-to');
|
||||
});
|
||||
|
||||
// the iframe will navigate to:
|
||||
// [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to
|
||||
// [www2]/..../post_message_to_frame_owner.html which is also not in the list
|
||||
// because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect
|
||||
|
||||
var i = document.createElement('iframe');
|
||||
i.src = "../support/link_click_navigation.sub.html" +
|
||||
"?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") +
|
||||
"&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" +
|
||||
encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html"));
|
||||
document.body.appendChild(i);
|
||||
</script>
|
||||
|
||||
</body>
|
|
@ -27,16 +27,42 @@
|
|||
paint(ctx, geom, styleMap) {
|
||||
ctx.strokeStyle = 'green';
|
||||
for (let prop of props) {
|
||||
let first = styleMap.get(prop.name);
|
||||
let all = styleMap.getAll(prop.name);
|
||||
// Read values using get, getAll and iterator:
|
||||
let valueFromGet = styleMap.get(prop.name);
|
||||
let valueFromGetAll = styleMap.getAll(prop.name);
|
||||
let valueFromIterator = Array.from(styleMap).filter(e => e[0] == prop.name)[0][1];
|
||||
|
||||
// Serialize 'actual'-values for all three cases:
|
||||
let serialize = v => v.constructor.name + '=' + v.toString()
|
||||
let actual = all.map(serialize).join(',');
|
||||
let expected = prop.expected.join(',');
|
||||
let pass = actual === expected
|
||||
&& serialize(first) === prop.expected[0];
|
||||
let actualFromGet = serialize(valueFromGet);
|
||||
let actualFromGetAll = valueFromGetAll.map(serialize).join(',');
|
||||
let actualFromIterator = valueFromIterator.map(serialize).join(',');
|
||||
|
||||
// Create 'expected'-values for all three cases:
|
||||
let expectedForGet = prop.expected[0];
|
||||
let expectedForGetAll = prop.expected.join(',');
|
||||
let expectedForIterator = expectedForGetAll;
|
||||
|
||||
let pass = true;
|
||||
|
||||
// Assertions:
|
||||
if (actualFromGet !== expectedForGet) {
|
||||
debugLog(`FAIL: StylePropertyMap.get: actual: ${actualFromGet} expected: ${expectedForGet}`);
|
||||
pass = false;
|
||||
}
|
||||
if (actualFromGetAll !== expectedForGetAll) {
|
||||
debugLog(`FAIL: StylePropertyMap.getAll: actual: ${actualFromGetAll} expected: ${expectedForGetAll}`);
|
||||
pass = false;
|
||||
}
|
||||
if (actualFromIterator !== expectedForIterator) {
|
||||
debugLog(`FAIL: StylePropertyMap iterator: actual: ${actualFromIterator} expected: ${expectedForIterator}`);
|
||||
pass = false;
|
||||
}
|
||||
|
||||
if (!pass)
|
||||
ctx.strokeStyle = 'red';
|
||||
debugLog(pass ? 'PASS' : 'FAIL', prop.syntax, actual, expected);
|
||||
else
|
||||
debugLog('PASS', prop.syntax, actualFromGetAll, expectedForGetAll);
|
||||
}
|
||||
ctx.lineWidth = 4;
|
||||
ctx.strokeRect(0, 0, geom.width, geom.height);
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Reference for multicolumn under position:sticky should be positioned correctly</title>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
#scroller {
|
||||
overflow-y: scroll;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
#relative {
|
||||
position: relative;
|
||||
top: 100px;
|
||||
margin: 10px;
|
||||
}
|
||||
#child {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
#contents {
|
||||
position: relative;
|
||||
top: 10%;
|
||||
left: 10%;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
background: lightgreen;
|
||||
}
|
||||
#spacer {
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="scroller">
|
||||
<div id="relative">
|
||||
<div id="child">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="spacer"></div>
|
||||
</div>
|
||||
|
||||
<div>You should see a light green box above with a dark green border.</div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
scroller.scrollTop = 100;
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Multicolumn under position:sticky should be positioned correctly</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
|
||||
<link rel="match" href="position-sticky-child-multicolumn-ref.html" />
|
||||
<link rel="author" title="Philip Rogers" href="mailto:pdr@chromium.org" />
|
||||
<meta name="assert" content="This test checks that a multicolumn element is positioned relative to a sticky position" />
|
||||
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
#scroller {
|
||||
overflow-y: scroll;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
#sticky {
|
||||
position: sticky;
|
||||
top: 10px;
|
||||
margin: 10px;
|
||||
}
|
||||
#multicolumn {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
columns: 1;
|
||||
}
|
||||
#contents {
|
||||
margin-left: 10%;
|
||||
margin-top: 10%;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
background: lightgreen;
|
||||
}
|
||||
#spacer {
|
||||
height: 400px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="scroller">
|
||||
<div id="sticky">
|
||||
<div id="multicolumn">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="spacer"></div>
|
||||
</div>
|
||||
|
||||
<div>You should see a light green box above with a dark green border.</div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
scroller.scrollTop = 100;
|
||||
});
|
||||
</script>
|
|
@ -33,6 +33,13 @@ function gen_prop(syntax, initialValue) {
|
|||
return name;
|
||||
}
|
||||
|
||||
// Cleans style rules used for testing between every test.
|
||||
add_result_callback(function(){
|
||||
target.attributeStyleMap.clear();
|
||||
// Clears 'div' rule in #style:
|
||||
style.sheet.rules[0].styleMap.clear();
|
||||
});
|
||||
|
||||
// On the target element, verify that computed value of 'name' is an instance
|
||||
// of 'expected' and not an instance of CSSUnparsedValue.
|
||||
//
|
||||
|
@ -594,4 +601,124 @@ test(function(){
|
|||
}
|
||||
}, 'Direct CSSStyleValue instances are tied to their associated property');
|
||||
|
||||
// StylePropertyMapReadOnly iteration
|
||||
|
||||
test(function(){
|
||||
let name = gen_prop('<length>', '10px');
|
||||
let result = Array.from(target.computedStyleMap()).filter(e => e[0] == name)[0];
|
||||
assert_true(typeof(result) !== 'undefined');
|
||||
}, 'Registered property with initial value show up on iteration of computedStyleMap');
|
||||
|
||||
// Verifies that iterating a StylePropertyMap[ReadOnly] yields correctly
|
||||
// typed objects for a given syntax/value.
|
||||
function test_iteration_type_for_property_map(propertyMapName, propertyMap, options) {
|
||||
test(function(){
|
||||
let name = gen_prop(options.syntax, options.initialValue);
|
||||
if (propertyMap instanceof StylePropertyMap) {
|
||||
// Only set the value if the propertyMap is mutable.
|
||||
propertyMap.set(name, options.value);
|
||||
}
|
||||
let result = Array.from(propertyMap).filter(e => e[0] == name)[0];
|
||||
let value = result[1];
|
||||
assert_true(options.expect(value));
|
||||
}, `Iteration on ${propertyMapName} produces correct type for ${options.syntax}`);
|
||||
}
|
||||
|
||||
function test_iteration_type(options) {
|
||||
test_iteration_type_for_property_map('computedStyleMap', target.computedStyleMap(), options);
|
||||
test_iteration_type_for_property_map('attributeStyleMap', target.attributeStyleMap, options);
|
||||
test_iteration_type_for_property_map('styleMap', style.sheet.rules[0].styleMap, options);
|
||||
}
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '*',
|
||||
initialValue: 'none',
|
||||
value: 'thing',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnparsedValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<angle>',
|
||||
initialValue: '0deg',
|
||||
value: '42deg',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<custom-ident>',
|
||||
initialValue: 'none',
|
||||
value: 'thing',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<image>',
|
||||
initialValue: 'url(a)',
|
||||
value: 'url(b)',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSImageValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<integer>',
|
||||
initialValue: '0',
|
||||
value: '100',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<length>',
|
||||
initialValue: '0px',
|
||||
value: '10px',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<number>',
|
||||
initialValue: '0',
|
||||
value: '42',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<percentage>',
|
||||
initialValue: '0%',
|
||||
value: '10%',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<resolution>',
|
||||
initialValue: '0dpi',
|
||||
value: '300dpi',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<time>',
|
||||
initialValue: '0s',
|
||||
value: '10s',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<url>',
|
||||
initialValue: 'url(a)',
|
||||
value: 'url(b)',
|
||||
expect: v => v.length == 1 && v[0].constructor === CSSStyleValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: 'none | thing | THING',
|
||||
initialValue: 'none',
|
||||
value: 'THING',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue,
|
||||
});
|
||||
|
||||
test_iteration_type({
|
||||
syntax: '<angle> | <length>',
|
||||
initialValue: '0deg',
|
||||
value: '10px',
|
||||
expect: v => v.length == 1 && v[0] instanceof CSSUnitValue,
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Reftest Reference</title>
|
||||
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
|
||||
<style>
|
||||
.abspos-box {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
/* The boxes should stack in the order that I've listed their CSS classes
|
||||
here. The class names' first word (outside/before/inside/after) refers
|
||||
to the boxes' DOM position, and "background"/"midground"/"foreground"
|
||||
refers to their z-index values. */
|
||||
|
||||
.before-IB-background {
|
||||
background: darkmagenta;
|
||||
z-index: -1;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
}
|
||||
.after-IB-background {
|
||||
background: magenta;
|
||||
z-index: -1;
|
||||
top: 70px;
|
||||
left: 70px;
|
||||
}
|
||||
.outside-span-midground {
|
||||
background: darkkhaki;
|
||||
top: 90px;
|
||||
left: 90px;
|
||||
}
|
||||
.inside-IB-midground {
|
||||
background: khaki;
|
||||
top: 110px;
|
||||
left: 110px;
|
||||
}
|
||||
.before-IB-foreground {
|
||||
background: darkcyan;
|
||||
z-index: 1;
|
||||
top: 130px;
|
||||
left: 130px;
|
||||
}
|
||||
.after-IB-foreground {
|
||||
background: cyan;
|
||||
z-index: 1;
|
||||
top: 150px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- The expectation here is that 'abspos-box' elements will all interact in
|
||||
the same top-level stacking context. That means the box ordering should
|
||||
be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
|
||||
with the boxes stacked (visually) from top-left to bottom-right. -->
|
||||
|
||||
<div class="abspos-box outside-span-midground"></div>
|
||||
|
||||
<!-- Note: this file is identical to the testcase,
|
||||
except for the lack of "contain: layout" on this span. -->
|
||||
<span>
|
||||
<div class="abspos-box before-IB-background"></div>
|
||||
<div class="abspos-box before-IB-foreground"></div>
|
||||
<!-- This unstyled div crates the IB split: -->
|
||||
<div>
|
||||
<div class="abspos-box inside-IB-midground"></div>
|
||||
</div>
|
||||
<div class="abspos-box after-IB-background"></div>
|
||||
<div class="abspos-box after-IB-foreground"></div>
|
||||
</span>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: 'contain: layout' should have no effect on non-atomic inline
|
||||
(including its block part, if there's a block-in-inline split)</title>
|
||||
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-layout">
|
||||
<link rel="match" href="contain-layout-ignored-cases-ib-split-001-ref.html">
|
||||
<style>
|
||||
.abspos-box {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
/* The boxes should stack in the order that I've listed their CSS classes
|
||||
here. The class names' first word (outside/before/inside/after) refers
|
||||
to the boxes' DOM position, and "background"/"midground"/"foreground"
|
||||
refers to their z-index values. */
|
||||
|
||||
.before-IB-background {
|
||||
background: darkmagenta;
|
||||
z-index: -1;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
}
|
||||
.after-IB-background {
|
||||
background: magenta;
|
||||
z-index: -1;
|
||||
top: 70px;
|
||||
left: 70px;
|
||||
}
|
||||
.outside-span-midground {
|
||||
background: darkkhaki;
|
||||
top: 90px;
|
||||
left: 90px;
|
||||
}
|
||||
.inside-IB-midground {
|
||||
background: khaki;
|
||||
top: 110px;
|
||||
left: 110px;
|
||||
}
|
||||
.before-IB-foreground {
|
||||
background: darkcyan;
|
||||
z-index: 1;
|
||||
top: 130px;
|
||||
left: 130px;
|
||||
}
|
||||
.after-IB-foreground {
|
||||
background: cyan;
|
||||
z-index: 1;
|
||||
top: 150px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- The expectation here is that 'abspos-box' elements will all interact in
|
||||
the same top-level stacking context. That means the box ordering should
|
||||
be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
|
||||
with the boxes stacked (visually) from top-left to bottom-right. -->
|
||||
|
||||
<div class="abspos-box outside-span-midground"></div>
|
||||
|
||||
<span style="contain: layout">
|
||||
<div class="abspos-box before-IB-background"></div>
|
||||
<div class="abspos-box before-IB-foreground"></div>
|
||||
<!-- This unstyled div crates the IB split: -->
|
||||
<div>
|
||||
<div class="abspos-box inside-IB-midground"></div>
|
||||
</div>
|
||||
<div class="abspos-box after-IB-background"></div>
|
||||
<div class="abspos-box after-IB-foreground"></div>
|
||||
</span>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,76 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Reftest Reference</title>
|
||||
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
|
||||
<style>
|
||||
.abspos-box {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
/* The boxes should stack in the order that I've listed their CSS classes
|
||||
here. The class names' first word (outside/before/inside/after) refers
|
||||
to the boxes' DOM position, and "background"/"midground"/"foreground"
|
||||
refers to their z-index values. */
|
||||
|
||||
.before-IB-background {
|
||||
background: darkmagenta;
|
||||
z-index: -1;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
}
|
||||
.after-IB-background {
|
||||
background: magenta;
|
||||
z-index: -1;
|
||||
top: 70px;
|
||||
left: 70px;
|
||||
}
|
||||
.outside-span-midground {
|
||||
background: darkkhaki;
|
||||
top: 90px;
|
||||
left: 90px;
|
||||
}
|
||||
.inside-IB-midground {
|
||||
background: khaki;
|
||||
top: 110px;
|
||||
left: 110px;
|
||||
}
|
||||
.before-IB-foreground {
|
||||
background: darkcyan;
|
||||
z-index: 1;
|
||||
top: 130px;
|
||||
left: 130px;
|
||||
}
|
||||
.after-IB-foreground {
|
||||
background: cyan;
|
||||
z-index: 1;
|
||||
top: 150px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- The expectation here is that 'abspos-box' elements will all interact in
|
||||
the same top-level stacking context. That means the box ordering should
|
||||
be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
|
||||
with the boxes stacked (visually) from top-left to bottom-right. -->
|
||||
|
||||
<div class="abspos-box outside-span-midground"></div>
|
||||
|
||||
<!-- Note: this file is identical to the testcase,
|
||||
except for the lack of "contain: paint" on this span. -->
|
||||
<span>
|
||||
<div class="abspos-box before-IB-background"></div>
|
||||
<div class="abspos-box before-IB-foreground"></div>
|
||||
<!-- This unstyled div crates the IB split: -->
|
||||
<div>
|
||||
<div class="abspos-box inside-IB-midground"></div>
|
||||
</div>
|
||||
<div class="abspos-box after-IB-background"></div>
|
||||
<div class="abspos-box after-IB-foreground"></div>
|
||||
</span>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: 'contain: paint' should have no effect on non-atomic inline
|
||||
(including its block part, if there's a block-in-inline split)</title>
|
||||
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-paint">
|
||||
<link rel="match" href="contain-paint-ignored-cases-ib-split-001-ref.html">
|
||||
<style>
|
||||
.abspos-box {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
/* The boxes should stack in the order that I've listed their CSS classes
|
||||
here. The class names' first word (outside/before/inside/after) refers
|
||||
to the boxes' DOM position, and "background"/"midground"/"foreground"
|
||||
refers to their z-index values. */
|
||||
|
||||
.before-IB-background {
|
||||
background: darkmagenta;
|
||||
z-index: -1;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
}
|
||||
.after-IB-background {
|
||||
background: magenta;
|
||||
z-index: -1;
|
||||
top: 70px;
|
||||
left: 70px;
|
||||
}
|
||||
.outside-span-midground {
|
||||
background: darkkhaki;
|
||||
top: 90px;
|
||||
left: 90px;
|
||||
}
|
||||
.inside-IB-midground {
|
||||
background: khaki;
|
||||
top: 110px;
|
||||
left: 110px;
|
||||
}
|
||||
.before-IB-foreground {
|
||||
background: darkcyan;
|
||||
z-index: 1;
|
||||
top: 130px;
|
||||
left: 130px;
|
||||
}
|
||||
.after-IB-foreground {
|
||||
background: cyan;
|
||||
z-index: 1;
|
||||
top: 150px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- The expectation here is that 'abspos-box' elements will all interact in
|
||||
the same top-level stacking context. That means the box ordering should
|
||||
be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan,
|
||||
with the boxes stacked (visually) from top-left to bottom-right. -->
|
||||
|
||||
<div class="abspos-box outside-span-midground"></div>
|
||||
|
||||
<span style="contain: paint">
|
||||
<div class="abspos-box before-IB-background"></div>
|
||||
<div class="abspos-box before-IB-foreground"></div>
|
||||
<!-- This unstyled div crates the IB split: -->
|
||||
<div>
|
||||
<div class="abspos-box inside-IB-midground"></div>
|
||||
</div>
|
||||
<div class="abspos-box after-IB-background"></div>
|
||||
<div class="abspos-box after-IB-foreground"></div>
|
||||
</span>
|
||||
</body>
|
||||
</html>
|
|
@ -26,6 +26,11 @@
|
|||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
.innerContents {
|
||||
color: transparent;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -51,7 +56,7 @@
|
|||
<br>
|
||||
|
||||
<div class="flexBaselineCheck">
|
||||
outside before<div class="basic"></div>outside after
|
||||
outside before<div class="basic innerContents">i</div>outside after
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<div class="contain floatLWidth"><div class="innerContents">inner</div></div>
|
||||
<br>
|
||||
|
||||
<!--CSS Test: A size-contained block element should perform baseline alignment as if the container were empty.-->
|
||||
<!--CSS Test: A size-contained block element should perform baseline alignment regularly.-->
|
||||
<div class="flexBaselineCheck">
|
||||
outside before<div class="contain"><div class="innerContents">inner</div></div>outside after
|
||||
</div>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
.container {
|
||||
border: 10px solid green;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.height {
|
||||
height: 30px;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
.container {
|
||||
border: 10px solid green;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.innerContents {
|
||||
height: 50px;
|
||||
|
|
|
@ -24,11 +24,23 @@
|
|||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
fieldset {
|
||||
border: none;
|
||||
color: transparent;
|
||||
}
|
||||
legend, .innerContents {
|
||||
width: 0;
|
||||
height: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flexBaselineCheck">
|
||||
outside before<fieldset class="basic"></fieldset>outside after
|
||||
outside before<fieldset class="basc">
|
||||
<legend>l</legend>
|
||||
<div class="innerContents">i</div>
|
||||
</fieldset>outside after
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: 'contain: size' on fieldset elements should cause them to be baseline-aligned as if they had no contents.</title>
|
||||
<title>CSS Test: 'contain: size' on fieldset elements shouldn't prevent them from being baseline-aligned regularly.</title>
|
||||
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
|
||||
<link rel="match" href="contain-size-fieldset-002-ref.html">
|
||||
|
@ -24,7 +24,7 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--CSS Test: A size-contained fieldset element should perform baseline alignment as if the container were empty.-->
|
||||
<!--CSS Test: A size-contained fieldset element should perform baseline alignment regularly.-->
|
||||
<div class="flexBaselineCheck">
|
||||
outside before<fieldset class="contain">
|
||||
<legend>legend</legend>
|
||||
|
|
|
@ -15,24 +15,29 @@
|
|||
.width-ref {
|
||||
width: 50px;
|
||||
}
|
||||
.innerContents {
|
||||
color: transparent;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="basic"></div>
|
||||
<div class="basic"><div class="innerContents">i</div></div>
|
||||
<br>
|
||||
|
||||
outside before<div class="basic"></div>outside after
|
||||
outside before<div class="basic"><div class="innerContents">i</div></div>outside after
|
||||
<br>
|
||||
|
||||
<div class="basic height-ref"></div>
|
||||
<div class="basic height-ref"><div class="innerContents">i</div></div>
|
||||
<br>
|
||||
|
||||
<div class="basic height-ref"></div>
|
||||
<div class="basic height-ref"><div class="innerContents">i</div></div>
|
||||
<br>
|
||||
|
||||
<div class="basic width-ref"></div>
|
||||
<div class="basic width-ref"><div class="innerContents">i</div></div>
|
||||
<br>
|
||||
|
||||
<div class="basic width-ref"></div>
|
||||
<div class="basic width-ref"><div class="innerContents">i</div></div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized and baseline-aligned as if they had no contents.</title>
|
||||
<title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title>
|
||||
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
|
||||
<link rel="match" href="contain-size-inline-block-001-ref.html">
|
||||
|
@ -37,7 +37,7 @@
|
|||
<div class="contain"><div class="innerContents">inner</div></div>
|
||||
<br>
|
||||
|
||||
<!--CSS Test: A size-contained inline-block element should perform baseline alignment as if the container were empty.-->
|
||||
<!--CSS Test: A size-contained inline-block element should perform baseline alignment regularly.-->
|
||||
outside before<div class="contain"><div class="innerContents">inner</div></div>outside after
|
||||
<br>
|
||||
|
||||
|
|
|
@ -12,12 +12,17 @@
|
|||
.width-ref {
|
||||
width: 50px;
|
||||
}
|
||||
.innerContents {
|
||||
color: transparent;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
aa<div class="basic"></div>bb
|
||||
aa<div class="basic"><div class="innerContents">i</div></div>bb
|
||||
<br>
|
||||
|
||||
aa<div class="basic width-ref"></div>bb
|
||||
aa<div class="basic width-ref"><div class="innerContents">i</div></div>bb
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized and baseline-aligned as if they had no contents.</title>
|
||||
<title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title>
|
||||
<link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size">
|
||||
<link rel="match" href="contain-size-inline-flex-001-ref.html">
|
||||
|
@ -24,11 +24,11 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaviour matches that of an empty object of the same type.-->
|
||||
<!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaves regularly.-->
|
||||
aa<div class="contain"><div class="innerContents">inner</div></div>bb
|
||||
<br>
|
||||
|
||||
<!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaviour matches that of an empty object of the same type.-->
|
||||
<!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaves regularly.-->
|
||||
aa<div class="contain width"><div class="innerContents">inner</div></div>bb
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
== contain-paint-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html
|
||||
== contain-paint-formatting-context-float-001.html contain-paint-formatting-context-float-001-ref.html
|
||||
== contain-paint-formatting-context-margin-001.html contain-paint-formatting-context-margin-001-ref.html
|
||||
== contain-paint-ignored-cases-ib-split-001.html contain-paint-ignored-cases-ib-split-001-ref.html
|
||||
== contain-paint-ignored-cases-internal-table-001a.html contain-paint-ignored-cases-internal-table-001-ref.html
|
||||
== contain-paint-ignored-cases-internal-table-001b.html contain-paint-ignored-cases-internal-table-001-ref.html
|
||||
== contain-paint-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html
|
||||
|
@ -35,6 +36,7 @@
|
|||
== contain-layout-formatting-context-margin-001.html contain-layout-formatting-context-margin-001-ref.html
|
||||
== contain-layout-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html
|
||||
== contain-layout-containing-block-absolute-001.html contain-paint-containing-block-absolute-001-ref.html
|
||||
== contain-layout-ignored-cases-ib-split-001.html contain-layout-ignored-cases-ib-split-001-ref.html
|
||||
== contain-layout-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html
|
||||
== contain-layout-ignored-cases-no-principal-box-002.html contain-layout-ignored-cases-no-principal-box-002-ref.html
|
||||
== contain-layout-ignored-cases-no-principal-box-003.html contain-layout-ignored-cases-no-principal-box-003-ref.html
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/common/media.js></script>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/common/media.js></script>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/common/media.js></script>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/common/media.js></script>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<body>
|
||||
<script src=/common/media.js></script>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src='/common/media.js'></script>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
@ -21,7 +22,7 @@ const check_report_format = (reports, observer) => {
|
|||
|
||||
const loadVideo = () => new Promise(resolve => {
|
||||
const video = document.createElement('video');
|
||||
video.src = '/media/movie_5.ogv';
|
||||
video.src = getVideoURI('/media/movie_5');
|
||||
video.addEventListener('loadedmetadata', () => {
|
||||
resolve(video);
|
||||
}, { once: true });
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<script src=/common/media.js></script>
|
||||
<script src=/feature-policy/resources/picture-in-picture.js></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
|
|
@ -4,7 +4,7 @@ function isPictureInPictureAllowed() {
|
|||
|
||||
return new Promise(resolve => {
|
||||
let video = document.createElement('video');
|
||||
video.src = '/media/movie_5.ogv';
|
||||
video.src = getVideoURI('/media/movie_5');
|
||||
video.onloadedmetadata = () => {
|
||||
video.requestPictureInPicture()
|
||||
.then(() => resolve(document.pictureInPictureEnabled))
|
||||
|
|
|
@ -28,15 +28,26 @@ promise_test(async t => {
|
|||
|
||||
const stream = await timeout(navigator.mediaDevices.getUserMedia({video: true}), 10000, "getUserMedia timeout");
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
vid.defaultPlaybackRate = 0.4;
|
||||
vid.playbackRate = 0.4;
|
||||
vid.preload = "metadata";
|
||||
vid.srcObject = stream;
|
||||
vid.onratechange = t.unreached_func('ratechange event must not be fired');
|
||||
vid.play();
|
||||
assert_true(!vid.seeking, "A MediaStream is not seekable");
|
||||
assert_equals(vid.seekable.length, 0, "A MediaStream is not seekable");
|
||||
assert_equals(vid.defaultPlaybackRate, 1, "playback rate is always 1");
|
||||
vid.defaultPlaybackRate = 0.5;
|
||||
assert_equals(vid.defaultPlaybackRate, 1, "Setting defaultPlaybackRate must be ignored");
|
||||
assert_equals(vid.playbackRate, 1, "playback rate is always 1");
|
||||
vid.playbackRate = 0.5;
|
||||
assert_equals(vid.playbackRate, 1, "Setting playbackRate must be ignored");
|
||||
assert_equals(vid.buffered.length, 0, "A MediaStream cannot be preloaded. Therefore, there is no buffered timeranges");
|
||||
assert_equals(vid.readyState, vid.HAVE_NOTHING, "readyState is HAVE_NOTHING initially");
|
||||
assert_equals(vid.duration, NaN, "A MediaStream does not have any duration initially.");
|
||||
assert_equals(vid.preload, "none", "preload must always be none");
|
||||
vid.preload = "metadata";
|
||||
assert_equals(vid.preload, "none", "Setting preload must be ignored");
|
||||
|
||||
const haveLoadedData = new Promise(r => vid.addEventListener("loadeddata", r, {once: true}));
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test disable Picture-in-Picture</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
@ -33,12 +34,11 @@ promise_test(async t => {
|
|||
|
||||
promise_test(async t => {
|
||||
const video = await loadVideo();
|
||||
return test_driver.bless('request Picture-in-Picture', async () => {
|
||||
const promise = video.requestPictureInPicture();
|
||||
video.disablePictureInPicture = true;
|
||||
await promise_rejects(t, 'InvalidStateError', promise);
|
||||
assert_equals(document.pictureInPictureElement, null);
|
||||
});
|
||||
await test_driver.bless('request Picture-in-Picture');
|
||||
const promise = video.requestPictureInPicture();
|
||||
video.disablePictureInPicture = true;
|
||||
await promise_rejects(t, 'InvalidStateError', promise);
|
||||
assert_equals(document.pictureInPictureElement, null);
|
||||
}, 'Request Picture-in-Picture rejects if disablePictureInPicture becomes ' +
|
||||
'true before promise resolves.');
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test enterpictureinpicture event</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test exit Picture-in-Picture</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// META: script=/common/media.js
|
||||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
// META: script=/resources/testdriver.js
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test leavepictureinpicture event</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test Picture-in-Picture element</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test Picture-in-Picture window</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test request Picture-in-Picture on two videos</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
@ -10,12 +11,9 @@
|
|||
promise_test(async t => {
|
||||
const video1 = await loadVideo();
|
||||
const video2 = await loadVideo();
|
||||
return test_driver.bless(
|
||||
'request Picture-in-Picture',
|
||||
async () => {
|
||||
video1.requestPictureInPicture();
|
||||
promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture());
|
||||
}
|
||||
);
|
||||
await test_driver.bless('request Picture-in-Picture');
|
||||
const promise = video1.requestPictureInPicture();
|
||||
await promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture());
|
||||
return promise;
|
||||
}, 'request Picture-in-Picture consumes user gesture');
|
||||
</script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test request Picture-in-Picture</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
|
@ -21,7 +22,7 @@ promise_test(t => {
|
|||
promise_test(async t => {
|
||||
const video = document.createElement('video');
|
||||
await new Promise(resolve => {
|
||||
video.src = '/media/sound_5.oga';
|
||||
video.src = getAudioURI('/media/sound_5');
|
||||
video.onloadeddata = resolve;
|
||||
}).then(() => {
|
||||
return promise_rejects(t, 'InvalidStateError',
|
||||
|
|
|
@ -8,15 +8,14 @@ function loadVideo(activeDocument, sourceUrl) {
|
|||
return new Promise((resolve, reject) => {
|
||||
const document = activeDocument || window.document;
|
||||
const video = document.createElement('video');
|
||||
video.src = sourceUrl || '/media/movie_5.ogv';
|
||||
video.src = sourceUrl || getVideoURI('/media/movie_5');
|
||||
video.onloadedmetadata = () => { resolve(video); };
|
||||
video.onerror = error => { reject(error); };
|
||||
});
|
||||
}
|
||||
|
||||
// Calls requestPictureInPicture() in a context that's 'allowed to request PiP'.
|
||||
function requestPictureInPictureWithTrustedClick(videoElement) {
|
||||
return test_driver.bless(
|
||||
'request Picture-in-Picture',
|
||||
() => videoElement.requestPictureInPicture());
|
||||
async function requestPictureInPictureWithTrustedClick(videoElement) {
|
||||
await test_driver.bless('request Picture-in-Picture');
|
||||
return videoElement.requestPictureInPicture();
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test for pictureInPictureElement adjustment for Shadow DOM</title>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/picture-in-picture-helpers.js"></script>
|
||||
<script src='../shadow-dom/resources/shadow-dom.js'></script>
|
||||
<script src="../shadow-dom/resources/shadow-dom.js"></script>
|
||||
<body>
|
||||
<div id='host'>
|
||||
<template data-mode='open' id='root'>
|
||||
|
@ -45,7 +46,7 @@ promise_test(async t => {
|
|||
assert_equals(ids.root5.pictureInPictureElement, null);
|
||||
|
||||
await new Promise(resolve => {
|
||||
ids.video.src = '/media/movie_5.ogv';
|
||||
ids.video.src = getVideoURI('/media/movie_5');
|
||||
ids.video.onloadeddata = resolve;
|
||||
})
|
||||
.then(() => requestPictureInPictureWithTrustedClick(ids.video))
|
||||
|
@ -58,4 +59,4 @@ promise_test(async t => {
|
|||
assert_equals(ids.root5.pictureInPictureElement, null);
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
<!doctype html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="resources/test-helpers.sub.js?pipe=sub"></script>
|
||||
<script>
|
||||
promise_test(async (t) => {
|
||||
const SCOPE = 'resources/empty.html';
|
||||
const SCRIPT = 'resources/fetch-rewrite-worker.js';
|
||||
const host_info = get_host_info();
|
||||
const REMOTE_ORIGIN = host_info.HTTPS_REMOTE_ORIGIN;
|
||||
|
||||
const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE);
|
||||
await wait_for_state(t, reg.installing, 'activated');
|
||||
const frame = await with_iframe(SCOPE);
|
||||
|
||||
const doc = frame.contentDocument;
|
||||
const win = frame.contentWindow;
|
||||
|
||||
const context = new win.AudioContext();
|
||||
try {
|
||||
context.suspend();
|
||||
const audio = doc.createElement('audio');
|
||||
audio.autoplay = true;
|
||||
const source = context.createMediaElementSource(audio);
|
||||
const spn = context.createScriptProcessor(16384, 1, 1);
|
||||
source.connect(spn).connect(context.destination);
|
||||
const url = `${REMOTE_ORIGIN}/webaudio/resources/sin_440Hz_-6dBFS_1s.wav`;
|
||||
audio.src = '/test?url=' + encodeURIComponent(url);
|
||||
doc.body.appendChild(audio);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
audio.addEventListener('playing', resolve);
|
||||
});
|
||||
await context.resume();
|
||||
const event = await new Promise((resolve) => {
|
||||
spn.addEventListener('audioprocess', resolve);
|
||||
});
|
||||
const data = event.inputBuffer.getChannelData(0);
|
||||
for (const e of data) {
|
||||
assert_equals(e, 0);
|
||||
}
|
||||
} finally {
|
||||
context.close();
|
||||
}
|
||||
}, 'Verify CORS XHR of fetch() in a Service Worker');
|
||||
</script>
|
|
@ -693,7 +693,16 @@ class TestRunnerManager(threading.Thread):
|
|||
# This might leak a file handle from the queue
|
||||
self.logger.warning("Forcibly terminating runner process")
|
||||
self.test_runner_proc.terminate()
|
||||
self.test_runner_proc.join(10)
|
||||
|
||||
# Multiprocessing queues are backed by operating system pipes. If
|
||||
# the pipe in the child process had buffered data at the time of
|
||||
# forced termination, the queue is no longer in a usable state
|
||||
# (subsequent attempts to retrieve items may block indefinitely).
|
||||
# Discard the potentially-corrupted queue and create a new one.
|
||||
self.command_queue.close()
|
||||
self.command_queue = Queue()
|
||||
self.remote_queue.close()
|
||||
self.remote_queue = Queue()
|
||||
else:
|
||||
self.logger.debug("Runner process exited with code %i" % self.test_runner_proc.exitcode)
|
||||
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Test passing SharedArrayBuffer to an AudioWorklet
|
||||
</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/webaudio/resources/audit.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script id="layout-test-code">
|
||||
let audit = Audit.createTaskRunner();
|
||||
|
||||
let context = new AudioContext();
|
||||
|
||||
let filePath = 'processors/sharedarraybuffer-processor.js';
|
||||
|
||||
if (window.SharedArrayBuffer) {
|
||||
audit.define(
|
||||
'Test postMessage from AudioWorkletProcessor to AudioWorkletNode',
|
||||
(task, should) => {
|
||||
let workletNode =
|
||||
new AudioWorkletNode(context, 'sharedarraybuffer-processor');
|
||||
|
||||
// After it is created, the worklet will send a new
|
||||
// SharedArrayBuffer to the main thread.
|
||||
//
|
||||
// The worklet will then wait to receive a message from the main
|
||||
// thread.
|
||||
//
|
||||
// When it receives the message, it will check whether it is a
|
||||
// SharedArrayBuffer, and send this information back to the main
|
||||
// thread.
|
||||
|
||||
workletNode.port.onmessage = (event) => {
|
||||
let data = event.data;
|
||||
switch (data.state) {
|
||||
case 'created':
|
||||
should(
|
||||
data.sab instanceof SharedArrayBuffer,
|
||||
'event.data.sab from worklet is an instance of SharedArrayBuffer')
|
||||
.beTrue();
|
||||
|
||||
// Send a SharedArrayBuffer back to the worklet.
|
||||
let sab = new SharedArrayBuffer(8);
|
||||
workletNode.port.postMessage(sab);
|
||||
break;
|
||||
|
||||
case 'received message':
|
||||
should(data.isSab, 'event.data from main thread is an instance of SharedArrayBuffer')
|
||||
.beTrue();
|
||||
task.done();
|
||||
break;
|
||||
|
||||
default:
|
||||
should(false,
|
||||
`Got unexpected message from worklet: ${data.state}`)
|
||||
.beTrue();
|
||||
task.done();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
workletNode.port.onmessageerror = (event) => {
|
||||
should(false, 'Got messageerror from worklet').beTrue();
|
||||
task.done();
|
||||
};
|
||||
});
|
||||
} else {
|
||||
// NOTE(binji): SharedArrayBuffer is only enabled where we have site
|
||||
// isolation.
|
||||
audit.define('Skipping test because SharedArrayBuffer is not defined',
|
||||
(task, should) => {
|
||||
task.done();
|
||||
});
|
||||
}
|
||||
|
||||
context.audioWorklet.addModule(filePath).then(() => {
|
||||
audit.run();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* @class SharedArrayBufferProcessor
|
||||
* @extends AudioWorkletProcessor
|
||||
*
|
||||
* This processor class demonstrates passing SharedArrayBuffers to and from
|
||||
* workers.
|
||||
*/
|
||||
class SharedArrayBufferProcessor extends AudioWorkletProcessor {
|
||||
constructor() {
|
||||
super();
|
||||
this.port.onmessage = this.handleMessage.bind(this);
|
||||
this.port.onmessageerror = this.handleMessageError.bind(this);
|
||||
let sab = new SharedArrayBuffer(8);
|
||||
this.port.postMessage({state: 'created', sab});
|
||||
}
|
||||
|
||||
handleMessage(event) {
|
||||
this.port.postMessage({
|
||||
state: 'received message',
|
||||
isSab: event.data instanceof SharedArrayBuffer
|
||||
});
|
||||
}
|
||||
|
||||
handleMessageError(event) {
|
||||
this.port.postMessage({
|
||||
state: 'received messageerror'
|
||||
});
|
||||
}
|
||||
|
||||
process() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
registerProcessor('sharedarraybuffer-processor', SharedArrayBufferProcessor);
|
Loading…
Add table
Add a link
Reference in a new issue