Auto merge of #22919 - servo-wpt-sync:wpt_update_20-02-2019, r=jdm

Sync WPT with upstream (20-02-2019)

Automated downstream sync of changes from upstream as of 20-02-2019.
[no-wpt-sync]

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22919)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-02-20 23:53:12 -05:00 committed by GitHub
commit 0dda115609
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 1588 additions and 120 deletions

View file

@ -137677,6 +137677,42 @@
{}
]
],
"css/css-tables/subpixel-collapsed-borders-001.html": [
[
"/css/css-tables/subpixel-collapsed-borders-001.html",
[
[
"/css/css-tables/subpixel-collapsed-borders-ref.html",
"=="
]
],
{}
]
],
"css/css-tables/subpixel-collapsed-borders-002.html": [
[
"/css/css-tables/subpixel-collapsed-borders-002.html",
[
[
"/css/css-tables/subpixel-collapsed-borders-ref.html",
"=="
]
],
{}
]
],
"css/css-tables/subpixel-collapsed-borders-003.html": [
[
"/css/css-tables/subpixel-collapsed-borders-003.html",
[
[
"/css/css-tables/subpixel-collapsed-borders-003-ref.html",
"=="
]
],
{}
]
],
"css/css-tables/subpixel-table-cell-height-001.html": [
[
"/css/css-tables/subpixel-table-cell-height-001.html",
@ -193089,6 +193125,18 @@
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html": [
[
"/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html",
[
[
"/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue-ref.html",
"=="
]
],
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html": [
[
"/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html",
@ -194305,6 +194353,114 @@
{}
]
],
"mathml/presentation-markup/fractions/frac-bar-001.html": [
[
"/mathml/presentation-markup/fractions/frac-bar-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-bar-001-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-color-001.html": [
[
"/mathml/presentation-markup/fractions/frac-color-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-color-001-notref.html",
"!="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-color-002.html": [
[
"/mathml/presentation-markup/fractions/frac-color-002.html",
[
[
"/mathml/presentation-markup/fractions/frac-color-002-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-001.html": [
[
"/mathml/presentation-markup/fractions/frac-linethickness-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-linethickness-001-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-002.html": [
[
"/mathml/presentation-markup/fractions/frac-linethickness-002.html",
[
[
"/mathml/presentation-markup/fractions/frac-linethickness-002-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-003.html": [
[
"/mathml/presentation-markup/fractions/frac-linethickness-003.html",
[
[
"/mathml/presentation-markup/fractions/frac-linethickness-003-notref.html",
"!="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-mrow-001.html": [
[
"/mathml/presentation-markup/fractions/frac-mrow-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-mrow-001-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html": [
[
"/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/fractions/frac-visibility-001.html": [
[
"/mathml/presentation-markup/fractions/frac-visibility-001.html",
[
[
"/mathml/presentation-markup/fractions/frac-visibility-001-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/spaces/space-2.html": [
[
"/mathml/presentation-markup/spaces/space-2.html",
@ -205742,6 +205898,11 @@
{}
]
],
"client-hints/resources/sec-ch-ua.py": [
[
{}
]
],
"client-hints/resources/square.png": [
[
{}
@ -271047,6 +271208,16 @@
{}
]
],
"css/css-tables/subpixel-collapsed-borders-003-ref.html": [
[
{}
]
],
"css/css-tables/subpixel-collapsed-borders-ref.html": [
[
{}
]
],
"css/css-tables/subpixel-table-cell-height-001-ref.html": [
[
{}
@ -298787,6 +298958,11 @@
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue-ref.html": [
[
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html": [
[
{}
@ -303112,6 +303288,51 @@
{}
]
],
"mathml/presentation-markup/fractions/frac-bar-001-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-color-001-notref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-color-002-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-002-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-linethickness-003-notref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-mrow-001-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html": [
[
{}
]
],
"mathml/presentation-markup/fractions/frac-visibility-001-ref.html": [
[
{}
]
],
"mathml/presentation-markup/spaces/space-2-ref.html": [
[
{}
@ -323982,6 +324203,11 @@
{}
]
],
"webdriver/tests/send_alert_text/conftest.py": [
[
{}
]
],
"webdriver/tests/set_timeouts/__init__.py": [
[
{}
@ -338580,6 +338806,18 @@
{}
]
],
"client-hints/sec-ch-ua.http.html": [
[
"/client-hints/sec-ch-ua.http.html",
{}
]
],
"client-hints/sec-ch-ua.https.html": [
[
"/client-hints/sec-ch-ua.https.html",
{}
]
],
"clipboard-apis/async-interfaces.https.html": [
[
"/clipboard-apis/async-interfaces.https.html",
@ -376652,12 +376890,6 @@
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html": [
[
"/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html",
{}
]
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html": [
[
"/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html",
@ -411214,12 +411446,52 @@
{}
]
],
"reporting/bufferSize.html": [
[
"/reporting/bufferSize.html",
{
"testdriver": true
}
]
],
"reporting/disconnect.html": [
[
"/reporting/disconnect.html",
{
"testdriver": true
}
]
],
"reporting/generateTestReport.html": [
[
"/reporting/generateTestReport.html",
{
"testdriver": true
}
]
],
"reporting/idlharness.window.js": [
[
"/reporting/idlharness.window.html",
{}
]
],
"reporting/nestedReport.html": [
[
"/reporting/nestedReport.html",
{
"testdriver": true
}
]
],
"reporting/order.html": [
[
"/reporting/order.html",
{
"testdriver": true
}
]
],
"requestidlecallback/basic.html": [
[
"/requestidlecallback/basic.html",
@ -425626,6 +425898,12 @@
{}
]
],
"webxr/xrFrame_lifetime.https.html": [
[
"/webxr/xrFrame_lifetime.https.html",
{}
]
],
"webxr/xrSession_cancelAnimationFrame.https.html": [
[
"/webxr/xrSession_cancelAnimationFrame.https.html",
@ -449828,7 +450106,7 @@
},
"paths": {
".azure-pipelines.yml": [
"5bd9fd67a1d5cdf1f929f1dd38e606d3e4f9fb99",
"cb204cabe288508280622c59b1d30bf18b74c1a1",
"support"
],
".codecov.yml": [
@ -461083,10 +461361,22 @@
"2dd18068427ccec7f75ecbdc7fa4e19c339f53a7",
"support"
],
"client-hints/resources/sec-ch-ua.py": [
"a14a27dadf9e333784a5c636c821634b387e475f",
"support"
],
"client-hints/resources/square.png": [
"01c9666a8de9d5535615aff830810e5df4b2156f",
"support"
],
"client-hints/sec-ch-ua.http.html": [
"e333c605301e621133ee5e6f3d01e2525d5c058a",
"testharness"
],
"client-hints/sec-ch-ua.https.html": [
"b293745365a611475697aaa7b66a8a809cad7b3c",
"testharness"
],
"clipboard-apis/META.yml": [
"ecbac54806cb0d3a915c551f0a684fdc84acdd5e",
"support"
@ -577063,6 +577353,26 @@
"a24556aa0dedfab35ff7792f03b804f44c0f4160",
"reftest"
],
"css/css-tables/subpixel-collapsed-borders-001.html": [
"a71f5cc698b74a518411e57974577b4f4c4dccda",
"reftest"
],
"css/css-tables/subpixel-collapsed-borders-002.html": [
"8f8292cd22becd3ddba61f5205828596a8995e44",
"reftest"
],
"css/css-tables/subpixel-collapsed-borders-003-ref.html": [
"78e0be389393e235781549cd90ea961385ec5c68",
"support"
],
"css/css-tables/subpixel-collapsed-borders-003.html": [
"358562cbd7ff49f43c234db502513faabc8390d1",
"reftest"
],
"css/css-tables/subpixel-collapsed-borders-ref.html": [
"0a2e7a8d95b95dc21ad1c103fdfba65b8f5b1b86",
"support"
],
"css/css-tables/subpixel-table-cell-height-001-ref.html": [
"3b6297fc4ab06643b2910194479b571ca3a462f2",
"support"
@ -601084,7 +601394,7 @@
"testharness"
],
"css/cssom/CSSStyleSheet-constructable.html": [
"e3083d283f35145ae7f2be1941ff930ae864b088",
"80189fe2f36e7c89f0445511460732fa77169108",
"testharness"
],
"css/cssom/CSSStyleSheet.html": [
@ -616472,7 +616782,7 @@
"support"
],
"domparsing/DOMParser-parseFromString-html.html": [
"ec424423a1d28988d2b949b51e9467f0cf702290",
"ad65cc58618462591568dda622f35b68a64c1d63",
"testharness"
],
"domparsing/DOMParser-parseFromString-xml-doctype.html": [
@ -634167,12 +634477,16 @@
"76019c9b41e4fd4c56f4252d399f088b7b3e4470",
"reftest"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue-ref.html": [
"837c4fd7833d569f2949bf1c2a677836ac851597",
"support"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html": [
"427189f6fc78074ae13c58e94ae3d02bc0e513b2",
"testharness"
"c2d300999eeaa207365b5c0b42f9b033e6b96446",
"reftest"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html": [
"8354041eb2a0aa57b283e12d9c0390f16327ac80",
"c4c14bc2a394ff19c14bfa76c4b59ad5d6ddb618",
"support"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html": [
@ -634180,7 +634494,7 @@
"reftest"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html": [
"39461350b089b9041a71a6ca9aad7f1cfc078d68",
"c3ee804c485b762d8b69614136558bbf2ed833a8",
"support"
],
"html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html": [
@ -643460,7 +643774,7 @@
"support"
],
"interfaces/webxr.idl": [
"74466f856be208f091372c778c0c70ca8fa0e9a2",
"899bb0daa008ccb547d47b0a96c383c40e7e776e",
"support"
],
"interfaces/worklets.idl": [
@ -644087,6 +644401,70 @@
"848eb5b144cef3740b794475f699229243c1287e",
"testharness"
],
"mathml/presentation-markup/fractions/frac-bar-001-ref.html": [
"5b7a8dff47e90cf2b0dc02688dd478deaf0a13fc",
"support"
],
"mathml/presentation-markup/fractions/frac-bar-001.html": [
"6688a587b1f25e2523ef5fd2535227381a1c263d",
"reftest"
],
"mathml/presentation-markup/fractions/frac-color-001-notref.html": [
"498d6277a3258c70882e7b2ec92e82e974bf9ab0",
"support"
],
"mathml/presentation-markup/fractions/frac-color-001.html": [
"bc61dbf51ffe487122859f189223b2ef43f88bb1",
"reftest"
],
"mathml/presentation-markup/fractions/frac-color-002-ref.html": [
"fe2f4fa7b1899e5d1114e3a89b14dc96843ef070",
"support"
],
"mathml/presentation-markup/fractions/frac-color-002.html": [
"d7cc88cb21bd9ed62d9a269e1029f113f9a27d13",
"reftest"
],
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
"c703edb764fe883e05e47e26464149aa64af1070",
"support"
],
"mathml/presentation-markup/fractions/frac-linethickness-001.html": [
"94111174c6aa3ecf1fff4982bfc9ecbf4a10c2ee",
"reftest"
],
"mathml/presentation-markup/fractions/frac-linethickness-002-ref.html": [
"69663938c1951a34a1e1134d549b610ea00c15e8",
"support"
],
"mathml/presentation-markup/fractions/frac-linethickness-002.html": [
"5bb0d6bfb9d6113a04b9d3160ccc9db80aceaaa6",
"reftest"
],
"mathml/presentation-markup/fractions/frac-linethickness-003-notref.html": [
"934d66633397313175e98c4bda871bb0a95e5db0",
"support"
],
"mathml/presentation-markup/fractions/frac-linethickness-003.html": [
"e535e703b52c75800155b5b25995730b2a236287",
"reftest"
],
"mathml/presentation-markup/fractions/frac-mrow-001-ref.html": [
"e42cb96fe8383959bef2d778cfb29d0638f1de03",
"support"
],
"mathml/presentation-markup/fractions/frac-mrow-001.html": [
"e5c6f52529443e881b8235a67f3e8cc7aa10fb51",
"reftest"
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html": [
"2fa978624dc206c834f70d4cf620b565f8f3ac12",
"support"
],
"mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html": [
"61f49e2ff5381c9684e5b36d03a51daf7f8f3e74",
"reftest"
],
"mathml/presentation-markup/fractions/frac-parameters-1.html": [
"543017e19006377cac0c1a434bd43400467fac3b",
"testharness"
@ -644095,6 +644473,14 @@
"75074875c9e6b1fa205fe76b85c4a0b36fadf274",
"testharness"
],
"mathml/presentation-markup/fractions/frac-visibility-001-ref.html": [
"41a262d511197edebb913cb68eb688eddf763ff2",
"support"
],
"mathml/presentation-markup/fractions/frac-visibility-001.html": [
"b98f68d2a585d340804b27120a89d8e71e4c9e51",
"reftest"
],
"mathml/presentation-markup/operators/mo-axis-height-1.html": [
"7b0031ac1ed63219130b69113ebbfdc28eec10d6",
"testharness"
@ -666123,10 +666509,30 @@
"980823f59f7e3ac4f35a31ab6df37ce16e538f54",
"support"
],
"reporting/bufferSize.html": [
"b3512b3bc93b322e2015e71d70f01bc5986bc24d",
"testharness"
],
"reporting/disconnect.html": [
"2dc5e8fd2de724e41bc0c003b4e7036d1d954371",
"testharness"
],
"reporting/generateTestReport.html": [
"e3c2735686a05eefc9bbcfb107f76ec7275b8948",
"testharness"
],
"reporting/idlharness.window.js": [
"17cef8183596ae1d0b307fb8ddccc7455b955966",
"testharness"
],
"reporting/nestedReport.html": [
"156338ee74653bfdc843e6acceda073c02ca635b",
"testharness"
],
"reporting/order.html": [
"c43964220c981f4b91c7c5e7eac7fc67377b367b",
"testharness"
],
"requestidlecallback/META.yml": [
"9c829d3c8885bb9b594e7096a878166e07f3e278",
"support"
@ -667140,7 +667546,7 @@
"support"
],
"resources/testdriver.js": [
"e328302e4f345114654eda323dbd09a5f650d419",
"031be1b7e5501658d412aecc6f0cba56b3444601",
"support"
],
"resources/testdriver.js.headers": [
@ -682188,7 +682594,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/base.py": [
"0e54eca778b3d6df8ae41da00f6acce129be82c1",
"41cf2c641d291b9fa573c3421e6fb61622a502fd",
"support"
],
"tools/wptrunner/wptrunner/executors/executorchrome.py": [
@ -682216,7 +682622,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
"21868421712994e83eb317f281c6cf0ff69f5229",
"fa257e1296e9046425d88b99ce440b9e658edd2a",
"support"
],
"tools/wptrunner/wptrunner/executors/executorservo.py": [
@ -682228,7 +682634,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
"3f8c2bb5a3f94a5230bf93e7e4192692df8f0ab3",
"817b2717cb71352955315497956065c72561050f",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@ -682240,7 +682646,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/protocol.py": [
"aa3565e5726a0662d10ed49cee85f153691c441f",
"d08b74bfc36ae97cebaa148741701dcc2a767399",
"support"
],
"tools/wptrunner/wptrunner/executors/pytestrunner/__init__.py": [
@ -682300,7 +682706,7 @@
"support"
],
"tools/wptrunner/wptrunner/metadata.py": [
"3a92491aa22202e21041a258220afae6bda13a92",
"8699ac4fc734c1a45a4b7723b3dceea27590f8fa",
"support"
],
"tools/wptrunner/wptrunner/products.py": [
@ -682312,7 +682718,7 @@
"support"
],
"tools/wptrunner/wptrunner/testdriver-extra.js": [
"6336d227db8d7d9f3e6c4276ad2f5c609e9f27e9",
"09d7c2908671228e625d0717e567d751470fe6cd",
"support"
],
"tools/wptrunner/wptrunner/testdriver-vendor.js": [
@ -687959,6 +688365,10 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
],
"webdriver/tests/send_alert_text/conftest.py": [
"f34630c3cbc5de2700552e576bc7c797d2bd724f",
"support"
],
"webdriver/tests/send_alert_text/send.py": [
"6dbc03f94019abf6fc467ae2baf8fb9d21823e64",
"wdspec"
@ -693559,6 +693969,10 @@
"69a35c2510983550993f630ea6f0a165c2e89369",
"testharness"
],
"webxr/xrFrame_lifetime.https.html": [
"971a6d78a1e1ee1c51141a475868185318680495",
"testharness"
],
"webxr/xrSession_cancelAnimationFrame.https.html": [
"9b08f93eead693c1c9aa6d7e2458988aa7dae442",
"testharness"

View file

@ -74,3 +74,6 @@
[opacity end]
expected: FAIL
[border-bottom-width end]
expected: FAIL

View file

@ -6,6 +6,3 @@
[Instant scrolling while doing history navigation.]
expected: FAIL
[Smooth scrolling while doing history navigation.]
expected: FAIL

View file

@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
expected: CRASH
expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@ -60,12 +60,6 @@
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1258: cp1258 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1256: cp1256 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso_8859-9 (XMLHttpRequest)]
expected: TIMEOUT
@ -90,35 +84,32 @@
[windows-1256: x-cp1256 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1257: x-cp1257 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: cp1255 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1256: windows-1256 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1257: windows-1257 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso88599 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso-8859-9 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso8859-9 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso-ir-148 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: csisolatin5 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: windows-1255 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1258: x-cp1258 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: x-cp1255 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1258: windows-1258 (XMLHttpRequest)]
expected: TIMEOUT
[x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
expected: TIMEOUT
[single-byte-decoder.html?TextDecoder]

View file

@ -312,18 +312,9 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +1,5 @@
[track-cue-rendering-empty-cue.html]
expected: TIMEOUT
[Empty cues]
expected: FAIL

View file

@ -1,10 +0,0 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -12,6 +12,3 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
[Verifies the resolution of performance.now() is at least 5 microseconds.]
expected: FAIL

View file

@ -0,0 +1,2 @@
[transition_calc_implicit.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[paint_timing.html]
[Performance entries observer]
expected: FAIL

View file

@ -211,16 +211,3 @@ jobs:
displayName: 'Publish results'
inputs:
artifactName: 'safari-preview-results'
# The InvokeRESTAPI task can only run in a server job.
- job: results_post
displayName: 'all tests (wpt.fyi hook)'
dependsOn: results_safari_preview
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: curl -s -S https://wpt.fyi/api/checks/azure/$(Build.BuildId)
displayName: 'Invoke wpt.fyi hook'
- script: curl -s -S https://staging.wpt.fyi/api/checks/azure/$(Build.BuildId)
displayName: 'Invoke staging.wpt.fyi hook'
condition: succeededOrFailed()

View file

@ -0,0 +1,11 @@
def main(request, response):
ua = request.headers.get('sec-ch-ua', '')
response.headers.set("Content-Type", "text/html")
response.headers.set("Accept-CH", "UA")
response.headers.set("Accept-CH-Lifetime", "10")
response.content = '''
<script>
window.opener.postMessage({ header: "%s" }, "*");
</script>
Sec-CH-UA: %s
''' % (ua, ua)

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
promise_test(t => {
return new Promise((resolve, reject) => {
var w;
window.onmessage = e => {
assert_equals(e.data.header, "", "The `Sec-CH-UA` header is not delivered.");
w.close();
resolve();
};
w = window.open("./resources/sec-ch-ua.py");
});
}, "Open HTTP window: no `Sec-CH-UA` header.")
</script>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<head>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
var minor = "";
promise_test(t => {
return new Promise((resolve, reject) => {
var w;
window.onmessage = e => {
try {
assert_not_equals(e.data.header, "", "The `Sec-CH-UA` header is delivered.");
minor = e.data.header;
} catch (ex) {
reject(ex);
}
w.close();
resolve();
};
w = window.open("./resources/sec-ch-ua.py");
});
}, "Open HTTPS window prior to opt-in: `Sec-CH-UA` header with minor version.")
promise_test(t => {
return new Promise((resolve, reject) => {
var w;
window.onmessage = e => {
try {
assert_not_equals(e.data.header, "", "The `Sec-CH-UA` header is delivered.");
assert_not_equals(e.data.header, minor, "The `Sec-CH-UA` header is different after the opt-in than before.");
} catch (ex) {
reject(ex);
}
w.close();
resolve();
};
w = window.open("./resources/sec-ch-ua.py");
});
}, "Open HTTPS window post-opt-in: `Sec-CH-UA` header with minor version.")
</script>
</head>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#collapsing-borders">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#border-conflict-resolution-algorithm">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/606">
<link rel="match" href="subpixel-collapsed-borders-ref.html">
<meta name="flags" content="" />
<meta name="assert" content="When collapsed border tables have border widths larger than cells', the table border wins." />
<style>
table {
border: 5px solid green;
border-collapse: collapse;
}
td {
width: 50px;
height: 50px;
border: 4.95px solid red;
}
</style>
<p>There should be a square with a green border, not a red border.
</p>
<table>
<tr>
<td></td>
</tr>
</table>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#collapsing-borders">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#border-conflict-resolution-algorithm">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/606">
<link rel="match" href="subpixel-collapsed-borders-ref.html">
<meta name="flags" content="" />
<meta name="assert" content="When collapsed border tables have border widths larger than cells', the table border wins even when the cell border is merely 0.01 pixels narrower" />
<style>
table {
border: 5px solid green;
border-collapse: collapse;
}
td {
width: 50px;
height: 50px;
border: 4.99px solid red;
}
</style>
<p>There should be a square with a green border, not a red border.
</p>
<table>
<tr>
<td></td>
</tr>
</table>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<style>
table {
border: 5.95px solid green;
border-collapse: collapse;
}
td {
width: 50px;
height: 50px;
border: 1px solid red;
}
</style>
<p>There should be a square with a green border, not a red border.
</p>
<table>
<tr>
<td></td>
</tr>
</table>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#collapsing-borders">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#border-conflict-resolution-algorithm">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/606">
<link rel="match" href="subpixel-collapsed-borders-003-ref.html">
<meta name="flags" content="" />
<meta name="assert" content="When collapsed border tables have border widths larger than cells', the table border wins even when the floored table border is the same size as the cell's." />
<style>
table {
border: 5.95px solid green;
border-collapse: collapse;
}
td {
width: 50px;
height: 50px;
border: 5px solid red;
}
</style>
<p>There should be a square with a green border, not a red border.
</p>
<table>
<tr>
<td></td>
</tr>
</table>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<style>
table {
border: 5px solid green;
border-collapse: collapse;
}
td {
width: 50px;
height: 50px;
border: 1px solid red;
}
</style>
<p>There should be a square with a green border, not a red border.
</p>
<table>
<tr>
<td></td>
</tr>
</table>

View file

@ -14,7 +14,7 @@
<span class="yellow"></span>
</div>
</section>
<section id="secondSection"></section>
<section id="shadowHost"></section>
<section id="thirdSection"></section>
<script>
@ -27,7 +27,8 @@ const yellowStyleText = ".yellow { color: yellow; }";
const firstDiv = document.querySelector('#firstSection > div');
const secondDiv = firstDiv.cloneNode(true);
const shadowRoot = document.querySelector('#secondSection').attachShadow({mode: 'open'});
const shadowHost = document.querySelector('#shadowHost');
const shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.appendChild(secondDiv);
const greenSpan = firstDiv.children[0];
@ -209,6 +210,24 @@ promise_test(() => {
});
}, 'Constructed style sheets can be applied on shadow root');
promise_test(() => {
return Promise.all(createAllSheetsPromise()).then(values => {
const greenStyleSheet = values[0];
const redStyleSheet = values[1];
shadowRoot.adoptedStyleSheets = [greenStyleSheet];
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 128, 0)", "Style applies connected");
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(0, 0, 0)", "Style applies when connected");
let hostParent = shadowHost.parentNode;
hostParent.removeChild(shadowHost);
assert_equals(getComputedStyle(greenShadowSpan).color, "", "Style doesn't apply when detached");
assert_equals(getComputedStyle(redShadowSpan).color, "", "Style doesn't apply when detached");
shadowRoot.adoptedStyleSheets = [redStyleSheet, greenStyleSheet];
hostParent.appendChild(shadowHost);
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 128, 0)", "Style applies after reattach");
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(255, 0, 0)", "Style applies after reattach");
});
}, 'Re-attaching shadow host with adopted stylesheets work');
promise_test(() => {
const plainSheet = new CSSStyleSheet();
const redStyleSheetPromise = plainSheet.replace(redStyleTexts[0]);

View file

@ -66,6 +66,11 @@ test(function() {
assert_equals(htmldoc.documentElement.namespaceURI, "http://www.w3.org/1999/xhtml");
}, "DOMParser parses HTML tag soup with no problems");
test(function() {
const doc = new DOMParser().parseFromString('<noembed>&lt;a&gt;</noembed>', 'text/html');
assert_equals(doc.querySelector('noembed').textContent, '&lt;a&gt;');
}, 'DOMParser should handle the content of <noembed> as raw text');
test(function() {
assert_throws(new TypeError(), function() {
new DOMParser().parseFromString("", "text/foo-this-is-invalid");

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html class="reftest-wait">
<title>Reference for track rendering with empty cue</title>
<script src="/common/reftest-wait.js"></script>
<style>
html { overflow:hidden }
body { margin:0 }
.container {
display: inline-block;
position: relative;
}
</style>
<div class="container">
<video width="320" height="180">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
<script>
var video = document.querySelector("video");
video.addEventListener('playing', () => {
video.pause();
takeScreenshot();
}, { once: true});
video.play();
</script>
</video>
</div>
</html>

View file

@ -1,16 +1,26 @@
<!DOCTYPE html>
<title>Empty cues</title>
<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
async_test(function(t) {
var video = document.createElement("video");
video.src = getVideoURI("/media/test");
video.addTextTrack("captions", "regular captions track", "en");
video.textTracks[0].addCue(new VTTCue(0, 4, ""));
<html class="reftest-wait">
<title>Track rendering with empty cue</title>
<link rel="match" href="track-cue-rendering-empty-cue-ref.html">
<style>
html { overflow:hidden }
body { margin:0 }
</style>
<script src="/common/reftest-wait.js"></script>
<video width="320" height="180">
<source src="/media/white.webm" type="video/webm">
<source src="/media/white.mp4" type="video/mp4">
<script>
var video = document.querySelector("video");
var track = video.addTextTrack("captions", "regular captions track", "en");
track.addCue(new VTTCue(0, 4, ""));
track.mode = "showing";
video.onplaying = t.step_func_done();
video.addEventListener('playing', () => {
video.pause();
takeScreenshot();
}, { once: true});
video.play();
});
</script>
</script>
</video>
</html>

View file

@ -20,7 +20,6 @@
background: green;
color: green;
font-size: 120px;
padding: 2px;
}
</style>
<div class="container">

View file

@ -22,7 +22,6 @@
background: green;
color: green;
font-size: 50px;
padding: 2px;
}
</style>
<div class="container">

View file

@ -170,7 +170,7 @@ interface XRRay {
};
enum XRHandedness {
"",
"none",
"left",
"right"
};

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions bar</title>
<style type="text/css">
#container {
position: absolute;
left: 10px;
top: 50px;
width: 150px;
height: 150px;
background: green;
}
</style>
</head>
<body>
<p>This test passes if you see a green square.</p>
<div id="container"></div>
</body>
</html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<meta charset="utf-8">
<title>fractions bar</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="Verifies painting of the fraction bar">
<link rel="match" href="frac-bar-001-ref.html">
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
/* The gap / shift / axisheight parameters are set to 0. */
font-family: "TestFont";
font-size: 1px;
}
#container {
position: absolute;
left: 0;
top: 0;
}
</style>
<script src="/common/reftest-wait.js"></script>
<script>
window.addEventListener("load", () => {
// Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
requestAnimationFrame(() => { document.fonts.ready.then(adjustPositionOfFraction); });
});
function adjustPositionOfFraction()
{
requestAnimationFrame(() => {
var container = document.getElementById("container");
var numeratorBox = document.getElementById("numerator").getBoundingClientRect();
container.style.left = (10 - numeratorBox.left) + "px";
container.style.top = (50 - numeratorBox.top) + "px";
requestAnimationFrame(takeScreenshot);
});
}
</script>
</head>
<body>
<p>This test passes if you see a green square.</p>
<div id="container">
<math>
<mfrac style="color: green; font-size: 15em">
<mspace id="numerator" width="150px"></mspace>
<mspace></mspace>
</mfrac>
</math>
</div>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction bar color</title>
</head>
<body style="font-size: 20pt;">
<p>This test passes if you see a fraction with a blue fraction bar.</p>
<math>
<mfrac>
<mspace width="200px" height="20px" style="background: black"></mspace>
<mspace width="200px" height="20px" style="background: black"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction bar color</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="The CSS color property has an effect on the fraction bar.">
<link rel="mismatch" href="frac-color-001-notref.html">
</head>
<body style="font-size: 20pt;">
<p>This test passes if you see a fraction with a blue fraction bar.</p>
<math>
<mfrac style="color: blue;">
<mspace width="200px" height="20px" style="background: black"></mspace>
<mspace width="200px" height="20px" style="background: black"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions color</title>
</head>
<body>
<p>This test passes if you see a green square and a blue square.</p>
<div style="background: green; width: 200px; height: 200px;">
</div>
<div style="background: blue; width: 200px; height: 200px;">
</div>
</body>
</html>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions color</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="Verifies the color attribute affects the fraction bar">
<link rel="match" href="frac-color-002-ref.html">
</head>
<body>
<p>This test passes if you see a green square and a blue square.</p>
<div style="background: green; width: 200px; height: 200px;">
<math>
<mspace width="10px"></mspace>
<mfrac style="color: green">
<mspace width="150px" height="20px"></mspace>
<mspace width="150px" height="20px"></mspace>
</mfrac>
</math>
</div>
<div style="background: blue; width: 200px; height: 200px;">
<math>
<mspace width="10px"></mspace>
<mfrac style="color: blue">
<mspace width="150px" height="20px"></mspace>
<mspace width="150px" height="20px"></mspace>
</mfrac>
</math>
</div>
</body>
</html>

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
font-family: "TestFont";
font-size: 1px;
}
</style>
</head>
<body>
<p>This test passes if you see fractions with line thickness equal to the height of their blue numerator and cyan denominator.</p>
<math>
<mfrac linethickness="5px">
<mspace width="20px" height="5px" style="background: blue"></mspace>
<mspace width="20px" height="5px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="10px">
<mspace width="20px" height="10px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="20px">
<mspace width="20px" height="20px" style="background: blue"></mspace>
<mspace width="20px" height="20px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="50px">
<mspace width="20px" height="50px" style="background: blue"></mspace>
<mspace width="20px" height="50px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="Verifies 'thin', 'medium', 'thick' and unitless values for the linethickness attribute of the mfrac element">
<link rel="match" href="frac-linethickness-001-ref.html">
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
font-family: "TestFont";
font-size: 1px;
}
</style>
</head>
<body>
<p>This test passes if you see fractions with line thickness equal to the height of their blue numerator and cyan denominator.</p>
<math>
<mfrac linethickness="thin">
<mspace width="20px" height="5px" style="background: blue"></mspace>
<mspace width="20px" height="5px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="medium">
<mspace width="20px" height="10px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="thick">
<mspace width="20px" height="20px" style="background: blue"></mspace>
<mspace width="20px" height="20px" style="background: cyan"></mspace>
</mfrac>
<mfrac linethickness="5">
<mspace width="20px" height="50px" style="background: blue"></mspace>
<mspace width="20px" height="50px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
font-family: "TestFont";
font-size: 1px;
}
</style>
</head>
<body>
<p>This test passes if you see fraction with a cyan denominator and
a blue numerator as tall as its black bar.</p>
<math>
<mfrac linethickness="0px">
<mspace width="20px" height="0px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
<math>
<mfrac linethickness="50px">
<mspace width="20px" height="50px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
<math style="font-size: 180px">
<mfrac linethickness="0.3888888888888889em">
<mspace width="20px" height="70px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="Verifies fraction with negative, percent and named space linethickness values.">
<link rel="match" href="frac-linethickness-002-ref.html">
<style type="text/css">
@font-face {
font-family: TestFont;
src: url("/fonts/math/fraction-rulethickness10000.woff");
}
math {
/* FractionRuleThickness = 10000 * 1 / 1000 = 10px; */
font-family: "TestFont";
font-size: 1px;
}
</style>
</head>
<body>
<p>This test passes if you see fraction with a cyan denominator and
a blue numerator as tall as its black bar.</p>
<math>
<mfrac linethickness="-1.23em">
<mspace width="20px" height="0px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
<math>
<mfrac linethickness="500%">
<mspace width="20px" height="50px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
<math style="font-size: 180px">
<mfrac linethickness="veryverythickmathspace">
<mspace width="20px" height="70px" style="background: blue"></mspace>
<mspace width="20px" height="10px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
</head>
<body>
<p>This test passes if you see a fraction without fraction bar.</p>
<math>
<mfrac>
<mspace width="20px" height="5px" style="background: blue"></mspace>
<mspace width="20px" height="5px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions linethickness</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="Verifies fraction with 0px bar.">
<link rel="mismatch" href="frac-linethickness-003-notref.html">
</head>
<body>
<p>This test passes if you see a fraction without fraction bar.</p>
<math>
<mfrac linethickness="0px">
<mspace width="20px" height="5px" style="background: blue"></mspace>
<mspace width="20px" height="5px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction mrow</title>
</head>
<body style="font-size: 20pt;">
<p>This test passes if you see a fraction with a blue square as numerator and a cyan square as denominator.</p>
<math>
<mfrac>
<mspace width="60px" height="60px" style="background: blue"></mspace>
<mspace width="60px" height="60px" style="background: cyan"></mspace>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction mrow</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="This test that <mrow> elements can be used as numerator and denominator of fractions.">
<link rel="match" href="frac-mrow-001-ref.html">
</head>
<body style="font-size: 20pt;">
<p>This test passes if you see a fraction with a blue square as numerator and a cyan square as denominator.</p>
<math>
<mfrac>
<mrow>
<mspace width="30px" height="60px" style="background: blue"></mspace>
<mspace width="30px" height="60px" style="background: blue "></mspace>
</mrow>
<mrow>
<mspace width="30px" height="60px" style="background: cyan"></mspace>
<mspace width="30px" height="60px" style="background: cyan "></mspace>
</mrow>
</mfrac>
</math>
</body>
</html>

View file

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction numalign denomalign</title>
</head>
<body>
<p>This test passes if you see 3 fractions with a numerator respectively
aligned left/center/right with respect to the denominator ;
followed by 3 fractions with a denominator respectively aligned
left/center/right with respect to the numerator.</p>
<p>
<math>
<mfrac>
<mrow>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="20px" height="20px"></mspace>
</mrow>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
<math>
<mfrac>
<mrow>
<mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="10px" height="20px"></mspace>
</mrow>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
<math>
<mfrac>
<mrow>
<mspace width="20px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
</mrow>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
</p>
<p>
<math>
<mfrac>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mrow>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="20px" height="20px"></mspace>
</mrow>
</mfrac>
</math>
<math>
<mfrac>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mrow>
<mspace width="10px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="10px" height="20px"></mspace>
</mrow>
</mfrac>
</math>
<math>
<mfrac>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mrow>
<mspace width="20px" height="20px"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
</mrow>
</mfrac>
</math>
</p>
</body>
</html>

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction numalign denomalign</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="This fraction alignment with the numalign/denomalign attributes.">
<link rel="match" href="frac-numalign-denomalign-001-ref.html">
</head>
<body>
<p>This test passes if you see 3 fractions with a numerator respectively
aligned left/center/right with respect to the denominator ;
followed by 3 fractions with a denominator respectively aligned
left/center/right with respect to the numerator.</p>
<p>
<math>
<mfrac numalign="left">
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
<math>
<mfrac numalign="center">
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
<math>
<mfrac numalign="right">
<mspace width="10px" height="20px" style="background: blue;"></mspace>
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
</mfrac>
</math>
</p>
<p>
<math>
<mfrac denomalign="left">
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
</mfrac>
</math>
<math>
<mfrac denomalign="center">
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
</mfrac>
</math>
<math>
<mfrac denomalign="right">
<mspace width="30px" height="20px" style="background: cyan;"></mspace>
<mspace width="10px" height="20px" style="background: blue;"></mspace>
</mfrac>
</math>
</p>
</body>
</html>

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction bar visibility</title>
</head>
<body>
<p>This test passes if you see a green square and no red.</p>
<div style="background: green; width: 200px; height: 200px;">
</div>
</body>
</html>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fraction bar visibility</title>
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2">
<meta name="assert" content="The CSS visible property affects the rendering of the fraction bar.">
<link rel="match" href="frac-visibility-001-ref.html">
</head>
<body>
<p>This test passes if you see a green square and no red.</p>
<div style="background: green; width: 200px; height: 200px;">
<math>
<mfrac style="visibility: hidden; color: red">
<mspace width="200px" height="20px"></mspace>
<mspace width="200px" height="20px"></mspace>
</mfrac>
</math>
</div>
</body>
</html>

View file

@ -0,0 +1,29 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Reporting: Buffer size</title>
<link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
// Test the buffer size (100) of ReportingObserver.
async_test(async function(test) {
for (i = 0; i != 110; ++i)
await test_driver.generate_test_report("" + i);
var observer = new ReportingObserver(function(reports) {
test.step(function() {
// Only (the most recent) 100 reports should be observed, even though
// 110 were buffered.
assert_equals(reports.length, 100);
for(i = 0; i != 100; ++i) {
assert_equals(reports[i].body.message, "" + (i + 10));
}
});
test.done();
}, {buffered: true});
observer.observe();
}, "Buffer size");
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Reporting: Disconnect</title>
<link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
async_test(async function(test) {
var observer = new ReportingObserver(function(reports, observer) {
test.step(function() {
assert_equals(reports.length, 1);
assert_equals(reports[0].body.message, "Test message.");
});
test.done();
});
observer.observe();
// The observer should still receive this report even though disconnect()
// is called immediately afterwards.
await test_driver.generate_test_report("Test message.");
observer.disconnect();
}, "Disconnect");
</script>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<title>Reporting: Generate Test Report</title>
<link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
// Test that the "generate_test_report" API works.
async_test(function(test) {
var observer = new ReportingObserver(function(reports) {
test.step(function() {
assert_equals(reports.length, 1);
// Ensure that the contents of the report are valid.
assert_equals(reports[0].type, "test");
assert_true(reports[0].url.endsWith("reporting/generateTestReport.html"));
assert_equals(reports[0].body.message, "Test message.");
});
test.done();
});
observer.observe();
// This should result in a "test" type report being generated and observed.
test_driver.generate_test_report("Test message.");
}, "Generate Test Report");
</script>

View file

@ -0,0 +1,30 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Reporting: Nested report</title>
<link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
// Test that reports can be generated within a ReportingObserver
// callback. These reports should be received by the same observer.
async_test(function(test) {
var step = 0;
var observer = new ReportingObserver(async function(reports, observer) {
test.step(function() {
assert_equals(reports.length, 1);
assert_equals(reports[0].body.message, "" + step);
});
++step;
if (step == 3)
test.done();
test_driver.generate_test_report("" + step);
});
observer.observe();
test_driver.generate_test_report("0");
}, "Nested report");
</script>

View file

@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Reporting: Order</title>
<link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<p id="error">No error</p>
<script>
var count = 0;
async_test(function(test) {
var observer = new ReportingObserver(function(reports) {
test.step(function() {
// Reports should be received in the same order that they were
// generated.
for(i in reports) {
assert_equals(reports[i].body.message, "" + count++);
}
});
if (count == 10)
test.done();
});
observer.observe();
for (i = 0; i != 10; ++i)
test_driver.generate_test_report("" + i);
}, "Order");
</script>
</body>
</html>

View file

@ -194,6 +194,20 @@
*/
action_sequence: function(actions) {
return window.test_driver_internal.action_sequence(actions);
},
/**
* Generates a test report on the current page
*
* The generate_test_report function generates a report (to be observed
* by ReportingObserver) for testing purposes, as described in
* {@link https://w3c.github.io/reporting/#generate-test-report-command}
*
* @returns {Promise} fulfilled after the report is generated, or
* rejected if the report generation fails
*/
generate_test_report: function(message) {
return window.test_driver_internal.generate_test_report(message);
}
};
@ -281,6 +295,17 @@
*/
action_sequence: function(actions) {
return Promise.reject(new Error("unimplemented"));
},
/**
* Generates a test report on the current page
*
* @param {String} message - the message to be contained in the report
* @returns {Promise} fulfilled after the report is generated, or
* rejected if the report generation fails
*/
generate_test_report: function(message) {
return Promise.reject(new Error("unimplemented"));
}
};
})();

View file

@ -509,7 +509,8 @@ class CallbackHandler(object):
self.actions = {
"click": ClickAction(self.logger, self.protocol),
"send_keys": SendKeysAction(self.logger, self.protocol),
"action_sequence": ActionSequenceAction(self.logger, self.protocol)
"action_sequence": ActionSequenceAction(self.logger, self.protocol),
"generate_test_report": GenerateTestReportAction(self.logger, self.protocol)
}
def __call__(self, result):
@ -593,3 +594,13 @@ class ActionSequenceAction(object):
def get_element(self, selector):
element = self.protocol.select.element_by_selector(selector)
return element
class GenerateTestReportAction(object):
def __init__(self, logger, protocol):
self.logger = logger
self.protocol = protocol
def __call__(self, payload):
message = payload["message"]
self.logger.debug("Generating test report: %s" % message)
self.protocol.generate_test_report.generate_test_report(message)

View file

@ -213,9 +213,6 @@ class SeleniumProtocol(Protocol):
resolve_ip=False),
desired_capabilities=self.capabilities)
def after_conect(self):
pass
def teardown(self):
self.logger.debug("Hanging up on Selenium session")
try:

View file

@ -20,7 +20,8 @@ from .protocol import (BaseProtocolPart,
ClickProtocolPart,
SendKeysProtocolPart,
ActionSequenceProtocolPart,
TestDriverProtocolPart)
TestDriverProtocolPart,
GenerateTestReportProtocolPart)
from ..testrunner import Stop
import webdriver as client
@ -188,6 +189,15 @@ class WebDriverTestDriverProtocolPart(TestDriverProtocolPart):
self.webdriver.execute_script("window.postMessage(%s, '*')" % json.dumps(obj))
class WebDriverGenerateTestReportProtocolPart(GenerateTestReportProtocolPart):
def setup(self):
self.webdriver = self.parent.webdriver
def generate_test_report(self, message):
json_message = {"message": message}
self.webdriver.send_session_command("POST", "reporting/generate_test_report", json_message)
class WebDriverProtocol(Protocol):
implements = [WebDriverBaseProtocolPart,
WebDriverTestharnessProtocolPart,
@ -195,7 +205,8 @@ class WebDriverProtocol(Protocol):
WebDriverClickProtocolPart,
WebDriverSendKeysProtocolPart,
WebDriverActionSequenceProtocolPart,
WebDriverTestDriverProtocolPart]
WebDriverTestDriverProtocolPart,
WebDriverGenerateTestReportProtocolPart]
def __init__(self, executor, browser, capabilities, **kwargs):
super(WebDriverProtocol, self).__init__(executor, browser)
@ -214,9 +225,6 @@ class WebDriverProtocol(Protocol):
self.webdriver.start()
def after_conect(self):
pass
def teardown(self):
self.logger.debug("Hanging up on WebDriver session")
try:

View file

@ -265,6 +265,7 @@ class ClickProtocolPart(ProtocolPart):
:param element: A protocol-specific handle to an element."""
pass
class SendKeysProtocolPart(ProtocolPart):
"""Protocol part for performing trusted clicks"""
__metaclass__ = ABCMeta
@ -280,6 +281,20 @@ class SendKeysProtocolPart(ProtocolPart):
pass
class GenerateTestReportProtocolPart(ProtocolPart):
"""Protocol part for generating test reports"""
__metaclass__ = ABCMeta
name = "generate_test_report"
@abstractmethod
def generate_test_report(self, message):
"""Generate a test report.
:param message: The message to be contained in the report."""
pass
class ActionSequenceProtocolPart(ProtocolPart):
"""Protocol part for performing trusted clicks"""
__metaclass__ = ABCMeta

View file

@ -365,7 +365,7 @@ class ExpectedUpdater(object):
if self.ignore_existing:
test_data.set_requires_update()
test_data.clear.append("expected")
test_data.clear.add("expected")
self.tests_visited[test_id] = set()
def test_status(self, data):

View file

@ -90,4 +90,13 @@
window.__wptrunner_message_queue.push({"type": "action", "action": "action_sequence", "actions": actions});
return pending_promise;
};
window.test_driver_internal.generate_test_report = function(message) {
const pending_promise = new Promise(function(resolve, reject) {
pending_resolve = resolve;
pending_reject = reject;
});
window.__wptrunner_message_queue.push({"type": "action", "action": "generate_test_report", "message": message});
return pending_promise;
};
})();

View file

@ -0,0 +1,24 @@
import pytest
from webdriver.error import NoSuchAlertException, NoSuchWindowException
@pytest.fixture(name="session")
def fixture_session(capabilities, session, create_window):
"""Prevent dialog rate limits by running the test in a new window."""
original_handle = session.window_handle
session.window_handle = create_window()
yield session
try:
session.alert.dismiss()
except NoSuchAlertException:
pass
try:
session.close()
except NoSuchWindowException:
pass
session.window_handle = original_handle

View file

@ -0,0 +1,55 @@
<!DOCTYPE html>
<body>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="resources/webxr_util.js"></script>
<canvas></canvas>
<script>
let immersiveTestName = "XRFrame methods throw exceptions outside of the " +
"requestAnimationFrame callback for immersive sessions";
let nonImmersiveTestName = "XRFrame methods throw exceptions outside of the " +
"requestAnimationFrame callback for non-immersive sessions";
let fakeDeviceInitParams = { supportsImmersive:true };
let immersiveSessionOptions = { mode: 'immersive-vr' };
let nonImmersiveSessionOptions = { outputContext: getOutputContext() };
let testFunction = (testSession, testController, t) => new Promise((resolve) => {
let staleFrame = null;
let currentReferenceSpace = null;
function onFrame(time, xrFrame) {
t.step(() => {
assert_true(xrFrame instanceof XRFrame);
});
staleFrame = xrFrame;
step_timeout(afterFrame, 0);
}
function afterFrame() {
t.step(() => {
// Attempting to call a method on the frame outside the callback that
// originally provided it should cause it to throw an exception.
assert_throws('InvalidStateError', () => staleFrame.getViewerPose(currentReferenceSpace));
});
// Test does not complete until the this function has executed.
resolve();
}
testSession.requestReferenceSpace({ type: 'stationary', subtype: 'eye-level' }).then((referenceSpace) => {
currentReferenceSpace = referenceSpace;
testSession.requestAnimationFrame(onFrame);
});
});
xr_session_promise_test(immersiveTestName, testFunction,
fakeDeviceInitParams, immersiveSessionOptions);
xr_session_promise_test(nonImmersiveTestName, testFunction,
fakeDeviceInitParams, nonImmersiveSessionOptions);
</script>
</body>