mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #27959 - servo-wpt-sync:wpt_update_18-12-2020, r=servo-wpt-sync
Sync WPT with upstream (18-12-2020) Automated downstream sync of changes from upstream as of 18-12-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
ca4afea1c0
105 changed files with 1034 additions and 323 deletions
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[break-boundary-2-chars-001.html]
|
||||
expected: FAIL
|
|
@ -2,6 +2,3 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -17,3 +17,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -309,30 +309,24 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,5 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[opener of discarded nested browsing context]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[activation-behavior.window.html]
|
||||
[<a> that is not connected should be followed]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[type.html]
|
||||
[type="MODULE"]
|
||||
expected: FAIL
|
||||
|
||||
[type="Module"]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[ignore-opens-during-unload.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -3,6 +3,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -419,3 +419,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.9435393349935682e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.6903211120476289e-27\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[import-in-moduleworker.html]
|
||||
expected: ERROR
|
||||
[Base URL in module dedicated workers: import]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1074,6 +1074,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"mmultiscripts-with-two-prescripts.html": [
|
||||
"54f938460636bb351d9da20611fd872d6b888ca6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"multicol-on-token-elements.html": [
|
||||
"9fc00eb6911b625a7443a3e1ec65ada7daf25105",
|
||||
[
|
||||
|
@ -14107,20 +14114,6 @@
|
|||
]
|
||||
},
|
||||
"selectors": {
|
||||
"focus-visible-006-manual.html": [
|
||||
"974abc0024e3153008e944ff706156efcb9948e2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"focus-visible-008-manual.html": [
|
||||
"53306a90bbcae67ca65feefce3e4d3758d1a4ecd",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"hover-001-manual.html": [
|
||||
"87d7af91b6994371b72ff33923ea1cacc65c8b5b",
|
||||
[
|
||||
|
@ -129074,6 +129067,19 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"widows-orphans-018.html": [
|
||||
"80699c698d385b244cb58a79c108c6f28e733579",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-break/reference/widows-orphans-009-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-cascade": {
|
||||
|
@ -165472,6 +165478,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"multicol-fill-balance-006.html": [
|
||||
"3dc2022a3dfcf80ff133c212237503a4b64a9fe1",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"multicol-fill-balance-nested-000.html": [
|
||||
"5e466df8077545b4d6474389d296bc26c5b28b86",
|
||||
[
|
||||
|
@ -195399,6 +195418,32 @@
|
|||
]
|
||||
},
|
||||
"word-break": {
|
||||
"break-boundary-2-chars-001.html": [
|
||||
"e207f474c75ad1f3e0dbb726826468763af2263d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-text/word-break/reference/break-boundary-2-chars-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"break-boundary-2-chars-002.html": [
|
||||
"67c4cb7310599337e6f6d801b029777934a1680a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-text/word-break/reference/break-boundary-2-chars-002-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"word-break-break-all-000.html": [
|
||||
"af21bedf4bdc3219b3c3b1225f76b55e127d3f13",
|
||||
[
|
||||
|
@ -261904,7 +261949,7 @@
|
|||
[]
|
||||
],
|
||||
"font.py": [
|
||||
"706ee022ef8ce7b4c08a0fed91b9415a8e5bd0f3",
|
||||
"6e33dbbc35a6334586a83fe0762f6b6cb8112e21",
|
||||
[]
|
||||
],
|
||||
"image.py": [
|
||||
|
@ -322932,6 +322977,14 @@
|
|||
},
|
||||
"word-break": {
|
||||
"reference": {
|
||||
"break-boundary-2-chars-001-ref.html": [
|
||||
"e0702afce52b2cc3eadbdc200e91180239e8a6b1",
|
||||
[]
|
||||
],
|
||||
"break-boundary-2-chars-002-ref.html": [
|
||||
"cd3ed338f1c345a5d2903c2a9b01d280582cfd16",
|
||||
[]
|
||||
],
|
||||
"word-break-break-all-010-ref.html": [
|
||||
"0e0300a72dc920a5ffb54cda6fbe84a2f517d010",
|
||||
[]
|
||||
|
@ -348007,7 +348060,7 @@
|
|||
[]
|
||||
],
|
||||
"404-response-with-actual-image-data.py": [
|
||||
"3e2d9917d90239148371a6c43b5f5d71b193355b",
|
||||
"e98cf03cf530d1187cf41e71a940c93a42b3a248",
|
||||
[]
|
||||
],
|
||||
"available-images-ref.html": [
|
||||
|
@ -360272,7 +360325,7 @@
|
|||
[]
|
||||
],
|
||||
"fetch-access-control.py": [
|
||||
"a6cc9b12ad1fab3babd088d1edde5bf27fa51dfb",
|
||||
"8822f32b270d4cb3d11f83576ee0a72f25e97b4d",
|
||||
[]
|
||||
],
|
||||
"fetch-canvas-tainting-double-write-worker.js": [
|
||||
|
@ -370639,7 +370692,7 @@
|
|||
[]
|
||||
],
|
||||
"requirements.txt": [
|
||||
"d83f5eb89fab1eb9734a90d262e21c33fa162a1f",
|
||||
"a387544f3475cc88f93ca13ba13422cf1f208198",
|
||||
[]
|
||||
],
|
||||
"revlist.py": [
|
||||
|
@ -370745,7 +370798,7 @@
|
|||
]
|
||||
},
|
||||
"requirements.txt": [
|
||||
"a266c322e2cf453221e4a11e4302879e413baa94",
|
||||
"5cfa9f3faf9c0088348c78b4030df450989066b7",
|
||||
[]
|
||||
],
|
||||
"requirements_android_webview.txt": [
|
||||
|
@ -370793,7 +370846,7 @@
|
|||
[]
|
||||
],
|
||||
"requirements_sauce.txt": [
|
||||
"47e268df17307a701bd966a9dbe89c3d542d8d3b",
|
||||
"eae7ef3f004852071565e769edd87809194829b5",
|
||||
[]
|
||||
],
|
||||
"requirements_servo.txt": [
|
||||
|
@ -370957,11 +371010,11 @@
|
|||
[]
|
||||
],
|
||||
"android_weblayer.py": [
|
||||
"6110450b7282c6cfa4afaca1ec2b2ef580f7a714",
|
||||
"f68312f231bba4f08aba7defbc272a86e98af244",
|
||||
[]
|
||||
],
|
||||
"android_webview.py": [
|
||||
"d0773873508fe7f327afe751d32eaddbecea9a3f",
|
||||
"3cde248b4465cd10a86a813de8551808c42dbf18",
|
||||
[]
|
||||
],
|
||||
"base.py": [
|
||||
|
@ -370969,15 +371022,15 @@
|
|||
[]
|
||||
],
|
||||
"chrome.py": [
|
||||
"fd251a431c306f3bb3b12b848f548d8eff07a466",
|
||||
"d3e27a9c5f65f7aa754263cb57846285d2857540",
|
||||
[]
|
||||
],
|
||||
"chrome_android.py": [
|
||||
"485b96f31e7deafdddf82fd375aea7d7497e9fa7",
|
||||
"d7e3e21012169fdf12e47d3bc87552f46c779cf9",
|
||||
[]
|
||||
],
|
||||
"chrome_ios.py": [
|
||||
"6db0188e55ebff8d3a40f9a15dc714419edacbeb",
|
||||
"ecdbc3a17623907dc9bd99505d1e5ee0bc747c7b",
|
||||
[]
|
||||
],
|
||||
"chrome_spki_certs.py": [
|
||||
|
@ -370985,7 +371038,7 @@
|
|||
[]
|
||||
],
|
||||
"edge.py": [
|
||||
"bdb37b3f84c2cdc4010a7a289a53564822a3a34c",
|
||||
"b908684bbb3e7eae9982173ed26a9a9e39b6b437",
|
||||
[]
|
||||
],
|
||||
"edge_webdriver.py": [
|
||||
|
@ -370993,35 +371046,35 @@
|
|||
[]
|
||||
],
|
||||
"edgechromium.py": [
|
||||
"0bcb18cdc0cca64376906e9156b07c4a9cc7dcdb",
|
||||
"67105e425c794c32cd99f8216418d47e640dc7ba",
|
||||
[]
|
||||
],
|
||||
"epiphany.py": [
|
||||
"f6c4c602a38c043637cf9dbc8bbb5350ec94527e",
|
||||
"a3384436a1d643c6576ebb731db5c458f8ad2687",
|
||||
[]
|
||||
],
|
||||
"firefox.py": [
|
||||
"e95bc93deca0ef0f825e9d7997450f16a7353819",
|
||||
"9104fedb5f9f45b6c8e9640159315a62e93a37c7",
|
||||
[]
|
||||
],
|
||||
"firefox_android.py": [
|
||||
"b219079de3df793ba5c74de8706d4c9ad0526194",
|
||||
"ca6ea96013b67ed548f5487520253ca61e0ae32c",
|
||||
[]
|
||||
],
|
||||
"ie.py": [
|
||||
"78c22b909acf410038ff06769366662ab0c589a0",
|
||||
"3a86c1b6ccb5aabfe210158f6be613f690543375",
|
||||
[]
|
||||
],
|
||||
"opera.py": [
|
||||
"805fedee636cd22155ed143cf1148f3c2f5d98e7",
|
||||
"a34f41955383c08e98c4d38d7804231c17e9297a",
|
||||
[]
|
||||
],
|
||||
"safari.py": [
|
||||
"cb2b175d4dfbc3166e4ad5a6afe174ffdbc6ff8a",
|
||||
"312d4db9c6382f7aff5cd75772f0edf73e538565",
|
||||
[]
|
||||
],
|
||||
"sauce.py": [
|
||||
"c57ac942ed4e7624a0a7d115df3a210aec5d9ee1",
|
||||
"3497c5c277288e51f6677000e57057ebcd99a210",
|
||||
[]
|
||||
],
|
||||
"sauce_setup": {
|
||||
|
@ -371035,19 +371088,19 @@
|
|||
]
|
||||
},
|
||||
"servo.py": [
|
||||
"b9476540ac7c53162e70669c4b7ba4883fd75f75",
|
||||
"a65ed5ead4e55c45cfd7aa7921f0717216ce6a45",
|
||||
[]
|
||||
],
|
||||
"servodriver.py": [
|
||||
"43794e41706d6ccc1f686655c8edeca95e3c4c62",
|
||||
"ed85cbf3b9bd04ea192641b480ace44dc6d433bf",
|
||||
[]
|
||||
],
|
||||
"webkit.py": [
|
||||
"da93cf1643995d95b8d6de1f70c7731b5559768b",
|
||||
"590e472aca961b865bf0dbc836c942f62b506ae8",
|
||||
[]
|
||||
],
|
||||
"webkitgtk_minibrowser.py": [
|
||||
"d8b9744bd743e39ce19f008e7f40cbc80e80107c",
|
||||
"5b7a360fb608352e26971570af06c5bb8466255b",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -371069,7 +371122,7 @@
|
|||
[]
|
||||
],
|
||||
"base.py": [
|
||||
"55518685494e2464354250ae6e72babdef46dcf7",
|
||||
"51d752cdebc61976066a15c5dd9e778f9378ff00",
|
||||
[]
|
||||
],
|
||||
"executorchrome.py": [
|
||||
|
@ -371134,7 +371187,7 @@
|
|||
[]
|
||||
],
|
||||
"runner.py": [
|
||||
"3d32917659b3900f9e464670d2cdc39b8ff180a0",
|
||||
"113eff99fee8d4a126d9c741b36cbfb8e8a1eebd",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -371286,7 +371339,7 @@
|
|||
[]
|
||||
],
|
||||
"test_webkitgtk.py": [
|
||||
"6150d50acf93eac7d6961d82531c469d7e9967b7",
|
||||
"c073d03e70ecc5e2b783cec4a79ac475609467db",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -371436,7 +371489,7 @@
|
|||
}
|
||||
},
|
||||
"wptrunner.py": [
|
||||
"e1d9ef8b1a91dd2d44458c8c9d027537991f4cc9",
|
||||
"b02805ff7e3df6645722e63fbc2d9715959c1ce6",
|
||||
[]
|
||||
],
|
||||
"wpttest.py": [
|
||||
|
@ -372369,7 +372422,7 @@
|
|||
"urlpattern": {
|
||||
"resources": {
|
||||
"urlpatterntestdata.json": [
|
||||
"5a1a3ec01eb2d504c6dd76010c17a8a680e0dd67",
|
||||
"fe38505ddf0f985772d356fd05a9d5652982c7cc",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -373858,7 +373911,7 @@
|
|||
[]
|
||||
],
|
||||
"asserts.py": [
|
||||
"3c3d677c90ecfc90f864042ef0628fb99a57131c",
|
||||
"7afa22fd3fb81a3f915fe5edb4aa2a57a8b2e108",
|
||||
[]
|
||||
],
|
||||
"authentication.py": [
|
||||
|
@ -373904,7 +373957,7 @@
|
|||
[]
|
||||
],
|
||||
"image.py": [
|
||||
"6149ccccbe3252e5c1c2bc37ba3dd3103ffbf9b6",
|
||||
"705f2668ea1fd2dff062dfdf3e3f6ae138f1581a",
|
||||
[]
|
||||
],
|
||||
"inline.py": [
|
||||
|
@ -413627,6 +413680,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"overflow-clip-margin-intersection-observer.html": [
|
||||
"dcc1e6e7edd7d14a96ea4037d459d2f16a1f706b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"overflow-clip-scroll-size.html": [
|
||||
"1f2c2236a412251a9c02b84d3fade4c2df8d0527",
|
||||
[
|
||||
|
@ -428459,6 +428519,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"focus-visible-006.html": [
|
||||
"4b034b2e27962810bd9357ff88e5fe4587e56d25",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"focus-visible-007.html": [
|
||||
"95a27006e62076909f63f9946e1f2d7f8331732a",
|
||||
[
|
||||
|
@ -428468,6 +428537,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"focus-visible-008.html": [
|
||||
"75f676f53f3319cb672195343c77cc7ebd94eee4",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"focus-visible-009.html": [
|
||||
"4dae6407adac3971db6064822643332cf7f1722d",
|
||||
[
|
||||
|
@ -430693,6 +430771,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"Event-stopPropagation-cancel-bubbling.html": [
|
||||
"5c2c49f33826a94418a2bcb65ca781e246adbd4b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"Event-subclasses-constructors.html": [
|
||||
"08a5ded011635c66151d22a09330f9341eb48c91",
|
||||
[
|
||||
|
@ -451604,6 +451689,57 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"redirect-referrer-override.any.js": [
|
||||
"56e55d79e141fd90124c2d5ea4cef419ee8a9cbd",
|
||||
[
|
||||
"fetch/api/redirect/redirect-referrer-override.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/utils.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"../resources/utils.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/get-host-info.sub.js"
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"fetch/api/redirect/redirect-referrer-override.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/utils.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"../resources/utils.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/get-host-info.sub.js"
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"redirect-referrer.any.js": [
|
||||
"99fda42e69b29ff8bd12b7d987dbe00306059c5c",
|
||||
[
|
||||
|
@ -488355,6 +488491,24 @@
|
|||
]
|
||||
},
|
||||
"the-input-element": {
|
||||
"anchor-active-contenteditable.html": [
|
||||
"88a9a35cc57db82323725559d8b0e2a202b3d7b7",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"anchor-contenteditable-navigate.html": [
|
||||
"e958f10df8d2624b48d1d48f4bd361abe6710edd",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"button.html": [
|
||||
"3c826a9754f6fddcd0ace10525a645bbe7f26805",
|
||||
[
|
||||
|
@ -491922,6 +492076,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"type.html": [
|
||||
"5817ae4d435ed473b2f9cbcb798a48bc8318e12e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"moving-between-documents": {
|
||||
|
@ -589054,14 +589215,14 @@
|
|||
},
|
||||
"print": {
|
||||
"printcmd.py": [
|
||||
"e043056dd12aa5a6863041e0c4c9b8f5ae0cac1c",
|
||||
"ff3de4e0af9ccc83e5cafccccef352258b7dc803",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"user_prompts.py": [
|
||||
"2022796774bf76b93b5f0f844991c557c79df383",
|
||||
"dc8a32e22db25a3ed4b30a54d864f94a057adf1f",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[break-boundary-2-chars-001.html]
|
||||
expected: FAIL
|
|
@ -2,6 +2,3 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -21,3 +21,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -309,30 +309,24 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,5 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[activation-behavior.window.html]
|
||||
[<a> that is not connected should be followed]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[type.html]
|
||||
[type="MODULE"]
|
||||
expected: FAIL
|
||||
|
||||
[type="Module"]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[ignore-opens-during-unload.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[ignore-opens-during-unload]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -4,6 +4,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -647,3 +647,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.9435393349935682e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.6903211120476289e-27\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[import-in-moduleworker.html]
|
||||
expected: ERROR
|
||||
[Base URL in module dedicated workers: import]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,58 +1,66 @@
|
|||
import os, sys, base64
|
||||
import six
|
||||
|
||||
from wptserve.utils import isomorphic_decode
|
||||
import importlib
|
||||
subresource = importlib.import_module("common.security-features.subresource.subresource")
|
||||
|
||||
|
||||
def decodebytes(s):
|
||||
if six.PY3:
|
||||
return base64.decodebytes(six.ensure_binary(s))
|
||||
return base64.decodestring(s)
|
||||
|
||||
def generate_payload(request, server_data):
|
||||
data = (u'{"headers": %(headers)s}') % server_data
|
||||
if b"id" in request.GET:
|
||||
request.server.stash.put(request.GET[b"id"], data)
|
||||
# Simple base64 encoded .tff font
|
||||
return base64.decodestring(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
|
||||
b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
|
||||
b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
|
||||
b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
|
||||
b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
|
||||
b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
|
||||
b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
|
||||
b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
|
||||
b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
|
||||
b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
|
||||
b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
|
||||
b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
|
||||
b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
|
||||
b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
|
||||
b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
|
||||
b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
|
||||
b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
|
||||
b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
|
||||
b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
|
||||
b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
|
||||
b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
|
||||
b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
|
||||
b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
|
||||
b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
|
||||
b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
|
||||
b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
|
||||
b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
|
||||
b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
|
||||
b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
|
||||
b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
|
||||
b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
|
||||
b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
|
||||
b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
|
||||
b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
|
||||
b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
|
||||
b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
|
||||
b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
|
||||
b"Lm0AAAAAxTgubQ==")
|
||||
return decodebytes(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
|
||||
b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
|
||||
b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
|
||||
b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
|
||||
b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
|
||||
b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
|
||||
b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
|
||||
b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
|
||||
b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
|
||||
b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
|
||||
b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
|
||||
b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
|
||||
b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
|
||||
b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
|
||||
b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
|
||||
b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
|
||||
b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
|
||||
b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
|
||||
b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
|
||||
b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
|
||||
b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
|
||||
b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
|
||||
b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
|
||||
b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
|
||||
b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
|
||||
b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
|
||||
b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
|
||||
b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
|
||||
b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
|
||||
b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
|
||||
b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
|
||||
b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
|
||||
b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
|
||||
b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
|
||||
b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
|
||||
b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
|
||||
b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
|
||||
b"Lm0AAAAAxTgubQ==")
|
||||
|
||||
def generate_report_headers_payload(request, server_data):
|
||||
stashed_data = request.server.stash.take(request.GET[b"id"])
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
|
||||
<link rel="match" href="reference/widows-orphans-009-ref.html">
|
||||
|
||||
<!--
|
||||
Date created: December 16th 2020
|
||||
Last modified: December 16th 2020
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
Bug 137367: Implement orphans and widows
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=137367
|
||||
|
||||
-->
|
||||
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In this test, the 3rd column box is going to get only 1 line box which is insufficient to honor 'widows: 3'. If a class B break point would occur between the '6' and the '7' so that 3 line boxes would be at the top of the 3rd column box, then this would leave only 2 line boxes in the 2nd column box and this would violate the 'orphans: 3' constraint. For that reason, a class B break must not happen in the 2nd column between the '6' and the '7'. On the other hand, a class B break can occur between the '7' and the '8' in the 2nd column box and doing so does not violate the 'orphans: 3' constraint.">
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
border: orange solid 4px;
|
||||
font-size: 20px;
|
||||
line-height: 1.3; /* computes to 26px */
|
||||
height: 104px; /* Therefore, exactly 4 line boxes */
|
||||
margin-bottom: 1em;
|
||||
padding: 0.5em; /* computes to 10px */
|
||||
width: 460px;
|
||||
|
||||
columns: 4 auto;
|
||||
|
||||
column-fill: auto;
|
||||
|
||||
column-gap: 1em; /* computes to 20px */
|
||||
|
||||
column-rule: blue solid 4px;
|
||||
}
|
||||
|
||||
div#test
|
||||
{
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
div#reference
|
||||
{
|
||||
orphans: 1;
|
||||
widows: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
|
||||
|
||||
<div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
|
||||
|
||||
<div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
|
||||
|
||||
<!-- Same as div#test except 1 extra br here ^ -->
|
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div style="float:left; width:50px; height:100px; background:green;"></div>
|
||||
<div style="float:left; width:50px; background:green;">
|
||||
<div style="columns:2; width:0;">
|
||||
<div style="height:200px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,55 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Overflow: intersection observer with overflow-clip-margin</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow-clip-margin">
|
||||
<link rel="author" title="Scott Violet" href="mailto:sky@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
#clipped_container {
|
||||
overflow: clip;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: solid;
|
||||
overflow-clip-margin: 50px;
|
||||
}
|
||||
#big_green_div {
|
||||
position: relative;
|
||||
width: 1000px;
|
||||
height: 1000px;
|
||||
background: green;
|
||||
left: -200px;
|
||||
top: -200px;
|
||||
}
|
||||
/* These values ensure the element is vertically offscreen. */
|
||||
.spacer { width: 150px; height: calc(100vh + 10px); }
|
||||
</style>
|
||||
<div class="spacer"></div>
|
||||
<div id="clipped_container">
|
||||
<div id="big_green_div"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let t = async_test("ParentWithOverflowClipMargin");
|
||||
let options = {
|
||||
threshold: 0,
|
||||
rootMargin: '0px'
|
||||
}
|
||||
// The 'big_green_div' is initially on screen due to
|
||||
// overflow-clip-margin of the parent. Once the observer is notified, the
|
||||
// overflow-clip-margin is reduced so that 'big_green_div' is no longer
|
||||
// on screen, and the observer should again be notified.
|
||||
let gotIntersects = false;
|
||||
let intersectionObserver = new IntersectionObserver((entries, observer) => {
|
||||
t.step(function() { assert_equals(1, entries.length); });
|
||||
let entry = entries[0];
|
||||
if (!gotIntersects) {
|
||||
t.step(function() { assert_true(entry.isIntersecting); });
|
||||
gotIntersects = true;
|
||||
document.getElementById('clipped_container').style.overflowClipMargin = "0px";
|
||||
} else {
|
||||
t.step(function() { assert_false(entry.isIntersecting); });
|
||||
t.done();
|
||||
}}, options);
|
||||
intersectionObserver.observe(document.getElementById('big_green_div'));
|
||||
</script>
|
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Text Test: soft wrap opportunity at boundary between two characters</title>
|
||||
|
||||
<!--
|
||||
|
||||
CSS3 Text, §5.1 Line breaking details, 7th bullet, 2nd sentence
|
||||
https://www.w3.org/TR/css-text-3/#line-break-details
|
||||
|
||||
"
|
||||
For soft wrap opportunities defined by the boundary between
|
||||
two characters, the white-space property on the nearest
|
||||
common ancestor of the two characters controls breaking
|
||||
"
|
||||
|
||||
-->
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-text-3/#word-break-property">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-text-3/#line-break-details">
|
||||
<link rel="match" href="reference/break-boundary-2-chars-001-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
<meta content="This test checks that the word-break property does not apply to a run of text that is styled with 'white-space: pre' because the word-break property has no rendering effect in cases where lines of text are not allowed to break. Between the 'c' and 'x' and between the 'z' and 'd', there must be a line break because the 'white-space' declaration in effect in the nearest common ancestor of each of these pairs of two characters allows text wrapping." name="assert">
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
display: inline-block;
|
||||
font-size: 32px;
|
||||
margin-right: 5ch;
|
||||
width: 0;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
span
|
||||
{
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div#first-sub-test
|
||||
{
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
div#second-sub-test
|
||||
{
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
div#third-sub-test
|
||||
{
|
||||
white-space: break-spaces;
|
||||
}
|
||||
|
||||
div#fourth-sub-test
|
||||
{
|
||||
white-space: pre-line;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="first-sub-test">abc<span>xyz</span>def</div><div id="second-sub-test">abc<span>xyz</span>def</div><div id="third-sub-test">abc<span>xyz</span>def</div><div id="fourth-sub-test">abc<span>xyz</span>def</div>
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Text Test: soft wrap opportunity at boundary between two characters</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-text-3/#word-break-property">
|
||||
<link rel="match" href="reference/break-boundary-2-chars-002-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
<meta content="The word-break property can only apply when the 'white-space' value allow text wrapping, when line breaking opportunities are preserved. Therefore, 'word-break: break-all' must not cause any text wrapping in both cases of this test. There must be no wrapping between the 'c' and the 'x' and there must be no wrapping between the 'z' and the 'd'." name="assert">
|
||||
|
||||
<!--
|
||||
|
||||
white-space values that DISallow text wrapping:
|
||||
{ pre , nowrap }
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
display: inline-block;
|
||||
font-size: 32px;
|
||||
margin-right: 10ch;
|
||||
width: 0;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
span
|
||||
{
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
div#first-sub-test
|
||||
{
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div#second-sub-test
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="first-sub-test">abc<span>xyz</span>def</div>
|
||||
|
||||
<div id="second-sub-test">abc<span>xyz</span>def</div>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
display: inline-block;
|
||||
font-size: 32px;
|
||||
margin-right: 5ch;
|
||||
white-space: pre;
|
||||
width: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
display: inline-block;
|
||||
font-size: 32px;
|
||||
margin-right: 10ch;
|
||||
white-space: normal;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div>abcxyzdef</div>
|
||||
|
||||
<div>abcxyzdef</div>
|
|
@ -7,6 +7,9 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<style>
|
||||
span[contenteditable] {
|
||||
border: 1px solid black;
|
||||
|
@ -42,6 +45,8 @@
|
|||
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
|
||||
t.done();
|
||||
}));
|
||||
|
||||
test_driver.click(el);
|
||||
}, "Focus should always match :focus-visible on content editable divs");
|
||||
</script>
|
||||
</body>
|
|
@ -7,6 +7,9 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<style>
|
||||
:focus-visible {
|
||||
outline: darkgreen auto 5px;
|
||||
|
@ -44,6 +47,12 @@
|
|||
el.focus();
|
||||
});
|
||||
}
|
||||
|
||||
const tab_key = '\ue004';
|
||||
const enter_key = '\uE007';
|
||||
test_driver.send_keys(el, tab_key).then(() => {
|
||||
test_driver.send_keys(el, enter_key);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
test(t => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
element.addEventListener('click', () => {
|
||||
event.stopPropagation();
|
||||
}, { capture: true });
|
||||
|
||||
element.addEventListener('click',
|
||||
t.unreached_func('stopPropagation in the capture handler should have canceled this bubble handler.'));
|
||||
|
||||
element.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,104 @@
|
|||
// META: timeout=long
|
||||
// META: script=/common/utils.js
|
||||
// META: script=../resources/utils.js
|
||||
// META: script=/common/get-host-info.sub.js
|
||||
|
||||
function getExpectation(expectations, init, initScenario, redirectPolicy, redirectScenario) {
|
||||
let policies = [
|
||||
expectations[initPolicy][initScenario],
|
||||
expectations[redirectPolicy][redirectScenario]
|
||||
];
|
||||
|
||||
if (policies.includes("omitted")) {
|
||||
return null;
|
||||
} else if (policies.includes("origin")) {
|
||||
return referrerOrigin;
|
||||
} else {
|
||||
// "stripped-referrer"
|
||||
return referrerUrl;
|
||||
}
|
||||
}
|
||||
|
||||
function testReferrerAfterRedirection(desc, redirectUrl, redirectLocation, referrerPolicy, redirectReferrerPolicy, expectedReferrer) {
|
||||
var url = redirectUrl;
|
||||
var urlParameters = "?location=" + encodeURIComponent(redirectLocation);
|
||||
var description = desc + ", " + referrerPolicy + " init, " + redirectReferrerPolicy + " redirect header ";
|
||||
|
||||
if (redirectReferrerPolicy)
|
||||
urlParameters += "&redirect_referrerpolicy=" + redirectReferrerPolicy;
|
||||
|
||||
var requestInit = {"redirect": "follow", "referrerPolicy": referrerPolicy};
|
||||
promise_test(function(test) {
|
||||
return fetch(url + urlParameters, requestInit).then(function(response) {
|
||||
assert_equals(response.status, 200, "Inspect header response's status is 200");
|
||||
assert_equals(response.headers.get("x-request-referer"), expectedReferrer ? expectedReferrer : null, "Check referrer header");
|
||||
});
|
||||
}, description);
|
||||
}
|
||||
|
||||
var referrerOrigin = get_host_info().HTTP_ORIGIN + "/";
|
||||
var referrerUrl = location.href;
|
||||
|
||||
var redirectUrl = RESOURCES_DIR + "redirect.py";
|
||||
var locationUrl = get_host_info().HTTP_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=referer";
|
||||
var crossLocationUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer";
|
||||
|
||||
var expectations = {
|
||||
"no-referrer": {
|
||||
"same-origin": "omitted",
|
||||
"cross-origin": "omitted"
|
||||
},
|
||||
"no-referrer-when-downgrade": {
|
||||
"same-origin": "stripped-referrer",
|
||||
"cross-origin": "stripped-referrer"
|
||||
},
|
||||
"origin": {
|
||||
"same-origin": "origin",
|
||||
"cross-origin": "origin"
|
||||
},
|
||||
"origin-when-cross-origin": {
|
||||
"same-origin": "stripped-referrer",
|
||||
"cross-origin": "origin",
|
||||
},
|
||||
"same-origin": {
|
||||
"same-origin": "stripped-referrer",
|
||||
"cross-origin": "omitted"
|
||||
},
|
||||
"strict-origin": {
|
||||
"same-origin": "origin",
|
||||
"cross-origin": "origin"
|
||||
},
|
||||
"strict-origin-when-cross-origin": {
|
||||
"same-origin": "stripped-referrer",
|
||||
"cross-origin": "origin"
|
||||
},
|
||||
"unsafe-url": {
|
||||
"same-origin": "stripped-referrer",
|
||||
"cross-origin": "stripped-referrer"
|
||||
}
|
||||
};
|
||||
|
||||
for (var initPolicy in expectations) {
|
||||
for (var redirectPolicy in expectations) {
|
||||
|
||||
// Redirect to same-origin URL
|
||||
testReferrerAfterRedirection(
|
||||
"Same origin redirection",
|
||||
redirectUrl,
|
||||
locationUrl,
|
||||
initPolicy,
|
||||
redirectPolicy,
|
||||
getExpectation(expectations, initPolicy, "same-origin", redirectPolicy, "same-origin"));
|
||||
|
||||
// Redirect to cross-origin URL
|
||||
testReferrerAfterRedirection(
|
||||
"Cross origin redirection",
|
||||
redirectUrl,
|
||||
crossLocationUrl,
|
||||
initPolicy,
|
||||
redirectPolicy,
|
||||
getExpectation(expectations, initPolicy, "same-origin", redirectPolicy, "cross-origin"));
|
||||
}
|
||||
}
|
||||
|
||||
done();
|
|
@ -1,3 +1,10 @@
|
|||
import base64
|
||||
import six
|
||||
|
||||
def decodebytes(s):
|
||||
if six.PY3:
|
||||
return base64.decodebytes(six.ensure_binary(s))
|
||||
return base64.decodestring(s)
|
||||
|
||||
def main(req, res):
|
||||
return 404, [(b'Content-Type', b'image/png')], base64.decodestring(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMGjBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
|
||||
return 404, [(b'Content-Type', b'image/png')], decodebytes(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMGjBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
|
||||
<link rel="help" href="http://crbug.com/1007941">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<!-- This behavior is not explicitly specified. -->
|
||||
|
||||
<a id=anchorid href="nonexistant">anchor</a>
|
||||
|
||||
<script>
|
||||
anchorid.addEventListener('mousedown', () => {
|
||||
anchorid.contentEditable = true;
|
||||
});
|
||||
|
||||
promise_test(async () => {
|
||||
await test_driver.click(anchorid);
|
||||
assert_equals(document.querySelector(':active'), null);
|
||||
}, 'Anchor elements should not stay :active when contentEditable is enabled.');
|
||||
</script>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<!-- This behavior is not explicitly specified. -->
|
||||
|
||||
<a id=anchorid href="javascript:window.anchornavigated = true;">anchor</a>
|
||||
|
||||
<script>
|
||||
promise_test(async () => {
|
||||
window.anchornavigated = false;
|
||||
|
||||
anchorid.contentEditable = true;
|
||||
await test_driver.click(anchorid);
|
||||
|
||||
assert_false(window.anchornavigated, "Anchor's javascript: url was run.");
|
||||
|
||||
}, 'Anchor elements should not be able to navigate if they have contentEditable.');
|
||||
</script>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Type attribute of module scripts</title>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#prepare-a-script">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
window.t1 = async_test('type="module"');
|
||||
window.t2 = async_test('type="MODULE"');
|
||||
window.t3 = async_test('type="Module"');
|
||||
window.t4 = async_test('type="module "');
|
||||
window.t5 = async_test('type=" module"');
|
||||
</script>
|
||||
<script type="module">window.t1.done();</script>
|
||||
<script type="MODULE">window.t2.done();</script>
|
||||
<script type="Module">window.t3.done();</script>
|
||||
<script type="module ">window.t4.unreached_func('Unexpectedly evaluated');</script>
|
||||
<script type=" module">window.t5.unreached_func('Unexpectedly evaluated');</script>
|
||||
<script type="module">
|
||||
window.t1.unreached_func('Unexpectedly not evaluated')();
|
||||
window.t2.unreached_func('Unexpectedly not evaluated')();
|
||||
window.t3.unreached_func('Unexpectedly not evaluated')();
|
||||
window.t4.done();
|
||||
window.t5.done();
|
||||
</script>
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<math>
|
||||
<mmultiscripts>
|
||||
<mrow></mrow>
|
||||
<mprescripts></mprescripts>
|
||||
<mprescripts></mprescripts>
|
||||
</mmultiscripts>
|
||||
</math>
|
|
@ -2,8 +2,15 @@ import base64
|
|||
import json
|
||||
import os
|
||||
|
||||
import six
|
||||
|
||||
from wptserve.utils import isomorphic_decode, isomorphic_encode
|
||||
|
||||
def decodebytes(s):
|
||||
if six.PY3:
|
||||
return base64.decodebytes(six.ensure_binary(s))
|
||||
return base64.decodestring(s)
|
||||
|
||||
def main(request, response):
|
||||
headers = []
|
||||
headers.append((b'X-ServiceWorker-ServerHeader', b'SetInTheServer'))
|
||||
|
@ -29,9 +36,9 @@ def main(request, response):
|
|||
|
||||
if b"PNGIMAGE" in request.GET:
|
||||
headers.append((b"Content-Type", b"image/png"))
|
||||
body = base64.decodestring(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
|
||||
b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
|
||||
b"jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
|
||||
body = decodebytes(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
|
||||
b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
|
||||
b"jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
|
||||
return headers, body
|
||||
|
||||
if b"VIDEO" in request.GET:
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
requests==2.25.0
|
||||
requests==2.25.1
|
||||
mozinfo==1.2.1 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226
|
||||
|
|
|
@ -6,5 +6,5 @@ mozdebug==0.2
|
|||
pillow==6.2.2; python_version <= '2.7' # pyup: <7.0
|
||||
pillow==8.0.1; python_version >= '3.0'
|
||||
urllib3[secure]==1.26.2
|
||||
requests==2.25.0
|
||||
requests==2.25.1
|
||||
six==1.15.0
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
mozprocess==1.2.1
|
||||
selenium==3.141.0
|
||||
requests==2.25.0
|
||||
requests==2.25.1
|
||||
|
|
|
@ -28,14 +28,14 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"device_serial": kwargs["device_serial"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
# Use update() to modify the global list in place.
|
||||
_wptserve_ports.update(set(
|
||||
|
@ -43,7 +43,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
|||
server_config['ports']['ws'] + server_config['ports']['wss']
|
||||
))
|
||||
|
||||
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
|
||||
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
**kwargs)
|
||||
del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"]
|
||||
|
|
|
@ -28,14 +28,14 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"device_serial": kwargs["device_serial"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
# Use update() to modify the global list in place.
|
||||
_wptserve_ports.update(set(
|
||||
|
@ -43,7 +43,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
|||
server_config['ports']['ws'] + server_config['ports']['wss']
|
||||
))
|
||||
|
||||
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
|
||||
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
**kwargs)
|
||||
del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"]
|
||||
|
|
|
@ -28,13 +28,13 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
|
|
|
@ -29,14 +29,14 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"package_name": kwargs["package_name"],
|
||||
"device_serial": kwargs["device_serial"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
# Use update() to modify the global list in place.
|
||||
_wptserve_ports.update(set(
|
||||
|
@ -44,7 +44,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
|||
server_config['ports']['ws'] + server_config['ports']['wss']
|
||||
))
|
||||
|
||||
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
|
||||
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
**kwargs)
|
||||
# Remove unsupported options on mobile.
|
||||
|
|
|
@ -22,12 +22,12 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs)
|
||||
|
|
|
@ -34,7 +34,7 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args"),
|
||||
"timeout_multiplier": get_timeout_multiplier(test_type,
|
||||
|
@ -42,7 +42,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
|||
**kwargs)}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -24,13 +24,13 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
|
|
|
@ -25,7 +25,7 @@ def check_args(**kwargs):
|
|||
pass
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
# Workaround for https://gitlab.gnome.org/GNOME/libsoup/issues/172
|
||||
webdriver_required_args = ["--host=127.0.0.1"]
|
||||
webdriver_args = maybe_add_args(webdriver_required_args, kwargs.get("webdriver_args"))
|
||||
|
@ -49,7 +49,7 @@ def capabilities(server_config, **kwargs):
|
|||
"certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -76,7 +76,7 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"prefs_root": kwargs["prefs_root"],
|
||||
"extra_prefs": kwargs["extra_prefs"],
|
||||
|
@ -105,7 +105,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
|||
"specialpowers_path": kwargs["specialpowers_path"]}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data,
|
||||
|
@ -138,6 +138,16 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
|||
for pref, value in kwargs["extra_prefs"]:
|
||||
options["prefs"].update({pref: Preferences.cast(value)})
|
||||
capabilities["moz:firefoxOptions"] = options
|
||||
|
||||
environ = get_environ(logger,
|
||||
kwargs["binary"],
|
||||
kwargs["debug_info"],
|
||||
kwargs["stylo_threads"],
|
||||
kwargs["headless"],
|
||||
kwargs["enable_webrender"],
|
||||
kwargs["chaos_mode_flags"])
|
||||
|
||||
executor_kwargs["environ"] = environ
|
||||
if kwargs["certutil_binary"] is None:
|
||||
capabilities["acceptInsecureCerts"] = True
|
||||
if capabilities:
|
||||
|
@ -179,7 +189,10 @@ def run_info_extras(**kwargs):
|
|||
"verify": kwargs["verify"],
|
||||
"headless": kwargs.get("headless", False) or "MOZ_HEADLESS" in os.environ,
|
||||
"sw-e10s": True,
|
||||
"fission": kwargs.get("enable_fission") or get_bool_pref("fission.autostart")}
|
||||
"fission": kwargs.get("enable_fission") or get_bool_pref("fission.autostart"),
|
||||
"sessionHistoryInParent": (kwargs.get("enable_fission") or
|
||||
get_bool_pref("fission.autostart") or
|
||||
get_bool_pref("fission.sessionHistoryInParent"))}
|
||||
|
||||
# The value of `sw-e10s` defaults to whether the "parent_intercept"
|
||||
# implementation is enabled for the current build. This value, however,
|
||||
|
@ -213,6 +226,26 @@ def update_properties():
|
|||
{"os": ["version"], "processor": ["bits"]})
|
||||
|
||||
|
||||
def get_environ(logger, binary, debug_info, stylo_threads, headless, enable_webrender,
|
||||
chaos_mode_flags=None):
|
||||
env = test_environment(xrePath=os.path.abspath(os.path.dirname(binary)),
|
||||
debugger=debug_info is not None,
|
||||
useLSan=True,
|
||||
log=logger)
|
||||
|
||||
env["STYLO_THREADS"] = str(stylo_threads)
|
||||
if chaos_mode_flags is not None:
|
||||
env["MOZ_CHAOSMODE"] = str(chaos_mode_flags)
|
||||
if headless:
|
||||
env["MOZ_HEADLESS"] = "1"
|
||||
if enable_webrender:
|
||||
env["MOZ_WEBRENDER"] = "1"
|
||||
env["MOZ_ACCELERATED"] = "1"
|
||||
else:
|
||||
env["MOZ_WEBRENDER"] = "0"
|
||||
return env
|
||||
|
||||
|
||||
class FirefoxInstanceManager(object):
|
||||
__metaclass__ = ABCMeta
|
||||
|
||||
|
@ -268,20 +301,8 @@ class FirefoxInstanceManager(object):
|
|||
marionette_port = get_free_port()
|
||||
profile.set_preferences({"marionette.port": marionette_port})
|
||||
|
||||
env = test_environment(xrePath=os.path.abspath(os.path.dirname(self.binary)),
|
||||
debugger=self.debug_info is not None,
|
||||
useLSan=True, log=self.logger)
|
||||
|
||||
env["STYLO_THREADS"] = str(self.stylo_threads)
|
||||
if self.chaos_mode_flags is not None:
|
||||
env["MOZ_CHAOSMODE"] = str(self.chaos_mode_flags)
|
||||
if self.headless:
|
||||
env["MOZ_HEADLESS"] = "1"
|
||||
if self.enable_webrender:
|
||||
env["MOZ_WEBRENDER"] = "1"
|
||||
env["MOZ_ACCELERATED"] = "1"
|
||||
else:
|
||||
env["MOZ_WEBRENDER"] = "0"
|
||||
env = get_environ(self.logger, self.binary, self.debug_info, self.stylo_threads,
|
||||
self.headless, self.enable_webrender, self.chaos_mode_flags)
|
||||
|
||||
args = self.binary_args[:] if self.binary_args else []
|
||||
args += [cmd_arg("marionette"), "about:blank"]
|
||||
|
|
|
@ -38,7 +38,7 @@ def check_args(**kwargs):
|
|||
pass
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"package_name": kwargs["package_name"],
|
||||
"device_serial": kwargs["device_serial"],
|
||||
"prefs_root": kwargs["prefs_root"],
|
||||
|
|
|
@ -18,11 +18,11 @@ __wptrunner__ = {"product": "ie",
|
|||
def check_args(**kwargs):
|
||||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
options = {}
|
||||
options["requireWindowFocus"] = True
|
||||
|
|
|
@ -24,13 +24,13 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
from selenium.webdriver import DesiredCapabilities
|
||||
|
||||
|
|
|
@ -26,12 +26,12 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webdriver_binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -95,13 +95,13 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "sauce_key")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
sauce_config = get_sauce_config(**kwargs)
|
||||
|
||||
return {"sauce_config": sauce_config}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -33,7 +33,7 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {
|
||||
"binary": kwargs["binary"],
|
||||
"debug_info": kwargs["debug_info"],
|
||||
|
@ -43,7 +43,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
|||
}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
rv = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -36,7 +36,7 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "binary")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {
|
||||
"binary": kwargs["binary"],
|
||||
"binary_args": kwargs["binary_args"],
|
||||
|
@ -47,7 +47,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
|||
}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs):
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data, **kwargs):
|
||||
rv = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
return rv
|
||||
|
|
|
@ -29,7 +29,7 @@ def check_args(**kwargs):
|
|||
require_arg(kwargs, "webkit_port")
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
return {"binary": kwargs["binary"],
|
||||
"webdriver_binary": kwargs["webdriver_binary"],
|
||||
"webdriver_args": kwargs.get("webdriver_args")}
|
||||
|
@ -54,7 +54,7 @@ def capabilities_for_port(server_config, **kwargs):
|
|||
return {}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -25,7 +25,7 @@ def check_args(**kwargs):
|
|||
pass
|
||||
|
||||
|
||||
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||
# Workaround for https://gitlab.gnome.org/GNOME/libsoup/issues/172
|
||||
webdriver_required_args = ["--host=127.0.0.1"]
|
||||
webdriver_args = maybe_add_args(webdriver_required_args, kwargs.get("webdriver_args"))
|
||||
|
@ -53,7 +53,7 @@ def capabilities(server_config, **kwargs):
|
|||
"certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}}
|
||||
|
||||
|
||||
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
|
||||
**kwargs):
|
||||
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||
cache_manager, run_info_data, **kwargs)
|
||||
|
|
|
@ -598,7 +598,7 @@ class WdspecExecutor(TestExecutor):
|
|||
|
||||
def __init__(self, logger, browser, server_config, webdriver_binary,
|
||||
webdriver_args, timeout_multiplier=1, capabilities=None,
|
||||
debug_info=None, **kwargs):
|
||||
debug_info=None, environ=None, **kwargs):
|
||||
self.do_delayed_imports()
|
||||
TestExecutor.__init__(self, logger, browser, server_config,
|
||||
timeout_multiplier=timeout_multiplier,
|
||||
|
@ -607,6 +607,7 @@ class WdspecExecutor(TestExecutor):
|
|||
self.webdriver_args = webdriver_args
|
||||
self.timeout_multiplier = timeout_multiplier
|
||||
self.capabilities = capabilities
|
||||
self.environ = environ if environ is not None else {}
|
||||
self.protocol = self.protocol_cls(self, browser)
|
||||
|
||||
def is_alive(self):
|
||||
|
@ -632,7 +633,8 @@ class WdspecExecutor(TestExecutor):
|
|||
return pytestrunner.run(path,
|
||||
self.server_config,
|
||||
session_config,
|
||||
timeout=timeout)
|
||||
timeout=timeout,
|
||||
environ=self.environ)
|
||||
|
||||
def do_delayed_imports(self):
|
||||
global pytestrunner
|
||||
|
|
|
@ -24,7 +24,7 @@ def do_delayed_imports():
|
|||
import pytest
|
||||
|
||||
|
||||
def run(path, server_config, session_config, timeout=0):
|
||||
def run(path, server_config, session_config, timeout=0, environ=None):
|
||||
"""
|
||||
Run Python test at ``path`` in pytest. The provided ``session``
|
||||
is exposed as a fixture available in the scope of the test functions.
|
||||
|
@ -41,28 +41,35 @@ def run(path, server_config, session_config, timeout=0):
|
|||
if pytest is None:
|
||||
do_delayed_imports()
|
||||
|
||||
os.environ["WD_HOST"] = session_config["host"]
|
||||
os.environ["WD_PORT"] = str(session_config["port"])
|
||||
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
|
||||
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict_for_wd_env_variable())
|
||||
old_environ = os.environ.copy()
|
||||
try:
|
||||
os.environ["WD_HOST"] = session_config["host"]
|
||||
os.environ["WD_PORT"] = str(session_config["port"])
|
||||
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
|
||||
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict_for_wd_env_variable())
|
||||
if environ:
|
||||
os.environ.update(environ)
|
||||
|
||||
harness = HarnessResultRecorder()
|
||||
subtests = SubtestResultRecorder()
|
||||
harness = HarnessResultRecorder()
|
||||
subtests = SubtestResultRecorder()
|
||||
|
||||
with TemporaryDirectory() as cache:
|
||||
try:
|
||||
pytest.main(["--strict", # turn warnings into errors
|
||||
"-vv", # show each individual subtest and full failure logs
|
||||
"--capture", "no", # enable stdout/stderr from tests
|
||||
"--basetemp", cache, # temporary directory
|
||||
"--showlocals", # display contents of variables in local scope
|
||||
"-p", "no:mozlog", # use the WPT result recorder
|
||||
"-p", "no:cacheprovider", # disable state preservation across invocations
|
||||
"-o=console_output_style=classic", # disable test progress bar
|
||||
path],
|
||||
plugins=[harness, subtests])
|
||||
except Exception as e:
|
||||
harness.outcome = ("INTERNAL-ERROR", str(e))
|
||||
with TemporaryDirectory() as cache:
|
||||
try:
|
||||
pytest.main(["--strict", # turn warnings into errors
|
||||
"-vv", # show each individual subtest and full failure logs
|
||||
"--capture", "no", # enable stdout/stderr from tests
|
||||
"--basetemp", cache, # temporary directory
|
||||
"--showlocals", # display contents of variables in local scope
|
||||
"-p", "no:mozlog", # use the WPT result recorder
|
||||
"-p", "no:cacheprovider", # disable state preservation across invocations
|
||||
"-o=console_output_style=classic", # disable test progress bar
|
||||
path],
|
||||
plugins=[harness, subtests])
|
||||
except Exception as e:
|
||||
harness.outcome = ("INTERNAL-ERROR", str(e))
|
||||
|
||||
finally:
|
||||
os.environ = old_environ
|
||||
|
||||
return (harness.outcome, subtests.results)
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ def test_webkitgtk_certificate_domain_list(product):
|
|||
subdomains={"a", "b"},
|
||||
not_subdomains={"x", "y"}) as env_config:
|
||||
|
||||
executor_args = get_executor_kwargs(None, env_config, None, None, **kwargs)
|
||||
executor_args = get_executor_kwargs(None, None, env_config, None, None, **kwargs)
|
||||
assert('capabilities' in executor_args)
|
||||
assert('webkitgtk:browserOptions' in executor_args['capabilities'])
|
||||
assert('certificates' in executor_args['capabilities']['webkitgtk:browserOptions'])
|
||||
|
|
|
@ -275,13 +275,15 @@ def run_tests(config, test_paths, product, **kwargs):
|
|||
else:
|
||||
browser_cls = product.browser_cls
|
||||
|
||||
browser_kwargs = product.get_browser_kwargs(test_type,
|
||||
browser_kwargs = product.get_browser_kwargs(logger,
|
||||
test_type,
|
||||
run_info,
|
||||
config=test_environment.config,
|
||||
**kwargs)
|
||||
|
||||
executor_cls = product.executor_classes.get(test_type)
|
||||
executor_kwargs = product.get_executor_kwargs(test_type,
|
||||
executor_kwargs = product.get_executor_kwargs(logger,
|
||||
test_type,
|
||||
test_environment.config,
|
||||
test_environment.cache_manager,
|
||||
run_info,
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue