mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +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
|
||||
|
||||
[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.]
|
||||
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]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[contenttype_txt.html]
|
||||
expected: CRASH
|
|
@ -312,3 +312,15 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -18,3 +18,18 @@
|
|||
[Https downgrade-upgrade object => No headers]
|
||||
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]
|
||||
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]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||
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]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||
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]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screenx.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
[form-submission-algorithm.html]
|
||||
expected: TIMEOUT
|
||||
[If form's firing submission events is true, then return; 'submit' event]
|
||||
expected: FAIL
|
||||
|
||||
[If form's firing submission events is true, then return; 'invalid' event]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -9,6 +8,3 @@
|
|||
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
|
||||
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.]
|
||||
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
|
||||
|
@ -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
|
||||
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
|
||||
===================
|
||||
|
||||
|
@ -251,25 +275,3 @@ web-platform-tests root directory to suppress the error reports.
|
|||
For more details, see the [lint-tool documentation][lint-tool].
|
||||
|
||||
[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.
|
||||
|
||||
// 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
|
||||
// but doesn't cover:
|
||||
// - tools/ - generator scripts that generates top-level HTML documents.
|
||||
|
@ -1081,7 +1081,7 @@ function invokeRequest(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.
|
||||
self.invokeRequest = invokeRequest;
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
%(meta)s
|
||||
<script src="/common/security-features/resources/common.js"></script>
|
||||
<script src="/common/security-features/resources/common.sub.js"></script>
|
||||
<script>
|
||||
// Receive a message from the parent and start the test.
|
||||
function onMessageFromParent(event) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import util
|
|||
def main(request, response):
|
||||
policyDeliveries = json.loads(request.GET.first('policyDeliveries', '[]'))
|
||||
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.port)
|
||||
if worker_type == 'classic':
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
||||
<script src="/resources/testharness.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. -->
|
||||
<script src="%(spec_json_js)s"></script>
|
||||
<!-- Internal checking of the tests -->
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<meta name="assert" content="%(test_description)s">%(meta_delivery_method)s
|
||||
<script src="/resources/testharness.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>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -58,7 +58,8 @@ class ShouldSkip(Exception):
|
|||
|
||||
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):
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<link rel="help" href="https://crbug.com/979894">
|
||||
<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="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
html, body { margin: 0; }
|
||||
div {
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<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" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style type="text/css"><![CDATA[
|
||||
div
|
||||
{
|
||||
|
@ -43,4 +43,4 @@
|
|||
<div id="control-green-overlapping">X</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Flexbox: min-height: auto with flex items containing percentage-sized children</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/" />
|
||||
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto" />
|
||||
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=998080" />
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<style>
|
||||
.flexbox {
|
||||
display: flex;
|
||||
width: 100px;
|
||||
height: 0;
|
||||
flex-direction: column;
|
||||
}
|
||||
.item {
|
||||
/* Because flex-basis is 0, we rely on min-height to size this item.
|
||||
* We give it an explicit height so that percentages have a chance of
|
||||
* resolving. We can't use 0 for the height because the min-height is
|
||||
* basically min(height, min-content). */
|
||||
flex: 0 1 0px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
.percentage {
|
||||
height: 100%;
|
||||
}
|
||||
.fixed {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div class="flexbox">
|
||||
<div class="item">
|
||||
<div class="percentage">
|
||||
<div class="fixed"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Flexbox: min-height: auto with flex items containing percentage-sized children</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/" />
|
||||
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto" />
|
||||
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=998080" />
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<style>
|
||||
.flexbox {
|
||||
display: flex;
|
||||
width: 100px;
|
||||
height: 0;
|
||||
flex-direction: column;
|
||||
}
|
||||
.item {
|
||||
/* Because the flexbox has height:0, this would flex-shrink to 0. So we rely
|
||||
* on min-height: auto to get a nonzero height. */
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
.percentage {
|
||||
height: 100%;
|
||||
}
|
||||
.fixed {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div class="flexbox">
|
||||
<div class="item">
|
||||
<div class="percentage">
|
||||
<div class="fixed"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
<link rel="help" href="http://www.w3.org/TR/CSS21/fonts.html#propdef-font-family" />
|
||||
<link rel="help" href="http://www.w3.org/TR/CSS21/fonts.html#font-family-prop" />
|
||||
<meta name="assert" content="The 'font-family' property set to and installed font renders the appropriate font." />
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style type="text/css">
|
||||
body { font-size: 36px; }
|
||||
span#verify { font-family: CSSTest Verify; }
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="http://www.w3.org/TR/css-fonts-3/#font-family-prop" />
|
||||
<link rel="match" href="font-family-name-025-ref.html" />
|
||||
<meta name="assert" content="The 'font-family' property set to and installed font renders the appropriate font. Postscript name should not match." />
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body { font-size: 36px; }
|
||||
span#verify { font-family: CSSTest Verify; }
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#target {
|
||||
font-family: Ahem;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<meta name="assert" content="The 'top' and 'bottom' margins must be recomputed whenever the grid item's height changes.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<meta name="assert" content="The 'top' and 'bottom' margins must be recomputed whenever the grid item's height changes.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<link rel="match" href="../reference/grid-block-axis-alignment-auto-margins-008-ref.html">
|
||||
<meta name="assert" content="The 'top' and 'bottom' margins must be recomputed after the grid's intrinsic size is determined.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<meta name="assert" content="The 'left' and 'right' margins must be recomputed whenever the grid items's width changes.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
@ -35,6 +36,7 @@
|
|||
<div id="item2">XXXXX</div>
|
||||
</div>
|
||||
<script>
|
||||
document.fonts.ready.then(() => {
|
||||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "325");
|
||||
checkLayout('#grid');
|
||||
|
@ -44,4 +46,5 @@
|
|||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "275");
|
||||
checkLayout('#grid');
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<meta name="assert" content="The 'left' and 'right' margins must be recomputed whenever the grid items's width changes.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
@ -34,6 +35,7 @@
|
|||
<div id="item2">XX</div>
|
||||
</div>
|
||||
<script>
|
||||
document.fonts.ready.then(() => {
|
||||
item1.setAttribute("data-offset-x", "80");
|
||||
item2.setAttribute("data-offset-x", "340");
|
||||
checkLayout('#grid');
|
||||
|
@ -43,4 +45,5 @@
|
|||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "325");
|
||||
checkLayout('#grid');
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" title="10.2 Aligning with auto margins" href="https://drafts.csswg.org/css-grid/#auto-margins">
|
||||
<link rel="match" href="../reference/grid-inline-axis-alignment-auto-margins-008-ref.html">
|
||||
<meta name="assert" content="The 'left' and 'right' margins must be recomputed after the grid's intrinsic size is determined.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Reference: Aligning grid items using 'auto' margins</title>
|
||||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Reference: Aligning grid items using 'auto' margins</title>
|
||||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#grid {
|
||||
display: grid;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-clip-path" title="5.1 Clipping Shape: the clip-path property">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
|
||||
<meta content="ahem" name="flags">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-clip-path" title="5.1 Clipping Shape: the clip-path property">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
|
||||
<meta content="ahem" name="flags">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="help" href="https://www.w3.org/TR/css-masking-1/#the-clip-path" title="5.1 Clipping Shape: the clip-path property">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
|
||||
<meta content="ahem" name="flags">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Non-reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#main {
|
||||
margin: 2em;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#main{
|
||||
border-bottom: 1px solid cyan;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Non-reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#text{
|
||||
border: black dashed;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#text{
|
||||
border: black dashed;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
span{
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference case for text-underline-offset</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div{
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="mismatch" href="reference/text-underline-offset-001-notref.html">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#main {
|
||||
margin: 2em;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="match" href="reference/text-underline-offset-002-ref.html">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
#main{
|
||||
border-bottom: 1px solid cyan;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="match" href="reference/text-underline-offset-scroll-001-ref.html">
|
||||
<link rel="mismatch" href="reference/text-underline-offset-scroll-001-notref.html">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
/*
|
||||
* Testing to make sure that positioning the underline
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="match" href="reference/text-underline-offset-vertical-001-ref.html">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
span{
|
||||
margin-left: 5em;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="match" href="reference/text-underline-offset-vertical-002-ref.html">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div{
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<link rel="match" href="reference/hyphens-overflow-001-ref.html">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-3/#hyphens-property">
|
||||
<link rel="author" href="mailto:kojii@chromium.org">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font-size: 10px;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font-size: 10px;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>Test: CSS value type of the CSS property 'tab-size'</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-3/#tab-size-property">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body {
|
||||
font-family: Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space at the beginning of the line are breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 50px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should be breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should be breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should not be collapsed, honoring white-space: pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should be breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should be breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
|
||||
<meta name="assert" content="Preserved white space after forced breaks become leading white-spaces and should be breaking opportunities when white-space is pre-wrap.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 20px/1 Ahem;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<title>CSS test Reference</title>
|
||||
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 25px/1 Ahem;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
|
||||
<link rel="match" href="reference/white-space-pre-wrap-trailing-spaces-004-ref.html">
|
||||
<meta name="assert" content="Preserved white space at the end of the line is hanged when white-space is pre-wrap.">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 10px/1 Ahem;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<link rel="match" href="reference/text-overflow-016-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="If there is insufficient space for the ellipsis, then clip the rendering of the ellipsis itself">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.test, .test2 {
|
||||
overflow: hidden;
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<!doctype html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
|
||||
<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
|
||||
<title>Tests interpolation between CSS comparison functions</title>
|
||||
<style>
|
||||
@keyframes anim {
|
||||
from {
|
||||
width: min(50px, 30%);
|
||||
height: min(75%, 160px);
|
||||
}
|
||||
to {
|
||||
width: max(75%, 100px);
|
||||
height: max(50px, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
.test {
|
||||
background-color: green;
|
||||
animation: anim 2000000s linear;
|
||||
animation-delay: -1000000s;
|
||||
}
|
||||
|
||||
.container {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div class="container">
|
||||
<div class="test"></div>
|
||||
</div>
|
|
@ -3,6 +3,7 @@
|
|||
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
div {
|
||||
font: 10px/1 Ahem;
|
||||
|
@ -18,6 +19,7 @@ div {
|
|||
<span class="inline-block"></span>
|
||||
</div>
|
||||
<script>
|
||||
document.fonts.ready.then(() => {
|
||||
run(document.getElementById('empty'));
|
||||
function run(element) {
|
||||
test(() => {
|
||||
|
@ -28,5 +30,6 @@ function run(element) {
|
|||
assert_equals(rect.height, 10, "height");
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -11,14 +11,29 @@ platform to deliver on the promise of working across browsers and devices
|
|||
without needing extra layers of abstraction to paper over the gaps left by
|
||||
specification editors and implementors.
|
||||
|
||||
## Help!
|
||||
The most important sources of information and activity are:
|
||||
|
||||
If you get stuck or want clarification about anything, feel free to
|
||||
ask on either the [mailing list][public-test-infra] or [IRC][]
|
||||
([webclient][web irc], join channel `#testing`); IRC is generally
|
||||
busiest during the European working day but frequently has people on
|
||||
it at all times and should probably be the general first port of call
|
||||
for any help.
|
||||
- [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.
|
||||
|
||||
## Watch a Talk
|
||||
|
||||
|
@ -55,7 +70,4 @@ free to add yourself to the META.yml file!
|
|||
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
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
// META: global=window,worker
|
||||
// META: title=EventSource: constructor (invalid URL)
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
test(() => {
|
||||
assert_throws('SyntaxError', () => { new EventSource("http://this is invalid/"); });
|
||||
});
|
||||
|
||||
done();
|
||||
done();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!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">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
|
@ -9,7 +9,7 @@
|
|||
<script>
|
||||
async_test(t => {
|
||||
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_done(text => assert_header_equals(text, {
|
||||
"dest": "",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<script src=/resources/testharness.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>
|
||||
<body>
|
||||
<script>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<meta name="timeout" content="long">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/fetch/sec-metadata/resources/helper.js></script>
|
||||
|
@ -11,7 +12,7 @@
|
|||
|
||||
function create_test(host, as, expected) {
|
||||
async_test(t => {
|
||||
let nonce = token();
|
||||
let nonce = "{{uuid()}}";
|
||||
let key = as + nonce;
|
||||
|
||||
let e = document.createElement('link');
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/fetch/sec-metadata/resources/helper.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>
|
||||
<style>
|
||||
@font-face {
|
||||
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 {
|
||||
font-family: myDowngradeUpgradeFont;
|
||||
|
@ -18,8 +18,8 @@
|
|||
<body>
|
||||
<div id="fontTest">Downgraded then upgraded font</div>
|
||||
<script>
|
||||
let nonce = token();
|
||||
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "" };
|
||||
let nonce = "{{$id}}";
|
||||
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "cors" };
|
||||
|
||||
// Validate various scenarios handle a request that redirects from https => http
|
||||
// correctly and avoids disclosure of any Sec- headers.
|
||||
|
@ -28,8 +28,8 @@
|
|||
document.fonts.ready.then(function () {
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = "font-https-downgrade-upgrade";
|
||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
||||
let key = "font-https-downgrade-upgrade{{$id}}";
|
||||
return fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
||||
.then(response => response.text())
|
||||
.then(text => assert_header_equals(text, expected))
|
||||
.then(_ => resolve())
|
||||
|
@ -54,7 +54,7 @@
|
|||
"dest": undefined,
|
||||
"site": "cross-site",
|
||||
"user": undefined,
|
||||
"mode": undefined,
|
||||
"mode": "cors",
|
||||
});
|
||||
});
|
||||
}, "Https downgrade-upgrade image => No headers");
|
||||
|
@ -63,7 +63,7 @@
|
|||
<script>
|
||||
test(t => {
|
||||
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");
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/fetch/sec-metadata/resources/helper.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>
|
||||
<style>
|
||||
@font-face {
|
||||
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 {
|
||||
font-family: myUpgradedFont;
|
||||
|
@ -18,8 +18,8 @@
|
|||
<body>
|
||||
<div id="fontTest">Upgraded font</div>
|
||||
<script>
|
||||
let nonce = token();
|
||||
let expected = { "dest": "", "site": "cross-site", "user": "", "mode": "" };
|
||||
let nonce = "{{$id}}";
|
||||
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.
|
||||
RunCommonRedirectTests("Http upgrade", upgradeRedirectTo, expected);
|
||||
|
@ -27,7 +27,7 @@
|
|||
document.fonts.ready.then(function () {
|
||||
promise_test(t => {
|
||||
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)
|
||||
.then(response => response.text())
|
||||
.then(text => assert_header_equals(text, expected))
|
||||
|
@ -53,16 +53,17 @@
|
|||
"dest": undefined,
|
||||
"site": "cross-site",
|
||||
"user": undefined,
|
||||
"mode": undefined,
|
||||
"mode": "cors",
|
||||
});
|
||||
});
|
||||
}, "Http upgrade image => No headers");
|
||||
</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>
|
||||
test(t => {
|
||||
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");
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/fetch/sec-metadata/resources/helper.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>
|
||||
<style>
|
||||
@font-face {
|
||||
|
@ -62,7 +62,7 @@
|
|||
<script>
|
||||
test(t => {
|
||||
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");
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
function createVideoElement() {
|
||||
let el = document.createElement('video');
|
||||
el.src = "/media/movie_5.mp4";
|
||||
el.setAttribute("controls", "");
|
||||
el.setAttribute("crossorigin", "");
|
||||
el.src = '/media/movie_5.mp4';
|
||||
el.setAttribute('controls', '');
|
||||
el.setAttribute('crossorigin', '');
|
||||
return el;
|
||||
}
|
||||
|
||||
function createTrack() {
|
||||
let el = document.createElement("track");
|
||||
el.setAttribute("default", "");
|
||||
el.setAttribute("kind", "captions");
|
||||
el.setAttribute("srclang", "en");
|
||||
let el = document.createElement('track');
|
||||
el.setAttribute('default', '');
|
||||
el.setAttribute('kind', 'captions');
|
||||
el.setAttribute('srclang', 'en');
|
||||
return el;
|
||||
}
|
||||
|
||||
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 secureTestURL = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/";
|
||||
let insecureTestURL = "http://{{host}}:{{ports[http][0]}}/fetch/sec-metadata/";
|
||||
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 secureTestURL = 'https://{{host}}:{{ports[https][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
|
||||
// simulate us downgrading then upgrading again during the same redirect chain.
|
||||
|
@ -43,139 +43,163 @@ function downgradeRedirectTo(partialPath) {
|
|||
function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults) {
|
||||
async_test(t => {
|
||||
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 => {
|
||||
if (e.source != i.contentWindow) {
|
||||
return;
|
||||
}
|
||||
|
||||
assert_header_equals(e.data, expectedResults);
|
||||
let expectation = { ...expectedResults };
|
||||
if (expectation['mode'] != '')
|
||||
expectation['mode'] = 'nested-navigate';
|
||||
assert_header_equals(e.data, expectation);
|
||||
t.done();
|
||||
}));
|
||||
|
||||
document.body.appendChild(i);
|
||||
}, testNamePrefix + " iframe => No headers");
|
||||
}, testNamePrefix + ' iframe');
|
||||
|
||||
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());
|
||||
window.addEventListener('message', t.step_func(e => {
|
||||
if (e.source != testWindow) {
|
||||
return;
|
||||
}
|
||||
|
||||
assert_header_equals(e.data, expectedResults);
|
||||
let expectation = { ...expectedResults };
|
||||
if (expectation['mode'] != '')
|
||||
expectation['mode'] = 'navigate';
|
||||
assert_header_equals(e.data, expectation);
|
||||
t.done();
|
||||
}));
|
||||
}, testNamePrefix + " top level navigation => No headers");
|
||||
}, testNamePrefix + ' top level navigation');
|
||||
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = "embed-redirect-redirect" + nonce;
|
||||
|
||||
let key = 'embed-https-redirect' + nonce;
|
||||
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 => {
|
||||
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(t.step_func(text => assert_header_equals(text, expectedResults)))
|
||||
.then(_ => resolve())
|
||||
.then(t.step_func(text => assert_header_equals(text, expectation)))
|
||||
.then(resolve)
|
||||
.catch(e => reject(e));
|
||||
};
|
||||
|
||||
document.body.appendChild(e);
|
||||
});
|
||||
}, testNamePrefix + " embed => No headers");
|
||||
|
||||
promise_test(t => {
|
||||
let key = "fetch-redirect" + nonce;
|
||||
return fetch(urlHelperMethod("resources/echo-as-json.py?" + key))
|
||||
.then(r => r.json())
|
||||
.then(j => {assert_header_equals(j, expectedResults);});
|
||||
}, testNamePrefix + " fetch() api => No headers");
|
||||
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = "object-https-redirect" + nonce;
|
||||
let e = document.createElement('object');
|
||||
e.data = urlHelperMethod("resources/record-header.py?file=" + key);
|
||||
e.onload = e => {
|
||||
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
|
||||
.then(response => response.text())
|
||||
.then(t.step_func(text => assert_header_equals(text, expectedResults)))
|
||||
.then(_ => resolve())
|
||||
.catch(e => reject(e));
|
||||
};
|
||||
document.body.appendChild(e);
|
||||
});
|
||||
}, testNamePrefix + " object => No headers");
|
||||
}, testNamePrefix + ' embed');
|
||||
|
||||
promise_test(t => {
|
||||
let key = 'fetch-redirect' + nonce;
|
||||
let expectation = { ...expectedResults };
|
||||
if (expectation['mode'] != '')
|
||||
expectation['mode'] = 'cors';
|
||||
return fetch(urlHelperMethod('resources/echo-as-json.py?' + key))
|
||||
.then(r => r.json())
|
||||
.then(j => {assert_header_equals(j, expectation);});
|
||||
}, testNamePrefix + ' fetch() api');
|
||||
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = 'object-https-redirect' + nonce;
|
||||
let e = document.createElement('object');
|
||||
e.data = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||
e.onload = e => {
|
||||
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(t.step_func(text => assert_header_equals(text, expectation)))
|
||||
.then(resolve)
|
||||
.catch(e => reject(e));
|
||||
};
|
||||
document.body.appendChild(e);
|
||||
});
|
||||
}, testNamePrefix + ' object');
|
||||
|
||||
if (document.createElement('link').relList.supports('prefetch')) {
|
||||
async_test(t => {
|
||||
let key = "prefetch" + nonce;
|
||||
let key = 'prefetch' + nonce;
|
||||
let e = document.createElement('link');
|
||||
e.rel = "prefetch";
|
||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key) + "&simple=true";
|
||||
e.rel = 'prefetch';
|
||||
e.crossOrigin = 'anonymous';
|
||||
e.href = urlHelperMethod('resources/record-header.py?file=' + key) + '&simple=true';
|
||||
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_done(text => assert_header_equals(text, expectedResults)))
|
||||
.catch(t.unreached_func("Fetching and verifying the results should succeed."));
|
||||
.then(t.step_func_done(text => assert_header_equals(text, expectation)))
|
||||
.catch(t.unreached_func('Fetching and verifying the results should succeed.'));
|
||||
});
|
||||
e.onerror = t.unreached_func();
|
||||
document.head.appendChild(e);
|
||||
}, testNamePrefix + " prefetch => No headers");
|
||||
}, testNamePrefix + ' prefetch => No headers');
|
||||
}
|
||||
|
||||
if (document.createElement('link').relList.supports('preload')) {
|
||||
async_test(t => {
|
||||
let key = "preload" + nonce;
|
||||
let key = 'preload' + nonce;
|
||||
let e = document.createElement('link');
|
||||
e.rel = "preload";
|
||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key);
|
||||
e.setAttribute("as", "track");
|
||||
e.rel = 'preload';
|
||||
e.href = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||
e.setAttribute('as', 'track');
|
||||
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(text => assert_header_equals(text, expectedResults)))
|
||||
.then(t.step_func_done(_ => resolve()))
|
||||
.then(t.step_func_done(text => assert_header_equals(text, expectation)))
|
||||
.catch(t.unreached_func());
|
||||
});
|
||||
document.head.appendChild(e);
|
||||
}, testNamePrefix + " preload => No headers");
|
||||
}, testNamePrefix + ' preload');
|
||||
}
|
||||
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = "style-https-redirect" + nonce;
|
||||
let key = 'style-https-redirect' + nonce;
|
||||
let e = document.createElement('link');
|
||||
e.rel = "stylesheet";
|
||||
e.href = urlHelperMethod("resources/record-header.py?file=" + key);
|
||||
e.rel = 'stylesheet';
|
||||
e.href = urlHelperMethod('resources/record-header.py?file=' + key);
|
||||
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(t.step_func(text => assert_header_equals(text, expectedResults)))
|
||||
.then(_ => resolve())
|
||||
.then(t.step_func(text => assert_header_equals(text, expectation)))
|
||||
.then(resolve)
|
||||
.catch(e => reject(e));
|
||||
};
|
||||
document.body.appendChild(e);
|
||||
});
|
||||
}, testNamePrefix + " stylesheet => No headers");
|
||||
}, testNamePrefix + ' stylesheet');
|
||||
|
||||
promise_test(t => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let key = "track-https-redirect" + nonce;
|
||||
let key = 'track-https-redirect' + nonce;
|
||||
let video = createVideoElement();
|
||||
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(_ => {
|
||||
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(t.step_func(text => assert_header_equals(text, expectedResults)))
|
||||
.then(_ => resolve());
|
||||
.then(resolve);
|
||||
});
|
||||
video.appendChild(el);
|
||||
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>
|
||||
</form>
|
||||
<script>
|
||||
test(function() {
|
||||
var button1 = document.getElementById("button_id1");
|
||||
var button2 = document.getElementById("button_id2");
|
||||
|
||||
var button1 = document.getElementById("button_id1");
|
||||
var button2 = document.getElementById("button_id2");
|
||||
|
||||
if (typeof(button1.labels) == "object") {
|
||||
if (button1.labels.length == 2 && button2.labels.length == 1) {
|
||||
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(button1.labels instanceof NodeList, "button1.labels is NodeList");
|
||||
assert_equals(button1.labels.length, 2, "button1.labels.length");
|
||||
|
||||
assert_true(button2.labels instanceof NodeList, "button2.labels is NodeList");
|
||||
assert_equals(button2.labels.length, 1, "button2.labels.length");
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -3,8 +3,10 @@
|
|||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: Web Speech API (https://w3c.github.io/speech-api/)
|
||||
|
||||
[Exposed=Window, Constructor]
|
||||
[Exposed=Window]
|
||||
interface SpeechRecognition : EventTarget {
|
||||
constructor();
|
||||
|
||||
// recognition parameters
|
||||
attribute SpeechGrammarList grammars;
|
||||
attribute DOMString lang;
|
||||
|
@ -42,9 +44,9 @@ enum SpeechRecognitionErrorCode {
|
|||
"language-not-supported"
|
||||
};
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface SpeechRecognitionErrorEvent : Event {
|
||||
constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict);
|
||||
readonly attribute SpeechRecognitionErrorCode error;
|
||||
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
|
||||
[Exposed=Window,
|
||||
Constructor(DOMString type, SpeechRecognitionEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface SpeechRecognitionEvent : Event {
|
||||
constructor(DOMString type, SpeechRecognitionEventInit eventInitDict);
|
||||
readonly attribute unsigned long resultIndex;
|
||||
readonly attribute SpeechRecognitionResultList results;
|
||||
};
|
||||
|
@ -97,8 +99,9 @@ interface SpeechGrammar {
|
|||
};
|
||||
|
||||
// The object representing a speech grammar collection
|
||||
[Exposed=Window, Constructor]
|
||||
[Exposed=Window]
|
||||
interface SpeechGrammarList {
|
||||
constructor();
|
||||
readonly attribute unsigned long length;
|
||||
getter SpeechGrammar item(unsigned long index);
|
||||
void addFromURI(DOMString src,
|
||||
|
@ -126,9 +129,10 @@ partial interface Window {
|
|||
[SameObject] readonly attribute SpeechSynthesis speechSynthesis;
|
||||
};
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor(optional DOMString text)]
|
||||
[Exposed=Window]
|
||||
interface SpeechSynthesisUtterance : EventTarget {
|
||||
constructor(optional DOMString text);
|
||||
|
||||
attribute DOMString text;
|
||||
attribute DOMString lang;
|
||||
attribute SpeechSynthesisVoice? voice;
|
||||
|
@ -145,9 +149,9 @@ interface SpeechSynthesisUtterance : EventTarget {
|
|||
attribute EventHandler onboundary;
|
||||
};
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface SpeechSynthesisEvent : Event {
|
||||
constructor(DOMString type, SpeechSynthesisEventInit eventInitDict);
|
||||
readonly attribute SpeechSynthesisUtterance utterance;
|
||||
readonly attribute unsigned long charIndex;
|
||||
readonly attribute unsigned long charLength;
|
||||
|
@ -178,9 +182,9 @@ enum SpeechSynthesisErrorCode {
|
|||
"not-allowed",
|
||||
};
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
|
||||
[Exposed=Window]
|
||||
interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent {
|
||||
constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict);
|
||||
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: webxr/resources/webxr_util.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>
|
||||
<meta charset="utf-8"/>
|
||||
<title>RTL ms lquote="X" rquote="p"</title>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
math {
|
||||
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