mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Update web-platform-tests to revision 026cb8c5c7f63871853f21b053f49940be780146
This commit is contained in:
parent
1ba6f598cb
commit
353491d14a
100 changed files with 900 additions and 265 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-other-space-separators-break-spaces-008.html]
|
||||||
|
expected: FAIL
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,3 @@
|
||||||
[throws if handleEvent is thruthy and not callable]
|
[throws if handleEvent is thruthy and not callable]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[looks up handleEvent method on every event dispatch]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementFromPoint-001.html]
|
||||||
|
[CSSOM View - 5 - extensions to the Document interface]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gb18030-decoder.any.worker.html]
|
||||||
|
[gb18030 decoder: two bytes 0xFE 0xFF]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[gb18030-decoder.any.html]
|
||||||
|
[gb18030 decoder: two bytes 0xFE 0xFF]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -312,27 +312,15 @@
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" 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 */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,6 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[opener of discarded nested browsing context]
|
[opener of discarded nested browsing context]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[opener of discarded auxiliary browsing context]
|
[opener of discarded auxiliary browsing context]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.reset.basic.html]
|
||||||
|
[reset clears to transparent black]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-double-submit-2.html]
|
||||||
|
[preventDefault should allow onclick submit() to succeed]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -2,36 +2,18 @@
|
||||||
[input type url: setRangeText() a second time (must not fire select)]
|
[input type url: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: selectionStart out of range a second time (must not fire select)]
|
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionDirection a second time (must not fire select)]
|
[textarea: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionEnd a second time (must not fire select)]
|
[input type search: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: selectionStart a second time (must not fire select)]
|
[input type search: selectionStart a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
[input type tel: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -41,15 +23,48 @@
|
||||||
[input type password: select() a second time (must not fire select)]
|
[input type password: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange() a second time (must not fire select)]
|
[input type password: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: setRangeText() a second time (must not fire select)]
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -3,3 +3,6 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -575,3 +575,9 @@
|
||||||
[X SNR (-586.1883985880588 dB) is not greater than or equal to 65.737. Got -586.1883985880588.]
|
[X SNR (-586.1883985880588 dB) is not greater than or equal to 65.737. Got -586.1883985880588.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (-669.4373973002105 dB) is not greater than or equal to 65.737. Got -669.4373973002105.]
|
||||||
|
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[28243\]\t-4.4012309895459656e+35\t-9.6925276517868042e-1\t4.4012309895459656e+35\t4.5408495571685106e+35\t3.8985999999999999e-3\n\t[28244\]\t-8.2011562585830688e-1\t-9.5193320512771606e-1\t1.3181757926940918e-1\t1.3847355944656209e-1\t3.8985999999999999e-3\n\tMax AbsError of 4.4012309895459656e+35 at index of 28243.\n\tMax RelError of 4.5408495571685106e+35 at index of 28243.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -151144,6 +151144,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"rem-in-monospace.html": [
|
||||||
|
"0358d811b403e6443ca5d861257a70a19093e5ce",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-fonts/rem-in-monospace-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"standard-font-family-10.html": [
|
"standard-font-family-10.html": [
|
||||||
"5dde6348d3985307999572b342433cfc8f800d9c",
|
"5dde6348d3985307999572b342433cfc8f800d9c",
|
||||||
[
|
[
|
||||||
|
@ -154709,7 +154722,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"grid-auto-margin-and-replaced-item-001.html": [
|
"grid-auto-margin-and-replaced-item-001.html": [
|
||||||
"f6c0afb6ae3cb654367001439c1569b13e2f33e2",
|
"ccf87024bc699d58c9cb4d5e1c610646dc86adc2",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
[
|
[
|
||||||
|
@ -307646,6 +307659,10 @@
|
||||||
"70e2d50cd83f61017f0f22da14065c7afa76e1d1",
|
"70e2d50cd83f61017f0f22da14065c7afa76e1d1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"rem-in-monospace-ref.html": [
|
||||||
|
"5acb0522019e342eff9a955ae6b15b8d4c235000",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"resources": {
|
"resources": {
|
||||||
"markA.ttf": [
|
"markA.ttf": [
|
||||||
"353e7ac3328297b91844430dbd6d93ad9d25779f",
|
"353e7ac3328297b91844430dbd6d93ad9d25779f",
|
||||||
|
@ -342082,7 +342099,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"name2dir.yaml": [
|
"name2dir.yaml": [
|
||||||
"43385459f398ed505fa78b1f08215e6a0f7edeea",
|
"485c070fb06d1f636a14867b06967fced9b86497",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"spec.yaml": [
|
"spec.yaml": [
|
||||||
|
@ -342139,6 +342156,10 @@
|
||||||
"59d3053fc8ae80c36d22f52dd98c10a119b95ae8",
|
"59d3053fc8ae80c36d22f52dd98c10a119b95ae8",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"reset.yaml": [
|
||||||
|
"bd9479c8cf17b00c81b78d03133cc1c8b02e0b04",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"scroll.yaml": [
|
"scroll.yaml": [
|
||||||
"4c1ec563de7939da331b5ba61bbba67dc094303d",
|
"4c1ec563de7939da331b5ba61bbba67dc094303d",
|
||||||
[]
|
[]
|
||||||
|
@ -353473,7 +353494,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lint.ignore": [
|
"lint.ignore": [
|
||||||
"aa5c7394651dc25085578a6f71900c7d7c23e9cb",
|
"0c12d66c04586cf2a807da9b25100fd925e01fa4",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"loading": {
|
"loading": {
|
||||||
|
@ -358983,7 +359004,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"conftest.py": [
|
"conftest.py": [
|
||||||
"de0d29794d9f7e1c6e206852a51149ada98974b3",
|
"e46f93bc00f13f0be4605e0db9820444e0814e02",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"harness.html": [
|
"harness.html": [
|
||||||
|
@ -359156,6 +359177,14 @@
|
||||||
"4ea32a2bc8ee64b5841596f240291ec7fa514274",
|
"4ea32a2bc8ee64b5841596f240291ec7fa514274",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"setup-function-worker.js": [
|
||||||
|
"82c1456aa6447267361d8cc89e28840fc4913b46",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"setup-worker-service.html": [
|
||||||
|
"b7a387f47f95d8351572bf74e8f0bc9f1655f4d0",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"single-page-test-fail.html": [
|
"single-page-test-fail.html": [
|
||||||
"9169a5a54e211042d2d46bdcc1b8d68ec9699e03",
|
"9169a5a54e211042d2d46bdcc1b8d68ec9699e03",
|
||||||
[]
|
[]
|
||||||
|
@ -359430,7 +359459,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testharness.js": [
|
"testharness.js": [
|
||||||
"e2e364102e43891001e2e97a3f4bd11871fc6bb3",
|
"fea1f2f52e9f50c53e4689854927698eb57a30fb",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testharness.js.headers": [
|
"testharness.js.headers": [
|
||||||
|
@ -371571,7 +371600,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"run.py": [
|
"run.py": [
|
||||||
"561b8e85aa73f156854fe2ba292164a285e928ec",
|
"3d380eab5cbdb00ffc612dedc595310f7d0e60a1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testfiles.py": [
|
"testfiles.py": [
|
||||||
|
@ -371925,7 +371954,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"firefox.py": [
|
"firefox.py": [
|
||||||
"e4841bb57935acf11cb0da1e3020ccc25703d2e0",
|
"83a883b98b5e1a8e639ab25168ebed5dfbefc108",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"firefox_android.py": [
|
"firefox_android.py": [
|
||||||
|
@ -371980,7 +372009,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"environment.py": [
|
"environment.py": [
|
||||||
"d98e1203930cab51ab7468037a0665b85126e1e5",
|
"b68fce0557a83aac2c9f4359252e80d06812ebee",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"executors": {
|
"executors": {
|
||||||
|
@ -371993,7 +372022,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"base.py": [
|
"base.py": [
|
||||||
"539c791fbd9c9d1db4598246ff460742e514974a",
|
"1b75421941d2f570f9098713d6ca7b5f32cf295a",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"executorchrome.py": [
|
"executorchrome.py": [
|
||||||
|
@ -372013,7 +372042,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"executormarionette.py": [
|
"executormarionette.py": [
|
||||||
"e5d7683facd7880d13a7d30451230b23833c3cee",
|
"8301ba1073c3431f1fd919100c8fd115d57a247e",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"executoropera.py": [
|
"executoropera.py": [
|
||||||
|
@ -372049,7 +372078,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"protocol.py": [
|
"protocol.py": [
|
||||||
"8bdc8b0cbc01cb0ab86396e50e7232368bd08c2b",
|
"e48add9334b68a07827be9f428b6ff81db86a7f4",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"pytestrunner": {
|
"pytestrunner": {
|
||||||
|
@ -372176,15 +372205,15 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testharnessreport-servo.js": [
|
"testharnessreport-servo.js": [
|
||||||
"a10b69df5504fab875147af26d925ebcce51ec00",
|
"4a27dc27ef6f26b4f359d5a013bce4a21af51738",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testharnessreport-servodriver.js": [
|
"testharnessreport-servodriver.js": [
|
||||||
"c88841360470f8dd3aec22244929dda49fadaf32",
|
"7819538dbb8f4a807d5db2649c2540854996c865",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testharnessreport.js": [
|
"testharnessreport.js": [
|
||||||
"9cd680e14aed3b6f7b8ee23aa5d2a5624cbe1fd2",
|
"d385692445c5086d0ad4815926b7b2c2a93dd493",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"testloader.py": [
|
"testloader.py": [
|
||||||
|
@ -372214,7 +372243,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"test_webkitgtk.py": [
|
"test_webkitgtk.py": [
|
||||||
"c073d03e70ecc5e2b783cec4a79ac475609467db",
|
"98c2988deea068dbd47add17faa846a7cd04e114",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -372235,7 +372264,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"test_products.py": [
|
"test_products.py": [
|
||||||
"5d2bcf075d0f572e8972eba5fdb4a5bd36b5db75",
|
"75794d481313c4684d1094c7078af9edd2258cbd",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"test_stability.py": [
|
"test_stability.py": [
|
||||||
|
@ -372294,7 +372323,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"wptcommandline.py": [
|
"wptcommandline.py": [
|
||||||
"bfd6491b2d66693e225d91b84846b5c0a38e1aba",
|
"60c74ef408e1839a2bcd733ac9ef4fda6dc0e72b",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"wptlogging.py": [
|
"wptlogging.py": [
|
||||||
|
@ -372364,7 +372393,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wptrunner.py": [
|
"wptrunner.py": [
|
||||||
"3fc9e397a92a0927ac2c85ca27453754f78e0771",
|
"7182510a29d30f07a3cf1edc59d302804206fb12",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"wpttest.py": [
|
"wpttest.py": [
|
||||||
|
@ -373763,7 +373792,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"generate-test-wbns.sh": [
|
"generate-test-wbns.sh": [
|
||||||
"0caef325d1f03846792094e2535c84daf8bf4516",
|
"5a205c9d5ceb4b5d041d4db82134088bf9ba0880",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"location": {
|
"location": {
|
||||||
|
@ -373820,6 +373849,50 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"static-element": {
|
||||||
|
"out-of-scope": {
|
||||||
|
"script.js": [
|
||||||
|
"0f3e0d27c07f0f800158e72ad176420c510bac2d",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"script.js": [
|
||||||
|
"f5327df7ae2c40ee508648792e1079e438cc4b57",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-file.css": [
|
||||||
|
"6b79f6dd8cbb2dedeb29f2e36fd04c6f7bc2f13c",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-tag.css": [
|
||||||
|
"38e9fe31338c1bd3d61f14e11f04d6ac1a9d959e",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style.css": [
|
||||||
|
"7f98b85eb6dd67a43208c2de3f104e3b8b415534",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scopes": {
|
||||||
|
"script.js": [
|
||||||
|
"140698cb5c8bf6edfc9a791876a6a904398608ed",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-file.css": [
|
||||||
|
"01628886441193183310bf09683f8f71036cf53a",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-tag.css": [
|
||||||
|
"7055c86ee952e7c0f1a90a475d6effb76f73bab4",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style.css": [
|
||||||
|
"f2af82dfd799e8885d834a1eccaa369ae772a702",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"subresource": {
|
"subresource": {
|
||||||
"root.js": [
|
"root.js": [
|
||||||
"2c2a465472b9a879a6298a969e2baf717d651535",
|
"2c2a465472b9a879a6298a969e2baf717d651535",
|
||||||
|
@ -373905,6 +373978,54 @@
|
||||||
"e861469e122afd141bcec8d394a0d4504898208c",
|
"e861469e122afd141bcec8d394a0d4504898208c",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"static-element": {
|
||||||
|
"out-of-scope": {
|
||||||
|
"script.js": [
|
||||||
|
"e7617294833eb20738ceda4736c6720ad64e3fcb",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"script.js": [
|
||||||
|
"08c4d9a2ee2de278ae821f55b1f80fb4eafe8084",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-file.css": [
|
||||||
|
"33f0f375da0d0ed686ef370ef364270f9c7eb785",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-tag.css": [
|
||||||
|
"85dbf84db3d42ed02986d211587f9e2e930a2105",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style.css": [
|
||||||
|
"41886f41d93172c39bb2c974ea13123615eedafb",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scopes": {
|
||||||
|
"script.js": [
|
||||||
|
"060d8c50a8cf49a0ea38e31517388e1f8c3f6f93",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-file.css": [
|
||||||
|
"d865cebd12f735a6bb47acb9d0235742f9cfb128",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style-imported-from-tag.css": [
|
||||||
|
"ad70df9b396378f821b12cbb00466615756d5f2d",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"style.css": [
|
||||||
|
"233ecd7113949f03f250b9a360f97d25de584a35",
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"static-element.wbn": [
|
||||||
|
"112f4f363f48d4985a449b3e9b245b03bd9d7573",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"subresource.wbn": [
|
"subresource.wbn": [
|
||||||
"eabd994ff8bceaf4ef52b329b4faa158c292af12",
|
"eabd994ff8bceaf4ef52b329b4faa158c292af12",
|
||||||
[]
|
[]
|
||||||
|
@ -442454,11 +442575,29 @@
|
||||||
},
|
},
|
||||||
"legacy-mb-schinese": {
|
"legacy-mb-schinese": {
|
||||||
"gb18030": {
|
"gb18030": {
|
||||||
"gb18030-decoder.html": [
|
"gb18030-decoder.any.js": [
|
||||||
"b8fb0d04c44ee7e1f868ec5fe1faf59fd2c3b556",
|
"99a0253ba6b680e387e13d1bc97c1d94459bc97f",
|
||||||
[
|
[
|
||||||
null,
|
"encoding/legacy-mb-schinese/gb18030/gb18030-decoder.any.html",
|
||||||
{}
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"./resources/ranges.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"encoding/legacy-mb-schinese/gb18030/gb18030-decoder.any.worker.html",
|
||||||
|
{
|
||||||
|
"script_metadata": [
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"./resources/ranges.js"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"gb18030-encoder.html": [
|
"gb18030-encoder.html": [
|
||||||
|
@ -442470,10 +442609,14 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"gbk": {
|
"gbk": {
|
||||||
"gbk-decoder.html": [
|
"gbk-decoder.any.js": [
|
||||||
"8c45683180070ef80e6797a4d61fffb32aeaef6e",
|
"c0221480da156dde0068454edd635e92458da6cb",
|
||||||
[
|
[
|
||||||
null,
|
"encoding/legacy-mb-schinese/gbk/gbk-decoder.any.html",
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"encoding/legacy-mb-schinese/gbk/gbk-decoder.any.worker.html",
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
@ -468144,6 +468287,15 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"reset": {
|
||||||
|
"2d.reset.basic.html": [
|
||||||
|
"092db9794c1001260733d9c2cef051d9ce5718ce",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"scroll": {
|
"scroll": {
|
||||||
"2d.scrollPathIntoView.basic.html": [
|
"2d.scrollPathIntoView.basic.html": [
|
||||||
"8263eb7b8080e4c2b2d6530739fc8056dcdbc338",
|
"8263eb7b8080e4c2b2d6530739fc8056dcdbc338",
|
||||||
|
@ -484336,7 +484488,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"video-aspect-ratio.html": [
|
"video-aspect-ratio.html": [
|
||||||
"2b4937046d2f20e0dafddf07b1470adec5e7b050",
|
"c81b70dbf4ea6484643f534fecfccaf023f828ec",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -549904,6 +550056,20 @@
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
"subresource-loading-static-element-with-base.tentative.html": [
|
||||||
|
"338782697d20f9663b4a11189ea8ff68a3617b21",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"subresource-loading-static-element.tentative.html": [
|
||||||
|
"d8d60a93081a96fbd2a6c63f2751be1d966f09bf",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"wbn-from-network": {
|
"wbn-from-network": {
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-other-space-separators-break-spaces-008.html]
|
||||||
|
expected: FAIL
|
|
@ -2,3 +2,6 @@
|
||||||
[Hit test intersecting scaled box]
|
[Hit test intersecting scaled box]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Hit test within unscaled box]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,3 @@
|
||||||
[throws if handleEvent is thruthy and not callable]
|
[throws if handleEvent is thruthy and not callable]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[looks up handleEvent method on every event dispatch]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementFromPoint-001.html]
|
||||||
|
[CSSOM View - 5 - extensions to the Document interface]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gb18030-decoder.any.worker.html]
|
||||||
|
[gb18030 decoder: two bytes 0xFE 0xFF]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
|
[gb18030-decoder.any.html]
|
||||||
|
[gb18030 decoder: two bytes 0xFE 0xFF]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[gb18030-decoder.html]
|
|
||||||
[gb18030 decoder: two bytes 0xFE 0xFF]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -312,27 +312,15 @@
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" 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 */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,6 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[opener and "removed" embedded documents]
|
[opener and "removed" embedded documents]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6,5 +7,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[opener of discarded auxiliary browsing context]
|
[opener of discarded auxiliary browsing context]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[2d.reset.basic.html]
|
||||||
|
[reset clears to transparent black]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-double-submit-2.html]
|
||||||
|
[preventDefault should allow onclick submit() to succeed]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -2,36 +2,18 @@
|
||||||
[input type url: setRangeText() a second time (must not fire select)]
|
[input type url: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: selectionStart out of range a second time (must not fire select)]
|
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionDirection a second time (must not fire select)]
|
[textarea: selectionDirection a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionEnd a second time (must not fire select)]
|
[input type search: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type search: selectionStart a second time (must not fire select)]
|
[input type search: selectionStart a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
[input type tel: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -41,15 +23,48 @@
|
||||||
[input type password: select() a second time (must not fire select)]
|
[input type password: select() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange() a second time (must not fire select)]
|
[input type password: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: setRangeText() a second time (must not fire select)]
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -4,3 +4,6 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -803,3 +803,9 @@
|
||||||
[X SNR (-586.1883985880588 dB) is not greater than or equal to 65.737. Got -586.1883985880588.]
|
[X SNR (-586.1883985880588 dB) is not greater than or equal to 65.737. Got -586.1883985880588.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (-669.4373973002105 dB) is not greater than or equal to 65.737. Got -669.4373973002105.]
|
||||||
|
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[28243\]\t-4.4012309895459656e+35\t-9.6925276517868042e-1\t4.4012309895459656e+35\t4.5408495571685106e+35\t3.8985999999999999e-3\n\t[28244\]\t-8.2011562585830688e-1\t-9.5193320512771606e-1\t1.3181757926940918e-1\t1.3847355944656209e-1\t3.8985999999999999e-3\n\tMax AbsError of 4.4012309895459656e+35 at index of 28243.\n\tMax RelError of 4.5408495571685106e+35 at index of 28243.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[017.html]
|
|
||||||
expected: TIMEOUT
|
|
||||||
[origin of the script that invoked the method, about:blank]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
|
@ -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,2 @@
|
||||||
[sequence-hole.html]
|
[sequence-hole.html]
|
||||||
prefs: [dom.testbinding.enabled:true]
|
prefs: [dom.testbinding.enabled:true]
|
||||||
[Sequences with holes and a getter on the prototype are correctly handled]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
[sequence-hole.html]
|
[sequence-hole.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
prefs: [dom.testbinding.enabled:true]
|
prefs: [dom.testbinding.enabled:true]
|
||||||
[Sequences with holes and a getter on the prototype are correctly handled]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<p>The following two lines should look exactly the same.</p>
|
||||||
|
|
||||||
|
<div style="font-family: sans-serif; font-size: 1rem">
|
||||||
|
Text.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="font-family: sans-serif; font-size: 1rem">
|
||||||
|
Text.
|
||||||
|
</div>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel=help href="https://drafts.csswg.org/css-fonts-4/#font-size-prop">
|
||||||
|
<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=623842">
|
||||||
|
<link rel=author href="mailto:xiaochengh@chromium.org">
|
||||||
|
<link rel=match href="./rem-in-monospace-ref.html">
|
||||||
|
|
||||||
|
<p>The following two lines should look exactly the same.</p>
|
||||||
|
|
||||||
|
<div style="font-family: monospace; font-size: 1.5em">
|
||||||
|
<div style="font-family: sans-serif; font-size: 1rem">
|
||||||
|
Text.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="font-family: sans-serif; font-size: 1rem">
|
||||||
|
Text.
|
||||||
|
</div>
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function loadImage() {
|
function loadImage() {
|
||||||
var replaced = document.getElementById("replaced");
|
// Use svg for a 100x100 green square so we don't have to wait for replaced.onload.
|
||||||
replaced.src = "./support/100x100-green.png";
|
replaced.src = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='100' height='100'%3E%3Crect width='100%25' height='100%25' fill='green'/%3E%3C/svg%3E";
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
// META: script=./resources/ranges.js
|
||||||
|
|
||||||
|
const decode = (input, output, desc) => {
|
||||||
|
test(function () {
|
||||||
|
for (const encoding of ["gb18030", "gbk"]) {
|
||||||
|
assert_equals(
|
||||||
|
new TextDecoder(encoding).decode(new Uint8Array(input)),
|
||||||
|
output,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, "gb18030 decoder: " + desc);
|
||||||
|
};
|
||||||
|
|
||||||
|
decode([115], "s", "ASCII");
|
||||||
|
decode([0x80], "\u20AC", "euro");
|
||||||
|
decode([0xFF], "\uFFFD", "initial byte out of accepted ranges");
|
||||||
|
decode([0x81], "\uFFFD", "end of queue, gb18030 first not 0");
|
||||||
|
decode([0x81, 0x28], "\ufffd(", "two bytes 0x81 0x28");
|
||||||
|
decode([0x81, 0x40], "\u4E02", "two bytes 0x81 0x40");
|
||||||
|
decode([0x81, 0x7E], "\u4E8A", "two bytes 0x81 0x7e");
|
||||||
|
decode([0x81, 0x7F], "\ufffd\u007f", "two bytes 0x81 0x7f");
|
||||||
|
decode([0x81, 0x80], "\u4E90", "two bytes 0x81 0x80");
|
||||||
|
decode([0x81, 0xFE], "\u4FA2", "two bytes 0x81 0xFE");
|
||||||
|
decode([0x81, 0xFF], "\ufffd", "two bytes 0x81 0xFF");
|
||||||
|
decode([0xFE, 0x40], "\uFA0C", "two bytes 0xFE 0x40");
|
||||||
|
decode([0xFE, 0xFE], "\uE4C5", "two bytes 0xFE 0xFE");
|
||||||
|
decode([0xFE, 0xFF], "\ufffd", "two bytes 0xFE 0xFF");
|
||||||
|
decode([0x81, 0x30], "\ufffd", "two bytes 0x81 0x30");
|
||||||
|
decode([0x81, 0x30, 0xFE], "\ufffd", "three bytes 0x81 0x30 0xFE");
|
||||||
|
decode([0x81, 0x30, 0xFF], "\ufffd0\ufffd", "three bytes 0x81 0x30 0xFF");
|
||||||
|
decode(
|
||||||
|
[0x81, 0x30, 0xFE, 0x29],
|
||||||
|
"\ufffd0\ufffd)",
|
||||||
|
"four bytes 0x81 0x30 0xFE 0x29",
|
||||||
|
);
|
||||||
|
decode([0xFE, 0x39, 0xFE, 0x39], "\ufffd", "four bytes 0xFE 0x39 0xFE 0x39");
|
||||||
|
decode([0x81, 0x35, 0xF4, 0x36], "\u1E3E", "pointer 7458");
|
||||||
|
decode([0x81, 0x35, 0xF4, 0x37], "\ue7c7", "pointer 7457");
|
||||||
|
decode([0x81, 0x35, 0xF4, 0x38], "\u1E40", "pointer 7459");
|
||||||
|
decode([0x84, 0x31, 0xA4, 0x39], "\uffff", "pointer 39419");
|
||||||
|
decode([0x84, 0x31, 0xA5, 0x30], "\ufffd", "pointer 39420");
|
||||||
|
decode([0x8F, 0x39, 0xFE, 0x39], "\ufffd", "pointer 189999");
|
||||||
|
decode([0x90, 0x30, 0x81, 0x30], "\u{10000}", "pointer 189000");
|
||||||
|
decode([0xE3, 0x32, 0x9A, 0x35], "\u{10FFFF}", "pointer 1237575");
|
||||||
|
decode([0xE3, 0x32, 0x9A, 0x36], "\ufffd", "pointer 1237576");
|
||||||
|
decode([0x83, 0x36, 0xC8, 0x30], "\uE7C8", "legacy ICU special case 1");
|
||||||
|
decode([0xA1, 0xAD], "\u2026", "legacy ICU special case 2");
|
||||||
|
decode([0xA1, 0xAB], "\uFF5E", "legacy ICU special case 3");
|
||||||
|
|
||||||
|
let i = 0;
|
||||||
|
for (const range of ranges) {
|
||||||
|
const pointer = range[0];
|
||||||
|
decode(
|
||||||
|
[
|
||||||
|
Math.floor(pointer / 12600) + 0x81,
|
||||||
|
Math.floor((pointer % 12600) / 1260) + 0x30,
|
||||||
|
Math.floor((pointer % 1260) / 10) + 0x81,
|
||||||
|
pointer % 10 + 0x30,
|
||||||
|
],
|
||||||
|
range[1],
|
||||||
|
"range " + i++,
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,55 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<script src=resources/ranges.js></script>
|
|
||||||
<script>
|
|
||||||
const decode = (input, output, desc) => {
|
|
||||||
test(function() {
|
|
||||||
for (encoding of ["gb18030", "gbk"])
|
|
||||||
assert_equals(new TextDecoder(encoding).decode(new Uint8Array(input)), output)
|
|
||||||
}, "gb18030 decoder: " + desc)
|
|
||||||
}
|
|
||||||
|
|
||||||
decode([115], "s", "ASCII");
|
|
||||||
decode([0x80], "\u20AC", "euro");
|
|
||||||
decode([0xFF], "\uFFFD", "initial byte out of accepted ranges");
|
|
||||||
decode([0x81], "\uFFFD", "end of queue, gb18030 first not 0");
|
|
||||||
decode([0x81, 0x28], "\ufffd(", "two bytes 0x81 0x28");
|
|
||||||
decode([0x81, 0x40], "\u4E02", "two bytes 0x81 0x40");
|
|
||||||
decode([0x81, 0x7E], "\u4E8A", "two bytes 0x81 0x7e");
|
|
||||||
decode([0x81, 0x7F], "\ufffd\u007f", "two bytes 0x81 0x7f");
|
|
||||||
decode([0x81, 0x80], "\u4E90", "two bytes 0x81 0x80");
|
|
||||||
decode([0x81, 0xFE], "\u4FA2", "two bytes 0x81 0xFE");
|
|
||||||
decode([0x81, 0xFF], "\ufffd", "two bytes 0x81 0xFF");
|
|
||||||
decode([0xFE, 0x40], "\uFA0C", "two bytes 0xFE 0x40");
|
|
||||||
decode([0xFE, 0xFE], "\uE4C5", "two bytes 0xFE 0xFE");
|
|
||||||
decode([0xFE, 0xFF], "\ufffd", "two bytes 0xFE 0xFF");
|
|
||||||
decode([0x81, 0x30], "\ufffd", "two bytes 0x81 0x30");
|
|
||||||
decode([0x81, 0x30, 0xFE], "\ufffd", "three bytes 0x81 0x30 0xFE");
|
|
||||||
decode([0x81, 0x30, 0xFF], "\ufffd0\ufffd", "three bytes 0x81 0x30 0xFF");
|
|
||||||
decode([0x81, 0x30, 0xFE, 0x29], "\ufffd0\ufffd)", "four bytes 0x81 0x30 0xFE 0x29");
|
|
||||||
decode([0xFE, 0x39, 0xFE, 0x39], "\ufffd", "four bytes 0xFE 0x39 0xFE 0x39");
|
|
||||||
decode([0x81, 0x35, 0xF4, 0x36], "\u1E3E", "pointer 7458");
|
|
||||||
decode([0x81, 0x35, 0xF4, 0x37], "\ue7c7", "pointer 7457");
|
|
||||||
decode([0x81, 0x35, 0xF4, 0x38], "\u1E40", "pointer 7459");
|
|
||||||
decode([0x84, 0x31, 0xA4, 0x39], "\uffff", "pointer 39419");
|
|
||||||
decode([0x84, 0x31, 0xA5, 0x30], "\ufffd", "pointer 39420");
|
|
||||||
decode([0x8F, 0x39, 0xFE, 0x39], "\ufffd", "pointer 189999");
|
|
||||||
decode([0x90, 0x30, 0x81, 0x30], "\u{10000}", "pointer 189000");
|
|
||||||
decode([0xE3, 0x32, 0x9A, 0x35], "\u{10FFFF}", "pointer 1237575");
|
|
||||||
decode([0xE3, 0x32, 0x9A, 0x36], "\ufffd", "pointer 1237576");
|
|
||||||
decode([0x83, 0x36, 0xC8, 0x30], "\uE7C8", "legacy ICU special case 1");
|
|
||||||
decode([0xA1, 0xAD], "\u2026", "legacy ICU special case 2");
|
|
||||||
decode([0xA1, 0xAB], "\uFF5E", "legacy ICU special case 3");
|
|
||||||
|
|
||||||
let i = 0;
|
|
||||||
for (const range of ranges) {
|
|
||||||
const pointer = range[0];
|
|
||||||
decode([
|
|
||||||
Math.floor(pointer / 12600) + 0x81,
|
|
||||||
Math.floor((pointer % 12600) / 1260) + 0x30,
|
|
||||||
Math.floor((pointer % 1260) / 10) + 0x81,
|
|
||||||
pointer % 10 + 0x30
|
|
||||||
], range[1], "range " + i++);
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,7 +1,3 @@
|
||||||
<!doctype html>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<script>
|
|
||||||
const gbkPointers = [
|
const gbkPointers = [
|
||||||
6432, 7533, 7536, 7672, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684,
|
6432, 7533, 7536, 7672, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684,
|
||||||
23766, 23770, 23771, 23772, 23773, 23774, 23776, 23777, 23778, 23779, 23780, 23781, 23782, 23784, 23785, 23786,
|
23766, 23770, 23771, 23772, 23773, 23774, 23776, 23777, 23778, 23779, 23780, 23781, 23782, 23784, 23785, 23786,
|
||||||
|
@ -30,4 +26,3 @@ for (let i = 0; i < gbkPointers.length; i++) {
|
||||||
assert_equals(decoded, codePoints[i]);
|
assert_equals(decoded, codePoints[i]);
|
||||||
}, "gbk pointer: " + pointer)
|
}, "gbk pointer: " + pointer)
|
||||||
}
|
}
|
||||||
</script>
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
|
||||||
|
<title>Canvas test: 2d.reset.basic</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/html/canvas/resources/canvas-tests.js"></script>
|
||||||
|
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
|
||||||
|
<body class="show_output">
|
||||||
|
|
||||||
|
<h1>2d.reset.basic</h1>
|
||||||
|
<p class="desc">reset clears to transparent black</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="output">Actual output:</p>
|
||||||
|
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
|
||||||
|
|
||||||
|
<ul id="d"></ul>
|
||||||
|
<script>
|
||||||
|
var t = async_test("reset clears to transparent black");
|
||||||
|
_addTest(function(canvas, ctx) {
|
||||||
|
|
||||||
|
ctx.fillStyle = '#f00';
|
||||||
|
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
||||||
|
ctx.reset();
|
||||||
|
_assertPixel(canvas, 0,0, 0,0,0,0, "0,0", "0,0,0,0");
|
||||||
|
_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0");
|
||||||
|
_assertPixel(canvas, 25,50, 0,0,0,0, "25,50", "0,0,0,0");
|
||||||
|
_assertPixel(canvas, 100,50, 0,0,0,0, "100,50", "0,0,0,0");
|
||||||
|
_assertPixel(canvas, 0,50, 0,0,0,0, "0,50", "0,0,0,0");
|
||||||
|
_assertPixel(canvas, 100,0, 0,0,0,0, "100,0", "0,0,0,0");
|
||||||
|
t.done();
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
2d.line: "line-styles"
|
2d.line: "line-styles"
|
||||||
2d.path: "path-objects"
|
2d.path: "path-objects"
|
||||||
2d.imageData: "pixel-manipulation"
|
2d.imageData: "pixel-manipulation"
|
||||||
|
2d.reset: "reset"
|
||||||
2d.shadow: "shadows"
|
2d.shadow: "shadows"
|
||||||
2d.text.align: "text-styles"
|
2d.text.align: "text-styles"
|
||||||
2d.text.baseline: "text-styles"
|
2d.text.baseline: "text-styles"
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
- name: 2d.reset.basic
|
||||||
|
desc: reset clears to transparent black
|
||||||
|
code: |
|
||||||
|
ctx.fillStyle = '#f00';
|
||||||
|
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
||||||
|
ctx.reset();
|
||||||
|
@assert pixel 0,0 == 0,0,0,0;
|
||||||
|
@assert pixel 50,25 == 0,0,0,0;
|
||||||
|
@assert pixel 25,50 == 0,0,0,0;
|
||||||
|
@assert pixel 100,50 == 0,0,0,0;
|
||||||
|
@assert pixel 0,50 == 0,0,0,0;
|
||||||
|
@assert pixel 100,0 == 0,0,0,0;
|
||||||
|
t.done();
|
|
@ -11,17 +11,25 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
<body>
|
||||||
|
<video width="250" height="100" id="contained" style="contain: size;"></video>
|
||||||
<script>
|
<script>
|
||||||
let t = async_test("Video width and height attributes are not used to infer aspect-ratio");
|
let t = async_test("Video width and height attributes are not used to infer aspect-ratio");
|
||||||
function assert_ratio(img, expected) {
|
function assert_ratio(img, expected) {
|
||||||
let epsilon = 0.001;
|
let epsilon = 0.001;
|
||||||
assert_approx_equals(parseInt(getComputedStyle(img).width, 10) / parseInt(getComputedStyle(img).height, 10), expected, epsilon);
|
assert_approx_equals(parseInt(getComputedStyle(img).width, 10) / parseInt(getComputedStyle(img).height, 10), expected, epsilon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.step(function() {
|
||||||
|
var video = document.getElementById("contained");
|
||||||
|
video.src = getVideoURI('/media/2x2-green');
|
||||||
|
assert_ratio(video, 2.5);
|
||||||
|
}, "contain:size aspect ratio");
|
||||||
|
|
||||||
// Create and append a new video and immediately check the ratio.
|
// Create and append a new video and immediately check the ratio.
|
||||||
// This is not racy because the spec requires the user agent to queue a task:
|
// This is not racy because the spec requires the user agent to queue a task:
|
||||||
// https://html.spec.whatwg.org/multipage/media.html#concept-media-load-algorithm
|
// https://html.spec.whatwg.org/multipage/media.html#concept-media-load-algorithm
|
||||||
t.step(function() {
|
t.step(function() {
|
||||||
var video = document.createElement("video");
|
video = document.createElement("video");
|
||||||
video.setAttribute("width", "250");
|
video.setAttribute("width", "250");
|
||||||
video.setAttribute("height", "100");
|
video.setAttribute("height", "100");
|
||||||
video.src = getVideoURI('/media/2x2-green');
|
video.src = getVideoURI('/media/2x2-green');
|
||||||
|
@ -35,5 +43,5 @@ t.step(function() {
|
||||||
// When loaded this video is square.
|
// When loaded this video is square.
|
||||||
assert_ratio(video, 1);
|
assert_ratio(video, 1);
|
||||||
});
|
});
|
||||||
});
|
}, "aspect ratio for regular video");
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -107,6 +107,7 @@ CONSOLE: console/*
|
||||||
CONSOLE: js/builtins/weakrefs/resources/maybe-garbage-collect.js
|
CONSOLE: js/builtins/weakrefs/resources/maybe-garbage-collect.js
|
||||||
CONSOLE: resources/check-layout-th.js
|
CONSOLE: resources/check-layout-th.js
|
||||||
CONSOLE: resources/chromium/*
|
CONSOLE: resources/chromium/*
|
||||||
|
CONSOLE: resources/testharness.js
|
||||||
CONSOLE: streams/resources/test-utils.js
|
CONSOLE: streams/resources/test-utils.js
|
||||||
CONSOLE: service-workers/service-worker/resources/navigation-redirect-other-origin.html
|
CONSOLE: service-workers/service-worker/resources/navigation-redirect-other-origin.html
|
||||||
CONSOLE: service-workers/service-worker/navigation-redirect.https.html
|
CONSOLE: service-workers/service-worker/navigation-redirect.https.html
|
||||||
|
|
|
@ -222,7 +222,7 @@ class HTMLItem(pytest.Item, pytest.Collector):
|
||||||
# one
|
# one
|
||||||
for obj in [summarized, self.expected]:
|
for obj in [summarized, self.expected]:
|
||||||
obj["summarized_asserts"].sort(
|
obj["summarized_asserts"].sort(
|
||||||
key=lambda x: (x["test"], x["status"], x["assert_name"], tuple(x["args"])))
|
key=lambda x: (x["test"] or "", x["status"], x["assert_name"], tuple(x["args"])))
|
||||||
|
|
||||||
assert summarized == self.expected
|
assert summarized == self.expected
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
importScripts("/resources/testharness.js");
|
||||||
|
|
||||||
|
// Regression test for https://github.com/web-platform-tests/wpt/issues/27299,
|
||||||
|
// where we broke the ability for a setup function in a worker to contain an
|
||||||
|
// assertion (even a passing one).
|
||||||
|
setup(function() {
|
||||||
|
assert_true(true, "True is true");
|
||||||
|
});
|
||||||
|
|
||||||
|
// We must define at least one test for the harness, though it is not what we
|
||||||
|
// are testing here.
|
||||||
|
test(function() {
|
||||||
|
assert_false(false, "False is false");
|
||||||
|
}, 'Worker test');
|
|
@ -0,0 +1,106 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="variant" content="?keep-promise">
|
||||||
|
<title>Setup function in a service worker</title>
|
||||||
|
<script src="../../variants.js"></script>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Setup function in a service worker</h1>
|
||||||
|
<p>This test assumes that the browser supports <a href="http://www.w3.org/TR/service-workers/">ServiceWorkers</a>.
|
||||||
|
<div id="log"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
test(function(t) {
|
||||||
|
assert_true("serviceWorker" in navigator,
|
||||||
|
"navigator.serviceWorker exists");
|
||||||
|
}, "Browser supports ServiceWorker");
|
||||||
|
|
||||||
|
promise_test(function() {
|
||||||
|
// Since the service worker registration could be in an indeterminate
|
||||||
|
// state (due to, for example, a previous test run failing), we start by
|
||||||
|
// unregstering our service worker and then registering it again.
|
||||||
|
var scope = "service-worker-scope";
|
||||||
|
var worker_url = "setup-function-worker.js";
|
||||||
|
|
||||||
|
return navigator.serviceWorker.register(worker_url, {scope: scope})
|
||||||
|
.then(function(registration) {
|
||||||
|
return registration.unregister();
|
||||||
|
}).then(function() {
|
||||||
|
return navigator.serviceWorker.register(worker_url, {scope: scope});
|
||||||
|
}).then(function(registration) {
|
||||||
|
add_completion_callback(function() {
|
||||||
|
registration.unregister();
|
||||||
|
});
|
||||||
|
|
||||||
|
return new Promise(function(resolve) {
|
||||||
|
registration.addEventListener("updatefound", function() {
|
||||||
|
resolve(registration.installing);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).then(function(worker) {
|
||||||
|
fetch_tests_from_worker(worker);
|
||||||
|
});
|
||||||
|
}, "Register ServiceWorker");
|
||||||
|
</script>
|
||||||
|
<script type="text/json" id="expected">
|
||||||
|
{
|
||||||
|
"summarized_status": {
|
||||||
|
"status_string": "OK",
|
||||||
|
"message": null
|
||||||
|
},
|
||||||
|
"summarized_tests": [
|
||||||
|
{
|
||||||
|
"status_string": "PASS",
|
||||||
|
"name": "Browser supports ServiceWorker",
|
||||||
|
"properties": {},
|
||||||
|
"message": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"message": null,
|
||||||
|
"name": "Register ServiceWorker",
|
||||||
|
"properties": {},
|
||||||
|
"status_string": "PASS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"message": null,
|
||||||
|
"name": "Worker test",
|
||||||
|
"properties": {},
|
||||||
|
"status_string": "PASS"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"summarized_asserts": [
|
||||||
|
{
|
||||||
|
"assert_name": "assert_true",
|
||||||
|
"test": "Browser supports ServiceWorker",
|
||||||
|
"args": [
|
||||||
|
"true",
|
||||||
|
"\"navigator.serviceWorker exists\""
|
||||||
|
],
|
||||||
|
"status": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"assert_name": "assert_true",
|
||||||
|
"test": null,
|
||||||
|
"args": [
|
||||||
|
"true",
|
||||||
|
"\"True is true\""
|
||||||
|
],
|
||||||
|
"status": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"assert_name": "assert_false",
|
||||||
|
"test": "Worker test",
|
||||||
|
"args": [
|
||||||
|
"false",
|
||||||
|
"\"False is false\""
|
||||||
|
],
|
||||||
|
"status": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "complete"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -15,7 +15,6 @@ policies and contribution forms [3].
|
||||||
|
|
||||||
(function (global_scope)
|
(function (global_scope)
|
||||||
{
|
{
|
||||||
var debug = false;
|
|
||||||
// default timeout is 10 seconds, test can override if needed
|
// default timeout is 10 seconds, test can override if needed
|
||||||
var settings = {
|
var settings = {
|
||||||
output:true,
|
output:true,
|
||||||
|
@ -24,7 +23,8 @@ policies and contribution forms [3].
|
||||||
"long":60000
|
"long":60000
|
||||||
},
|
},
|
||||||
test_timeout:null,
|
test_timeout:null,
|
||||||
message_events: ["start", "test_state", "result", "completion"]
|
message_events: ["start", "test_state", "result", "completion"],
|
||||||
|
debug: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
var xhtml_ns = "http://www.w3.org/1999/xhtml";
|
var xhtml_ns = "http://www.w3.org/1999/xhtml";
|
||||||
|
@ -132,11 +132,7 @@ policies and contribution forms [3].
|
||||||
if (has_selector) {
|
if (has_selector) {
|
||||||
try {
|
try {
|
||||||
w[selector].apply(undefined, callback_args);
|
w[selector].apply(undefined, callback_args);
|
||||||
} catch (e) {
|
} catch (e) {}
|
||||||
if (debug) {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (supports_post_message(w) && w !== self) {
|
if (supports_post_message(w) && w !== self) {
|
||||||
|
@ -1190,7 +1186,10 @@ policies and contribution forms [3].
|
||||||
let status = Test.statuses.TIMEOUT;
|
let status = Test.statuses.TIMEOUT;
|
||||||
let stack = null;
|
let stack = null;
|
||||||
try {
|
try {
|
||||||
if (settings.output) {
|
if (settings.debug) {
|
||||||
|
console.debug("ASSERT", name, tests.current_test.name, args);
|
||||||
|
}
|
||||||
|
if (tests.output) {
|
||||||
tests.set_assert(name, ...args);
|
tests.set_assert(name, ...args);
|
||||||
}
|
}
|
||||||
rv = f(...args);
|
rv = f(...args);
|
||||||
|
@ -1205,10 +1204,10 @@ policies and contribution forms [3].
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
if (settings.output && !stack) {
|
if (tests.output && !stack) {
|
||||||
stack = get_stack();
|
stack = get_stack();
|
||||||
}
|
}
|
||||||
if (settings.output) {
|
if (tests.output) {
|
||||||
tests.set_assert_status(status, stack);
|
tests.set_assert_status(status, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2064,6 +2063,9 @@ policies and contribution forms [3].
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.debug && this.phase !== this.phases.STARTED) {
|
||||||
|
console.log("TEST START", this.name);
|
||||||
|
}
|
||||||
this.phase = this.phases.STARTED;
|
this.phase = this.phases.STARTED;
|
||||||
//If we don't get a result before the harness times out that will be a test timeout
|
//If we don't get a result before the harness times out that will be a test timeout
|
||||||
this.set_status(this.TIMEOUT, "Test timed out");
|
this.set_status(this.TIMEOUT, "Test timed out");
|
||||||
|
@ -2082,6 +2084,10 @@ policies and contribution forms [3].
|
||||||
this_obj = this;
|
this_obj = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.debug) {
|
||||||
|
console.debug("TEST STEP", this.name);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return func.apply(this_obj, Array.prototype.slice.call(arguments, 2));
|
return func.apply(this_obj, Array.prototype.slice.call(arguments, 2));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -2314,6 +2320,12 @@ policies and contribution forms [3].
|
||||||
clearTimeout(this.timeout_id);
|
clearTimeout(this.timeout_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.debug) {
|
||||||
|
console.log("TEST DONE",
|
||||||
|
this.status,
|
||||||
|
this.name,)
|
||||||
|
}
|
||||||
|
|
||||||
this.cleanup();
|
this.cleanup();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2629,7 +2641,7 @@ policies and contribution forms [3].
|
||||||
var record = new AssertRecord();
|
var record = new AssertRecord();
|
||||||
record.assert_name = assert.assert_name;
|
record.assert_name = assert.assert_name;
|
||||||
record.args = assert.args;
|
record.args = assert.args;
|
||||||
record.test = this.tests[assert.test.index];
|
record.test = assert.test != null ? this.tests[assert.test.index] : null;
|
||||||
record.status = assert.status;
|
record.status = assert.status;
|
||||||
record.stack = assert.stack;
|
record.stack = assert.stack;
|
||||||
tests.asserts_run.push(record);
|
tests.asserts_run.push(record);
|
||||||
|
@ -2768,6 +2780,7 @@ policies and contribution forms [3].
|
||||||
|
|
||||||
this.current_test = null;
|
this.current_test = null;
|
||||||
this.asserts_run = [];
|
this.asserts_run = [];
|
||||||
|
this.output = settings.output;
|
||||||
|
|
||||||
this.status = new TestsStatus();
|
this.status = new TestsStatus();
|
||||||
|
|
||||||
|
@ -2816,6 +2829,8 @@ policies and contribution forms [3].
|
||||||
}
|
}
|
||||||
} else if (p == "hide_test_state") {
|
} else if (p == "hide_test_state") {
|
||||||
this.hide_test_state = value;
|
this.hide_test_state = value;
|
||||||
|
} else if (p == "output") {
|
||||||
|
this.output = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,7 @@ Consider installing certutil via your OS package manager or directly.""")
|
||||||
channel=kwargs["browser_channel"])
|
channel=kwargs["browser_channel"])
|
||||||
kwargs["prefs_root"] = prefs_root
|
kwargs["prefs_root"] = prefs_root
|
||||||
|
|
||||||
if kwargs["headless"] is None:
|
if kwargs["headless"] is None and not kwargs["debug_test"]:
|
||||||
kwargs["headless"] = True
|
kwargs["headless"] = True
|
||||||
logger.info("Running in headless mode, pass --no-headless to disable")
|
logger.info("Running in headless mode, pass --no-headless to disable")
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
|
||||||
"config": config,
|
"config": config,
|
||||||
"browser_channel": kwargs["browser_channel"],
|
"browser_channel": kwargs["browser_channel"],
|
||||||
"headless": kwargs["headless"],
|
"headless": kwargs["headless"],
|
||||||
"preload_browser": kwargs["preload_browser"],
|
"preload_browser": kwargs["preload_browser"] and not kwargs["pause_after_test"] and not kwargs["num_test_groups"] == 1,
|
||||||
"specialpowers_path": kwargs["specialpowers_path"]}
|
"specialpowers_path": kwargs["specialpowers_path"]}
|
||||||
|
|
||||||
|
|
||||||
|
@ -158,6 +158,7 @@ def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_da
|
||||||
executor_kwargs["debug"] = run_info_data["debug"]
|
executor_kwargs["debug"] = run_info_data["debug"]
|
||||||
executor_kwargs["ccov"] = run_info_data.get("ccov", False)
|
executor_kwargs["ccov"] = run_info_data.get("ccov", False)
|
||||||
executor_kwargs["browser_version"] = run_info_data.get("browser_version")
|
executor_kwargs["browser_version"] = run_info_data.get("browser_version")
|
||||||
|
executor_kwargs["debug_test"] = kwargs["debug_test"]
|
||||||
return executor_kwargs
|
return executor_kwargs
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ class TestEnvironment(object):
|
||||||
"""Context manager that owns the test environment i.e. the http and
|
"""Context manager that owns the test environment i.e. the http and
|
||||||
websockets servers"""
|
websockets servers"""
|
||||||
def __init__(self, test_paths, testharness_timeout_multipler,
|
def __init__(self, test_paths, testharness_timeout_multipler,
|
||||||
pause_after_test, debug_info, options, ssl_config, env_extras,
|
pause_after_test, debug_test, debug_info, options, ssl_config, env_extras,
|
||||||
enable_quic=False, mojojs_path=None):
|
enable_quic=False, mojojs_path=None):
|
||||||
self.test_paths = test_paths
|
self.test_paths = test_paths
|
||||||
self.server = None
|
self.server = None
|
||||||
|
@ -63,6 +63,7 @@ class TestEnvironment(object):
|
||||||
self.config = None
|
self.config = None
|
||||||
self.testharness_timeout_multipler = testharness_timeout_multipler
|
self.testharness_timeout_multipler = testharness_timeout_multipler
|
||||||
self.pause_after_test = pause_after_test
|
self.pause_after_test = pause_after_test
|
||||||
|
self.debug_test = debug_test
|
||||||
self.test_server_port = options.pop("test_server_port", True)
|
self.test_server_port = options.pop("test_server_port", True)
|
||||||
self.debug_info = debug_info
|
self.debug_info = debug_info
|
||||||
self.options = options if options is not None else {}
|
self.options = options if options is not None else {}
|
||||||
|
@ -195,7 +196,8 @@ class TestEnvironment(object):
|
||||||
(self.options.get("testharnessreport", "testharnessreport.js"),
|
(self.options.get("testharnessreport", "testharnessreport.js"),
|
||||||
{"output": self.pause_after_test,
|
{"output": self.pause_after_test,
|
||||||
"timeout_multiplier": self.testharness_timeout_multipler,
|
"timeout_multiplier": self.testharness_timeout_multipler,
|
||||||
"explicit_timeout": "true" if self.debug_info is not None else "false"},
|
"explicit_timeout": "true" if self.debug_info is not None else "false",
|
||||||
|
"debug": "true" if self.debug_test else "false"},
|
||||||
"text/javascript;charset=utf8",
|
"text/javascript;charset=utf8",
|
||||||
"/resources/testharnessreport.js")]:
|
"/resources/testharnessreport.js")]:
|
||||||
path = os.path.normpath(os.path.join(here, path))
|
path = os.path.normpath(os.path.join(here, path))
|
||||||
|
|
|
@ -42,7 +42,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||||
# want to view the results, however, the executor has to skip that cleanup.
|
# want to view the results, however, the executor has to skip that cleanup.
|
||||||
if kwargs["pause_after_test"] or kwargs["pause_on_unexpected"]:
|
if kwargs["pause_after_test"] or kwargs["pause_on_unexpected"]:
|
||||||
executor_kwargs["cleanup_after_test"] = False
|
executor_kwargs["cleanup_after_test"] = False
|
||||||
|
executor_kwargs["debug_test"] = kwargs["debug_test"]
|
||||||
return executor_kwargs
|
return executor_kwargs
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,8 @@ from .protocol import (ActionSequenceProtocolPart,
|
||||||
GenerateTestReportProtocolPart,
|
GenerateTestReportProtocolPart,
|
||||||
VirtualAuthenticatorProtocolPart,
|
VirtualAuthenticatorProtocolPart,
|
||||||
SetPermissionProtocolPart,
|
SetPermissionProtocolPart,
|
||||||
PrintProtocolPart)
|
PrintProtocolPart,
|
||||||
|
DebugProtocolPart)
|
||||||
from ..webdriver_server import GeckoDriverServer
|
from ..webdriver_server import GeckoDriverServer
|
||||||
|
|
||||||
|
|
||||||
|
@ -625,6 +626,30 @@ render('%s').then(result => callback(result))""" % pdf_base64, new_sandbox=False
|
||||||
finally:
|
finally:
|
||||||
_switch_to_window(self.marionette, handle)
|
_switch_to_window(self.marionette, handle)
|
||||||
|
|
||||||
|
|
||||||
|
class MarionetteDebugProtocolPart(DebugProtocolPart):
|
||||||
|
def setup(self):
|
||||||
|
self.marionette = self.parent.marionette
|
||||||
|
|
||||||
|
def load_devtools(self):
|
||||||
|
with self.marionette.using_context(self.marionette.CONTEXT_CHROME):
|
||||||
|
self.parent.base.execute_script("""
|
||||||
|
const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
|
||||||
|
const { TargetFactory } = require("devtools/client/framework/target");
|
||||||
|
const { gDevTools } = require("devtools/client/framework/devtools");
|
||||||
|
|
||||||
|
const callback = arguments[arguments.length - 1];
|
||||||
|
|
||||||
|
async function loadDevTools() {
|
||||||
|
const target = await TargetFactory.forTab(window.gBrowser.selectedTab);
|
||||||
|
await gDevTools.showToolbox(target, "webconsole", "window");
|
||||||
|
}
|
||||||
|
|
||||||
|
loadDevTools().catch(() => dump("Devtools failed to load"))
|
||||||
|
.then(callback);
|
||||||
|
""", asynchronous=True)
|
||||||
|
|
||||||
|
|
||||||
class MarionetteProtocol(Protocol):
|
class MarionetteProtocol(Protocol):
|
||||||
implements = [MarionetteBaseProtocolPart,
|
implements = [MarionetteBaseProtocolPart,
|
||||||
MarionetteTestharnessProtocolPart,
|
MarionetteTestharnessProtocolPart,
|
||||||
|
@ -641,7 +666,8 @@ class MarionetteProtocol(Protocol):
|
||||||
MarionetteGenerateTestReportProtocolPart,
|
MarionetteGenerateTestReportProtocolPart,
|
||||||
MarionetteVirtualAuthenticatorProtocolPart,
|
MarionetteVirtualAuthenticatorProtocolPart,
|
||||||
MarionetteSetPermissionProtocolPart,
|
MarionetteSetPermissionProtocolPart,
|
||||||
MarionettePrintProtocolPart]
|
MarionettePrintProtocolPart,
|
||||||
|
MarionetteDebugProtocolPart]
|
||||||
|
|
||||||
def __init__(self, executor, browser, capabilities=None, timeout_multiplier=1, e10s=True, ccov=False):
|
def __init__(self, executor, browser, capabilities=None, timeout_multiplier=1, e10s=True, ccov=False):
|
||||||
do_delayed_imports()
|
do_delayed_imports()
|
||||||
|
@ -770,7 +796,7 @@ class MarionetteTestharnessExecutor(TestharnessExecutor):
|
||||||
|
|
||||||
def __init__(self, logger, browser, server_config, timeout_multiplier=1,
|
def __init__(self, logger, browser, server_config, timeout_multiplier=1,
|
||||||
close_after_done=True, debug_info=None, capabilities=None,
|
close_after_done=True, debug_info=None, capabilities=None,
|
||||||
debug=False, ccov=False, **kwargs):
|
debug=False, ccov=False, debug_test=False, **kwargs):
|
||||||
"""Marionette-based executor for testharness.js tests"""
|
"""Marionette-based executor for testharness.js tests"""
|
||||||
TestharnessExecutor.__init__(self, logger, browser, server_config,
|
TestharnessExecutor.__init__(self, logger, browser, server_config,
|
||||||
timeout_multiplier=timeout_multiplier,
|
timeout_multiplier=timeout_multiplier,
|
||||||
|
@ -786,6 +812,7 @@ class MarionetteTestharnessExecutor(TestharnessExecutor):
|
||||||
self.close_after_done = close_after_done
|
self.close_after_done = close_after_done
|
||||||
self.window_id = str(uuid.uuid4())
|
self.window_id = str(uuid.uuid4())
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
|
self.debug_test = debug_test
|
||||||
|
|
||||||
self.install_extensions = browser.extensions
|
self.install_extensions = browser.extensions
|
||||||
|
|
||||||
|
@ -854,6 +881,9 @@ class MarionetteTestharnessExecutor(TestharnessExecutor):
|
||||||
self.protocol.base.set_window(test_window)
|
self.protocol.base.set_window(test_window)
|
||||||
protocol.testharness.test_window_loaded()
|
protocol.testharness.test_window_loaded()
|
||||||
|
|
||||||
|
if self.debug_test:
|
||||||
|
self.protocol.debug.load_devtools()
|
||||||
|
|
||||||
handler = CallbackHandler(self.logger, protocol, test_window)
|
handler = CallbackHandler(self.logger, protocol, test_window)
|
||||||
protocol.marionette.navigate(url)
|
protocol.marionette.navigate(url)
|
||||||
while True:
|
while True:
|
||||||
|
|
|
@ -515,3 +515,15 @@ class PrintProtocolPart(ProtocolPart):
|
||||||
def render_as_pdf(self, width, height):
|
def render_as_pdf(self, width, height):
|
||||||
"""Output document as PDF"""
|
"""Output document as PDF"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class DebugProtocolPart(ProtocolPart):
|
||||||
|
"""Protocol part for debugging test failures."""
|
||||||
|
__metaclass__ = ABCMeta
|
||||||
|
|
||||||
|
name = "debug"
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def load_devtools(self):
|
||||||
|
"""Load devtools in the current window"""
|
||||||
|
pass
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
var props = {output:%(output)d};
|
var props = {output:%(output)d, debug: %(debug)s};
|
||||||
var start_loc = document.createElement('a');
|
var start_loc = document.createElement('a');
|
||||||
start_loc.href = location.href;
|
start_loc.href = location.href;
|
||||||
setup(props);
|
setup(props);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
setup({output:%(output)d});
|
setup({output:%(output)d, debug: %(debug)s});
|
||||||
|
|
||||||
add_completion_callback(function() {
|
add_completion_callback(function() {
|
||||||
add_completion_callback(function (tests, status) {
|
add_completion_callback(function (tests, status) {
|
||||||
|
|
|
@ -73,6 +73,7 @@ window.__wptrunner_process_next_event = function() {
|
||||||
var props = {output: %(output)d,
|
var props = {output: %(output)d,
|
||||||
timeout_multiplier: %(timeout_multiplier)s,
|
timeout_multiplier: %(timeout_multiplier)s,
|
||||||
explicit_timeout: %(explicit_timeout)s,
|
explicit_timeout: %(explicit_timeout)s,
|
||||||
|
debug: %(debug)s,
|
||||||
message_events: ["completion"]};
|
message_events: ["completion"]};
|
||||||
|
|
||||||
add_completion_callback(function(tests, harness_status) {
|
add_completion_callback(function(tests, harness_status) {
|
||||||
|
|
|
@ -41,6 +41,7 @@ def test_webkitgtk_certificate_domain_list(product):
|
||||||
kwargs["webdriver_binary"] = None
|
kwargs["webdriver_binary"] = None
|
||||||
kwargs["pause_after_test"] = False
|
kwargs["pause_after_test"] = False
|
||||||
kwargs["pause_on_unexpected"] = False
|
kwargs["pause_on_unexpected"] = False
|
||||||
|
kwargs["debug_test"] = False
|
||||||
with ConfigBuilder(browser_host="example.net",
|
with ConfigBuilder(browser_host="example.net",
|
||||||
alternate_hosts={"alt": "example.org"},
|
alternate_hosts={"alt": "example.org"},
|
||||||
subdomains={"a", "b"},
|
subdomains={"a", "b"},
|
||||||
|
|
|
@ -42,6 +42,7 @@ def test_server_start_config(product):
|
||||||
with environment.TestEnvironment(test_paths,
|
with environment.TestEnvironment(test_paths,
|
||||||
1,
|
1,
|
||||||
False,
|
False,
|
||||||
|
False,
|
||||||
None,
|
None,
|
||||||
env_options,
|
env_options,
|
||||||
{"type": "none"},
|
{"type": "none"},
|
||||||
|
|
|
@ -170,6 +170,8 @@ scheme host and port.""")
|
||||||
help="Halt the test runner after each test (this happens by default if only a single test is run)")
|
help="Halt the test runner after each test (this happens by default if only a single test is run)")
|
||||||
debugging_group.add_argument('--no-pause-after-test', dest="pause_after_test", action="store_false",
|
debugging_group.add_argument('--no-pause-after-test', dest="pause_after_test", action="store_false",
|
||||||
help="Don't halt the test runner irrespective of the number of tests run")
|
help="Don't halt the test runner irrespective of the number of tests run")
|
||||||
|
debugging_group.add_argument('--debug-test', dest="debug_test", action="store_true",
|
||||||
|
help="Run tests with additional debugging features enabled")
|
||||||
|
|
||||||
debugging_group.add_argument('--pause-on-unexpected', action="store_true",
|
debugging_group.add_argument('--pause-on-unexpected', action="store_true",
|
||||||
help="Halt the test runner when an unexpected result is encountered")
|
help="Halt the test runner when an unexpected result is encountered")
|
||||||
|
|
|
@ -141,6 +141,8 @@ def get_pause_after_test(test_loader, **kwargs):
|
||||||
return False
|
return False
|
||||||
if kwargs["headless"]:
|
if kwargs["headless"]:
|
||||||
return False
|
return False
|
||||||
|
if kwargs["debug_test"]:
|
||||||
|
return True
|
||||||
tests = test_loader.tests
|
tests = test_loader.tests
|
||||||
is_single_testharness = (sum(len(item) for item in itervalues(tests)) == 1 and
|
is_single_testharness = (sum(len(item) for item in itervalues(tests)) == 1 and
|
||||||
len(tests.get("testharness", [])) == 1)
|
len(tests.get("testharness", [])) == 1)
|
||||||
|
@ -224,6 +226,7 @@ def run_tests(config, test_paths, product, **kwargs):
|
||||||
with env.TestEnvironment(test_paths,
|
with env.TestEnvironment(test_paths,
|
||||||
testharness_timeout_multipler,
|
testharness_timeout_multipler,
|
||||||
kwargs["pause_after_test"],
|
kwargs["pause_after_test"],
|
||||||
|
kwargs["debug_test"],
|
||||||
kwargs["debug_info"],
|
kwargs["debug_info"],
|
||||||
product.env_options,
|
product.env_options,
|
||||||
ssl_config,
|
ssl_config,
|
||||||
|
@ -284,6 +287,7 @@ def run_tests(config, test_paths, product, **kwargs):
|
||||||
test_type,
|
test_type,
|
||||||
run_info,
|
run_info,
|
||||||
config=test_environment.config,
|
config=test_environment.config,
|
||||||
|
num_test_groups=len(test_groups),
|
||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
executor_cls = product.executor_classes.get(test_type)
|
executor_cls = product.executor_classes.get(test_type)
|
||||||
|
|
|
@ -28,6 +28,13 @@ gen-bundle \
|
||||||
-dir subresource/ \
|
-dir subresource/ \
|
||||||
-o wbn/subresource.wbn
|
-o wbn/subresource.wbn
|
||||||
|
|
||||||
|
gen-bundle \
|
||||||
|
-version b1 \
|
||||||
|
-baseURL $wpt_test_http_origin/web-bundle/resources/wbn/static-element/ \
|
||||||
|
-primaryURL $wpt_test_http_origin/web-bundle/resources/wbn/static-element/resources/style.css \
|
||||||
|
-dir static-element/ \
|
||||||
|
-o wbn/static-element.wbn
|
||||||
|
|
||||||
gen-bundle \
|
gen-bundle \
|
||||||
-version b1 \
|
-version b1 \
|
||||||
-baseURL $wpt_test_http_origin/web-bundle/resources/wbn/dynamic/ \
|
-baseURL $wpt_test_http_origin/web-bundle/resources/wbn/dynamic/ \
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
const out_of_scope_script_result = 'loaded from webbundle';
|
|
@ -0,0 +1 @@
|
||||||
|
const resources_script_result = 'loaded from webbundle';
|
|
@ -0,0 +1,3 @@
|
||||||
|
#resources_style_imported_from_file_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#resources_style_imported_from_tag_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import 'style-imported-from-file.css';
|
||||||
|
|
||||||
|
#resources_style_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
const scopes_script_result = 'loaded from webbundle';
|
|
@ -0,0 +1,3 @@
|
||||||
|
#scopes_style_imported_from_file_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#scopes_style_imported_from_tag_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import 'style-imported-from-file.css';
|
||||||
|
|
||||||
|
#scopes_style_target {
|
||||||
|
color: blue;
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
const out_of_scope_script_result = 'loaded from network';
|
|
@ -0,0 +1 @@
|
||||||
|
const resources_script_result = 'loaded from network';
|
|
@ -0,0 +1,3 @@
|
||||||
|
#resources_style_imported_from_file_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#resources_style_imported_from_tag_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import 'style-imported-from-file.css';
|
||||||
|
|
||||||
|
#resources_style_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
const scopes_script_result = 'loaded from network';
|
|
@ -0,0 +1,3 @@
|
||||||
|
#scopes_style_imported_from_file_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
#scopes_style_imported_from_tag_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import 'style-imported-from-file.css';
|
||||||
|
|
||||||
|
#scopes_style_target {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>WebBundle subresource loading for static elements with a base element</title>
|
||||||
|
<link
|
||||||
|
rel="help"
|
||||||
|
href="https://github.com/WICG/webpackage/blob/master/explainers/subresource-loading.md"
|
||||||
|
/>
|
||||||
|
<base href="../resources/wbn/static-element/">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<body>
|
||||||
|
<link
|
||||||
|
rel="webbundle"
|
||||||
|
href="../static-element.wbn"
|
||||||
|
resources="
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/script.js
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style.css
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style-imported-from-file.css
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style-imported-from-tag.css"
|
||||||
|
scopes="http://web-platform.test:8001/web-bundle/resources/wbn/static-element/scopes/"
|
||||||
|
/>
|
||||||
|
<style type="text/css">
|
||||||
|
@import 'resources/style-imported-from-tag.css';
|
||||||
|
@import 'scopes/style-imported-from-tag.css';
|
||||||
|
</style>
|
||||||
|
<link href="resources/style.css" rel=stylesheet>
|
||||||
|
<link href="scopes/style.css" rel=stylesheet>
|
||||||
|
<script src="resources/script.js"></script>
|
||||||
|
<script src="scopes/script.js"></script>
|
||||||
|
<script src="out-of-scope/script.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const onLoadPromise = new Promise((resolve) => {
|
||||||
|
window.addEventListener('load', resolve, false);
|
||||||
|
});
|
||||||
|
promise_test(async () => {
|
||||||
|
await onLoadPromise;
|
||||||
|
|
||||||
|
assert_equals(resources_script_result, 'loaded from webbundle');
|
||||||
|
assert_equals(scopes_script_result, 'loaded from webbundle');
|
||||||
|
assert_equals(out_of_scope_script_result, 'loaded from network');
|
||||||
|
|
||||||
|
['resources_', 'scopes_'].forEach((type) => {
|
||||||
|
['style_target',
|
||||||
|
'style_imported_from_file_target',
|
||||||
|
'style_imported_from_tag_target'].forEach((target) => {
|
||||||
|
const element = document.createElement('div');
|
||||||
|
element.id = type + target;
|
||||||
|
document.body.appendChild(element);
|
||||||
|
assert_equals(window.getComputedStyle(element).color,
|
||||||
|
'rgb(0, 0, 255)',
|
||||||
|
element.id + ' color must be blue');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, "Subresources from static elements should be loaded from web bundle.");
|
||||||
|
</script>
|
||||||
|
</body>
|
|
@ -0,0 +1,55 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>WebBundle subresource loading for static elements</title>
|
||||||
|
<link
|
||||||
|
rel="help"
|
||||||
|
href="https://github.com/WICG/webpackage/blob/master/explainers/subresource-loading.md"
|
||||||
|
/>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<body>
|
||||||
|
<link
|
||||||
|
rel="webbundle"
|
||||||
|
href="../resources/wbn/static-element.wbn"
|
||||||
|
resources="
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/script.js
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style.css
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style-imported-from-file.css
|
||||||
|
http://web-platform.test:8001/web-bundle/resources/wbn/static-element/resources/style-imported-from-tag.css"
|
||||||
|
scopes="http://web-platform.test:8001/web-bundle/resources/wbn/static-element/scopes/"
|
||||||
|
/>
|
||||||
|
<style type="text/css">
|
||||||
|
@import '../resources/wbn/static-element/resources/style-imported-from-tag.css';
|
||||||
|
@import '../resources/wbn/static-element/scopes/style-imported-from-tag.css';
|
||||||
|
</style>
|
||||||
|
<link href="../resources/wbn/static-element/resources/style.css" rel=stylesheet>
|
||||||
|
<link href="../resources/wbn/static-element/scopes/style.css" rel=stylesheet>
|
||||||
|
<script src="../resources/wbn/static-element/resources/script.js"></script>
|
||||||
|
<script src="../resources/wbn/static-element/scopes/script.js"></script>
|
||||||
|
<script src="../resources/wbn/static-element/out-of-scope/script.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const onLoadPromise = new Promise((resolve) => {
|
||||||
|
window.addEventListener('load', resolve, false);
|
||||||
|
});
|
||||||
|
promise_test(async () => {
|
||||||
|
await onLoadPromise;
|
||||||
|
|
||||||
|
assert_equals(resources_script_result, 'loaded from webbundle');
|
||||||
|
assert_equals(scopes_script_result, 'loaded from webbundle');
|
||||||
|
assert_equals(out_of_scope_script_result, 'loaded from network');
|
||||||
|
|
||||||
|
['resources_', 'scopes_'].forEach((type) => {
|
||||||
|
['style_target',
|
||||||
|
'style_imported_from_file_target',
|
||||||
|
'style_imported_from_tag_target'].forEach((target) => {
|
||||||
|
const element = document.createElement('div');
|
||||||
|
element.id = type + target;
|
||||||
|
document.body.appendChild(element);
|
||||||
|
assert_equals(window.getComputedStyle(element).color,
|
||||||
|
'rgb(0, 0, 255)',
|
||||||
|
element.id + ' color must be blue');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, "Subresources from static elements should be loaded from web bundle.");
|
||||||
|
</script>
|
||||||
|
</body>
|
Loading…
Add table
Add a link
Reference in a new issue