mirror of
https://github.com/servo/servo.git
synced 2025-07-14 10:53:42 +01:00
Update web-platform-tests to revision 9fc797e6e5fb7d244dfb5b5125886c01f8cedf2b
This commit is contained in:
parent
b7e9bab267
commit
6dda93c6e2
55 changed files with 646 additions and 128 deletions
|
@ -107857,6 +107857,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/border-image-repeat-005.html": [
|
||||||
|
[
|
||||||
|
"/css/css-backgrounds/border-image-repeat-005.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-backgrounds/reference/border-image-repeat-005-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/border-image-repeat-round.html": [
|
"css/css-backgrounds/border-image-repeat-round.html": [
|
||||||
[
|
[
|
||||||
"/css/css-backgrounds/border-image-repeat-round.html",
|
"/css/css-backgrounds/border-image-repeat-round.html",
|
||||||
|
@ -119745,12 +119757,24 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative.html": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative.html": [
|
||||||
[
|
[
|
||||||
"/css/css-fonts/font-display/font-display-feature-policy.tentative.html",
|
"/css/css-fonts/font-display/font-display-feature-policy-01.tentative.html",
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"/css/css-fonts/font-display/font-display-feature-policy.tentative-ref.html",
|
"/css/css-fonts/font-display/font-display-feature-policy-01.tentative-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative.html": [
|
||||||
|
[
|
||||||
|
"/css/css-fonts/font-display/font-display-feature-policy-02.tentative.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-fonts/font-display/font-display-feature-policy-02.tentative-ref.html",
|
||||||
"=="
|
"=="
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
@ -254159,6 +254183,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/reference/border-image-repeat-005-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/reference/border-image-repeat-round-ref.html": [
|
"css/css-backgrounds/reference/border-image-repeat-round-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -257184,12 +257213,32 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative-ref.html": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative.html.headers": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative.html.headers": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative.html.headers": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-report-only.tentative.html.headers": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html.headers": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
|
@ -343744,6 +343793,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-report-only.tentative.html": [
|
||||||
|
[
|
||||||
|
"/css/css-fonts/font-display/font-display-feature-policy-report-only.tentative.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html": [
|
||||||
|
[
|
||||||
|
"/css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-fonts/font-feature-settings-serialization-001.html": [
|
"css/css-fonts/font-feature-settings-serialization-001.html": [
|
||||||
[
|
[
|
||||||
"/css/css-fonts/font-feature-settings-serialization-001.html",
|
"/css/css-fonts/font-feature-settings-serialization-001.html",
|
||||||
|
@ -424310,6 +424371,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"webxr/xrSession_identity_referenceSpace.https.html": [
|
||||||
|
[
|
||||||
|
"/webxr/xrSession_identity_referenceSpace.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"webxr/xrSession_mode.https.html": [
|
"webxr/xrSession_mode.https.html": [
|
||||||
[
|
[
|
||||||
"/webxr/xrSession_mode.https.html",
|
"/webxr/xrSession_mode.https.html",
|
||||||
|
@ -452870,7 +452937,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"CODEOWNERS": [
|
"CODEOWNERS": [
|
||||||
"e35f9232079afd605290616111ca2d662abb52e2",
|
"fe7c29709473cf2f7b535fdbb836128752a37a77",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"CONTRIBUTING.md": [
|
"CONTRIBUTING.md": [
|
||||||
|
@ -545597,6 +545664,10 @@
|
||||||
"acf7cfa7b842b96c70a57dda047e834e8649f594",
|
"acf7cfa7b842b96c70a57dda047e834e8649f594",
|
||||||
"visual"
|
"visual"
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/border-image-repeat-005.html": [
|
||||||
|
"f5078fc322c936d65415a4bfec5d022357cb714c",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-backgrounds/border-image-repeat-round.html": [
|
"css/css-backgrounds/border-image-repeat-round.html": [
|
||||||
"d6e6e6810309bed33f17d57d1869f17555dea5e6",
|
"d6e6e6810309bed33f17d57d1869f17555dea5e6",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -546529,6 +546600,10 @@
|
||||||
"fe42b5325785950f31e2eb2d6cca9a15410af061",
|
"fe42b5325785950f31e2eb2d6cca9a15410af061",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/reference/border-image-repeat-005-ref.html": [
|
||||||
|
"0a372e088baa0045bb972c7398085da56a216d03",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-backgrounds/reference/border-image-repeat-round-ref.html": [
|
"css/css-backgrounds/reference/border-image-repeat-round-ref.html": [
|
||||||
"bfc2efbfa0bf419c13530e6c7d2ffcb324b05e35",
|
"bfc2efbfa0bf419c13530e6c7d2ffcb324b05e35",
|
||||||
"support"
|
"support"
|
||||||
|
@ -554805,15 +554880,43 @@
|
||||||
"00b528298b583cc74e013cdeff917f22290f908b",
|
"00b528298b583cc74e013cdeff917f22290f908b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative-ref.html": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative-ref.html": [
|
||||||
"5b707e5b43abc0ee1bc28088f1bfb3d23508f308",
|
"7928438702c9b2096eba088603ac4b936051aac3",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative.html": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative.html": [
|
||||||
"558f5b8aa8a827f19f2aa3e099654c28fa4f3c16",
|
"56b040d8faf6dee3740a288af5c1bf486b1c9e08",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-fonts/font-display/font-display-feature-policy.tentative.html.headers": [
|
"css/css-fonts/font-display/font-display-feature-policy-01.tentative.html.headers": [
|
||||||
|
"0c3e29db99f07ddc1bb3c07cac24e2904e546b1b",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative-ref.html": [
|
||||||
|
"7f6f56a93abb4d200bd83403367d90aad192d5fb",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative.html": [
|
||||||
|
"65f76b07846faf193e2b0900f45211303aa290f9",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-02.tentative.html.headers": [
|
||||||
|
"e6c4898d5d3d28fa225e834674dfb768dbcf55d7",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-report-only.tentative.html": [
|
||||||
|
"ff3a7f197835370a2eaaf96cf920b0f09d3d8405",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-report-only.tentative.html.headers": [
|
||||||
|
"e6c4898d5d3d28fa225e834674dfb768dbcf55d7",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html": [
|
||||||
|
"6f6a51a28fda5c9f5816bf6c54dc7fba5f462475",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"css/css-fonts/font-display/font-display-feature-policy-reporting.tentative.html.headers": [
|
||||||
"0c3e29db99f07ddc1bb3c07cac24e2904e546b1b",
|
"0c3e29db99f07ddc1bb3c07cac24e2904e546b1b",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
@ -561782,7 +561885,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-fonts/support/fonts/makegsubfonts.py": [
|
"css/css-fonts/support/fonts/makegsubfonts.py": [
|
||||||
"42b97bdd9b01e81eed943d29f26e02419e7b3c3d",
|
"cd39e91d462ccc9b94adb0bed7f83250a1283961",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-fonts/support/fonts/pass.woff": [
|
"css/css-fonts/support/fonts/pass.woff": [
|
||||||
|
@ -603306,7 +603409,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/tools/apiclient/test.py": [
|
"css/tools/apiclient/test.py": [
|
||||||
"be99780d6cb5026a93924d4571a8ca1a149a4ff7",
|
"e485367f8402807d0feb6b6e519ee5dbd04aa651",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/tools/apiclient/test/corners.json": [
|
"css/tools/apiclient/test/corners.json": [
|
||||||
|
@ -603342,7 +603445,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/tools/w3ctestlib/Sources.py": [
|
"css/tools/w3ctestlib/Sources.py": [
|
||||||
"8af95dba09bbdf3773574f9ad46be6de54bdfbe2",
|
"1528cbb83414220ed374e6a4fb24743952c7a45e",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/tools/w3ctestlib/Suite.py": [
|
"css/tools/w3ctestlib/Suite.py": [
|
||||||
|
@ -641278,7 +641381,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/mediasession.idl": [
|
"interfaces/mediasession.idl": [
|
||||||
"d2d16c232b7c72704b2648f844b64b4482ff2072",
|
"0fc9ff05f9475cd7f48fde6c22765d431b51310c",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/mediastream-recording.idl": [
|
"interfaces/mediastream-recording.idl": [
|
||||||
|
@ -641514,7 +641617,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webrtc.idl": [
|
"interfaces/webrtc.idl": [
|
||||||
"dc51e2f2f3ae8f33b2cde6aa005efa34f46648aa",
|
"d60139ad946ee625ed61f598a96f71d0680511c2",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webusb.idl": [
|
"interfaces/webusb.idl": [
|
||||||
|
@ -641906,7 +642009,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"lint.whitelist": [
|
"lint.whitelist": [
|
||||||
"765256d05cafd33777d181e42ddadb8aad424784",
|
"64ff0296a46f3f8302dd71a9894144c6988e24b0",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"loading/preloader-css-import-no-quote.tentative.html": [
|
"loading/preloader-css-import-no-quote.tentative.html": [
|
||||||
|
@ -670814,7 +670917,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"streams/writable-streams/write.any.js": [
|
"streams/writable-streams/write.any.js": [
|
||||||
"85c7f8ceb969b02f1928ad9992c31b94527e369e",
|
"28fcf650e9f5660279ca7485c7f6478bbd1c97ce",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"subresource-integrity/META.yml": [
|
"subresource-integrity/META.yml": [
|
||||||
|
@ -675362,7 +675465,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/example/echo_client.py": [
|
"tools/pywebsocket/example/echo_client.py": [
|
||||||
"943ce64e8b886562fc69209834bf92b1399142f7",
|
"7395f51a77100bc0c9a708fc540da671c2c6de03",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/example/echo_noext_wsh.py": [
|
"tools/pywebsocket/example/echo_noext_wsh.py": [
|
||||||
|
@ -675622,7 +675725,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/test/test_msgutil.py": [
|
"tools/pywebsocket/test/test_msgutil.py": [
|
||||||
"9dbbb5d8d4b9ac23e9c877bbcedb929ce0908cf1",
|
"234735c63047d2edb238cb5255ad474a2e4d0a83",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/test/test_mux.py": [
|
"tools/pywebsocket/test/test_mux.py": [
|
||||||
|
@ -675638,7 +675741,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/test/test_util.py": [
|
"tools/pywebsocket/test/test_util.py": [
|
||||||
"20f4ab059652c5869ec205a128df93914ca8c71e",
|
"64ba3f47737a331ef0390cc6b0c81c2d34a42833",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/pywebsocket/test/testdata/README": [
|
"tools/pywebsocket/test/testdata/README": [
|
||||||
|
@ -679834,7 +679937,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/requirements.txt": [
|
"tools/wptrunner/requirements.txt": [
|
||||||
"b220a01b67d56b9d4a2debeedf93c5c2a2d2e827",
|
"24a7d3d7e0341472dd032c71d7abfd1f10425ca8",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/requirements_chrome.txt": [
|
"tools/wptrunner/requirements_chrome.txt": [
|
||||||
|
@ -679882,7 +679985,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/setup.py": [
|
"tools/wptrunner/setup.py": [
|
||||||
"63d3edde244d0b9e88abbdaa8c579a4a8807236a",
|
"0a16aa537b33b211622ef7799c149a135c7c4660",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/test/metadata/testharness/firefox/__dir__.ini": [
|
"tools/wptrunner/test/metadata/testharness/firefox/__dir__.ini": [
|
||||||
|
@ -679938,7 +680041,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/test/test.py": [
|
"tools/wptrunner/test/test.py": [
|
||||||
"9960dcd1e28120e1c9bb3a0ccdf40d8ec9a99904",
|
"8f323a3386c997cbcfa013e6585086471ddfa208",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/test/testdata/testharness/firefox/subdir/test_pref_inherit.html": [
|
"tools/wptrunner/test/testdata/testharness/firefox/subdir/test_pref_inherit.html": [
|
||||||
|
@ -680022,7 +680125,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/edge.py": [
|
"tools/wptrunner/wptrunner/browsers/edge.py": [
|
||||||
"9a746819021c14807dcb3549893bcd7105a5a4cc",
|
"25309617ad00813cfb79ce385e0e8d5c806de82d",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/edge_webdriver.py": [
|
"tools/wptrunner/wptrunner/browsers/edge_webdriver.py": [
|
||||||
|
@ -680118,11 +680221,11 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
|
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
|
||||||
"fce1a5bc0d98b689eeeed97f0893f226bf371352",
|
"1ec1393a26b3d360a0ce0d35d3c1367bc7a9f052",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/executorservo.py": [
|
"tools/wptrunner/wptrunner/executors/executorservo.py": [
|
||||||
"b6975da7b4203a5fca4cea2f3c416ee3d1c268a5",
|
"654b5733f09b0e8d3abe37efd8f812e6e8396dbe",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/executorservodriver.py": [
|
"tools/wptrunner/wptrunner/executors/executorservodriver.py": [
|
||||||
|
@ -680130,7 +680233,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
|
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
|
||||||
"dcab4b045291c77a154ba4a61e85a9845d1fb19c",
|
"92d5576a6e7156603c66589c255d1788e06c0e12",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
|
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
|
||||||
|
@ -680162,7 +680265,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/reftest.js": [
|
"tools/wptrunner/wptrunner/executors/reftest.js": [
|
||||||
"5bd5c609cbd5e799787c93bac673fb8e392a7c30",
|
"97b3cacafc286cd23e082f8024800bf2c29e6310",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/runner.js": [
|
"tools/wptrunner/wptrunner/executors/runner.js": [
|
||||||
|
@ -680198,11 +680301,11 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/manifestupdate.py": [
|
"tools/wptrunner/wptrunner/manifestupdate.py": [
|
||||||
"90bcd593edec91d506d41aef2467859ba5d95c77",
|
"86ac55f7915728d914c98a1ef292875578b5d7a8",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/metadata.py": [
|
"tools/wptrunner/wptrunner/metadata.py": [
|
||||||
"26dc71e64e4187b9595eb5f5d1729884763b36f2",
|
"3a92491aa22202e21041a258220afae6bda13a92",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/products.py": [
|
"tools/wptrunner/wptrunner/products.py": [
|
||||||
|
@ -680326,7 +680429,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/wptcommandline.py": [
|
"tools/wptrunner/wptrunner/wptcommandline.py": [
|
||||||
"1d6909daaca68e78083327915c0c30e2f9d1c34e",
|
"710f26ae81b438bfd8df8b936248f0bf0eb69770",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/wptlogging.py": [
|
"tools/wptrunner/wptrunner/wptlogging.py": [
|
||||||
|
@ -680386,7 +680489,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/wptrunner.py": [
|
"tools/wptrunner/wptrunner/wptrunner.py": [
|
||||||
"ec9a3fe838e14f20cc2bb0012c4a8e294353382c",
|
"dca35f5563d27387a5d8229cba1e68700b218061",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/wpttest.py": [
|
"tools/wptrunner/wptrunner/wpttest.py": [
|
||||||
|
@ -691457,6 +691560,10 @@
|
||||||
"2719bdd7dd1b4a73e8b2004f477beecf03d131bb",
|
"2719bdd7dd1b4a73e8b2004f477beecf03d131bb",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"webxr/xrSession_identity_referenceSpace.https.html": [
|
||||||
|
"6f4f1e805a060853eaa557a16111acd73d78fe42",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"webxr/xrSession_mode.https.html": [
|
"webxr/xrSession_mode.https.html": [
|
||||||
"4b54d9480211b3641997f78a61dfdc7058592ecd",
|
"4b54d9480211b3641997f78a61dfdc7058592ecd",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -691478,7 +691585,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webxr/xrSession_requestReferenceSpace.https.html": [
|
"webxr/xrSession_requestReferenceSpace.https.html": [
|
||||||
"1eb49e0b875b1c686c9f5474c007af8c9d4790d0",
|
"bf4ec677655bf8e8440824cbfd311a2f0c444f7c",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"workers/META.yml": [
|
"workers/META.yml": [
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[border-image-repeat-005.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[font-display-feature-policy-01.tentative.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[font-display-feature-policy-02.tentative.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,5 @@
|
||||||
|
[font-display-feature-policy-report-only.tentative.html]
|
||||||
|
expected: ERROR
|
||||||
|
[font-display-late-swap Report Format]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[font-display-feature-policy-reporting.tentative.html]
|
||||||
|
expected: ERROR
|
||||||
|
[font-display-late-swap Report Format]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
|
@ -6,6 +6,3 @@
|
||||||
[Instant scrolling while doing history navigation.]
|
[Instant scrolling while doing history navigation.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Smooth scrolling while doing history navigation.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -75,9 +75,6 @@
|
||||||
[windows-1258: x-cp1258 (XMLHttpRequest)]
|
[windows-1258: x-cp1258 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1257: windows-1257 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1254: windows-1254 (XMLHttpRequest)]
|
[windows-1254: windows-1254 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
@ -120,5 +117,11 @@
|
||||||
[windows-1256: windows-1256 (XMLHttpRequest)]
|
[windows-1256: windows-1256 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[windows-1254: iso-ir-148 (XMLHttpRequest)]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
||||||
[single-byte-decoder.html?TextDecoder]
|
[single-byte-decoder.html?TextDecoder]
|
||||||
|
|
|
@ -312,9 +312,18 @@
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: */* text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,3 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%20%22nosniFF%22]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_5.html]
|
[traverse_the_history_2.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[script-onerror-insertion-point-2.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
||||||
[DOMContentLoaded-defer.html]
|
|
||||||
[The end: DOMContentLoaded and defer scripts]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[iframe_005.html]
|
||||||
|
[document.write external script into iframe write back into parent]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[sharedworker-in-worker.html]
|
[sharedworker-in-worker.html]
|
||||||
expected: ERROR
|
|
||||||
[Base URL in workers: new SharedWorker()]
|
[Base URL in workers: new SharedWorker()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[transition_calc_implicit.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,4 +0,0 @@
|
||||||
[paint_timing.html]
|
|
||||||
[Performance entries observer]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
# Prevent accidentially touching CSS submodules
|
# Prevent accidentially touching CSS subtree
|
||||||
/css/tools/ @plinss @kojiishi @jgraham @gsnedders
|
/css/tools/apiclient/ @plinss @jgraham @gsnedders
|
||||||
|
|
||||||
|
# Prevent accidentally touching tools/third_party
|
||||||
|
/tools/third_party/ @jgraham @gsnedders
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>'border-image-repeat' with 'space' and 'round'</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-repeat">
|
||||||
|
<link rel="match" href="reference/border-image-repeat-005-ref.html">
|
||||||
|
<style>
|
||||||
|
#target {
|
||||||
|
width: 255px;
|
||||||
|
height: 80px;
|
||||||
|
border: 10px solid red;
|
||||||
|
border-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'><rect width='100' height='100' fill='green'/></svg>") 0 fill / 0px space round;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>There should be two green rectangles below:</p>
|
||||||
|
<div id="target"></div>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Reference: 'border-image-repeat' with 'space' and 'round'</title>
|
||||||
|
<style>
|
||||||
|
.green {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background-color: green;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>There should be two green rectangles below:</p>
|
||||||
|
<div style="position: relative">
|
||||||
|
<div class="green" style="left: 25px"></div>
|
||||||
|
<div class="green" style="left: 150px"></div>
|
||||||
|
</div>
|
|
@ -1,5 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Test for font-display-late-swap feature policy</title>
|
<title>Test for font-display-late-swap feature policy behavior when set to reporting</title>
|
||||||
<style>
|
<style>
|
||||||
.ahem {
|
.ahem {
|
||||||
font-family: 'Ahem';
|
font-family: 'Ahem';
|
|
@ -1,8 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="reftest-wait">
|
<html class="reftest-wait">
|
||||||
<title>Test for font-display-late-swap feature policy</title>
|
<title>Test for font-display-late-swap feature policy behavior when set to reporting</title>
|
||||||
<link rel="help" href="https://github.com/w3c/webappsec-feature-policy/blob/master/policies/font-display-late-swap.md">
|
<link rel="help" href="https://github.com/w3c/webappsec-feature-policy/blob/master/policies/font-display-late-swap.md">
|
||||||
<link rel="match" href="font-display-feature-policy.tentative-ref.html">
|
<link rel="match" href="font-display-feature-policy-01.tentative-ref.html">
|
||||||
<style>
|
<style>
|
||||||
</style>
|
</style>
|
||||||
<p>Tests if font-display is set to optional for each option except for when it is set to fallback</p>
|
<p>Tests if font-display is set to optional for each option except for when it is set to fallback</p>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Test for font-display-late-swap feature policy behavior when set to report-only</title>
|
||||||
|
<style>
|
||||||
|
.ahem {
|
||||||
|
font-family: 'Ahem';
|
||||||
|
}
|
||||||
|
.arial {
|
||||||
|
font-family: 'Arial';
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<p>None of the font-display values should be changed</p>
|
||||||
|
<table id="container">
|
||||||
|
<tr>
|
||||||
|
<th>not-set</th>
|
||||||
|
<th>auto</th>
|
||||||
|
<th>block</th>
|
||||||
|
<th>swap</th>
|
||||||
|
<th>fallback</th>
|
||||||
|
<th>optional</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="ahem">a</td>
|
||||||
|
<td class="ahem">a</td>
|
||||||
|
<td class="ahem">a</td>
|
||||||
|
<td class="ahem">a</td>
|
||||||
|
<td class="ahem">a</td>
|
||||||
|
<td class="arial">a</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<title>Test for font-display-late-swap feature policy behavior when set to report-only</title>
|
||||||
|
<link rel="help" href="https://github.com/w3c/webappsec-feature-policy/blob/master/policies/font-display-late-swap.md">
|
||||||
|
<link rel="match" href="font-display-feature-policy-02.tentative-ref.html">
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
<p>None of the font-display values should be changed</p>
|
||||||
|
<table id="container">
|
||||||
|
<tr>
|
||||||
|
<th>not-set</th>
|
||||||
|
<th>auto</th>
|
||||||
|
<th>block</th>
|
||||||
|
<th>swap</th>
|
||||||
|
<th>fallback</th>
|
||||||
|
<th>optional</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
const fontDisplayValues = ['', 'auto', 'block', 'swap', 'fallback', 'optional'];
|
||||||
|
const table = document.getElementById('container');
|
||||||
|
|
||||||
|
function makeFontFaceDeclaration(family, display) {
|
||||||
|
url = '/fonts/Ahem.ttf?pipe=trickle(d1)'; // Before the swap period is over
|
||||||
|
return '@font-face { font-family: ' + family + '; src: url("' + url + '"); font-display: ' + display + '; }';
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = () => {
|
||||||
|
let tr = document.createElement('tr');
|
||||||
|
for (let display of fontDisplayValues) {
|
||||||
|
const family = display + '-face';
|
||||||
|
const rule = makeFontFaceDeclaration(family, display);
|
||||||
|
document.styleSheets[0].insertRule(rule, 0);
|
||||||
|
let td = document.createElement('td');
|
||||||
|
td.textContent = 'a';
|
||||||
|
td.style.fontFamily = family + ', Arial';
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
table.appendChild(tr);
|
||||||
|
const timeoutMilliSec = 1500; // After the font is loaded
|
||||||
|
setTimeout(() => {
|
||||||
|
document.documentElement.classList.remove("reftest-wait");
|
||||||
|
}, timeoutMilliSec);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -0,0 +1 @@
|
||||||
|
Feature-Policy-Report-Only: font-display-late-swap 'none';
|
|
@ -0,0 +1,72 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test for font-display-late-swap feature policy set to report-only</title>
|
||||||
|
<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#reporting">
|
||||||
|
<script src='/resources/testharness.js'></script>
|
||||||
|
<script src='/resources/testharnessreport.js'></script>
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Tests if the correct number of violation reports are generated and each report corresponds to this feature.
|
||||||
|
4 reports should be created out of the 6 options below (reports for all except for 'fallback' and 'optional').
|
||||||
|
</p>
|
||||||
|
<table id="container">
|
||||||
|
<tr>
|
||||||
|
<th>not-set</th>
|
||||||
|
<th>auto</th>
|
||||||
|
<th>block</th>
|
||||||
|
<th>swap</th>
|
||||||
|
<th>fallback</th>
|
||||||
|
<th>optional</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
const fontDisplayValues = ['', 'auto', 'block', 'swap', 'fallback', 'optional'];
|
||||||
|
const table = document.getElementById('container');
|
||||||
|
|
||||||
|
function makeFontFaceDeclaration(family, display) {
|
||||||
|
url = '/fonts/Ahem.ttf?pipe=trickle(d1)'; // Before the swap period is over
|
||||||
|
return '@font-face { font-family: ' + family + '; src: url("' + url + '"); font-display: ' + display + '; }';
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = () => {
|
||||||
|
let tr = document.createElement('tr');
|
||||||
|
for (let display of fontDisplayValues) {
|
||||||
|
const family = display + '-face';
|
||||||
|
const rule = makeFontFaceDeclaration(family, display);
|
||||||
|
document.styleSheets[0].insertRule(rule, 0);
|
||||||
|
let td = document.createElement('td');
|
||||||
|
td.textContent = 'a';
|
||||||
|
td.style.fontFamily = family + ', Arial';
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
table.appendChild(tr);
|
||||||
|
}
|
||||||
|
|
||||||
|
let reportCounter = 4;
|
||||||
|
let t = async_test('font-display-late-swap Report Format');
|
||||||
|
|
||||||
|
let check_report_format = (reports, observer) => {
|
||||||
|
reportCounter -= reports.length;
|
||||||
|
for (let report of reports) {
|
||||||
|
assert_equals(report.type, 'feature-policy-violation');
|
||||||
|
assert_equals(report.url, document.location.href, 'Report URL');
|
||||||
|
assert_equals(report.body.featureId, 'font-display-late-swap');
|
||||||
|
assert_equals(report.body.disposition, 'report');
|
||||||
|
assert_true('sourceFile' in report.body);
|
||||||
|
assert_true('lineNumber' in report.body);
|
||||||
|
assert_true('columnNumber' in report.body);
|
||||||
|
}
|
||||||
|
// Test is done when we have exactly 4 reports for the following
|
||||||
|
// font-display values: not set, 'auto', 'block', 'swap'
|
||||||
|
if (reportCounter == 0) t.done();
|
||||||
|
};
|
||||||
|
|
||||||
|
new ReportingObserver(t.step_func(check_report_format),
|
||||||
|
{types: ['feature-policy-violation'], buffered: true}).observe();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1 @@
|
||||||
|
Feature-Policy-Report-Only: font-display-late-swap 'none';
|
|
@ -0,0 +1,72 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test for font-display-late-swap feature policy set to reporting</title>
|
||||||
|
<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#reporting">
|
||||||
|
<script src='/resources/testharness.js'></script>
|
||||||
|
<script src='/resources/testharnessreport.js'></script>
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Tests if the correct number of violation reports are generated and each report corresponds to this feature.
|
||||||
|
4 reports should be created out of the 6 options below (reports for all except for 'fallback' and 'optional').
|
||||||
|
</p>
|
||||||
|
<table id="container">
|
||||||
|
<tr>
|
||||||
|
<th>not-set</th>
|
||||||
|
<th>auto</th>
|
||||||
|
<th>block</th>
|
||||||
|
<th>swap</th>
|
||||||
|
<th>fallback</th>
|
||||||
|
<th>optional</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
const fontDisplayValues = ['', 'auto', 'block', 'swap', 'fallback', 'optional'];
|
||||||
|
const table = document.getElementById('container');
|
||||||
|
|
||||||
|
function makeFontFaceDeclaration(family, display) {
|
||||||
|
url = '/fonts/Ahem.ttf?pipe=trickle(d1)'; // Before the swap period is over
|
||||||
|
return '@font-face { font-family: ' + family + '; src: url("' + url + '"); font-display: ' + display + '; }';
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = () => {
|
||||||
|
let tr = document.createElement('tr');
|
||||||
|
for (let display of fontDisplayValues) {
|
||||||
|
const family = display + '-face';
|
||||||
|
const rule = makeFontFaceDeclaration(family, display);
|
||||||
|
document.styleSheets[0].insertRule(rule, 0);
|
||||||
|
let td = document.createElement('td');
|
||||||
|
td.textContent = 'a';
|
||||||
|
td.style.fontFamily = family + ', Arial';
|
||||||
|
tr.appendChild(td);
|
||||||
|
}
|
||||||
|
table.appendChild(tr);
|
||||||
|
}
|
||||||
|
|
||||||
|
let reportCounter = 4;
|
||||||
|
let t = async_test('font-display-late-swap Report Format');
|
||||||
|
|
||||||
|
let check_report_format = (reports, observer) => {
|
||||||
|
reportCounter -= reports.length;
|
||||||
|
for (let report of reports) {
|
||||||
|
assert_equals(report.type, 'feature-policy-violation');
|
||||||
|
assert_equals(report.url, document.location.href, 'Report URL');
|
||||||
|
assert_equals(report.body.featureId, 'font-display-late-swap');
|
||||||
|
assert_equals(report.body.disposition, 'enforce');
|
||||||
|
assert_true('sourceFile' in report.body);
|
||||||
|
assert_true('lineNumber' in report.body);
|
||||||
|
assert_true('columnNumber' in report.body);
|
||||||
|
}
|
||||||
|
// Test is done when we have exactly 4 reports for the following
|
||||||
|
// font-display values: not set, 'auto', 'block', 'swap'
|
||||||
|
if (reportCounter == 0) t.done();
|
||||||
|
};
|
||||||
|
|
||||||
|
new ReportingObserver(t.step_func(check_report_format),
|
||||||
|
{types: ['feature-policy-violation'], buffered: true}).observe();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1 @@
|
||||||
|
Feature-Policy: font-display-late-swap 'none';
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import textwrap
|
import textwrap
|
||||||
|
@ -474,13 +475,13 @@ def makeJavascriptData():
|
||||||
|
|
||||||
# build fonts
|
# build fonts
|
||||||
|
|
||||||
print "Making lookup type 1 font..."
|
print("Making lookup type 1 font...")
|
||||||
makeLookup1()
|
makeLookup1()
|
||||||
|
|
||||||
print "Making lookup type 3 font..."
|
print("Making lookup type 3 font...")
|
||||||
makeLookup3()
|
makeLookup3()
|
||||||
|
|
||||||
# output javascript data
|
# output javascript data
|
||||||
|
|
||||||
print "Making javascript data file..."
|
print("Making javascript data file...")
|
||||||
makeJavascriptData()
|
makeJavascriptData()
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
# [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
|
# [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import glob
|
import glob
|
||||||
|
@ -24,11 +25,11 @@ from apiclient import apiclient
|
||||||
|
|
||||||
def runTests(testFileSearch):
|
def runTests(testFileSearch):
|
||||||
for testFilePath in glob.glob(testFileSearch):
|
for testFilePath in glob.glob(testFileSearch):
|
||||||
print 'Running tests from: ' + testFilePath
|
print('Running tests from: ' + testFilePath)
|
||||||
with open(testFilePath) as testFile:
|
with open(testFilePath) as testFile:
|
||||||
testData = json.load(testFile, object_pairs_hook = collections.OrderedDict)
|
testData = json.load(testFile, object_pairs_hook = collections.OrderedDict)
|
||||||
for testSetName in testData:
|
for testSetName in testData:
|
||||||
print testSetName + ':'
|
print(testSetName + ':')
|
||||||
testSet = testData[testSetName]
|
testSet = testData[testSetName]
|
||||||
vars = testSet['variables']
|
vars = testSet['variables']
|
||||||
for test in testSet['testcases']:
|
for test in testSet['testcases']:
|
||||||
|
@ -37,31 +38,31 @@ def runTests(testFileSearch):
|
||||||
template = uritemplate.URITemplate(test[0])
|
template = uritemplate.URITemplate(test[0])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if (expectedResult):
|
if (expectedResult):
|
||||||
print '* FAIL: "' + test[0] + '" got: None, expected "' + expectedResult + '"'
|
print('* FAIL: "' + test[0] + '" got: None, expected "' + expectedResult + '"')
|
||||||
else:
|
else:
|
||||||
print ' PASS: "' + test[0] + '" == None'
|
print(' PASS: "' + test[0] + '" == None')
|
||||||
continue
|
continue
|
||||||
|
|
||||||
result = template.expand(**vars)
|
result = template.expand(**vars)
|
||||||
if (isinstance(expectedResult, basestring)):
|
if (isinstance(expectedResult, basestring)):
|
||||||
if (expectedResult != result):
|
if (expectedResult != result):
|
||||||
print '* FAIL: "' + test[0] + '" got: "' + unicode(result) + '", expected "' + expectedResult + '"'
|
print('* FAIL: "' + test[0] + '" got: "' + unicode(result) + '", expected "' + expectedResult + '"')
|
||||||
continue
|
continue
|
||||||
elif (isinstance(expectedResult, list)):
|
elif (isinstance(expectedResult, list)):
|
||||||
for possibleResult in expectedResult:
|
for possibleResult in expectedResult:
|
||||||
if (possibleResult == result):
|
if (possibleResult == result):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print '* FAIL: "' + test[0] + '" got: "' + unicode(result) + '", expected:'
|
print('* FAIL: "' + test[0] + '" got: "' + unicode(result) + '", expected:')
|
||||||
print " or\n".join([' "' + possibleResult + '"' for possibleResult in expectedResult])
|
print(" or\n".join([' "' + possibleResult + '"' for possibleResult in expectedResult]))
|
||||||
continue
|
continue
|
||||||
elif (not expectedResult):
|
elif (not expectedResult):
|
||||||
if (result):
|
if (result):
|
||||||
print '* FAIL "' + test[0] + '" got: "' + unicode(result) + '", expected None'
|
print('* FAIL "' + test[0] + '" got: "' + unicode(result) + '", expected None')
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
print '** Unknown expected result type: ' + repr(expectedResult)
|
print('** Unknown expected result type: ' + repr(expectedResult))
|
||||||
print ' PASS: "' + test[0] + '" == "' + result + '"'
|
print(' PASS: "' + test[0] + '" == "' + result + '"')
|
||||||
|
|
||||||
def debugHook(type, value, tb):
|
def debugHook(type, value, tb):
|
||||||
if hasattr(sys, 'ps1') or not sys.stderr.isatty():
|
if hasattr(sys, 'ps1') or not sys.stderr.isatty():
|
||||||
|
@ -72,7 +73,7 @@ def debugHook(type, value, tb):
|
||||||
import traceback, pdb
|
import traceback, pdb
|
||||||
# we are NOT in interactive mode, print the exception...
|
# we are NOT in interactive mode, print the exception...
|
||||||
traceback.print_exception(type, value, tb)
|
traceback.print_exception(type, value, tb)
|
||||||
print
|
print()
|
||||||
# ...then start the debugger in post-mortem mode.
|
# ...then start the debugger in post-mortem mode.
|
||||||
pdb.pm()
|
pdb.pm()
|
||||||
|
|
||||||
|
@ -88,18 +89,18 @@ if __name__ == "__main__": # called from the command line
|
||||||
|
|
||||||
|
|
||||||
github = apiclient.APIClient('https://api.github.com/', version = 'vnd.github.beta')
|
github = apiclient.APIClient('https://api.github.com/', version = 'vnd.github.beta')
|
||||||
print github.get('user_url', user = 'plinss').data
|
print(github.get('user_url', user = 'plinss').data)
|
||||||
|
|
||||||
# shepherd = apiclient.APIClient('https://api.csswg.org/shepherd/', version = 'vnd.csswg.shepherd.v1')
|
# shepherd = apiclient.APIClient('https://api.csswg.org/shepherd/', version = 'vnd.csswg.shepherd.v1')
|
||||||
shepherd = apiclient.APIClient('https://test.linss.com/shepherd/api', version = 'vnd.csswg.shepherd.v1')
|
shepherd = apiclient.APIClient('https://test.linss.com/shepherd/api', version = 'vnd.csswg.shepherd.v1')
|
||||||
print shepherd.resourceNames
|
print(shepherd.resourceNames)
|
||||||
specs = shepherd.resource('specifications')
|
specs = shepherd.resource('specifications')
|
||||||
print specs.variables
|
print(specs.variables)
|
||||||
# print specs.hints.docs
|
# print specs.hints.docs
|
||||||
print shepherd.get('specifications', spec = 'compositing-1', anchors = False).data
|
print(shepherd.get('specifications', spec = 'compositing-1', anchors = False).data)
|
||||||
|
|
||||||
suites = shepherd.resource('test_suites')
|
suites = shepherd.resource('test_suites')
|
||||||
print suites.variables
|
print(suites.variables)
|
||||||
print shepherd.get('test_suites', spec = 'css-shapes-1').data
|
print(shepherd.get('test_suites', spec = 'css-shapes-1').data)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# Initial code by fantasai, joint copyright 2010 W3C and Microsoft
|
# Initial code by fantasai, joint copyright 2010 W3C and Microsoft
|
||||||
# Licensed under BSD 3-Clause: <http://www.w3.org/Consortium/Legal/2008/03-bsd-license>
|
# Licensed under BSD 3-Clause: <http://www.w3.org/Consortium/Legal/2008/03-bsd-license>
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
from os.path import basename, exists, join
|
from os.path import basename, exists, join
|
||||||
import os
|
import os
|
||||||
import filecmp
|
import filecmp
|
||||||
|
@ -965,7 +966,7 @@ class XMLSource(FileSource):
|
||||||
if ((not self.metadata) and self.tree and (not self.errors)):
|
if ((not self.metadata) and self.tree and (not self.errors)):
|
||||||
self.extractMetadata(self.tree)
|
self.extractMetadata(self.tree)
|
||||||
except etree.ParseError as e:
|
except etree.ParseError as e:
|
||||||
print "PARSE ERROR: " + self.sourcepath
|
print("PARSE ERROR: " + self.sourcepath)
|
||||||
self.cacheAsParseError(self.sourcepath, e)
|
self.cacheAsParseError(self.sourcepath, e)
|
||||||
e.W3CTestLibErrorLocation = self.sourcepath
|
e.W3CTestLibErrorLocation = self.sourcepath
|
||||||
self.errors = [str(e)]
|
self.errors = [str(e)]
|
||||||
|
@ -1375,7 +1376,7 @@ class HTMLSource(XMLSource):
|
||||||
if ((not self.metadata) and self.tree and (not self.errors)):
|
if ((not self.metadata) and self.tree and (not self.errors)):
|
||||||
self.extractMetadata(self.tree)
|
self.extractMetadata(self.tree)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print "PARSE ERROR: " + self.sourcepath
|
print("PARSE ERROR: " + self.sourcepath)
|
||||||
e.W3CTestLibErrorLocation = self.sourcepath
|
e.W3CTestLibErrorLocation = self.sourcepath
|
||||||
self.errors = [str(e)]
|
self.errors = [str(e)]
|
||||||
self.encoding = 'utf-8'
|
self.encoding = 'utf-8'
|
||||||
|
|
|
@ -21,7 +21,7 @@ enum MediaSessionAction {
|
||||||
"seekforward",
|
"seekforward",
|
||||||
"previoustrack",
|
"previoustrack",
|
||||||
"nexttrack",
|
"nexttrack",
|
||||||
"skip-ad",
|
"skipad",
|
||||||
};
|
};
|
||||||
|
|
||||||
callback MediaSessionActionHandler = void();
|
callback MediaSessionActionHandler = void();
|
||||||
|
|
|
@ -628,7 +628,7 @@ enum RTCErrorDetailType {
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window,
|
||||||
Constructor(DOMString type, RTCErrorEventInit eventInitDict)]
|
Constructor(DOMString type, optional RTCErrorEventInit eventInitDict)]
|
||||||
interface RTCErrorEvent : Event {
|
interface RTCErrorEvent : Event {
|
||||||
readonly attribute RTCError? error;
|
readonly attribute RTCError? error;
|
||||||
};
|
};
|
||||||
|
|
|
@ -294,7 +294,8 @@ GENERATE_TESTS: shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/w
|
||||||
SET TIMEOUT: css/css-fonts/font-display/font-display.html
|
SET TIMEOUT: css/css-fonts/font-display/font-display.html
|
||||||
SET TIMEOUT: css/css-fonts/font-display/font-display-change.html
|
SET TIMEOUT: css/css-fonts/font-display/font-display-change.html
|
||||||
SET TIMEOUT: css/css-fonts/font-display/font-display-change-ref.html
|
SET TIMEOUT: css/css-fonts/font-display/font-display-change-ref.html
|
||||||
SET TIMEOUT: css/css-fonts/font-display/font-display-feature-policy.tentative.html
|
SET TIMEOUT: css/css-fonts/font-display/font-display-feature-policy-01.tentative.html
|
||||||
|
SET TIMEOUT: css/css-fonts/font-display/font-display-feature-policy-02.tentative.html
|
||||||
SET TIMEOUT: css/css-fonts/font-display/font-display-preload.html
|
SET TIMEOUT: css/css-fonts/font-display/font-display-preload.html
|
||||||
SET TIMEOUT: html/browsers/windows/auxiliary-browsing-contexts/resources/close-opener.html
|
SET TIMEOUT: html/browsers/windows/auxiliary-browsing-contexts/resources/close-opener.html
|
||||||
SET TIMEOUT: html/dom/documents/dom-tree-accessors/Document.currentScript.html
|
SET TIMEOUT: html/dom/documents/dom-tree-accessors/Document.currentScript.html
|
||||||
|
|
|
@ -251,3 +251,27 @@ promise_test(() => {
|
||||||
});
|
});
|
||||||
return ws.getWriter().write('a').then(() => assert_true(thenCalled, 'thenCalled should be true'));
|
return ws.getWriter().write('a').then(() => assert_true(thenCalled, 'thenCalled should be true'));
|
||||||
}, 'returning a thenable from write() should work');
|
}, 'returning a thenable from write() should work');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const stream = new WritableStream();
|
||||||
|
const writer = stream.getWriter();
|
||||||
|
const WritableStreamDefaultWriter = writer.constructor;
|
||||||
|
assert_throws(new TypeError(), () => new WritableStreamDefaultWriter(stream),
|
||||||
|
'should not be able to construct on locked stream');
|
||||||
|
// If stream.[[writer]] no longer points to |writer| then the closed Promise
|
||||||
|
// won't work properly.
|
||||||
|
return Promise.all([writer.close(), writer.closed]);
|
||||||
|
}, 'failing DefaultWriter constructor should not release an existing writer');
|
||||||
|
|
||||||
|
promise_test(t => {
|
||||||
|
const ws = new WritableStream({
|
||||||
|
start() {
|
||||||
|
return Promise.reject(error1);
|
||||||
|
}
|
||||||
|
}, { highWaterMark: 0 });
|
||||||
|
const writer = ws.getWriter();
|
||||||
|
return Promise.all([
|
||||||
|
promise_rejects(t, error1, writer.ready, 'ready should be rejected'),
|
||||||
|
promise_rejects(t, error1, writer.write(), 'write() should be rejected')
|
||||||
|
]);
|
||||||
|
}, 'write() on a stream with HWM 0 should not cause the ready Promise to resolve');
|
||||||
|
|
|
@ -51,6 +51,7 @@ or
|
||||||
# run echo client to test IETF HyBi 00 protocol
|
# run echo client to test IETF HyBi 00 protocol
|
||||||
run with --protocol-version=hybi00
|
run with --protocol-version=hybi00
|
||||||
"""
|
"""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
|
@ -940,15 +941,15 @@ class EchoClient(object):
|
||||||
for line in self._options.message.split(','):
|
for line in self._options.message.split(','):
|
||||||
self._stream.send_message(line)
|
self._stream.send_message(line)
|
||||||
if self._options.verbose:
|
if self._options.verbose:
|
||||||
print 'Send: %s' % line
|
print('Send: %s' % line)
|
||||||
try:
|
try:
|
||||||
received = self._stream.receive_message()
|
received = self._stream.receive_message()
|
||||||
|
|
||||||
if self._options.verbose:
|
if self._options.verbose:
|
||||||
print 'Recv: %s' % received
|
print('Recv: %s' % received)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if self._options.verbose:
|
if self._options.verbose:
|
||||||
print 'Error: %s' % e
|
print('Error: %s' % e)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
self._do_closing_handshake()
|
self._do_closing_handshake()
|
||||||
|
@ -964,15 +965,15 @@ class EchoClient(object):
|
||||||
self._logger.info('Wait for server-initiated closing handshake')
|
self._logger.info('Wait for server-initiated closing handshake')
|
||||||
message = self._stream.receive_message()
|
message = self._stream.receive_message()
|
||||||
if message is None:
|
if message is None:
|
||||||
print 'Recv close'
|
print('Recv close')
|
||||||
print 'Send ack'
|
print('Send ack')
|
||||||
self._logger.info(
|
self._logger.info(
|
||||||
'Received closing handshake and sent ack')
|
'Received closing handshake and sent ack')
|
||||||
return
|
return
|
||||||
print 'Send close'
|
print('Send close')
|
||||||
self._stream.close_connection()
|
self._stream.close_connection()
|
||||||
self._logger.info('Sent closing handshake')
|
self._logger.info('Sent closing handshake')
|
||||||
print 'Recv ack'
|
print('Recv ack')
|
||||||
self._logger.info('Received ack')
|
self._logger.info('Received ack')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
"""Tests for msgutil module."""
|
"""Tests for msgutil module."""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
|
||||||
import array
|
import array
|
||||||
|
@ -884,7 +885,7 @@ class PerMessageDeflateTest(unittest.TestCase):
|
||||||
compressed_empty = compressed_empty[:-4]
|
compressed_empty = compressed_empty[:-4]
|
||||||
expected += '\x80%c' % len(compressed_empty)
|
expected += '\x80%c' % len(compressed_empty)
|
||||||
expected += compressed_empty
|
expected += compressed_empty
|
||||||
print '%r' % expected
|
print('%r' % expected)
|
||||||
self.assertEqual(expected, request.connection.written_data())
|
self.assertEqual(expected, request.connection.written_data())
|
||||||
|
|
||||||
def test_send_message_fragmented_empty_last_frame(self):
|
def test_send_message_fragmented_empty_last_frame(self):
|
||||||
|
@ -1064,7 +1065,7 @@ class PerMessageDeflateTest(unittest.TestCase):
|
||||||
|
|
||||||
frame_count += 1
|
frame_count += 1
|
||||||
|
|
||||||
print "Chunk sizes: %r" % chunk_sizes
|
print("Chunk sizes: %r" % chunk_sizes)
|
||||||
self.assertTrue(len(chunk_sizes) > 10)
|
self.assertTrue(len(chunk_sizes) > 10)
|
||||||
|
|
||||||
# Close frame
|
# Close frame
|
||||||
|
@ -1167,9 +1168,9 @@ class PerMessageDeflateTest(unittest.TestCase):
|
||||||
compress = None
|
compress = None
|
||||||
finish_used = True
|
finish_used = True
|
||||||
|
|
||||||
print "Chunk sizes: %r" % chunk_sizes
|
print("Chunk sizes: %r" % chunk_sizes)
|
||||||
self.assertTrue(len(chunk_sizes) > 10)
|
self.assertTrue(len(chunk_sizes) > 10)
|
||||||
print "Methods: %r" % methods
|
print("Methods: %r" % methods)
|
||||||
self.assertTrue(sync_used)
|
self.assertTrue(sync_used)
|
||||||
self.assertTrue(finish_used)
|
self.assertTrue(finish_used)
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
"""Tests for util module."""
|
"""Tests for util module."""
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -172,7 +173,7 @@ class InflaterDeflaterTest(unittest.TestCase):
|
||||||
[chr(random.randint(0, 255)) for i in xrange(100 * 1024)])
|
[chr(random.randint(0, 255)) for i in xrange(100 * 1024)])
|
||||||
|
|
||||||
chunked_input = get_random_section(source, 10)
|
chunked_input = get_random_section(source, 10)
|
||||||
print "Input chunk sizes: %r" % [len(c) for c in chunked_input]
|
print("Input chunk sizes: %r" % [len(c) for c in chunked_input])
|
||||||
|
|
||||||
deflater = util._Deflater(15)
|
deflater = util._Deflater(15)
|
||||||
compressed = []
|
compressed = []
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
html5lib == 1.0.1
|
html5lib == 1.0.1
|
||||||
mozinfo == 0.10
|
mozinfo == 0.10
|
||||||
mozlog==3.10
|
mozlog==4.0
|
||||||
mozdebug==0.1.1
|
mozdebug==0.1.1
|
||||||
urllib3[secure]==1.24.1
|
urllib3[secure]==1.24.1
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -60,12 +62,12 @@ setup(name=PACKAGE_NAME,
|
||||||
|
|
||||||
if "install" in sys.argv:
|
if "install" in sys.argv:
|
||||||
path = os.path.relpath(os.path.join(sys.prefix, "requirements"), os.curdir)
|
path = os.path.relpath(os.path.join(sys.prefix, "requirements"), os.curdir)
|
||||||
print textwrap.fill("""In order to use with one of the built-in browser
|
print(textwrap.fill("""In order to use with one of the built-in browser
|
||||||
products, you will need to install the extra dependencies. These are provided
|
products, you will need to install the extra dependencies. These are provided
|
||||||
as requirements_[name].txt in the %s directory and can be installed using
|
as requirements_[name].txt in the %s directory and can be installed using
|
||||||
e.g.""" % path, 80)
|
e.g.""" % path, 80))
|
||||||
|
|
||||||
print """
|
print("""
|
||||||
|
|
||||||
pip install -r %s/requirements_firefox.txt
|
pip install -r %s/requirements_firefox.txt
|
||||||
""" % path
|
""" % path)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
@ -153,7 +154,7 @@ def main():
|
||||||
if args.pdb:
|
if args.pdb:
|
||||||
import pdb
|
import pdb
|
||||||
import traceback
|
import traceback
|
||||||
print traceback.format_exc()
|
print(traceback.format_exc())
|
||||||
pdb.post_mortem()
|
pdb.post_mortem()
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
from .base import Browser, ExecutorBrowser, require_arg
|
from .base import Browser, ExecutorBrowser, require_arg
|
||||||
from ..webdriver_server import EdgeDriverServer
|
from ..webdriver_server import EdgeDriverServer
|
||||||
from ..executors import executor_kwargs as base_executor_kwargs
|
from ..executors import executor_kwargs as base_executor_kwargs
|
||||||
|
@ -76,7 +77,7 @@ class EdgeBrowser(Browser):
|
||||||
|
|
||||||
|
|
||||||
def start(self, **kwargs):
|
def start(self, **kwargs):
|
||||||
print self.server.url
|
print(self.server.url)
|
||||||
self.server.start()
|
self.server.start()
|
||||||
|
|
||||||
def stop(self, force=False):
|
def stop(self, force=False):
|
||||||
|
|
|
@ -372,7 +372,7 @@ class SeleniumRefTestExecutor(RefTestExecutor):
|
||||||
"""return [window.outerWidth - window.innerWidth,
|
"""return [window.outerWidth - window.innerWidth,
|
||||||
window.outerHeight - window.innerHeight];"""
|
window.outerHeight - window.innerHeight];"""
|
||||||
)
|
)
|
||||||
self.protocol.webdriver.set_window_size(600 + width_offset, 600 + height_offset)
|
self.protocol.webdriver.set_window_rect(0, 0, 600 + width_offset, 600 + height_offset)
|
||||||
|
|
||||||
result = self.implementation.run_test(test)
|
result = self.implementation.run_test(test)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
@ -136,7 +137,7 @@ class ServoTestharnessExecutor(ProcessTestExecutor):
|
||||||
self.result_flag.set()
|
self.result_flag.set()
|
||||||
else:
|
else:
|
||||||
if self.interactive:
|
if self.interactive:
|
||||||
print line
|
print(line)
|
||||||
else:
|
else:
|
||||||
self.logger.process_output(self.proc.pid,
|
self.logger.process_output(self.proc.pid,
|
||||||
line,
|
line,
|
||||||
|
@ -267,7 +268,7 @@ class ServoRefTestExecutor(ProcessTestExecutor):
|
||||||
def on_output(self, line):
|
def on_output(self, line):
|
||||||
line = line.decode("utf8", "replace")
|
line = line.decode("utf8", "replace")
|
||||||
if self.interactive:
|
if self.interactive:
|
||||||
print line
|
print(line)
|
||||||
else:
|
else:
|
||||||
self.logger.process_output(self.proc.pid,
|
self.logger.process_output(self.proc.pid,
|
||||||
line,
|
line,
|
||||||
|
|
|
@ -405,6 +405,7 @@ class WebDriverRefTestExecutor(RefTestExecutor):
|
||||||
"""return [window.outerWidth - window.innerWidth,
|
"""return [window.outerWidth - window.innerWidth,
|
||||||
window.outerHeight - window.innerHeight];"""
|
window.outerHeight - window.innerHeight];"""
|
||||||
)
|
)
|
||||||
|
self.protocol.webdriver.window.position = (0, 0)
|
||||||
self.protocol.webdriver.window.size = (600 + width_offset, 600 + height_offset)
|
self.protocol.webdriver.window.size = (600 + width_offset, 600 + height_offset)
|
||||||
|
|
||||||
result = self.implementation.run_test(test)
|
result = self.implementation.run_test(test)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
var win = window.open("about:blank", "test", "width=600,height=600");
|
var win = window.open("about:blank", "test", "left=0,top=0,width=600,height=600");
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
import itertools
|
import itertools
|
||||||
import os
|
import os
|
||||||
import urlparse
|
import urlparse
|
||||||
|
@ -89,7 +90,7 @@ class ExpectedManifest(ManifestItem):
|
||||||
def append(self, child):
|
def append(self, child):
|
||||||
ManifestItem.append(self, child)
|
ManifestItem.append(self, child)
|
||||||
if child.id in self.child_map:
|
if child.id in self.child_map:
|
||||||
print "Warning: Duplicate heading %s" % child.id
|
print("Warning: Duplicate heading %s" % child.id)
|
||||||
self.child_map[child.id] = child
|
self.child_map[child.id] = child
|
||||||
|
|
||||||
def _remove_child(self, child):
|
def _remove_child(self, child):
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
import array
|
import array
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -49,9 +50,9 @@ def update_expected(test_paths, serve_root, log_file_names,
|
||||||
for test in updated_ini.iterchildren():
|
for test in updated_ini.iterchildren():
|
||||||
for subtest in test.iterchildren():
|
for subtest in test.iterchildren():
|
||||||
if subtest.new_disabled:
|
if subtest.new_disabled:
|
||||||
print "disabled: %s" % os.path.dirname(subtest.root.test_path) + "/" + subtest.name
|
print("disabled: %s" % os.path.dirname(subtest.root.test_path) + "/" + subtest.name)
|
||||||
if test.new_disabled:
|
if test.new_disabled:
|
||||||
print "disabled: %s" % test.root.test_path
|
print("disabled: %s" % test.root.test_path)
|
||||||
|
|
||||||
|
|
||||||
def do_delayed_imports(serve_root):
|
def do_delayed_imports(serve_root):
|
||||||
|
@ -359,7 +360,7 @@ class ExpectedUpdater(object):
|
||||||
try:
|
try:
|
||||||
test_data = self.id_test_map[test_id]
|
test_data = self.id_test_map[test_id]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print "Test not found %s, skipping" % test_id
|
print("Test not found %s, skipping" % test_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.ignore_existing:
|
if self.ignore_existing:
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from __future__ import print_function
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -29,7 +30,7 @@ def require_arg(kwargs, name, value_func=None):
|
||||||
value_func = lambda x: x is not None
|
value_func = lambda x: x is not None
|
||||||
|
|
||||||
if name not in kwargs or not value_func(kwargs[name]):
|
if name not in kwargs or not value_func(kwargs[name]):
|
||||||
print >> sys.stderr, "Missing required argument %s" % name
|
print("Missing required argument %s" % name, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -417,7 +418,7 @@ def check_paths(kwargs):
|
||||||
for test_paths in kwargs["test_paths"].itervalues():
|
for test_paths in kwargs["test_paths"].itervalues():
|
||||||
if not ("tests_path" in test_paths and
|
if not ("tests_path" in test_paths and
|
||||||
"metadata_path" in test_paths):
|
"metadata_path" in test_paths):
|
||||||
print "Fatal: must specify both a test path and metadata path"
|
print("Fatal: must specify both a test path and metadata path")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if "manifest_path" not in test_paths:
|
if "manifest_path" not in test_paths:
|
||||||
test_paths["manifest_path"] = os.path.join(test_paths["metadata_path"],
|
test_paths["manifest_path"] = os.path.join(test_paths["metadata_path"],
|
||||||
|
@ -431,11 +432,11 @@ def check_paths(kwargs):
|
||||||
path = os.path.dirname(path)
|
path = os.path.dirname(path)
|
||||||
|
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
print "Fatal: %s path %s does not exist" % (name, path)
|
print("Fatal: %s path %s does not exist" % (name, path))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not os.path.isdir(path):
|
if not os.path.isdir(path):
|
||||||
print "Fatal: %s path %s is not a directory" % (name, path)
|
print("Fatal: %s path %s is not a directory" % (name, path))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -488,7 +489,7 @@ def check_args(kwargs):
|
||||||
|
|
||||||
if kwargs["binary"] is not None:
|
if kwargs["binary"] is not None:
|
||||||
if not os.path.exists(kwargs["binary"]):
|
if not os.path.exists(kwargs["binary"]):
|
||||||
print >> sys.stderr, "Binary path %s does not exist" % kwargs["binary"]
|
print("Binary path %s does not exist" % kwargs["binary"], file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if kwargs["ssl_type"] is None:
|
if kwargs["ssl_type"] is None:
|
||||||
|
@ -507,14 +508,14 @@ def check_args(kwargs):
|
||||||
elif kwargs["ssl_type"] == "openssl":
|
elif kwargs["ssl_type"] == "openssl":
|
||||||
path = exe_path(kwargs["openssl_binary"])
|
path = exe_path(kwargs["openssl_binary"])
|
||||||
if path is None:
|
if path is None:
|
||||||
print >> sys.stderr, "openssl-binary argument missing or not a valid executable"
|
print("openssl-binary argument missing or not a valid executable", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
kwargs["openssl_binary"] = path
|
kwargs["openssl_binary"] = path
|
||||||
|
|
||||||
if kwargs["ssl_type"] != "none" and kwargs["product"] == "firefox" and kwargs["certutil_binary"]:
|
if kwargs["ssl_type"] != "none" and kwargs["product"] == "firefox" and kwargs["certutil_binary"]:
|
||||||
path = exe_path(kwargs["certutil_binary"])
|
path = exe_path(kwargs["certutil_binary"])
|
||||||
if path is None:
|
if path is None:
|
||||||
print >> sys.stderr, "certutil-binary argument missing or not a valid executable"
|
print("certutil-binary argument missing or not a valid executable", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
kwargs["certutil_binary"] = path
|
kwargs["certutil_binary"] = path
|
||||||
|
|
||||||
|
@ -524,7 +525,7 @@ def check_args(kwargs):
|
||||||
kwargs['extra_prefs'] = [kwargs['extra_prefs']]
|
kwargs['extra_prefs'] = [kwargs['extra_prefs']]
|
||||||
missing = any('=' not in prefarg for prefarg in kwargs['extra_prefs'])
|
missing = any('=' not in prefarg for prefarg in kwargs['extra_prefs'])
|
||||||
if missing:
|
if missing:
|
||||||
print >> sys.stderr, "Preferences via --setpref must be in key=value format"
|
print("Preferences via --setpref must be in key=value format", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
kwargs['extra_prefs'] = [tuple(prefarg.split('=', 1)) for prefarg in
|
kwargs['extra_prefs'] = [tuple(prefarg.split('=', 1)) for prefarg in
|
||||||
kwargs['extra_prefs']]
|
kwargs['extra_prefs']]
|
||||||
|
@ -551,7 +552,7 @@ def check_args_update(kwargs):
|
||||||
|
|
||||||
for item in kwargs["run_log"]:
|
for item in kwargs["run_log"]:
|
||||||
if os.path.isdir(item):
|
if os.path.isdir(item):
|
||||||
print >> sys.stderr, "Log file %s is a directory" % item
|
print("Log file %s is a directory" % item, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import print_function, unicode_literals
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
@ -91,7 +91,7 @@ def list_test_groups(test_paths, product, **kwargs):
|
||||||
run_info_extras=run_info_extras, **kwargs)
|
run_info_extras=run_info_extras, **kwargs)
|
||||||
|
|
||||||
for item in sorted(test_loader.groups(kwargs["test_types"])):
|
for item in sorted(test_loader.groups(kwargs["test_types"])):
|
||||||
print item
|
print(item)
|
||||||
|
|
||||||
|
|
||||||
def list_disabled(test_paths, product, **kwargs):
|
def list_disabled(test_paths, product, **kwargs):
|
||||||
|
@ -107,7 +107,7 @@ def list_disabled(test_paths, product, **kwargs):
|
||||||
for test_type, tests in test_loader.disabled_tests.iteritems():
|
for test_type, tests in test_loader.disabled_tests.iteritems():
|
||||||
for test in tests:
|
for test in tests:
|
||||||
rv.append({"test": test.id, "reason": test.disabled()})
|
rv.append({"test": test.id, "reason": test.disabled()})
|
||||||
print json.dumps(rv, indent=2)
|
print(json.dumps(rv, indent=2))
|
||||||
|
|
||||||
|
|
||||||
def list_tests(test_paths, product, **kwargs):
|
def list_tests(test_paths, product, **kwargs):
|
||||||
|
@ -119,7 +119,7 @@ def list_tests(test_paths, product, **kwargs):
|
||||||
run_info_extras=run_info_extras, **kwargs)
|
run_info_extras=run_info_extras, **kwargs)
|
||||||
|
|
||||||
for test in test_loader.test_ids:
|
for test in test_loader.test_ids:
|
||||||
print test
|
print(test)
|
||||||
|
|
||||||
|
|
||||||
def get_pause_after_test(test_loader, **kwargs):
|
def get_pause_after_test(test_loader, **kwargs):
|
||||||
|
@ -361,7 +361,7 @@ def main():
|
||||||
if kwargs["pdb"]:
|
if kwargs["pdb"]:
|
||||||
import pdb
|
import pdb
|
||||||
import traceback
|
import traceback
|
||||||
print traceback.format_exc()
|
print(traceback.format_exc())
|
||||||
pdb.post_mortem()
|
pdb.post_mortem()
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<script src=/resources/testharness.js></script>
|
||||||
|
<script src=/resources/testharnessreport.js></script>
|
||||||
|
<script src="resources/webxr_util.js"></script>
|
||||||
|
<canvas></canvas>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
let immersiveTestName =
|
||||||
|
"Identity reference space provides correct poses for immersive sessions";
|
||||||
|
let inlineTestName =
|
||||||
|
"Identity reference space provides correct poses for inline sessions";
|
||||||
|
|
||||||
|
let fakeDeviceInitParams = { supportsImmersive: true };
|
||||||
|
|
||||||
|
let immersiveSessionOptions = { mode: 'immersive-vr' };
|
||||||
|
let inlineSessionOptions = { outputContext: getOutputContext() };
|
||||||
|
|
||||||
|
const identityMatrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
||||||
|
|
||||||
|
// Valid matrices for when we don't care about specific values
|
||||||
|
const validPoseMatrix = [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1];
|
||||||
|
const validProjectionMatrix = [1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0];
|
||||||
|
const validViewMatrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 3, 2, 1];
|
||||||
|
|
||||||
|
let testFunction = function(session, fakeDeviceController, t) {
|
||||||
|
return session.requestReferenceSpace({ type: 'identity' })
|
||||||
|
.then((referenceSpace) => new Promise((resolve, reject) => {
|
||||||
|
let counter = 0;
|
||||||
|
function onFrame(time, xrFrame) {
|
||||||
|
session.requestAnimationFrame(onFrame);
|
||||||
|
if (counter == 0) {
|
||||||
|
t.step( () => {
|
||||||
|
// Expect to always get a pose, even if none has been supplied.
|
||||||
|
let pose = xrFrame.getViewerPose(referenceSpace);
|
||||||
|
assert_not_equals(pose, null);
|
||||||
|
|
||||||
|
let poseMatrix = pose.poseModelMatrix;
|
||||||
|
assert_not_equals(poseMatrix, null);
|
||||||
|
|
||||||
|
for(let i = 0; i < poseMatrix.length; i++) {
|
||||||
|
assert_equals(poseMatrix[i], identityMatrix[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fakeDeviceController.setXRPresentationFrameData(
|
||||||
|
validPoseMatrix, [{
|
||||||
|
eye:"left",
|
||||||
|
projectionMatrix: validProjectionMatrix,
|
||||||
|
viewMatrix: validViewMatrix
|
||||||
|
}, {
|
||||||
|
eye:"right",
|
||||||
|
projectionMatrix: validProjectionMatrix,
|
||||||
|
viewMatrix: validViewMatrix
|
||||||
|
}]);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
t.step( () => {
|
||||||
|
// Assert that the identity matrix is always given as the pose
|
||||||
|
// even when a valid pose is set by the device.
|
||||||
|
let pose = xrFrame.getViewerPose(referenceSpace);
|
||||||
|
assert_not_equals(pose, null);
|
||||||
|
|
||||||
|
let poseMatrix = pose.poseModelMatrix;
|
||||||
|
assert_not_equals(poseMatrix, null);
|
||||||
|
|
||||||
|
for(let i = 0; i < poseMatrix.length; i++) {
|
||||||
|
assert_equals(poseMatrix[i], identityMatrix[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Finished.
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
session.requestAnimationFrame(onFrame);
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
xr_session_promise_test(inlineTestName, testFunction,
|
||||||
|
fakeDeviceInitParams, inlineSessionOptions);
|
||||||
|
xr_session_promise_test(immersiveTestName, testFunction,
|
||||||
|
fakeDeviceInitParams, immersiveSessionOptions);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -21,6 +21,14 @@
|
||||||
.then(() => promise_rejects(t, "NotSupportedError", session.requestReferenceSpace({ type: "stationary" })))
|
.then(() => promise_rejects(t, "NotSupportedError", session.requestReferenceSpace({ type: "stationary" })))
|
||||||
.then(() => promise_rejects(t, new TypeError(), session.requestReferenceSpace({ type: "stationary", subtype: "bar" })))
|
.then(() => promise_rejects(t, new TypeError(), session.requestReferenceSpace({ type: "stationary", subtype: "bar" })))
|
||||||
.then(() => Promise.all([
|
.then(() => Promise.all([
|
||||||
|
session.requestReferenceSpace({ type: "identity" }).then( (referenceSpace) => {
|
||||||
|
t.step(() => {
|
||||||
|
assert_true(referenceSpace instanceof XRSpace,
|
||||||
|
"identity reference space is not correct type.");
|
||||||
|
assert_true(referenceSpace instanceof XRReferenceSpace,
|
||||||
|
"identity reference space is not correct type.");
|
||||||
|
});
|
||||||
|
}),
|
||||||
session.requestReferenceSpace({ type: "stationary", subtype: "position-disabled" }).then( (referenceSpace) => {
|
session.requestReferenceSpace({ type: "stationary", subtype: "position-disabled" }).then( (referenceSpace) => {
|
||||||
t.step(() => {
|
t.step(() => {
|
||||||
assert_true(referenceSpace instanceof XRSpace,
|
assert_true(referenceSpace instanceof XRSpace,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue