mirror of
https://github.com/servo/servo.git
synced 2025-07-25 08:10:21 +01:00
Update web-platform-tests to revision 756a676d640e9a772f565964285b2f20f6164fce
This commit is contained in:
parent
a38f28f811
commit
3d5ad91231
3066 changed files with 23973 additions and 26209 deletions
|
@ -7,7 +7,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +0,0 @@
|
||||||
[inline-negative-margin-001.html]
|
|
||||||
[#container 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[minmax-length-percentage-interpolate.html]
|
||||||
|
expected: FAIL
|
|
@ -1,5 +1,5 @@
|
||||||
[elementsFromPoint-iframes.html]
|
[elementsFromPoint-iframes.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[elementsFromPoint on the root document for points in iframe elements]
|
[elementsFromPoint on the root document for points in iframe elements]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[contenttype_txt.html]
|
|
||||||
expected: CRASH
|
|
|
@ -312,3 +312,15 @@
|
||||||
[<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 */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,3 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[X-Content-Type-Options%3A%20'NosniFF']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -18,3 +18,18 @@
|
||||||
[Https downgrade-upgrade object => No headers]
|
[Https downgrade-upgrade object => No headers]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Https downgrade-upgrade object]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Https downgrade-upgrade iframe]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade fetch() api]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Https downgrade-upgrade top level navigation]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade embed]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -18,3 +18,18 @@
|
||||||
[Http upgrade fetch() api => No headers]
|
[Http upgrade fetch() api => No headers]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Http upgrade embed]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Http upgrade top level navigation]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade iframe]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade object]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Http upgrade fetch() api]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_5.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-innerwidth-innerheight.html]
|
[open-features-negative-innerwidth-innerheight.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=-404.5" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404.5" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=-404e1" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=-404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerwidth=-404e1" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,5 @@
|
||||||
[open-features-negative-width-height.html]
|
[open-features-negative-width-height.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=-404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=-404e1" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=-404.5" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404e1" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "width=-404.5" should NOT set "width=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,48 +1,32 @@
|
||||||
[open-features-non-integer-height.html]
|
[open-features-non-integer-height.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405*3" should set "height=405"]
|
[features "height=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405.32" should set "height=405"]
|
[features "height=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405e1" should set "height=405"]
|
[features "height=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405/5" should set "height=405"]
|
[features "height=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405^4" should set "height=405"]
|
[features "height=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405.5" should set "height=405"]
|
[features "height=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405e-1" should set "height=405"]
|
[features "height=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405 " should set "height=405"]
|
[features "height=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=405LLl" should set "height=405"]
|
[features "height=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "height=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "height=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-innerheight.html]
|
[open-features-non-integer-innerheight.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405e-1" should set "height=405"]
|
[features "innerheight=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405LLl" should set "height=405"]
|
[features "innerheight=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405^4" should set "height=405"]
|
[features "innerheight=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405e1" should set "height=405"]
|
[features "innerheight=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405 " should set "height=405"]
|
[features "innerheight=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405/5" should set "height=405"]
|
[features "innerheight=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405.32" should set "height=405"]
|
[features "innerheight=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405.5" should set "height=405"]
|
[features "innerheight=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=405*3" should set "height=405"]
|
[features "innerheight=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "innerheight=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "innerheight=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-left.html]
|
[open-features-non-integer-left.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105e1" should set "left=105"]
|
[features "left=105e1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105 " should set "left=105"]
|
[features "left=105 " should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105/5" should set "left=105"]
|
[features "left=105/5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105e-1" should set "left=105"]
|
[features "left=105e-1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105^4" should set "left=105"]
|
[features "left=105^4" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105LLl" should set "left=105"]
|
[features "left=105LLl" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105.32" should set "left=105"]
|
[features "left=105.32" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105*3" should set "left=105"]
|
[features "left=105*3" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=105.5" should set "left=105"]
|
[features "left=105.5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "left=L104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=/104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "left=_104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-screenx.html]
|
[open-features-non-integer-screenx.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105.5" should set "left=105"]
|
[features "screenx=105.5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105e1" should set "left=105"]
|
[features "screenx=105e1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105 " should set "left=105"]
|
[features "screenx=105 " should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105*3" should set "left=105"]
|
[features "screenx=105*3" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105e-1" should set "left=105"]
|
[features "screenx=105e-1" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105^4" should set "left=105"]
|
[features "screenx=105^4" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105LLl" should set "left=105"]
|
[features "screenx=105LLl" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105/5" should set "left=105"]
|
[features "screenx=105/5" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=105.32" should set "left=105"]
|
[features "screenx=105.32" should set "left=105"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screenx=_104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=L104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screenx=/104" should NOT set "left=104"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,32 @@
|
||||||
[open-features-non-integer-screeny.html]
|
[open-features-non-integer-screeny.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
|
||||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405^4" should set "height=405"]
|
[features "screeny=405^4" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405e-1" should set "height=405"]
|
[features "screeny=405e-1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405LLl" should set "height=405"]
|
[features "screeny=405LLl" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405e1" should set "height=405"]
|
[features "screeny=405e1" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405 " should set "height=405"]
|
[features "screeny=405 " should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405/5" should set "height=405"]
|
[features "screeny=405/5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405*3" should set "height=405"]
|
[features "screeny=405*3" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405.32" should set "height=405"]
|
[features "screeny=405.32" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=405.5" should set "height=405"]
|
[features "screeny=405.5" should set "height=405"]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[features "screeny=_404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=L404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[features "screeny=/404" should NOT set "height=404"]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
[form-submission-algorithm.html]
|
[form-submission-algorithm.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[If form's firing submission events is true, then return; 'submit' event]
|
[If form's firing submission events is true, then return; 'submit' event]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[If form's firing submission events is true, then return; 'invalid' event]
|
[If form's firing submission events is true, then return; 'invalid' event]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Cannot navigate (after constructing the entry list)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[toggleEvent.html]
|
||||||
|
[Calling open twice on 'details' fires only one toggle event]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[promise-rejection-events.html]
|
[promise-rejection-events.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -9,6 +8,3 @@
|
||||||
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
|
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[rejectionhandled is dispatched from a queued task, and not immediately]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,9 @@
|
||||||
[X SNR (-608.3912160578785 dB) is not greater than or equal to 65.737. Got -608.3912160578785.]
|
[X SNR (-608.3912160578785 dB) is not greater than or equal to 65.737. Got -608.3912160578785.]
|
||||||
expected: FAIL
|
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[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.1201954329126364e+35 at index of 20238.\n\t[20238\]\t9.1201954329126364e+35\t-4.7574958205223083e-1\t9.1201954329126364e+35\t1.9170159632239809e+36\t3.8985999999999999e-3\n\tMax RelError of 1.9170159632239809e+36 at index of 20238.\n\t[20238\]\t9.1201954329126364e+35\t-4.7574958205223083e-1\t9.1201954329126364e+35\t1.9170159632239809e+36\t3.8985999999999999e-3\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (-675.9249049743026 dB) is not greater than or equal to 65.737. Got -675.9249049743026.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[WorkerGlobalScope-close.html]
|
|
||||||
[Test sending a message after closing.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
The web-platform-tests Project [](http://irc.w3.org/?channels=testing)
|
The web-platform-tests Project
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
The web-platform-tests Project is a W3C-coordinated attempt to build a
|
The web-platform-tests Project is a W3C-coordinated attempt to build a
|
||||||
|
@ -12,6 +12,30 @@ the promise of working across browsers and devices without needing extra
|
||||||
layers of abstraction to paper over the gaps left by specification
|
layers of abstraction to paper over the gaps left by specification
|
||||||
editors and implementors.
|
editors and implementors.
|
||||||
|
|
||||||
|
The most important sources of information and activity are:
|
||||||
|
|
||||||
|
- [github.com/web-platform-tests/wpt](https://github.com/web-platform-tests/wpt):
|
||||||
|
the canonical location of the project's source code revision history and the
|
||||||
|
discussion forum for changes to the code
|
||||||
|
- [web-platform-tests.org](https://web-platform-tests.org): the documentation
|
||||||
|
website; details how to set up the project, how to write tests, how to give
|
||||||
|
and receive peer review, how to serve as an administrator, and more
|
||||||
|
- [web-platform-tests.live](http://web-platform-tests.live): a public
|
||||||
|
deployment of the test suite, allowing anyone to run the tests by visiting
|
||||||
|
from an Internet-enabled browser of their choice
|
||||||
|
- [wpt.fyi](https://wpt.fyi): an archive of test results collected from an
|
||||||
|
array of web browsers on a regular basis
|
||||||
|
- [Real-time chat room](http://irc.w3.org/?channels=testing): the
|
||||||
|
[IRC](http://www.irchelp.org/) chat room named `#testing` on
|
||||||
|
[irc.w3.org](https://www.w3.org/wiki/IRC); includes participants located
|
||||||
|
around the world, but busiest during the European working day; [all
|
||||||
|
discussion is archived here](https://w3.logbot.info/testing)
|
||||||
|
- [Mailing list](https://lists.w3.org/Archives/Public/public-test-infra/): a
|
||||||
|
public and low-traffic discussion list
|
||||||
|
|
||||||
|
**If you'd like clarification about anything**, don't hesitate to ask in the
|
||||||
|
chat room or on the mailing list.
|
||||||
|
|
||||||
Setting Up the Repo
|
Setting Up the Repo
|
||||||
===================
|
===================
|
||||||
|
|
||||||
|
@ -251,25 +275,3 @@ web-platform-tests root directory to suppress the error reports.
|
||||||
For more details, see the [lint-tool documentation][lint-tool].
|
For more details, see the [lint-tool documentation][lint-tool].
|
||||||
|
|
||||||
[lint-tool]: https://web-platform-tests.org/writing-tests/lint-tool.html
|
[lint-tool]: https://web-platform-tests.org/writing-tests/lint-tool.html
|
||||||
|
|
||||||
Getting Involved
|
|
||||||
================
|
|
||||||
|
|
||||||
If you wish to contribute actively, you're very welcome to join the
|
|
||||||
public-test-infra@w3.org mailing list (low traffic) by
|
|
||||||
[signing up to our mailing list](mailto:public-test-infra-request@w3.org?subject=subscribe).
|
|
||||||
The mailing list is [archived][mailarchive].
|
|
||||||
|
|
||||||
Join us on irc #testing ([irc.w3.org][ircw3org], port 6665). The channel
|
|
||||||
is [archived][ircarchive].
|
|
||||||
|
|
||||||
[contributing]: https://github.com/web-platform-tests/wpt/blob/master/CONTRIBUTING.md
|
|
||||||
[ircw3org]: https://www.w3.org/wiki/IRC
|
|
||||||
[ircarchive]: https://w3.logbot.info/testing
|
|
||||||
[mailarchive]: https://lists.w3.org/Archives/Public/public-test-infra/
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
=============
|
|
||||||
|
|
||||||
* [How to write and review tests](https://web-platform-tests.org/)
|
|
||||||
* [Documentation for the wptserve server](http://wptserve.readthedocs.org/en/latest/)
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
// in a strict sense) to be passed between JavaScript/Python code.
|
// in a strict sense) to be passed between JavaScript/Python code.
|
||||||
|
|
||||||
// Note: So far this document covers:
|
// Note: So far this document covers:
|
||||||
// - resources/common.js : client-side test infra code
|
// - resources/common.sub.js : client-side test infra code
|
||||||
// - scope/ - server-side scripts that serves nested source contexts
|
// - scope/ - server-side scripts that serves nested source contexts
|
||||||
// but doesn't cover:
|
// but doesn't cover:
|
||||||
// - tools/ - generator scripts that generates top-level HTML documents.
|
// - tools/ - generator scripts that generates top-level HTML documents.
|
||||||
|
@ -1081,7 +1081,7 @@ function invokeRequest(subresource, sourceContextList) {
|
||||||
subresource, sourceContextList);
|
subresource, sourceContextList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quick hack to expose invokeRequest when common.js is loaded either
|
// Quick hack to expose invokeRequest when common.sub.js is loaded either
|
||||||
// as a classic or module script.
|
// as a classic or module script.
|
||||||
self.invokeRequest = invokeRequest;
|
self.invokeRequest = invokeRequest;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
%(meta)s
|
%(meta)s
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
<script src="/common/security-features/resources/common.sub.js"></script>
|
||||||
<script>
|
<script>
|
||||||
// Receive a message from the parent and start the test.
|
// Receive a message from the parent and start the test.
|
||||||
function onMessageFromParent(event) {
|
function onMessageFromParent(event) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import util
|
||||||
def main(request, response):
|
def main(request, response):
|
||||||
policyDeliveries = json.loads(request.GET.first('policyDeliveries', '[]'))
|
policyDeliveries = json.loads(request.GET.first('policyDeliveries', '[]'))
|
||||||
worker_type = request.GET.first('type', 'classic')
|
worker_type = request.GET.first('type', 'classic')
|
||||||
commonjs_url = '%s://%s:%s/common/security-features/resources/common.js' % (
|
commonjs_url = '%s://%s:%s/common/security-features/resources/common.sub.js' % (
|
||||||
request.url_parts.scheme, request.url_parts.hostname,
|
request.url_parts.scheme, request.url_parts.hostname,
|
||||||
request.url_parts.port)
|
request.url_parts.port)
|
||||||
if worker_type == 'classic':
|
if worker_type == 'classic':
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
<script src="/common/security-features/resources/common.sub.js"></script>
|
||||||
<!-- The original specification JSON for validating the scenario. -->
|
<!-- The original specification JSON for validating the scenario. -->
|
||||||
<script src="%(spec_json_js)s"></script>
|
<script src="%(spec_json_js)s"></script>
|
||||||
<!-- Internal checking of the tests -->
|
<!-- Internal checking of the tests -->
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
<script src="/common/security-features/resources/common.sub.js"></script>
|
||||||
<script src="%(helper_js)s"></script>
|
<script src="%(helper_js)s"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -58,7 +58,8 @@ class ShouldSkip(Exception):
|
||||||
|
|
||||||
class PolicyDelivery(object):
|
class PolicyDelivery(object):
|
||||||
'''
|
'''
|
||||||
See `@typedef PolicyDelivery` comments in `resources/common.js`.
|
See `@typedef PolicyDelivery` comments in
|
||||||
|
`common/security-features/resources/common.sub.js`.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, delivery_type, key, value):
|
def __init__(self, delivery_type, key, value):
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<link rel="help" href="https://crbug.com/979894">
|
<link rel="help" href="https://crbug.com/979894">
|
||||||
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#inline-width">
|
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#inline-width">
|
||||||
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
<style>
|
<style>
|
||||||
html, body { margin: 0; }
|
html, body { margin: 0; }
|
||||||
div {
|
div {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
<meta content="ahem" name="flags" />
|
<meta content="ahem" name="flags" />
|
||||||
<meta content="'max-width' specifies a fixed maximum used width. If the used width is greater than max-width, then the computed value of max-width is used as the computed value for width." name="assert" />
|
<meta content="'max-width' specifies a fixed maximum used width. If the used width is greater than max-width, then the computed value of max-width is used as the computed value for width." name="assert" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
<style type="text/css"><:
|
||||||
ask on either the [mailing list][public-test-infra] or [IRC][]
|
the canonical location of the project's source code revision history and the
|
||||||
([webclient][web irc], join channel `#testing`); IRC is generally
|
discussion forum for changes to the code
|
||||||
busiest during the European working day but frequently has people on
|
- [web-platform-tests.org](https://web-platform-tests.org): the documentation
|
||||||
it at all times and should probably be the general first port of call
|
website; details how to set up the project, how to write tests, how to give
|
||||||
for any help.
|
and receive peer review, how to serve as an administrator, and more
|
||||||
|
- [web-platform-tests.live](http://web-platform-tests.live): a public
|
||||||
|
deployment of the test suite, allowing anyone to run the tests by visiting
|
||||||
|
from an Internet-enabled browser of their choice
|
||||||
|
- [wpt.fyi](https://wpt.fyi): an archive of test results collected from an
|
||||||
|
array of web browsers on a regular basis
|
||||||
|
- [Real-time chat room](http://irc.w3.org/?channels=testing): the
|
||||||
|
[IRC](http://www.irchelp.org/) chat room named `#testing` on
|
||||||
|
[irc.w3.org](https://www.w3.org/wiki/IRC); includes participants located
|
||||||
|
around the world, but busiest during the European working day; [all
|
||||||
|
discussion is archived here](https://w3.logbot.info/testing)
|
||||||
|
- [Mailing list](https://lists.w3.org/Archives/Public/public-test-infra/): a
|
||||||
|
public and low-traffic discussion list
|
||||||
|
|
||||||
|
**If you'd like clarification about anything**, don't hesitate to ask in the
|
||||||
|
chat room or on the mailing list.
|
||||||
|
|
||||||
## Watch a Talk
|
## Watch a Talk
|
||||||
|
|
||||||
|
@ -55,7 +70,4 @@ free to add yourself to the META.yml file!
|
||||||
admin/index
|
admin/index
|
||||||
```
|
```
|
||||||
|
|
||||||
[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/
|
|
||||||
[IRC]: irc://irc.w3.org:6667/testing
|
|
||||||
[web irc]: http://irc.w3.org
|
|
||||||
[github-intro]: writing-tests/github-intro
|
[github-intro]: writing-tests/github-intro
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// META: global=window,worker
|
// META: global=window,worker
|
||||||
// META: title=EventSource: constructor (invalid URL)
|
// META: title=EventSource: constructor (invalid URL)
|
||||||
// META: script=/resources/idlharness.js
|
|
||||||
|
|
||||||
test(() => {
|
test(() => {
|
||||||
assert_throws('SyntaxError', () => { new EventSource("http://this is invalid/"); });
|
assert_throws('SyntaxError', () => { new EventSource("http://this is invalid/"); });
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html manifest="/fetch/sec-metadata/resources/record-header.py?file=appcache-manifest">
|
<html manifest="/fetch/sec-metadata/resources/record-header.py?file=appcache-manifest{{$id:uuid()}}">
|
||||||
<meta name="timeout" content="long">
|
<meta name="timeout" content="long">
|
||||||
<script src=/resources/testharness.js></script>
|
<script src=/resources/testharness.js></script>
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
<script>
|
<script>
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
window.applicationCache.oncached = window.applicationCache.onnoupdate = window.applicationCache.onerror = t.step_func(e => {
|
window.applicationCache.oncached = window.applicationCache.onnoupdate = window.applicationCache.onerror = t.step_func(e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=appcache-manifest")
|
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=appcache-manifest{{$id}}")
|
||||||
.then(t.step_func(response => response.text()))
|
.then(t.step_func(response => response.text()))
|
||||||
.then(t.step_func_done(text => assert_header_equals(text, {
|
.then(t.step_func_done(text => assert_header_equals(text, {
|
||||||
"dest": "",
|
"dest": "",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<script src=/resources/testharness.js></script>
|
<script src=/resources/testharness.js></script>
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
<script src=/common/security-features/resources/common.js></script>
|
<script src=/common/security-features/resources/common.sub.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||||
<body>
|
<body>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src=/resources/testharness.js></script>
|
<script src=/resources/testharness.js></script>
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||||
|
@ -11,7 +12,7 @@
|
||||||
|
|
||||||
function create_test(host, as, expected) {
|
function create_test(host, as, expected) {
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let nonce = token();
|
let nonce = "{{uuid()}}";
|
||||||
let key = as + nonce;
|
let key = as + nonce;
|
||||||
|
|
||||||
let e = document.createElement('link');
|
let e = document.createElement('link');
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
||||||
<script src=/common/security-features/resources/common.js></script>
|
<script src=/common/security-features/resources/common.sub.js></script>
|
||||||
<script src=/common/utils.js></script>
|
<script src=/common/utils.js></script>
|
||||||
<style>
|
<style>
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: myDowngradeUpgradeFont;
|
font-family: myDowngradeUpgradeFont;
|
||||||
src: url(https://{{host}}:{{ports[https][0]}}/fetch/api/resources/redirect.py?location=http%3A%2F%2F{{host}}%3A{{ports[http][0]}}%2Ffetch%2Fapi%2Fresources%2Fredirect.py%3Flocation%3Dhttps%253A%252F%252F{{host}}%253A{{ports[https][0]}}%252Ffetch%252Fsec-metadata%252Fresources%252Frecord-header.py%253Ffile%253Dfont-https-downgrade-upgrade);
|
src: url(https://{{host}}:{{ports[https][0]}}/fetch/api/resources/redirect.py?location=http%3A%2F%2F{{host}}%3A{{ports[http][0]}}%2Ffetch%2Fapi%2Fresources%2Fredirect.py%3Flocation%3Dhttps%253A%252F%252F{{host}}%253A{{ports[https][0]}}%252Ffetch%252Fsec-metadata%252Fresources%252Frecord-header.py%253Ffile%253Dfont-https-downgrade-upgrade{{$id:uuid()}});
|
||||||
}
|
}
|
||||||
#fontTest {
|
#fontTest {
|
||||||
font-family: myDowngradeUpgradeFont;
|
font-family: myDowngradeUpgradeFont;
|
||||||
|
@ -18,8 +18,8 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="fontTest">Downgraded then upgraded font</div>
|
<div id="fontTest">Downgraded then upgraded font</div>
|
||||||
<script>
|
<script>
|
||||||
let nonce = token();
|
let nonce = "{{$id}}";
|
||||||
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "" };
|
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "cors" };
|
||||||
|
|
||||||
// Validate various scenarios handle a request that redirects from https => http
|
// Validate various scenarios handle a request that redirects from https => http
|
||||||
// correctly and avoids disclosure of any Sec- headers.
|
// correctly and avoids disclosure of any Sec- headers.
|
||||||
|
@ -28,8 +28,8 @@
|
||||||
document.fonts.ready.then(function () {
|
document.fonts.ready.then(function () {
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "font-https-downgrade-upgrade";
|
let key = "font-https-downgrade-upgrade{{$id}}";
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
return fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(text => assert_header_equals(text, expected))
|
.then(text => assert_header_equals(text, expected))
|
||||||
.then(_ => resolve())
|
.then(_ => resolve())
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
"dest": undefined,
|
"dest": undefined,
|
||||||
"site": "cross-site",
|
"site": "cross-site",
|
||||||
"user": undefined,
|
"user": undefined,
|
||||||
"mode": undefined,
|
"mode": "cors",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, "Https downgrade-upgrade image => No headers");
|
}, "Https downgrade-upgrade image => No headers");
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
<script>
|
<script>
|
||||||
test(t => {
|
test(t => {
|
||||||
t.add_cleanup(_ => { header = null; });
|
t.add_cleanup(_ => { header = null; });
|
||||||
assert_header_equals(header, expected);
|
assert_header_equals(header, { "dest": "", "site": "cross-site", "user": "", "mode": "no-cors" });
|
||||||
}, "Https downgrade-upgrade script => No headers");
|
}, "Https downgrade-upgrade script => No headers");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
||||||
<script src=/common/security-features/resources/common.js></script>
|
<script src=/common/security-features/resources/common.sub.js></script>
|
||||||
<script src=/common/utils.js></script>
|
<script src=/common/utils.js></script>
|
||||||
<style>
|
<style>
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: myUpgradedFont;
|
font-family: myUpgradedFont;
|
||||||
src: url(http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=https%3A%2F%2F{{host}}%3A{{ports[https][0]}}%2Ffetch%2Fsec-metadata%2Fresources%2Frecord-header.py%3Ffile%3Dfont-https-upgrade);
|
src: url(http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=https%3A%2F%2F{{host}}%3A{{ports[https][0]}}%2Ffetch%2Fsec-metadata%2Fresources%2Frecord-header.py%3Ffile%3Dfont-https-upgrade{{$id:uuid()}});
|
||||||
}
|
}
|
||||||
#fontTest {
|
#fontTest {
|
||||||
font-family: myUpgradedFont;
|
font-family: myUpgradedFont;
|
||||||
|
@ -18,8 +18,8 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="fontTest">Upgraded font</div>
|
<div id="fontTest">Upgraded font</div>
|
||||||
<script>
|
<script>
|
||||||
let nonce = token();
|
let nonce = "{{$id}}";
|
||||||
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "" };
|
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "cors" };
|
||||||
|
|
||||||
// Validate various scenarios handle a request that redirects from http => https correctly and add the proper Sec- headers.
|
// Validate various scenarios handle a request that redirects from http => https correctly and add the proper Sec- headers.
|
||||||
RunCommonRedirectTests("Http upgrade", upgradeRedirectTo, expected);
|
RunCommonRedirectTests("Http upgrade", upgradeRedirectTo, expected);
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
document.fonts.ready.then(function () {
|
document.fonts.ready.then(function () {
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "font-https-upgrade";
|
let key = "font-https-upgrade{{$id}}";
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(text => assert_header_equals(text, expected))
|
.then(text => assert_header_equals(text, expected))
|
||||||
|
@ -53,16 +53,17 @@
|
||||||
"dest": undefined,
|
"dest": undefined,
|
||||||
"site": "cross-site",
|
"site": "cross-site",
|
||||||
"user": undefined,
|
"user": undefined,
|
||||||
"mode": undefined,
|
"mode": "cors",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, "Http upgrade image => No headers");
|
}, "Http upgrade image => No headers");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=https%3A%2F%2F{{host}}%3A{{ports[https][0]}}%2Ffetch%2Fsec-metadata%2Fresources%2Fecho-as-script.py"></script>
|
<script src="http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=https%3A%2F%2F{{host}}%3A{{ports[https][0]}}%2Ffetch%2Fsec-metadata%2Fresources%2Fecho-as-script.py"></script>
|
||||||
<script>
|
<script>
|
||||||
test(t => {
|
test(t => {
|
||||||
t.add_cleanup(_ => { header = null; });
|
t.add_cleanup(_ => { header = null; });
|
||||||
assert_header_equals(header, expected);
|
assert_header_equals(header, { "dest": "", "site": "cross-site", "user": "", "mode": "no-cors" });
|
||||||
}, "Http upgrade script => No headers");
|
}, "Http upgrade script => No headers");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<script src=/resources/testharnessreport.js></script>
|
<script src=/resources/testharnessreport.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||||
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
<script src=/fetch/sec-metadata/resources/redirectTestHelper.sub.js></script>
|
||||||
<script src=/common/security-features/resources/common.js></script>
|
<script src=/common/security-features/resources/common.sub.js></script>
|
||||||
<script src=/common/utils.js></script>
|
<script src=/common/utils.js></script>
|
||||||
<style>
|
<style>
|
||||||
@font-face {
|
@font-face {
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
<script>
|
<script>
|
||||||
test(t => {
|
test(t => {
|
||||||
t.add_cleanup(_ => { header = null; });
|
t.add_cleanup(_ => { header = null; });
|
||||||
assert_header_equals(header, expected);
|
assert_header_equals(header, { "dest": "", "site": "cross-site", "user": "", "mode": "no-cors" });
|
||||||
}, "Https downgrade script => No headers");
|
}, "Https downgrade script => No headers");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
function createVideoElement() {
|
function createVideoElement() {
|
||||||
let el = document.createElement('video');
|
let el = document.createElement('video');
|
||||||
el.src = "/media/movie_5.mp4";
|
el.src = '/media/movie_5.mp4';
|
||||||
el.setAttribute("controls", "");
|
el.setAttribute('controls', '');
|
||||||
el.setAttribute("crossorigin", "");
|
el.setAttribute('crossorigin', '');
|
||||||
return el;
|
return el;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createTrack() {
|
function createTrack() {
|
||||||
let el = document.createElement("track");
|
let el = document.createElement('track');
|
||||||
el.setAttribute("default", "");
|
el.setAttribute('default', '');
|
||||||
el.setAttribute("kind", "captions");
|
el.setAttribute('kind', 'captions');
|
||||||
el.setAttribute("srclang", "en");
|
el.setAttribute('srclang', 'en');
|
||||||
return el;
|
return el;
|
||||||
}
|
}
|
||||||
|
|
||||||
let secureRedirectURL = "https://{{host}}:{{ports[https][0]}}/fetch/api/resources/redirect.py?location=";
|
let secureRedirectURL = 'https://{{host}}:{{ports[https][0]}}/fetch/api/resources/redirect.py?location=';
|
||||||
let insecureRedirectURL = "http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=";
|
let insecureRedirectURL = 'http://{{host}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=';
|
||||||
let secureTestURL = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/";
|
let secureTestURL = 'https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/';
|
||||||
let insecureTestURL = "http://{{host}}:{{ports[http][0]}}/fetch/sec-metadata/";
|
let insecureTestURL = 'http://{{host}}:{{ports[http][0]}}/fetch/sec-metadata/';
|
||||||
|
|
||||||
// Helper to craft an URL that will go from HTTPS => HTTP => HTTPS to
|
// Helper to craft an URL that will go from HTTPS => HTTP => HTTPS to
|
||||||
// simulate us downgrading then upgrading again during the same redirect chain.
|
// simulate us downgrading then upgrading again during the same redirect chain.
|
||||||
|
@ -43,139 +43,163 @@ function downgradeRedirectTo(partialPath) {
|
||||||
function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults) {
|
function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults) {
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let i = document.createElement('iframe');
|
let i = document.createElement('iframe');
|
||||||
i.src = urlHelperMethod("resources/post-to-owner.py");
|
i.src = urlHelperMethod('resources/post-to-owner.py?iframe-navigation' + nonce);
|
||||||
window.addEventListener('message', t.step_func(e => {
|
window.addEventListener('message', t.step_func(e => {
|
||||||
if (e.source != i.contentWindow) {
|
if (e.source != i.contentWindow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let expectation = { ...expectedResults };
|
||||||
assert_header_equals(e.data, expectedResults);
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'nested-navigate';
|
||||||
|
assert_header_equals(e.data, expectation);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
}, testNamePrefix + " iframe => No headers");
|
}, testNamePrefix + ' iframe');
|
||||||
|
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let testWindow = window.open(urlHelperMethod("resources/post-to-owner.py"));
|
let testWindow = window.open(urlHelperMethod('resources/post-to-owner.py?top-level-navigation' + nonce));
|
||||||
t.add_cleanup(_ => testWindow.close());
|
t.add_cleanup(_ => testWindow.close());
|
||||||
window.addEventListener('message', t.step_func(e => {
|
window.addEventListener('message', t.step_func(e => {
|
||||||
if (e.source != testWindow) {
|
if (e.source != testWindow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_header_equals(e.data, expectedResults);
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'navigate';
|
||||||
|
assert_header_equals(e.data, expectation);
|
||||||
t.done();
|
t.done();
|
||||||
}));
|
}));
|
||||||
}, testNamePrefix + " top level navigation => No headers");
|
}, testNamePrefix + ' top level navigation');
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "embed-redirect-redirect" + nonce;
|
let key = 'embed-https-redirect' + nonce;
|
||||||
|
|
||||||
let e = document.createElement('embed');
|
let e = document.createElement('embed');
|
||||||
e.src = urlHelperMethod("resources/record-header.py?file=" + key);
|
e.src = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||||
e.onload = e => {
|
e.onload = e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'no-cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func(text => assert_header_equals(text, expectation)))
|
||||||
.then(_ => resolve())
|
.then(resolve)
|
||||||
.catch(e => reject(e));
|
.catch(e => reject(e));
|
||||||
};
|
};
|
||||||
|
|
||||||
document.body.appendChild(e);
|
document.body.appendChild(e);
|
||||||
});
|
});
|
||||||
}, testNamePrefix + " embed => No headers");
|
}, testNamePrefix + ' embed');
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
let key = "fetch-redirect" + nonce;
|
let key = 'fetch-redirect' + nonce;
|
||||||
return fetch(urlHelperMethod("resources/echo-as-json.py?" + key))
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'cors';
|
||||||
|
return fetch(urlHelperMethod('resources/echo-as-json.py?' + key))
|
||||||
.then(r => r.json())
|
.then(r => r.json())
|
||||||
.then(j => {assert_header_equals(j, expectedResults);});
|
.then(j => {assert_header_equals(j, expectation);});
|
||||||
}, testNamePrefix + " fetch() api => No headers");
|
}, testNamePrefix + ' fetch() api');
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "object-https-redirect" + nonce;
|
let key = 'object-https-redirect' + nonce;
|
||||||
let e = document.createElement('object');
|
let e = document.createElement('object');
|
||||||
e.data = urlHelperMethod("resources/record-header.py?file=" + key);
|
e.data = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||||
e.onload = e => {
|
e.onload = e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'no-cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func(text => assert_header_equals(text, expectation)))
|
||||||
.then(_ => resolve())
|
.then(resolve)
|
||||||
.catch(e => reject(e));
|
.catch(e => reject(e));
|
||||||
};
|
};
|
||||||
document.body.appendChild(e);
|
document.body.appendChild(e);
|
||||||
});
|
});
|
||||||
}, testNamePrefix + " object => No headers");
|
}, testNamePrefix + ' object');
|
||||||
|
|
||||||
if (document.createElement('link').relList.supports('prefetch')) {
|
if (document.createElement('link').relList.supports('prefetch')) {
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let key = "prefetch" + nonce;
|
let key = 'prefetch' + nonce;
|
||||||
let e = document.createElement('link');
|
let e = document.createElement('link');
|
||||||
e.rel = "prefetch";
|
e.rel = 'prefetch';
|
||||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key) + "&simple=true";
|
e.crossOrigin = 'anonymous';
|
||||||
|
e.href = urlHelperMethod('resources/record-header.py?file=' + key) + '&simple=true';
|
||||||
e.onload = t.step_func(e => {
|
e.onload = t.step_func(e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(t.step_func(response => response.text()))
|
.then(t.step_func(response => response.text()))
|
||||||
.then(t.step_func_done(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func_done(text => assert_header_equals(text, expectation)))
|
||||||
.catch(t.unreached_func("Fetching and verifying the results should succeed."));
|
.catch(t.unreached_func('Fetching and verifying the results should succeed.'));
|
||||||
});
|
});
|
||||||
e.onerror = t.unreached_func();
|
e.onerror = t.unreached_func();
|
||||||
document.head.appendChild(e);
|
document.head.appendChild(e);
|
||||||
}, testNamePrefix + " prefetch => No headers");
|
}, testNamePrefix + ' prefetch => No headers');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.createElement('link').relList.supports('preload')) {
|
if (document.createElement('link').relList.supports('preload')) {
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let key = "preload" + nonce;
|
let key = 'preload' + nonce;
|
||||||
let e = document.createElement('link');
|
let e = document.createElement('link');
|
||||||
e.rel = "preload";
|
e.rel = 'preload';
|
||||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key);
|
e.href = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||||
e.setAttribute("as", "track");
|
e.setAttribute('as', 'track');
|
||||||
e.onload = e.onerror = t.step_func_done(e => {
|
e.onload = e.onerror = t.step_func_done(e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(t.step_func(response => response.text()))
|
.then(t.step_func(response => response.text()))
|
||||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func_done(text => assert_header_equals(text, expectation)))
|
||||||
.then(t.step_func_done(_ => resolve()))
|
|
||||||
.catch(t.unreached_func());
|
.catch(t.unreached_func());
|
||||||
});
|
});
|
||||||
document.head.appendChild(e);
|
document.head.appendChild(e);
|
||||||
}, testNamePrefix + " preload => No headers");
|
}, testNamePrefix + ' preload');
|
||||||
}
|
}
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "style-https-redirect" + nonce;
|
let key = 'style-https-redirect' + nonce;
|
||||||
let e = document.createElement('link');
|
let e = document.createElement('link');
|
||||||
e.rel = "stylesheet";
|
e.rel = 'stylesheet';
|
||||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key);
|
e.href = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||||
e.onload = e => {
|
e.onload = e => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'no-cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func(text => assert_header_equals(text, expectation)))
|
||||||
.then(_ => resolve())
|
.then(resolve)
|
||||||
.catch(e => reject(e));
|
.catch(e => reject(e));
|
||||||
};
|
};
|
||||||
document.body.appendChild(e);
|
document.body.appendChild(e);
|
||||||
});
|
});
|
||||||
}, testNamePrefix + " stylesheet => No headers");
|
}, testNamePrefix + ' stylesheet');
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let key = "track-https-redirect" + nonce;
|
let key = 'track-https-redirect' + nonce;
|
||||||
let video = createVideoElement();
|
let video = createVideoElement();
|
||||||
let el = createTrack();
|
let el = createTrack();
|
||||||
el.src = urlHelperMethod("resources/record-header.py?file=" + key);
|
el.src = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||||
el.onload = t.step_func(_ => {
|
el.onload = t.step_func(_ => {
|
||||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
let expectation = { ...expectedResults };
|
||||||
|
if (expectation['mode'] != '')
|
||||||
|
expectation['mode'] = 'cors';
|
||||||
|
fetch('/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=' + key)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
||||||
.then(_ => resolve());
|
.then(resolve);
|
||||||
});
|
});
|
||||||
video.appendChild(el);
|
video.appendChild(el);
|
||||||
document.body.appendChild(video);
|
document.body.appendChild(video);
|
||||||
});
|
});
|
||||||
}, testNamePrefix + " track => No headers");
|
}, testNamePrefix + ' track');
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Geolocation Test: non-secure contexts</title>
|
||||||
|
<link rel="help" href="https://github.com/w3c/geolocation-api/pull/34" />
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
promise_test(() => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
let isAsync = true;
|
||||||
|
const successCallback = () => {
|
||||||
|
assert_unreached(
|
||||||
|
"successCallback must never be invoked in non-secure contexts."
|
||||||
|
);
|
||||||
|
};
|
||||||
|
const errorCallBack = () => {
|
||||||
|
isAsync = false;
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
navigator.geolocation.getCurrentPosition(successCallback, errorCallBack);
|
||||||
|
assert_true(
|
||||||
|
isAsync,
|
||||||
|
"Expected the errorCallback to be called asynchronously."
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}, "When in a non-secure context, getCurrentPosition()'s errorCallback is asynchronously called.");
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
let isAsync = true;
|
||||||
|
const successCallback = () => {
|
||||||
|
assert_unreached(
|
||||||
|
"successCallback must never be invoked in non-secure contexts."
|
||||||
|
);
|
||||||
|
};
|
||||||
|
const errorCallBack = () => {
|
||||||
|
isAsync = false;
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
navigator.geolocation.watchPosition(successCallback, errorCallBack);
|
||||||
|
assert_true(isAsync, "errorCallback must be called asynchronously.");
|
||||||
|
});
|
||||||
|
}, "When in a non-secure context, watchPosition()'s errorCallback is asynchronously called.");
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const positionErrorPromise = new Promise(errorCallBack => {
|
||||||
|
const successCallback = () => {
|
||||||
|
assert_unreached(
|
||||||
|
"successCallback must never be invoked in non-secure contexts."
|
||||||
|
);
|
||||||
|
};
|
||||||
|
navigator.geolocation.getCurrentPosition(successCallback, errorCallBack);
|
||||||
|
});
|
||||||
|
const positionError = await positionErrorPromise;
|
||||||
|
assert_equals(
|
||||||
|
positionError.code,
|
||||||
|
1,
|
||||||
|
"Expected the value for PERMISSION_DENIED, which is 1."
|
||||||
|
);
|
||||||
|
}, "When in a non-secure context, the getCurrentPosition() errorCallBack gets a PositionError with the correct error code.");
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const positionErrorPromise = new Promise(errorCallBack => {
|
||||||
|
const successCallback = () => {
|
||||||
|
assert_unreached(
|
||||||
|
"successCallback must never be invoked in non-secure contexts."
|
||||||
|
);
|
||||||
|
};
|
||||||
|
const id = navigator.geolocation.watchPosition(
|
||||||
|
successCallback,
|
||||||
|
errorCallBack
|
||||||
|
);
|
||||||
|
assert_true(Number.isInteger(id), "Must return an identifier.");
|
||||||
|
});
|
||||||
|
const positionError = await positionErrorPromise;
|
||||||
|
assert_equals(
|
||||||
|
positionError.code,
|
||||||
|
1,
|
||||||
|
"Expected the value for PERMISSION_DENIED, which is 1."
|
||||||
|
);
|
||||||
|
}, "When in a non-secure context, the watchPosition() errorCallBack gets a PositionError with the correct error code.");
|
||||||
|
</script>
|
|
@ -22,26 +22,16 @@
|
||||||
<p><label>Age: <button id='button_id2'>button2</button></label></p>
|
<p><label>Age: <button id='button_id2'>button2</button></label></p>
|
||||||
</form>
|
</form>
|
||||||
<script>
|
<script>
|
||||||
|
test(function() {
|
||||||
var button1 = document.getElementById("button_id1");
|
var button1 = document.getElementById("button_id1");
|
||||||
var button2 = document.getElementById("button_id2");
|
var button2 = document.getElementById("button_id2");
|
||||||
|
|
||||||
if (typeof(button1.labels) == "object") {
|
assert_true(button1.labels instanceof NodeList, "button1.labels is NodeList");
|
||||||
if (button1.labels.length == 2 && button2.labels.length == 1) {
|
assert_equals(button1.labels.length, 2, "button1.labels.length");
|
||||||
test(function() {
|
|
||||||
assert_true(true, "labels attribute is correct.");
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
test(function() {
|
|
||||||
assert_unreached("labels attribute is not correct.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
test(function() {
|
|
||||||
assert_unreached("labels attribute is not exist.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
assert_true(button2.labels instanceof NodeList, "button2.labels is NodeList");
|
||||||
|
assert_equals(button2.labels.length, 1, "button2.labels.length");
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -3,8 +3,10 @@
|
||||||
// (https://github.com/tidoust/reffy-reports)
|
// (https://github.com/tidoust/reffy-reports)
|
||||||
// Source: Web Speech API (https://w3c.github.io/speech-api/)
|
// Source: Web Speech API (https://w3c.github.io/speech-api/)
|
||||||
|
|
||||||
[Exposed=Window, Constructor]
|
[Exposed=Window]
|
||||||
interface SpeechRecognition : EventTarget {
|
interface SpeechRecognition : EventTarget {
|
||||||
|
constructor();
|
||||||
|
|
||||||
// recognition parameters
|
// recognition parameters
|
||||||
attribute SpeechGrammarList grammars;
|
attribute SpeechGrammarList grammars;
|
||||||
attribute DOMString lang;
|
attribute DOMString lang;
|
||||||
|
@ -42,9 +44,9 @@ enum SpeechRecognitionErrorCode {
|
||||||
"language-not-supported"
|
"language-not-supported"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict)]
|
|
||||||
interface SpeechRecognitionErrorEvent : Event {
|
interface SpeechRecognitionErrorEvent : Event {
|
||||||
|
constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict);
|
||||||
readonly attribute SpeechRecognitionErrorCode error;
|
readonly attribute SpeechRecognitionErrorCode error;
|
||||||
readonly attribute DOMString message;
|
readonly attribute DOMString message;
|
||||||
};
|
};
|
||||||
|
@ -77,9 +79,9 @@ interface SpeechRecognitionResultList {
|
||||||
};
|
};
|
||||||
|
|
||||||
// A full response, which could be interim or final, part of a continuous response or not
|
// A full response, which could be interim or final, part of a continuous response or not
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor(DOMString type, SpeechRecognitionEventInit eventInitDict)]
|
|
||||||
interface SpeechRecognitionEvent : Event {
|
interface SpeechRecognitionEvent : Event {
|
||||||
|
constructor(DOMString type, SpeechRecognitionEventInit eventInitDict);
|
||||||
readonly attribute unsigned long resultIndex;
|
readonly attribute unsigned long resultIndex;
|
||||||
readonly attribute SpeechRecognitionResultList results;
|
readonly attribute SpeechRecognitionResultList results;
|
||||||
};
|
};
|
||||||
|
@ -97,8 +99,9 @@ interface SpeechGrammar {
|
||||||
};
|
};
|
||||||
|
|
||||||
// The object representing a speech grammar collection
|
// The object representing a speech grammar collection
|
||||||
[Exposed=Window, Constructor]
|
[Exposed=Window]
|
||||||
interface SpeechGrammarList {
|
interface SpeechGrammarList {
|
||||||
|
constructor();
|
||||||
readonly attribute unsigned long length;
|
readonly attribute unsigned long length;
|
||||||
getter SpeechGrammar item(unsigned long index);
|
getter SpeechGrammar item(unsigned long index);
|
||||||
void addFromURI(DOMString src,
|
void addFromURI(DOMString src,
|
||||||
|
@ -126,9 +129,10 @@ partial interface Window {
|
||||||
[SameObject] readonly attribute SpeechSynthesis speechSynthesis;
|
[SameObject] readonly attribute SpeechSynthesis speechSynthesis;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor(optional DOMString text)]
|
|
||||||
interface SpeechSynthesisUtterance : EventTarget {
|
interface SpeechSynthesisUtterance : EventTarget {
|
||||||
|
constructor(optional DOMString text);
|
||||||
|
|
||||||
attribute DOMString text;
|
attribute DOMString text;
|
||||||
attribute DOMString lang;
|
attribute DOMString lang;
|
||||||
attribute SpeechSynthesisVoice? voice;
|
attribute SpeechSynthesisVoice? voice;
|
||||||
|
@ -145,9 +149,9 @@ interface SpeechSynthesisUtterance : EventTarget {
|
||||||
attribute EventHandler onboundary;
|
attribute EventHandler onboundary;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)]
|
|
||||||
interface SpeechSynthesisEvent : Event {
|
interface SpeechSynthesisEvent : Event {
|
||||||
|
constructor(DOMString type, SpeechSynthesisEventInit eventInitDict);
|
||||||
readonly attribute SpeechSynthesisUtterance utterance;
|
readonly attribute SpeechSynthesisUtterance utterance;
|
||||||
readonly attribute unsigned long charIndex;
|
readonly attribute unsigned long charIndex;
|
||||||
readonly attribute unsigned long charLength;
|
readonly attribute unsigned long charLength;
|
||||||
|
@ -178,9 +182,9 @@ enum SpeechSynthesisErrorCode {
|
||||||
"not-allowed",
|
"not-allowed",
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window]
|
||||||
Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
|
|
||||||
interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent {
|
interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent {
|
||||||
|
constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict);
|
||||||
readonly attribute SpeechSynthesisErrorCode error;
|
readonly attribute SpeechSynthesisErrorCode error;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -827,3 +827,19 @@ MISSING DEPENDENCY: web-nfc/resources/nfc-helpers.js
|
||||||
MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js
|
MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js
|
||||||
MISSING DEPENDENCY: webxr/resources/webxr_util.js
|
MISSING DEPENDENCY: webxr/resources/webxr_util.js
|
||||||
MISSING DEPENDENCY: contacts/resources/helpers.js
|
MISSING DEPENDENCY: contacts/resources/helpers.js
|
||||||
|
|
||||||
|
# Tests that are false positives for using Ahem as a system font
|
||||||
|
AHEM SYSTEM FONT: acid/acid3/test.html
|
||||||
|
AHEM SYSTEM FONT: resource-timing/resources/all_resource_types.htm
|
||||||
|
AHEM SYSTEM FONT: resource-timing/resources/iframe-reload-TAO.sub.html
|
||||||
|
|
||||||
|
# These tests are imported from mozilla-central and can't be modified in WPT.
|
||||||
|
# They do load Ahem as a web font, but they use their own copy which trips the
|
||||||
|
# lint rule. Basically false positives.
|
||||||
|
AHEM SYSTEM FONT: css/vendor-imports/mozilla/mozilla-central-reftests/*
|
||||||
|
|
||||||
|
# TODO: The following should be deleted along with the Ahem web font cleanup
|
||||||
|
# PR (https://github.com/web-platform-tests/wpt/pull/18702)
|
||||||
|
AHEM SYSTEM FONT: infrastructure/assumptions/ahem-ref.html
|
||||||
|
AHEM SYSTEM FONT: infrastructure/assumptions/ahem.html
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8"/>
|
||||||
<title>RTL ms lquote="X" rquote="p"</title>
|
<title>RTL ms lquote="X" rquote="p"</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||||
<style>
|
<style>
|
||||||
math {
|
math {
|
||||||
font: 25px/1 Ahem;
|
font: 25px/1 Ahem;
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Mixed-Content: Optionally-blockable content</title>
|
|
||||||
<meta charset='utf-8'>
|
|
||||||
<meta name="description" content="Test behavior of optionally-blockable content">
|
|
||||||
<link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
|
|
||||||
<link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
|
|
||||||
<meta name="assert" content="opt_in_method: http-csp
|
|
||||||
origin: cross-origin-http
|
|
||||||
source_scheme: https
|
|
||||||
context_nesting: top-level
|
|
||||||
redirection: keep-scheme-redirect
|
|
||||||
subresource: audio-tag
|
|
||||||
expectation: blocked">
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
|
||||||
<script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
MixedContentTestCase(
|
|
||||||
{
|
|
||||||
"opt_in_method": "http-csp",
|
|
||||||
"origin": "cross-origin-http",
|
|
||||||
"source_scheme": "https",
|
|
||||||
"context_nesting": "top-level",
|
|
||||||
"redirection": "keep-scheme-redirect",
|
|
||||||
"subresource": "audio-tag",
|
|
||||||
"expectation": "blocked"
|
|
||||||
},
|
|
||||||
document.querySelector("meta[name=assert]").content,
|
|
||||||
new SanityChecker()
|
|
||||||
).start();
|
|
||||||
</script>
|
|
||||||
<div id="log"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Mixed-Content: Optionally-blockable content</title>
|
|
||||||
<meta charset='utf-8'>
|
|
||||||
<meta name="description" content="Test behavior of optionally-blockable content">
|
|
||||||
<link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
|
|
||||||
<link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
|
|
||||||
<meta name="assert" content="opt_in_method: http-csp
|
|
||||||
origin: cross-origin-http
|
|
||||||
source_scheme: https
|
|
||||||
context_nesting: top-level
|
|
||||||
redirection: swap-scheme-redirect
|
|
||||||
subresource: audio-tag
|
|
||||||
expectation: blocked">
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
|
||||||
<script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
MixedContentTestCase(
|
|
||||||
{
|
|
||||||
"opt_in_method": "http-csp",
|
|
||||||
"origin": "cross-origin-http",
|
|
||||||
"source_scheme": "https",
|
|
||||||
"context_nesting": "top-level",
|
|
||||||
"redirection": "swap-scheme-redirect",
|
|
||||||
"subresource": "audio-tag",
|
|
||||||
"expectation": "blocked"
|
|
||||||
},
|
|
||||||
document.querySelector("meta[name=assert]").content,
|
|
||||||
new SanityChecker()
|
|
||||||
).start();
|
|
||||||
</script>
|
|
||||||
<div id="log"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. -->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Mixed-Content: Optionally-blockable content</title>
|
|
||||||
<meta charset='utf-8'>
|
|
||||||
<meta name="description" content="Test behavior of optionally-blockable content">
|
|
||||||
<link rel="author" title="Kristijan Burnik" href="burnik@chromium.org">
|
|
||||||
<link rel="help" href="http://www.w3.org/TR/mixed-content/#category-optionally-blockable">
|
|
||||||
<meta name="assert" content="opt_in_method: http-csp
|
|
||||||
origin: same-host-http
|
|
||||||
source_scheme: https
|
|
||||||
context_nesting: top-level
|
|
||||||
redirection: keep-scheme-redirect
|
|
||||||
subresource: audio-tag
|
|
||||||
expectation: blocked">
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<script src="/common/security-features/resources/common.js"></script>
|
|
||||||
<script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
MixedContentTestCase(
|
|
||||||
{
|
|
||||||
"opt_in_method": "http-csp",
|
|
||||||
"origin": "same-host-http",
|
|
||||||
"source_scheme": "https",
|
|
||||||
"context_nesting": "top-level",
|
|
||||||
"redirection": "keep-scheme-redirect",
|
|
||||||
"subresource": "audio-tag",
|
|
||||||
"expectation": "blocked"
|
|
||||||
},
|
|
||||||
document.querySelector("meta[name=assert]").content,
|
|
||||||
new SanityChecker()
|
|
||||||
).start();
|
|
||||||
</script>
|
|
||||||
<div id="log"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
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