mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Update web-platform-tests to revision a4677f682d251f7c072772973058e77777711564
This commit is contained in:
parent
0f9b04680a
commit
f66cd0366a
67 changed files with 2033 additions and 208 deletions
|
@ -1,4 +1,5 @@
|
|||
[url-in-tags-revoke.window.html]
|
||||
expected: TIMEOUT
|
||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -143157,6 +143157,19 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-placement-using-named-grid-lines-002.html": [
|
||||
"625401d7cfd724a069f21a1ca9ea0790c1a26a4a",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"subgrid": {
|
||||
|
@ -143706,7 +143719,20 @@
|
|||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"table-grid-item-dynamic-001.html": [
|
||||
"e87a3dfe9a118841e63a8b9d886432304c957b11",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/table-grid-item-dynamic-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-images": {
|
||||
"css-image-fallbacks-and-annotations.html": [
|
||||
|
@ -152650,6 +152676,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"overflow-ellipsis-dynamic-001.html": [
|
||||
"2a9edba9308bf06009d7b9a27f21f1e0f1a231c7",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-overflow/reference/overflow-ellipsis-dynamic-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"overflow-recalc-001.html": [
|
||||
"9c5919a5044bdbac0e782fbb662f1ff3b81857fc",
|
||||
[
|
||||
|
@ -237151,10 +237190,6 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"LICENSE": [
|
||||
"28fcc080cb44907fdc7c6aeb7190652c1b65d7a2",
|
||||
[]
|
||||
],
|
||||
"LICENSE.md": [
|
||||
"ad4858c8745cfa1b330a52d27c621a09aa3112e0",
|
||||
[]
|
||||
|
@ -290825,6 +290860,10 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"table-grid-item-dynamic-001-ref.html": [
|
||||
"362904334aaef447de9d895e413474a9b4d2c5a6",
|
||||
[]
|
||||
],
|
||||
"test-plan": {
|
||||
"index.html": [
|
||||
"039f3a87c1a7d042af4ac043b1a5c4c4cb6c0d1e",
|
||||
|
@ -292840,6 +292879,10 @@
|
|||
"340bda9de92352fe1ef6633610da31e867013299",
|
||||
[]
|
||||
],
|
||||
"overflow-ellipsis-dynamic-001-ref.html": [
|
||||
"85f8c50a8d639b760bd981ebea6bf3481983e072",
|
||||
[]
|
||||
],
|
||||
"overflow-recalc-001-ref.html": [
|
||||
"b18dee8caf1864dc30fe656750fe81a8863f1e90",
|
||||
[]
|
||||
|
@ -319686,7 +319729,7 @@
|
|||
[]
|
||||
],
|
||||
"resolve-url.js": [
|
||||
"77f8fff5b5701ae2b3138116429974c4e9f2608f",
|
||||
"cbe97edbbb3caf35f49d4f4859a263e1060d05b8",
|
||||
[]
|
||||
],
|
||||
"resource.py": [
|
||||
|
@ -339878,6 +339921,14 @@
|
|||
"1e88ac5c4e7852b4752de3af210566d010b62a86",
|
||||
[]
|
||||
],
|
||||
"onactivate-waituntil-forever.js": [
|
||||
"65b02b12b36017ac363d17272eeb8c0b143c3f59",
|
||||
[]
|
||||
],
|
||||
"onfetch-waituntil-forever.js": [
|
||||
"b905d555986e3ee374ae8ff74a0a9d69de44dbc8",
|
||||
[]
|
||||
],
|
||||
"oninstall-throw-error-from-nested-event-worker.js": [
|
||||
"6729ab61a371baf701796e88d1975dc1af77adcf",
|
||||
[]
|
||||
|
@ -339898,10 +339949,18 @@
|
|||
"cc2f6d7e5e78fda2c74e9613897931b1eeadbb53",
|
||||
[]
|
||||
],
|
||||
"oninstall-waituntil-forever.js": [
|
||||
"964483f2f42732755b2400e01f66439d647a339f",
|
||||
[]
|
||||
],
|
||||
"oninstall-waituntil-throw-error-worker.js": [
|
||||
"6cb8f6ede635a3e71b67feddc2efc326b8af3470",
|
||||
[]
|
||||
],
|
||||
"onparse-infiniteloop-worker.js": [
|
||||
"6f439aee94d59081111a11284aec9bfc86c950f2",
|
||||
[]
|
||||
],
|
||||
"opaque-response-being-preloaded-xhr.html": [
|
||||
"9c6d8bd504a1a3af4840ed36f2397f2d7253eef2",
|
||||
[]
|
||||
|
@ -340214,6 +340273,10 @@
|
|||
"18a95ee892b1c9ee7ca597cb2655e6c4504a7912",
|
||||
[]
|
||||
],
|
||||
"unregister-immediately-helpers.js": [
|
||||
"86fb24d8f988c810a2330f141ab93439d2034995",
|
||||
[]
|
||||
],
|
||||
"update": {
|
||||
"update-after-oneday.https.html": [
|
||||
"9d4c98272187e52947e710189c9fa1cfafbf4b22",
|
||||
|
@ -341508,6 +341571,14 @@
|
|||
},
|
||||
"pservers": {
|
||||
"reftests": {
|
||||
"gradient-inheritance-not-in-rendertree-01.tentative.svg": [
|
||||
"8f80b2d94456da9db42e9dee7dbf08d57d533088",
|
||||
[]
|
||||
],
|
||||
"gradient-inheritance-not-in-rendertree-02.tentative.svg": [
|
||||
"5b230f1d31ce77f3c877eba49e24261fabc2a840",
|
||||
[]
|
||||
],
|
||||
"meshgradient-basic-001-ref.png": [
|
||||
"691bff6244cd0abe046536efc0a100329b62d407",
|
||||
[]
|
||||
|
@ -341536,6 +341607,14 @@
|
|||
"4ce893b827cabc5e4627060f3e5334c1b829bd30",
|
||||
[]
|
||||
],
|
||||
"pattern-inheritance-not-in-rendertree-01.tentative.svg": [
|
||||
"1a6d0a0b32b69890417b27647e3de12c9d9b16af",
|
||||
[]
|
||||
],
|
||||
"pattern-inheritance-not-in-rendertree-02.tentative.svg": [
|
||||
"961d069e0864d8379c44d81aea19aebfb6eca66a",
|
||||
[]
|
||||
],
|
||||
"radialgradient-basic-002-ref.svg": [
|
||||
"26f4f508f35855ffd35baffb1aff129fe1ebf1be",
|
||||
[]
|
||||
|
@ -341693,6 +341772,10 @@
|
|||
}
|
||||
},
|
||||
"styling": {
|
||||
"presentation-attributes.js": [
|
||||
"c9dc14ad49072cc42bfb09362f421a2f99d437f9",
|
||||
[]
|
||||
],
|
||||
"render": {
|
||||
"transform-box-ref.svg": [
|
||||
"b41f8bb2a7baac19d907c378a0e269b9a8e914fb",
|
||||
|
@ -342369,7 +342452,7 @@
|
|||
}
|
||||
},
|
||||
"test_file_lints.py": [
|
||||
"08c09b6b0950b2cf548c3b5e415303597dd8c654",
|
||||
"43e8beb9956358fa70a80061b103243f22364677",
|
||||
[]
|
||||
],
|
||||
"test_lint.py": [
|
||||
|
@ -342406,7 +342489,7 @@
|
|||
[]
|
||||
],
|
||||
"download.py": [
|
||||
"3736d54f15dc5e9c66c560730acd08f43e53db30",
|
||||
"f8be03efb2750ad754c6038f7341a9761291df22",
|
||||
[]
|
||||
],
|
||||
"item.py": [
|
||||
|
@ -342422,7 +342505,7 @@
|
|||
[]
|
||||
],
|
||||
"sourcefile.py": [
|
||||
"9dd26820c6decb021b86b4252bf01c8199e19c08",
|
||||
"580a0ab7884568c271e935d51f239eb821100dc6",
|
||||
[]
|
||||
],
|
||||
"testpaths.py": [
|
||||
|
@ -342464,11 +342547,11 @@
|
|||
[]
|
||||
],
|
||||
"utils.py": [
|
||||
"8e0f629dd493f0fbcd1e4ba6e8237c67064893b6",
|
||||
"aefc2c94f40e1ae29d3657fe4114f79f97568ba1",
|
||||
[]
|
||||
],
|
||||
"vcs.py": [
|
||||
"d4f47f6bf0ab35c9da514edb4c4b779644ff90dd",
|
||||
"ce31acbfb66d9b8657b0c8d32fad4c7eda0c44b7",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -347216,7 +347299,7 @@
|
|||
[]
|
||||
],
|
||||
"testfiles.py": [
|
||||
"48b2767a03e946d8f3fffd7424d6c527dc34d6f6",
|
||||
"a9a8fe87ba50582d4cd15a6a233a372119ad265c",
|
||||
[]
|
||||
],
|
||||
"tests": {
|
||||
|
@ -347654,7 +347737,7 @@
|
|||
[]
|
||||
],
|
||||
"executorservo.py": [
|
||||
"8f8e120e66da6403f256f99f279f1f5dc8008272",
|
||||
"4816c3df06e87f8e85301918c341bbff97817777",
|
||||
[]
|
||||
],
|
||||
"executorservodriver.py": [
|
||||
|
@ -347801,7 +347884,7 @@
|
|||
[]
|
||||
],
|
||||
"testloader.py": [
|
||||
"6c5b5a8ea00071bcdf6820103218545992496176",
|
||||
"86d9de88221dff8ced44d54ce825d48393885a2f",
|
||||
[]
|
||||
],
|
||||
"testrunner.py": [
|
||||
|
@ -347973,7 +348056,7 @@
|
|||
}
|
||||
},
|
||||
"wptrunner.py": [
|
||||
"21bdd2312bdec10678133e27c91948d4b0235d72",
|
||||
"3d15c6e5418e9cfb5bc6e71e1a8e4d9846974266",
|
||||
[]
|
||||
],
|
||||
"wpttest.py": [
|
||||
|
@ -353625,11 +353708,7 @@
|
|||
"0daf488d6f522b80c3884fb75d21df996294a18a",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"self.js": [
|
||||
"5d3c560d49b2f010c423c4428dcea9e7d2b810d7",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"WorkerUtils": {
|
||||
"WindowTimers": {
|
||||
|
@ -375987,7 +376066,7 @@
|
|||
]
|
||||
],
|
||||
"storage.https.html": [
|
||||
"4ca990ff33bd4ad53dca5c2545ed9ffcd5bf4325",
|
||||
"1d6882d7f75fb53883cb7662afd3235400e6fa60",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -432489,45 +432568,555 @@
|
|||
]
|
||||
],
|
||||
"utf-16be.html": [
|
||||
"06558fe388f08ad02ec977124dd96973dc9009dd",
|
||||
"ae28fb6d6a7c08ff3ccc5353139e2842492d9950",
|
||||
[
|
||||
null,
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=appcache",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=base-href",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=css",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=eventsource",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=history",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=hyperlink-search",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=loading",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=nested-browsing",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=scheme",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=submit",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=svg",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=url",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=websocket",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=window-open",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=workers",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=xhr",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=xml",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=xmldocument",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"utf-16le.html": [
|
||||
"86510b68525af982342aeaad9e35e5a70d169044",
|
||||
"1d0bb574a77bb9a78cba3a8bb4a869ea780944a4",
|
||||
[
|
||||
null,
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=appcache",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=base-href",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=css",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=eventsource",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=history",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=hyperlink-search",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=loading",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=nested-browsing",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=scheme",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=submit",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=svg",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=url",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=websocket",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=window-open",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=workers",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=xhr",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=xml",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=xmldocument",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"utf-8.html": [
|
||||
"fcf43e0a9884ce82768a4c3a22cedb4494edcff8",
|
||||
"c521c9dc398b4c200bc357d4a66c55efd38f7ae9",
|
||||
[
|
||||
null,
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=appcache",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=base-href",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=css",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=eventsource",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=history",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=hyperlink-search",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=loading",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=nested-browsing",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=scheme",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=submit",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=svg",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=url",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=websocket",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=window-open",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=workers",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=xhr",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=xml",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=xmldocument",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"windows-1251.html": [
|
||||
"23d33f9f73350b2a174b7becc1489da5645b406b",
|
||||
"e80e12403aedfdddfd1aa73ed4057316a4e5a931",
|
||||
[
|
||||
null,
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=appcache",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=base-href",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=css",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=eventsource",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=history",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=hyperlink-search",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=loading",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=nested-browsing",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=scheme",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=submit",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=svg",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=url",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=websocket",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=window-open",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=workers",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xhr",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xml",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xmldocument",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"windows-1252.html": [
|
||||
"642c82ab4f05a685eb75b67f654df3e13810f397",
|
||||
"c2c6b0adeb13df97352f37ccfef9bd6b1fce9e63",
|
||||
[
|
||||
null,
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=appcache",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=base-href",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=css",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=eventsource",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=history",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=hyperlink-search",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=loading",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=nested-browsing",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=scheme",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=submit",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=svg",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=url",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=websocket",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=window-open",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=workers",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xhr",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xml",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
"html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xmldocument",
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
|
@ -526370,6 +526959,27 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"unregister-immediately-before-installed.https.html": [
|
||||
"79cdaf062dc729c8029c553b485e59d510b87982",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"unregister-immediately-during-extendable-events.https.html": [
|
||||
"6ba87a7ce80e198132b38b3878d069efe423b071",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"unregister-immediately.https.html": [
|
||||
"54be40a545220d9d58569816feef87a0ee17f891",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"unregister-then-register-new-script.https.html": [
|
||||
"d046423e0c29c082c22c64c865ccb38a6a40adac",
|
||||
[
|
||||
|
@ -536331,6 +536941,34 @@
|
|||
}
|
||||
},
|
||||
"styling": {
|
||||
"presentation-attributes-irrelevant.html": [
|
||||
"f96d1d9de6f26b0d4fde11156dab87487d6cbdc8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"presentation-attributes-relevant.html": [
|
||||
"b5f9343690cc447348b54b280de4e7c27a3d2436",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"presentation-attributes-special-cases.html": [
|
||||
"c544c9c7a64d8b17178c860f2f8c9ee14c0ab998",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"presentation-attributes-unknown.html": [
|
||||
"487175b144b8b7a405d4d2f75aaee7b493ab7ea8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"required-properties.svg": [
|
||||
"37bf0fdf7e8ead12ab5b686b56844c82625e6591",
|
||||
[
|
||||
|
@ -546128,7 +546766,7 @@
|
|||
]
|
||||
],
|
||||
"invalid-code.any.js": [
|
||||
"2b901ae0a63ade67bf7494cfc32d559f6d003104",
|
||||
"752519392a953fdc314d6421f2bcb91856434534",
|
||||
[
|
||||
"wasm/webapi/invalid-code.any.html",
|
||||
{
|
||||
|
@ -550199,7 +550837,7 @@
|
|||
],
|
||||
"broadcastchannel": {
|
||||
"basics.html": [
|
||||
"ed16e32f5437dc430b5cc11b967e6538ef6cf393",
|
||||
"3d8ba76fb1ba35658c44702059925fe53e3fb6f6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -559482,11 +560120,40 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"self.html": [
|
||||
"41522dfdd53e0a48308ddf5ab4a10581627bb20d",
|
||||
"self.any.js": [
|
||||
"a1aacc08808bcb15473977b933d29944b02def2f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
"workers/interfaces/WorkerGlobalScope/self.any.serviceworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"!default,worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"workers/interfaces/WorkerGlobalScope/self.any.sharedworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"!default,worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"workers/interfaces/WorkerGlobalScope/self.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"!default,worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -559742,10 +560409,12 @@
|
|||
]
|
||||
],
|
||||
"dedicated-worker-import-referrer.html": [
|
||||
"32d3b3f53de0e22ac07feb67e57121d5d6b0354b",
|
||||
"855df62194369614edfe7f5172e5bfe0e8ac966b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"dedicated-worker-import.any.js": [
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -8,3 +8,6 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: FAIL
|
||||
|
||||
[looks up handleEvent method on every event dispatch]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -315,15 +315,18 @@
|
|||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain ]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[track-selection-metadata.html]
|
||||
expected: TIMEOUT
|
||||
[Multiple 'metadata' tracks with 'default']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -11,3 +11,6 @@
|
|||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44052 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 23900.\n\t[23900\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44059 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 29020.\n\t[29020\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -128,3 +128,9 @@
|
|||
[X SNR (-109.9902709475588 dB) is not greater than or equal to 65.737. Got -109.9902709475588.]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (39.52349714889274 dB) is not greater than or equal to 65.737. Got 39.52349714889274.]
|
||||
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[19030\]\t-7.1927757971934625e-8\t-7.3546999692916870e-1\t7.3546992500141073e-1\t9.9999990220164214e-1\t3.8985999999999999e-3\n\t[19031\]\t-3.6017334461212158e-1\t-6.9157749414443970e-1\t3.3140414953231812e-1\t4.7920030992665957e-1\t3.8985999999999999e-3\n\t[38059\]\t-1.5020843591173616e-7\t-9.8956179618835449e-1\t9.8956164597991858e-1\t9.9999984820711907e-1\t3.8985999999999999e-3\n\t[38060\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956164597991858e-1 at index of 38059.\n\tMax RelError of 9.9999990220164214e-1 at index of 19030.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
5
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
5
tests/wpt/metadata/webmessaging/with-ports/018.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
[self.any.sharedworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[self.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[self.any.worker.html]
|
|
@ -1,5 +1,4 @@
|
|||
[005.html]
|
||||
expected: ERROR
|
||||
[dedicated worker in shared worker in dedicated worker]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
W3C 3-clause BSD License
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of works must retain the original copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the original copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the W3C nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this work without
|
||||
specific prior written permission.
|
||||
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
|
@ -17,7 +17,7 @@
|
|||
var serviceWorkerTestPageIFrame;
|
||||
function fetchFromIFrame() {
|
||||
return serviceWorkerTestPageIFrame.contentWindow
|
||||
.fetch('support/controlled-endpoint.py')
|
||||
.fetch('controlled-endpoint.py')
|
||||
.then((result) => {
|
||||
return result.text();
|
||||
});
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: Grid item placement with named line and auto repeat()</title>
|
||||
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-grid-1/#line-placement">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
|
||||
<meta name="assert" content="Grid placement algorithm is able to select the 1st line by name when the 1st track is defined with auto repeat().">
|
||||
<style>
|
||||
.grid {
|
||||
display: grid;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: red;
|
||||
grid-template-columns: [area-start] repeat(auto-fill, 10px) [area-end];
|
||||
grid-template-rows: [area-start] repeat(auto-fill, 10px [area-start]) [area-end];
|
||||
}
|
||||
.grid > div {
|
||||
grid-area: area;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div class="grid">
|
||||
<div></div>
|
||||
</div>
|
|
@ -0,0 +1,26 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test Reference</title>
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: grid;
|
||||
background-color: lime;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: 100px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Relayout shouldn't grow this table</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
|
@ -0,0 +1,44 @@
|
|||
<!doctype html>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<meta charset="utf-8">
|
||||
<title>Table grid items with margins don't grow on incremental relayout</title>
|
||||
<link rel="author" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" href="mailto:emilio@crisal.io">
|
||||
<link rel="author" href="https://mozilla.org">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1492315">
|
||||
<link rel="match" href="table-grid-item-dynamic-001-ref.html">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: grid;
|
||||
background-color: lime;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: 100px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Relayout shouldn't grow this table</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<script>
|
||||
onload = function() {
|
||||
let grid = document.querySelector("div");
|
||||
grid.getBoundingClientRect();
|
||||
document.body.style.width = "50vw";
|
||||
grid.getBoundingClientRect();
|
||||
document.body.style.width = "";
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,26 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<title>CSS Overflow Test: text-overflow: ellipsis after dynamic test change</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#text-overflow">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1615811">
|
||||
<link rel="author" href="mailto:emilio@crisal.io" name="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="https://mozilla.org" name="Mozilla">
|
||||
<link rel="match" href="reference/overflow-ellipsis-dynamic-001-ref.html">
|
||||
<style>
|
||||
p {
|
||||
width: 40ch;
|
||||
font: 16px/1 monospace;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<p>longtext longtext longtext longtext longtext longtext longtext longtext</p>
|
||||
<script>
|
||||
onload = function() {
|
||||
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||
document.querySelector("p").firstChild.nodeValue = "short";
|
||||
document.documentElement.className = "";
|
||||
}));
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,12 @@
|
|||
<!doctype html>
|
||||
<title>CSS test reference</title>
|
||||
<style>
|
||||
p {
|
||||
width: 40ch;
|
||||
font: 16px/1 monospace;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<p>short<p>
|
|
@ -51,7 +51,7 @@ onload = function() {
|
|||
|
||||
// loading html (or actually svg to support <embed>)
|
||||
function test_load_nested_browsing_context(tag, attr, spec_url) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('nested-browsing', async_test, function() {
|
||||
var id = 'test_load_nested_browsing_context_'+tag;
|
||||
var elm = document.createElement(tag);
|
||||
elm.setAttribute(attr, input_url_svg);
|
||||
|
@ -81,7 +81,7 @@ onload = function() {
|
|||
});
|
||||
|
||||
// loading css with <link>
|
||||
async_test(function() {
|
||||
subsetTestByKey('loading', async_test, function() {
|
||||
var elm = document.createElement('link');
|
||||
elm.href = input_url_css;
|
||||
elm.rel = 'stylesheet';
|
||||
|
@ -99,7 +99,7 @@ onload = function() {
|
|||
'https://html.spec.whatwg.org/multipage/#styling']});
|
||||
|
||||
// loading js
|
||||
async_test(function() {
|
||||
subsetTestByKey('loading-css', async_test, function() {
|
||||
var elm = document.createElement('script');
|
||||
elm.src = input_url_js + '&var=test_load_js_got';
|
||||
document.head.appendChild(elm); // no cleanup
|
||||
|
@ -111,7 +111,7 @@ onload = function() {
|
|||
|
||||
// loading image
|
||||
function test_load_image(tag, attr, spec_url) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('loading', async_test, function() {
|
||||
var elm = document.createElement(tag);
|
||||
if (tag == 'input') {
|
||||
elm.type = 'image';
|
||||
|
@ -173,7 +173,7 @@ onload = function() {
|
|||
|
||||
// loading video
|
||||
function test_load_video(tag, use_source_element) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('loading', async_test, function() {
|
||||
var elm = document.createElement(tag);
|
||||
var video_ext = '';
|
||||
if (elm.canPlayType('video/ogg; codecs="theora,flac"')) {
|
||||
|
@ -229,7 +229,7 @@ onload = function() {
|
|||
});
|
||||
|
||||
// loading webvtt
|
||||
async_test(function() {
|
||||
subsetTestByKey('loading', async_test, function() {
|
||||
var video = document.createElement('video');
|
||||
var track = document.createElement('track');
|
||||
video.appendChild(track);
|
||||
|
@ -248,7 +248,7 @@ onload = function() {
|
|||
|
||||
// submit forms
|
||||
function test_submit_form(tag, attr) {
|
||||
async_test(function(){
|
||||
subsetTestByKey('submit', async_test, function(){
|
||||
var elm = document.createElement(tag);
|
||||
elm.setAttribute(attr, input_url_html);
|
||||
var form;
|
||||
|
@ -291,7 +291,7 @@ onload = function() {
|
|||
});
|
||||
|
||||
// <base href>
|
||||
async_test(function() {
|
||||
subsetTestByKey('base-href', async_test, function() {
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = blank;
|
||||
document.body.appendChild(iframe);
|
||||
|
@ -315,7 +315,7 @@ onload = function() {
|
|||
// XXX drag and drop (<a href> or <img src>) seems hard to automate
|
||||
|
||||
// Worker()
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new Worker(input_url_worker);
|
||||
worker.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_current);
|
||||
|
@ -324,7 +324,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#dom-worker'});
|
||||
|
||||
// SharedWorker()
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new SharedWorker(input_url_sharedworker);
|
||||
worker.port.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_current);
|
||||
|
@ -333,7 +333,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#dom-sharedworker'});
|
||||
|
||||
// EventSource()
|
||||
async_test(function() {
|
||||
subsetTestByKey('eventsource', async_test, function() {
|
||||
var source = new EventSource(input_url_eventstream);
|
||||
this.add_cleanup(function() {
|
||||
source.close();
|
||||
|
@ -345,7 +345,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#dom-eventsource'});
|
||||
|
||||
// EventSource#url
|
||||
test(function() {
|
||||
subsetTestByKey('eventsource', test, function() {
|
||||
var source = new EventSource(input_url_eventstream);
|
||||
source.close();
|
||||
var got = source.url;
|
||||
|
@ -354,7 +354,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#dom-eventsource'});
|
||||
|
||||
// XMLDocument#load()
|
||||
async_test(function() {
|
||||
subsetTestByKey('xmldocument', async_test, function() {
|
||||
var doc = document.implementation.createDocument(null, "x");
|
||||
doc.load(input_url_svg);
|
||||
doc.onload = this.step_func_done(function() {
|
||||
|
@ -364,7 +364,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#dom-xmldocument-load'});
|
||||
|
||||
// window.open
|
||||
async_test(function() {
|
||||
subsetTestByKey('window-open', async_test, function() {
|
||||
var id = 'test_window_open';
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.name = id;
|
||||
|
@ -385,7 +385,7 @@ onload = function() {
|
|||
|
||||
// a.search, area.search
|
||||
function test_hyperlink_search(tag) {
|
||||
test(function() {
|
||||
subsetTestByKey('hyperlink-search', test, function() {
|
||||
var elm = document.createElement(tag);
|
||||
var input_arr = input_url_html.split('?');
|
||||
elm.href = input_arr[0];
|
||||
|
@ -405,7 +405,7 @@ onload = function() {
|
|||
// history.pushState
|
||||
// history.replaceState
|
||||
function test_history(prop) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('history', async_test, function() {
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = blank;
|
||||
document.body.appendChild(iframe);
|
||||
|
@ -429,7 +429,7 @@ onload = function() {
|
|||
// SVG
|
||||
var ns = {svg:'http://www.w3.org/2000/svg', xlink:'http://www.w3.org/1999/xlink'};
|
||||
// a
|
||||
async_test(function() {
|
||||
subsetTestByKey('svg', async_test, function() {
|
||||
SVGAElement; // check support
|
||||
var iframe = document.createElement('iframe');
|
||||
var id = 'test_svg_a';
|
||||
|
@ -458,7 +458,7 @@ onload = function() {
|
|||
|
||||
// feImage, image, use
|
||||
function test_svg(func, tag) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('svg', async_test, function() {
|
||||
var uuid = token();
|
||||
var id = 'test_svg_'+tag;
|
||||
var svg = document.createElementNS(ns.svg, 'svg');
|
||||
|
@ -492,7 +492,7 @@ onload = function() {
|
|||
|
||||
// UTF-8:
|
||||
// XHR
|
||||
async_test(function() {
|
||||
subsetTestByKey('xhr', async_test, function() {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', input_url_html);
|
||||
xhr.onload = this.step_func_done(function() {
|
||||
|
@ -503,7 +503,7 @@ onload = function() {
|
|||
{help:'https://xhr.spec.whatwg.org/#the-open()-method'});
|
||||
|
||||
// in a worker
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new Worker(input_url_worker_importScripts);
|
||||
worker.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -512,7 +512,7 @@ onload = function() {
|
|||
{help:['https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object',
|
||||
'https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-importscripts']});
|
||||
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new Worker(input_url_worker_worker);
|
||||
worker.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -521,7 +521,7 @@ onload = function() {
|
|||
{help:['https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object',
|
||||
'https://html.spec.whatwg.org/multipage/#dom-worker']});
|
||||
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new Worker(input_url_worker_sharedworker);
|
||||
worker.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -530,7 +530,7 @@ onload = function() {
|
|||
{help:['https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object',
|
||||
'https://html.spec.whatwg.org/multipage/#dom-sharedworker']});
|
||||
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new SharedWorker(input_url_sharedworker_importScripts);
|
||||
worker.port.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -539,7 +539,7 @@ onload = function() {
|
|||
{help:['https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object',
|
||||
'https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-importscripts']});
|
||||
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new SharedWorker(input_url_sharedworker_worker);
|
||||
worker.port.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -548,7 +548,7 @@ onload = function() {
|
|||
{help:['https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object',
|
||||
'https://html.spec.whatwg.org/multipage/#dom-worker']});
|
||||
|
||||
async_test(function() {
|
||||
subsetTestByKey('workers', async_test, function() {
|
||||
var worker = new SharedWorker(input_url_sharedworker_sharedworker);
|
||||
worker.port.onmessage = this.step_func_done(function(e) {
|
||||
assert_equals(e.data, expected_utf8);
|
||||
|
@ -558,7 +558,7 @@ onload = function() {
|
|||
'https://html.spec.whatwg.org/multipage/#dom-sharedworker']});
|
||||
|
||||
// WebSocket()
|
||||
async_test(function(){
|
||||
subsetTestByKey('websocket', async_test, function() {
|
||||
var ws = new WebSocket('ws://{{host}}:{{ports[ws][0]}}/echo-query?\u00E5');
|
||||
this.add_cleanup(function() {
|
||||
ws.close();
|
||||
|
@ -570,7 +570,7 @@ onload = function() {
|
|||
{help:'https://html.spec.whatwg.org/multipage/#parse-a-websocket-url\'s-components'});
|
||||
|
||||
// WebSocket#url
|
||||
test(function(){
|
||||
subsetTestByKey('websocket', test, function() {
|
||||
var ws = new WebSocket('ws://{{host}}:{{ports[ws][0]}}/echo-query?\u00E5');
|
||||
ws.close();
|
||||
var got = ws.url;
|
||||
|
@ -580,7 +580,7 @@ onload = function() {
|
|||
|
||||
// Parsing cache manifest
|
||||
function test_cache_manifest(mode) {
|
||||
async_test(function() {
|
||||
subsetTestByKey('appcache', async_test, function() {
|
||||
var iframe = document.createElement('iframe');
|
||||
var uuid = token();
|
||||
iframe.src = 'resources/page-using-manifest.py?id='+uuid+'&encoding='+encoding+'&mode='+mode;
|
||||
|
@ -600,7 +600,7 @@ onload = function() {
|
|||
// CSS
|
||||
function test_css(tmpl, expected_cssom, encoding, use_style_element) {
|
||||
var desc = ['CSS', (use_style_element ? '<style>' : '<link> (' + encoding + ')'), tmpl].join(' ');
|
||||
async_test(function(){
|
||||
subsetTestByKey('css', async_test, function(){
|
||||
css_is_supported(tmpl, expected_cssom, this);
|
||||
var uuid = token();
|
||||
var id = 'test_css_' + uuid;
|
||||
|
@ -672,7 +672,7 @@ onload = function() {
|
|||
// image() (not implemented?)
|
||||
|
||||
// <?xml-stylesheet?>
|
||||
async_test(function() {
|
||||
subsetTestByKey('xml', async_test, function() {
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = input_url_xmlstylesheet_css;
|
||||
document.body.appendChild(iframe);
|
||||
|
@ -686,7 +686,7 @@ onload = function() {
|
|||
{help:'http://dev.w3.org/csswg/cssom/#requirements-on-user-agents-implementing-the-xml-stylesheet-processing-instruction'});
|
||||
|
||||
// new URL()
|
||||
test(function() {
|
||||
subsetTestByKey('url', test, function() {
|
||||
var url = new URL('http://example.org/'+input_url);
|
||||
var expected = expected_utf8;
|
||||
assert_true(url.href.indexOf(expected) > -1, 'url.href '+msg(expected, url.href));
|
||||
|
@ -694,7 +694,7 @@ onload = function() {
|
|||
}, 'URL constructor, url',
|
||||
{help:'http://url.spec.whatwg.org/#dom-url'});
|
||||
|
||||
test(function() {
|
||||
subsetTestByKey('url', test, function() {
|
||||
var url = new URL('', 'http://example.org/'+input_url);
|
||||
var expected = expected_utf8;
|
||||
assert_true(url.href.indexOf(expected) > -1, 'url.href '+msg(expected, url.href));
|
||||
|
@ -704,7 +704,7 @@ onload = function() {
|
|||
|
||||
// Test different schemes
|
||||
function test_scheme(url, utf8) {
|
||||
test(function() {
|
||||
subsetTestByKey('scheme', test, function() {
|
||||
var a = document.createElement('a');
|
||||
a.setAttribute('href', url);
|
||||
var got = a.href;
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -2,8 +2,27 @@
|
|||
<meta charset=utf-8>
|
||||
<title>Resolving URLs, URL character encoding, utf-8</title>
|
||||
<meta name="timeout" content="long">
|
||||
<meta name="variant" content="?include=nested-browsing">
|
||||
<meta name="variant" content="?include=loading">
|
||||
<meta name="variant" content="?include=submit">
|
||||
<meta name="variant" content="?include=base-href">
|
||||
<meta name="variant" content="?include=workers">
|
||||
<meta name="variant" content="?include=eventsource">
|
||||
<meta name="variant" content="?include=xmldocument">
|
||||
<meta name="variant" content="?include=window-open">
|
||||
<meta name="variant" content="?include=hyperlink-search">
|
||||
<meta name="variant" content="?include=history">
|
||||
<meta name="variant" content="?include=svg">
|
||||
<meta name="variant" content="?include=xhr">
|
||||
<meta name="variant" content="?include=websocket">
|
||||
<meta name="variant" content="?include=appcache">
|
||||
<meta name="variant" content="?include=css">
|
||||
<meta name="variant" content="?include=xml">
|
||||
<meta name="variant" content="?include=url">
|
||||
<meta name="variant" content="?include=scheme">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/subset-tests-by-key.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<div id=log></div>
|
||||
<script src="resources/resolve-url.js?encoding=utf-8&pipe=sub"></script>
|
||||
|
|
|
@ -2,8 +2,27 @@
|
|||
<meta charset=windows-1251>
|
||||
<title>Resolving URLs, URL character encoding, windows-1251</title>
|
||||
<meta name="timeout" content="long">
|
||||
<meta name="variant" content="?include=nested-browsing">
|
||||
<meta name="variant" content="?include=loading">
|
||||
<meta name="variant" content="?include=submit">
|
||||
<meta name="variant" content="?include=base-href">
|
||||
<meta name="variant" content="?include=workers">
|
||||
<meta name="variant" content="?include=eventsource">
|
||||
<meta name="variant" content="?include=xmldocument">
|
||||
<meta name="variant" content="?include=window-open">
|
||||
<meta name="variant" content="?include=hyperlink-search">
|
||||
<meta name="variant" content="?include=history">
|
||||
<meta name="variant" content="?include=svg">
|
||||
<meta name="variant" content="?include=xhr">
|
||||
<meta name="variant" content="?include=websocket">
|
||||
<meta name="variant" content="?include=appcache">
|
||||
<meta name="variant" content="?include=css">
|
||||
<meta name="variant" content="?include=xml">
|
||||
<meta name="variant" content="?include=url">
|
||||
<meta name="variant" content="?include=scheme">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/subset-tests-by-key.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<div id=log></div>
|
||||
<script src="resources/resolve-url.js?encoding=windows-1251&pipe=sub"></script>
|
||||
|
|
|
@ -2,8 +2,27 @@
|
|||
<meta charset=windows-1252>
|
||||
<title>Resolving URLs, URL character encoding, windows-1252</title>
|
||||
<meta name="timeout" content="long">
|
||||
<meta name="variant" content="?include=nested-browsing">
|
||||
<meta name="variant" content="?include=loading">
|
||||
<meta name="variant" content="?include=submit">
|
||||
<meta name="variant" content="?include=base-href">
|
||||
<meta name="variant" content="?include=workers">
|
||||
<meta name="variant" content="?include=eventsource">
|
||||
<meta name="variant" content="?include=xmldocument">
|
||||
<meta name="variant" content="?include=window-open">
|
||||
<meta name="variant" content="?include=hyperlink-search">
|
||||
<meta name="variant" content="?include=history">
|
||||
<meta name="variant" content="?include=svg">
|
||||
<meta name="variant" content="?include=xhr">
|
||||
<meta name="variant" content="?include=websocket">
|
||||
<meta name="variant" content="?include=appcache">
|
||||
<meta name="variant" content="?include=css">
|
||||
<meta name="variant" content="?include=xml">
|
||||
<meta name="variant" content="?include=url">
|
||||
<meta name="variant" content="?include=scheme">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/subset-tests-by-key.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<div id=log></div>
|
||||
<script src="resources/resolve-url.js?encoding=windows-1252&pipe=sub"></script>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
self.addEventListener('activate', event => {
|
||||
event.waitUntil(new Promise(() => {
|
||||
// Use a promise that never resolves to prevent this service worker from
|
||||
// advancing past the 'activating' state.
|
||||
}));
|
||||
});
|
|
@ -0,0 +1,10 @@
|
|||
'use strict';
|
||||
|
||||
self.addEventListener('fetch', event => {
|
||||
if (event.request.url.endsWith('waituntil-forever')) {
|
||||
event.respondWith(new Promise(() => {
|
||||
// Use a promise that never resolves to prevent this fetch from
|
||||
// completing.
|
||||
}));
|
||||
}
|
||||
});
|
|
@ -0,0 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
self.addEventListener('install', event => {
|
||||
event.waitUntil(new Promise(() => {
|
||||
// Use a promise that never resolves to prevent this service worker from
|
||||
// advancing past the 'installing' state.
|
||||
}));
|
||||
});
|
|
@ -0,0 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
// Use an infinite loop to prevent this service worker from advancing past the
|
||||
// 'parsed' state.
|
||||
let i = 0;
|
||||
while (true) {
|
||||
++i;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
'use strict';
|
||||
|
||||
// Returns a promise for a network response that contains the Clear-Site-Data:
|
||||
// "storage" header.
|
||||
function clear_site_data() {
|
||||
return fetch('resources/blank.html?pipe=header(Clear-Site-Data,"storage")');
|
||||
}
|
||||
|
||||
async function assert_no_registrations_exist() {
|
||||
const registrations = await navigator.serviceWorker.getRegistrations();
|
||||
assert_equals(registrations.length, 0);
|
||||
}
|
||||
|
||||
async function add_controlled_iframe(test, url) {
|
||||
const frame = await with_iframe(url);
|
||||
test.add_cleanup(() => { frame.remove(); });
|
||||
assert_true(frame.contentWindow.navigator.serviceWorker.controller !== null);
|
||||
return frame;
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>Use Clear-Site-Data to immediately unregister service workers</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-helpers.sub.js"></script>
|
||||
<script src="resources/unregister-immediately-helpers.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// These tests use the Clear-Site-Data network response header to immediately
|
||||
// unregister a service worker registration with a worker whose state is
|
||||
// 'installing' or 'parsed'. Clear-Site-Data must delete the registration,
|
||||
// abort the installation and then clear the registration by setting the
|
||||
// worker's state to 'redundant'.
|
||||
|
||||
promise_test(async test => {
|
||||
// This test keeps the the service worker in the 'parsed' state by using a
|
||||
// script with an infinite loop.
|
||||
const script_url = 'resources/onparse-infiniteloop-worker.js';
|
||||
const scope_url =
|
||||
'resources/scope-for-unregister-immediately-with-parsed-worker';
|
||||
|
||||
await service_worker_unregister(test, /*scope=*/script_url);
|
||||
|
||||
// Clear-Site-Data must cause register() to fail.
|
||||
const register_promise = promise_rejects_dom(test, 'AbortError',
|
||||
navigator.serviceWorker.register(script_url, { scope: scope_url}));;
|
||||
|
||||
await Promise.all([clear_site_data(), register_promise]);
|
||||
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must abort service worker registration.');
|
||||
|
||||
promise_test(async test => {
|
||||
// This test keeps the the service worker in the 'installing' state by using a
|
||||
// script with an install event waitUntil() promise that never resolves.
|
||||
const script_url = 'resources/oninstall-waituntil-forever.js';
|
||||
const scope_url =
|
||||
'resources/scope-for-unregister-immediately-with-installing-worker';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
const service_worker = registration.installing;
|
||||
|
||||
// Clear-Site-Data must cause install to fail.
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
wait_for_state(test, service_worker, 'redundant')]);
|
||||
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must unregister a registration with a worker '
|
||||
+ 'in the "installing" state.');
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>Use Clear-Site-Data to immediately unregister service workers</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-helpers.sub.js"></script>
|
||||
<script src="resources/unregister-immediately-helpers.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// These tests use the Clear-Site-Data network response header to immediately
|
||||
// unregister a service worker registration with a worker that has pending
|
||||
// extendable events. Clear-Site-Data must delete the registration,
|
||||
// abort all pending extendable events and then clear the registration by
|
||||
// setting the worker's state to 'redundant'
|
||||
|
||||
promise_test(async test => {
|
||||
// Use a service worker script that can produce fetch events with pending
|
||||
// respondWith() promises that never resolve.
|
||||
const script_url = 'resources/onfetch-waituntil-forever.js';
|
||||
const scope_url =
|
||||
'resources/blank.html?unregister-immediately-with-fetch-event';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
|
||||
await wait_for_state(test, registration.installing, 'activated');
|
||||
|
||||
const frame = await add_controlled_iframe(test, scope_url);
|
||||
|
||||
// Clear-Site-Data must cause the pending fetch promise to reject.
|
||||
const fetch_promise = promise_rejects_js(
|
||||
test, TypeError, frame.contentWindow.fetch('waituntil-forever'));
|
||||
|
||||
const event_watcher = new EventWatcher(
|
||||
test, frame.contentWindow.navigator.serviceWorker, 'controllerchange');
|
||||
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
fetch_promise,
|
||||
event_watcher.wait_for('controllerchange'),
|
||||
wait_for_state(test, registration.active, 'redundant'),]);
|
||||
|
||||
assert_equals(frame.contentWindow.navigator.serviceWorker.controller, null);
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must fail pending subresource fetch events.');
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,134 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>Use Clear-Site-Data to immediately unregister service workers</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-helpers.sub.js"></script>
|
||||
<script src="resources/unregister-immediately-helpers.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// These tests use the Clear-Site-Data network response header to immediately
|
||||
// unregister a service worker registration with a worker whose state is
|
||||
// 'installed', 'waiting', 'activating' or 'activated'. Immediately
|
||||
// unregistering runs the "Clear Registration" algorithm without waiting for the
|
||||
// active worker's controlled clients to unload.
|
||||
|
||||
promise_test(async test => {
|
||||
// This test keeps the the service worker in the 'activating' state by using a
|
||||
// script with an activate event waitUntil() promise that never resolves.
|
||||
const script_url = 'resources/onactivate-waituntil-forever.js';
|
||||
const scope_url =
|
||||
'resources/scope-for-unregister-immediately-with-waiting-worker';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
const service_worker = registration.installing;
|
||||
|
||||
await wait_for_state(test, service_worker, 'activating');
|
||||
|
||||
// Clear-Site-Data must cause activation to fail.
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
wait_for_state(test, service_worker, 'redundant')]);
|
||||
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must unregister a registration with a worker '
|
||||
+ 'in the "activating" state.');
|
||||
|
||||
promise_test(async test => {
|
||||
// Create an registration with two service workers: one activated and one
|
||||
// installed.
|
||||
const script_url = 'resources/update_shell.py';
|
||||
const scope_url =
|
||||
'resources/scope-for-unregister-immediately-with-with-update';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
const first_service_worker = registration.installing;
|
||||
|
||||
await wait_for_state(test, first_service_worker, 'activated');
|
||||
registration.update();
|
||||
|
||||
const event_watcher = new EventWatcher(test, registration, 'updatefound');
|
||||
await event_watcher.wait_for('updatefound');
|
||||
|
||||
const second_service_worker = registration.installing;
|
||||
await wait_for_state(test, second_service_worker, 'installed');
|
||||
|
||||
// Clear-Site-Data must clear both workers from the registration.
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
wait_for_state(test, first_service_worker, 'redundant'),
|
||||
wait_for_state(test, second_service_worker, 'redundant')]);
|
||||
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must unregister an activated registration with '
|
||||
+ 'an update waiting.');
|
||||
|
||||
promise_test(async test => {
|
||||
const script_url = 'resources/empty.js';
|
||||
const scope_url =
|
||||
'resources/blank.html?unregister-immediately-with-controlled-client';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
const service_worker = registration.installing;
|
||||
|
||||
await wait_for_state(test, service_worker, 'activated');
|
||||
const frame = await add_controlled_iframe(test, scope_url);
|
||||
const frame_registration =
|
||||
await frame.contentWindow.navigator.serviceWorker.ready;
|
||||
|
||||
const event_watcher = new EventWatcher(
|
||||
test, frame.contentWindow.navigator.serviceWorker, 'controllerchange');
|
||||
|
||||
// Clear-Site-Data must remove the iframe's controller.
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
event_watcher.wait_for('controllerchange'),
|
||||
wait_for_state(test, service_worker, 'redundant')]);
|
||||
|
||||
assert_equals(frame.contentWindow.navigator.serviceWorker.controller, null);
|
||||
await assert_no_registrations_exist();
|
||||
|
||||
// The ready promise must continue to resolve with the unregistered
|
||||
// registration.
|
||||
assert_equals(frame_registration,
|
||||
await frame.contentWindow.navigator.serviceWorker.ready);
|
||||
}, 'Clear-Site-Data must unregister an activated registration with controlled '
|
||||
+ 'clients.');
|
||||
|
||||
promise_test(async test => {
|
||||
const script_url = 'resources/empty.js';
|
||||
const scope_url =
|
||||
'resources/blank.html?unregister-immediately-while-waiting-to-clear';
|
||||
|
||||
const registration = await service_worker_unregister_and_register(
|
||||
test, script_url, scope_url);
|
||||
const service_worker = registration.installing;
|
||||
|
||||
await wait_for_state(test, service_worker, 'activated');
|
||||
const frame = await add_controlled_iframe(test, scope_url);
|
||||
|
||||
const event_watcher = new EventWatcher(
|
||||
test, frame.contentWindow.navigator.serviceWorker, 'controllerchange');
|
||||
|
||||
// Unregister waits to clear the registration until no controlled clients
|
||||
// exist.
|
||||
await registration.unregister();
|
||||
|
||||
// Clear-Site-Data must clear the unregistered registration immediately.
|
||||
await Promise.all([
|
||||
clear_site_data(),
|
||||
event_watcher.wait_for('controllerchange'),
|
||||
wait_for_state(test, service_worker, 'redundant')]);
|
||||
|
||||
assert_equals(frame.contentWindow.navigator.serviceWorker.controller, null);
|
||||
await assert_no_registrations_exist();
|
||||
}, 'Clear-Site-Data must clear an unregistered registration waiting for '
|
||||
+ ' controlled clients to unload.');
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:h="http:/www.w3.org/1999/xhtml">
|
||||
<title><linearGradient> (without content) inheriting from a <linearGradient> in an invalid context</title>
|
||||
<h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopNotes"/>
|
||||
<h:link rel="match" href="reference/green-100x100.svg"/>
|
||||
<linearGradient id="linearGradient1" xlink:href="#linearGradient0"/>
|
||||
<rect width="100" height="100" fill="green"/>
|
||||
<rect width="100" height="100" fill="url(#linearGradient1) yellow"/>
|
||||
<text>
|
||||
<linearGradient id="linearGradient0">
|
||||
<stop stop-color="orange"/>
|
||||
</linearGradient>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 717 B |
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:h="http:/www.w3.org/1999/xhtml">
|
||||
<title><linearGradient> (with content) inheriting from a <linearGradient> in an invalid context</title>
|
||||
<h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopNotes"/>
|
||||
<h:link rel="match" href="reference/green-100x100.svg"/>
|
||||
<linearGradient id="linearGradient1" xlink:href="#linearGradient0">
|
||||
<stop stop-color="green"/>
|
||||
</linearGradient>
|
||||
<rect width="100" height="100" fill="url(#linearGradient1) yellow"/>
|
||||
<text>
|
||||
<linearGradient id="linearGradient0">
|
||||
<stop stop-color="orange"/>
|
||||
</linearGradient>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 716 B |
|
@ -0,0 +1,13 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:h="http:/www.w3.org/1999/xhtml">
|
||||
<title><pattern> (without content) inheriting from a <pattern> in an invalid context</title>
|
||||
<h:link rel="match" href="reference/green-100x100.svg"/>
|
||||
<pattern id="pattern1" xlink:href="#pattern0" width="1" height="1"/>
|
||||
<rect width="100" height="100" fill="url(#pattern1) green"/>
|
||||
<text>
|
||||
<pattern id="pattern0">
|
||||
<rect width="100" height="100" fill="orange"/>
|
||||
</pattern>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 562 B |
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:h="http:/www.w3.org/1999/xhtml">
|
||||
<title><pattern> (with content) inheriting from a <pattern> in an invalid context</title>
|
||||
<h:link rel="match" href="reference/green-100x100.svg"/>
|
||||
<pattern id="pattern1" xlink:href="#pattern0" width="1" height="1">
|
||||
<rect width="100" height="100" fill="green"/>
|
||||
</pattern>
|
||||
<rect width="100" height="100" fill="url(#pattern1) yellow"/>
|
||||
<text>
|
||||
<pattern id="pattern0">
|
||||
<rect width="100" height="100" fill="orange"/>
|
||||
</pattern>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 622 B |
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>SVG presentation attributes - on irrelevant elements</title>
|
||||
<link rel="help" href="https://svgwg.org/svg2-draft/styling.html#PresentationAttributes">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="presentation-attributes.js"></script>
|
||||
<svg id="svg"></svg>
|
||||
<script>
|
||||
// Test that all of the presentation attributes with no special rules are
|
||||
// also supported on elements that the corresponding property does not
|
||||
// apply to.
|
||||
|
||||
for (let p in PROPERTIES) {
|
||||
if (CSS.supports(p, "initial") && PROPERTIES[p].irrelevantElement) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported(PROPERTIES[p].irrelevantElement, p, PROPERTIES[p].value, p);
|
||||
}, `${p} presentation attribute supported on an irrelevant element`);
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>SVG presentation attributes - on relevant elements</title>
|
||||
<link rel="help" href="https://svgwg.org/svg2-draft/styling.html#PresentationAttributes">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="presentation-attributes.js"></script>
|
||||
<svg id="svg"></svg>
|
||||
<script>
|
||||
// Test that all of the presentation attributes with no special rules are
|
||||
// supported on elements that the corresponding properties apply to.
|
||||
|
||||
for (let p in PROPERTIES) {
|
||||
if (CSS.supports(p, "initial")) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported(PROPERTIES[p].relevantElement, p, PROPERTIES[p].value, p);
|
||||
}, `${p} presentation attribute supported on a relevant element`);
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>SVG presentation attributes - special cases</title>
|
||||
<link rel="help" href="https://svgwg.org/svg2-draft/styling.html#PresentationAttributes">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="presentation-attributes.js"></script>
|
||||
<svg id="svg"></svg>
|
||||
<script>
|
||||
// 1. Test the special cases where presentation attributes are only allowed on
|
||||
// a specific set of elements.
|
||||
|
||||
if (propertiesAreSupported(["cx", "cy"])) {
|
||||
for (let e of ["circle", "ellipse"]) {
|
||||
test(function() {
|
||||
for (let p of ["cx", "cy"]) {
|
||||
assertPresentationAttributeIsSupported(e, p, "1", p);
|
||||
}
|
||||
}, `cx and cy presentation attributes supported on ${e} element`);
|
||||
}
|
||||
}
|
||||
|
||||
if (propertiesAreSupported(["x", "y", "width", "height"])) {
|
||||
for (let e of ["foreignObject", "image", "rect", "svg", "symbol", "use"]) {
|
||||
test(function() {
|
||||
for (let p of ["x", "y", "width", "height"]) {
|
||||
assertPresentationAttributeIsSupported(e, p, "1", p);
|
||||
}
|
||||
}, `x, y, width, and height presentation attributes supported on ${e} element`);
|
||||
}
|
||||
}
|
||||
|
||||
if (CSS.supports("r", "initial")) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("circle", "r", "1", "r");
|
||||
}, `r presentation attribute supported on circle element`);
|
||||
}
|
||||
|
||||
if (propertiesAreSupported(["rx", "ry"])) {
|
||||
for (let e of ["ellipse", "rect"]) {
|
||||
test(function() {
|
||||
for (let p of ["rx", "ry"]) {
|
||||
assertPresentationAttributeIsSupported(e, p, "1", p);
|
||||
}
|
||||
}, `rx and ry presentation attributes supported on ${e} element`);
|
||||
}
|
||||
}
|
||||
|
||||
if (CSS.supports("d", "initial")) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("path", "d", "M0,0 L1,1", "d");
|
||||
}, `d presentation attribute supported on path element`);
|
||||
}
|
||||
|
||||
|
||||
// 2. Test that for those presentation attributes only allowed on a specific
|
||||
// set of elements, that they are not supported on some other SVG element.
|
||||
// (We use 'g' as that element for testing.)
|
||||
|
||||
if (propertiesAreSupported(["cx", "cy"])) {
|
||||
test(function() {
|
||||
for (let p of ["cx", "cy"]) {
|
||||
assertPresentationAttributeIsNotSupported("g", p, "1", p);
|
||||
}
|
||||
}, `cx and cy presentation attributes not supported on other elements`);
|
||||
}
|
||||
|
||||
if (propertiesAreSupported(["x", "y", "width", "height"])) {
|
||||
test(function() {
|
||||
for (let p of ["x", "y", "width", "height"]) {
|
||||
assertPresentationAttributeIsNotSupported("g", p, "1", p);
|
||||
}
|
||||
}, `x, y, width, and height presentation attributes not supported on other elements`);
|
||||
}
|
||||
|
||||
if (CSS.supports("r", "initial")) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsNotSupported("g", "r", "1", "r");
|
||||
}, `r presentation attribute not supported on other elements`);
|
||||
}
|
||||
|
||||
if (propertiesAreSupported(["rx", "ry"])) {
|
||||
test(function() {
|
||||
for (let p of ["rx", "ry"]) {
|
||||
assertPresentationAttributeIsNotSupported("g", p, "1", p);
|
||||
}
|
||||
}, `rx and ry presentation attributes not supported on other elements`);
|
||||
}
|
||||
|
||||
if (CSS.supports("d", "initial")) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("g", "d", "M0,0 L1,1", "d");
|
||||
}, `d presentation attribute not supported on other elements`);
|
||||
}
|
||||
|
||||
|
||||
// 3. Test that the fill presentation attribute is not supported on any
|
||||
// animation elements.
|
||||
|
||||
if (CSS.supports("fill", "initial")) {
|
||||
test(function() {
|
||||
for (let e of ["animate", "animateMotion", "animateTransform", "discard", "set"]) {
|
||||
assertPresentationAttributeIsNotSupported(e, "fill", "blue", "fill");
|
||||
}
|
||||
}, `fill presentation attribute not supported on animation elements`);
|
||||
}
|
||||
|
||||
|
||||
if (CSS.supports("transform", "initial")) {
|
||||
// 4. Test support for the presentation attributes of the transform property,
|
||||
// which have a different spelling depending on which element they're on.
|
||||
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("g", "transform", "scale(2)", "transform");
|
||||
}, `transform presentation attribute supported on g`);
|
||||
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("pattern", "patternTransform", "scale(2)", "transform");
|
||||
}, `patternTransform presentation attribute supported on pattern`);
|
||||
|
||||
for (let e of ["linearGradient", "radialGradient"]) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported(e, "gradientTransform", "scale(2)", "transform");
|
||||
}, `patternTransform presentation attribute supported on ${e}`);
|
||||
}
|
||||
|
||||
|
||||
// 5. Test that the wrong spellings of the presentation attributes of the
|
||||
// transform property are not supported.
|
||||
|
||||
test(function() {
|
||||
for (let e of ["pattern", "linearGradient", "radialGradient"]) {
|
||||
assertPresentationAttributeIsNotSupported(e, "transform", "scale(2)", "transform");
|
||||
}
|
||||
}, `transform presentation attribute not supported on pattern or gradient elements`);
|
||||
|
||||
test(function() {
|
||||
for (let e of ["g", "linearGradient", "radialGradient"]) {
|
||||
assertPresentationAttributeIsNotSupported(e, "patternTransform", "scale(2)", "transform");
|
||||
}
|
||||
}, `patternTransform presentation attribute not supported on g or gradient elements`);
|
||||
|
||||
test(function() {
|
||||
for (let e of ["g", "pattern"]) {
|
||||
assertPresentationAttributeIsNotSupported(e, "gradientTransform", "scale(2)", "transform");
|
||||
}
|
||||
}, `gradientTransform presentation attribute not supported on g or pattern elements`);
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>SVG presentation attributes - on unknown SVG elements</title>
|
||||
<link rel="help" href="https://svgwg.org/svg2-draft/styling.html#PresentationAttributes">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="presentation-attributes.js"></script>
|
||||
<svg id="svg"></svg>
|
||||
<script>
|
||||
// Test that all of the presentation attributes with no special
|
||||
// rules are supported on unknown SVG elements.
|
||||
|
||||
for (let p in PROPERTIES) {
|
||||
if (CSS.supports(p, "initial") && PROPERTIES[p].irrelevantElement) {
|
||||
test(function() {
|
||||
assertPresentationAttributeIsSupported("unknown", p, PROPERTIES[p].value, p);
|
||||
}, `${p} presentation attribute supported on an unknown SVG element`);
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,385 @@
|
|||
const PROPERTIES = {
|
||||
"alignment-baseline": {
|
||||
value: "middle",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"baseline-shift": {
|
||||
value: "1",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"clip-path": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"clip-rule": {
|
||||
value: "evenodd",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"color": {
|
||||
value: "blue",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"color-interpolation-filters": {
|
||||
value: "sRGB",
|
||||
relevantElement: "filter",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"color-interpolation": {
|
||||
value: "linearRGB",
|
||||
relevantElement: "linearGradient",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"cursor": {
|
||||
value: "pointer",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "defs",
|
||||
},
|
||||
"cx": {
|
||||
value: "1",
|
||||
relevantElement: "circle",
|
||||
irrelevantElement: null,
|
||||
},
|
||||
"cy": {
|
||||
value: "1",
|
||||
relevantElement: "circle",
|
||||
irrelevantElement: null,
|
||||
},
|
||||
"direction": {
|
||||
value: "rtl",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"display": {
|
||||
value: "block",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"d": {
|
||||
value: "M0,0 L1,1",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"dominant-baseline": {
|
||||
value: "middle",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"fill": {
|
||||
value: "blue",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"fill-opacity": {
|
||||
value: "0.5",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"fill-rule": {
|
||||
value: "evenodd",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"filter": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"flood-color": {
|
||||
value: "blue",
|
||||
relevantElement: "feFlood",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"flood-opacity": {
|
||||
value: "0.5",
|
||||
relevantElement: "feFlood",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-family": {
|
||||
value: "Test Family",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-size": {
|
||||
value: "50",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-size-adjust": {
|
||||
value: "0.5",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-stretch": {
|
||||
value: "expanded",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-style": {
|
||||
value: "italic",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-variant": {
|
||||
value: "small-caps",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"font-weight": {
|
||||
value: "900",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"glyph-orientation-vertical": {
|
||||
value: "90",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"height": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"image-rendering": {
|
||||
value: "optimizeSpeed",
|
||||
relevantElement: "image",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"letter-spacing": {
|
||||
value: "1px",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"lighting-color": {
|
||||
value: "blue",
|
||||
relevantElement: "feDiffuseLighting",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"marker-end": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"marker-mid": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"marker-start": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"mask-type": {
|
||||
value: "alpha",
|
||||
relevantElement: "mask",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"mask": {
|
||||
value: "url(#e)",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"opacity": {
|
||||
value: "0.5",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"overflow": {
|
||||
value: "scroll",
|
||||
relevantElement: "svg",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"paint-order": {
|
||||
value: "fill stroke",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"pointer-events": {
|
||||
value: "none",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"r": {
|
||||
value: "1",
|
||||
relevantElement: "circle",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"rx": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"ry": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"shape-rendering": {
|
||||
value: "geometricPrecision",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stop-color": {
|
||||
value: "blue",
|
||||
relevantElement: "stop",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"stop-opacity": {
|
||||
value: "0.5",
|
||||
relevantElement: "stop",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"stroke": {
|
||||
value: "blue",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-dasharray": {
|
||||
value: "1 1",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-dashoffset": {
|
||||
value: "1",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-linecap": {
|
||||
value: "round",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-linejoin": {
|
||||
value: "round",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-miterlimit": {
|
||||
value: "1",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-opacity": {
|
||||
value: "0.5",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"stroke-width": {
|
||||
value: "2",
|
||||
relevantElement: "path",
|
||||
irrelevantElement: "image",
|
||||
},
|
||||
"text-anchor": {
|
||||
value: "middle",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"text-decoration": {
|
||||
value: "underline",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"text-overflow": {
|
||||
value: "ellipsis",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"text-rendering": {
|
||||
value: "geometricPrecision",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"transform-origin": {
|
||||
value: "1px 1px",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"transform": {
|
||||
value: "scale(2)",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"unicode-bidi": {
|
||||
value: "embed",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"vector-effect": {
|
||||
value: "non-scaling-stroke",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"visibility": {
|
||||
value: "hidden",
|
||||
relevantElement: "g",
|
||||
irrelevantElement: "linearGradient",
|
||||
},
|
||||
"white-space": {
|
||||
value: "pre",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"width": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"word-spacing": {
|
||||
value: "1",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"writing-mode": {
|
||||
value: "vertical-rl",
|
||||
relevantElement: "text",
|
||||
irrelevantElement: "rect",
|
||||
},
|
||||
"x": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
"y": {
|
||||
value: "1",
|
||||
relevantElement: "rect",
|
||||
irrelevantElement: "path",
|
||||
},
|
||||
};
|
||||
|
||||
function presentationAttributeIsSupported(element, attribute, value, property) {
|
||||
let e = document.createElementNS("http://www.w3.org/2000/svg", element);
|
||||
svg.append(e);
|
||||
let propertyValueBefore = getComputedStyle(e).getPropertyValue(property);
|
||||
e.setAttribute(attribute, value);
|
||||
let propertyValueAfter = getComputedStyle(e).getPropertyValue(property);
|
||||
e.remove();
|
||||
return propertyValueBefore != propertyValueAfter;
|
||||
}
|
||||
|
||||
function assertPresentationAttributeIsSupported(element, attribute, value, property) {
|
||||
assert_true(
|
||||
presentationAttributeIsSupported(element, attribute, value, property),
|
||||
`Presentation attribute ${attribute}="${value}" should be supported on ${element} element`
|
||||
);
|
||||
}
|
||||
|
||||
function assertPresentationAttributeIsNotSupported(element, attribute, value, property) {
|
||||
assert_false(
|
||||
presentationAttributeIsSupported(element, attribute, value, property),
|
||||
`Presentation attribute ${attribute}="${value}" should be supported on ${element} element`
|
||||
);
|
||||
}
|
||||
|
||||
function propertiesAreSupported(properties) {
|
||||
for (let p of properties) {
|
||||
if (!CSS.supports(p, "initial")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -633,9 +633,8 @@ def test_late_timeout():
|
|||
]
|
||||
|
||||
|
||||
@pytest.mark.skipif(six.PY3, reason="Cannot parse print statements from python 3")
|
||||
def test_print_statement():
|
||||
error_map = check_with_files(b"def foo():\n print 'statement'\n print\n")
|
||||
error_map = check_with_files(b"def foo():\n print('statement')\n print\n")
|
||||
|
||||
for (filename, (errors, kind)) in error_map.items():
|
||||
check_errors(errors)
|
||||
|
|
|
@ -26,6 +26,7 @@ if MYPY:
|
|||
from typing import Callable
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
from typing import Text
|
||||
|
||||
here = os.path.dirname(__file__)
|
||||
|
||||
|
@ -50,9 +51,9 @@ def should_download(manifest_path, rebuild_time=timedelta(days=5)):
|
|||
|
||||
|
||||
def merge_pr_tags(repo_root, max_count=50):
|
||||
# type: (str, int) -> List[str]
|
||||
# type: (str, int) -> List[Text]
|
||||
gitfunc = git(repo_root)
|
||||
tags = [] # type: List[str]
|
||||
tags = [] # type: List[Text]
|
||||
if gitfunc is None:
|
||||
return tags
|
||||
for line in gitfunc("log", "--format=%D", "--max-count=%s" % max_count).split("\n"):
|
||||
|
@ -79,7 +80,7 @@ def score_name(name):
|
|||
|
||||
|
||||
def github_url(tags):
|
||||
# type: (List[str]) -> Optional[List[str]]
|
||||
# type: (List[Text]) -> Optional[List[Text]]
|
||||
for tag in tags:
|
||||
url = "https://api.github.com/repos/web-platform-tests/wpt/releases/tags/%s" % tag
|
||||
try:
|
||||
|
@ -111,8 +112,8 @@ def github_url(tags):
|
|||
|
||||
def download_manifest(
|
||||
manifest_path, # type: str
|
||||
tags_func, # type: Callable[[], List[str]]
|
||||
url_func, # type: Callable[[List[str]], Optional[List[str]]]
|
||||
tags_func, # type: Callable[[], List[Text]]
|
||||
url_func, # type: Callable[[List[Text]], Optional[List[Text]]]
|
||||
force=False # type: bool
|
||||
):
|
||||
# type: (...) -> bool
|
||||
|
|
|
@ -2,7 +2,7 @@ import hashlib
|
|||
import re
|
||||
import os
|
||||
from collections import deque
|
||||
from six import binary_type, PY3
|
||||
from six import binary_type, PY3, iteritems
|
||||
from six.moves.urllib.parse import urljoin
|
||||
from fnmatch import fnmatch
|
||||
|
||||
|
@ -195,7 +195,7 @@ class SourceFile(object):
|
|||
("css", "common")} # type: Set[Tuple[bytes, ...]]
|
||||
|
||||
def __init__(self, tests_root, rel_path, url_base, hash=None, contents=None):
|
||||
# type: (AnyStr, AnyStr, Text, Optional[bytes], Optional[bytes]) -> None
|
||||
# type: (AnyStr, AnyStr, Text, Optional[Text], Optional[bytes]) -> None
|
||||
"""Object representing a file in a source tree.
|
||||
|
||||
:param tests_root: Path to the root of the source tree
|
||||
|
@ -242,9 +242,7 @@ class SourceFile(object):
|
|||
|
||||
if "__cached_properties__" in rv:
|
||||
cached_properties = rv["__cached_properties__"]
|
||||
for key in rv.keys():
|
||||
if key in cached_properties:
|
||||
del rv[key]
|
||||
rv = {key:value for key, value in iteritems(rv) if key not in cached_properties}
|
||||
del rv["__cached_properties__"]
|
||||
return rv
|
||||
|
||||
|
@ -304,7 +302,7 @@ class SourceFile(object):
|
|||
|
||||
@cached_property
|
||||
def hash(self):
|
||||
# type: () -> bytes
|
||||
# type: () -> Text
|
||||
if not self._hash:
|
||||
with self.open() as f:
|
||||
content = f.read()
|
||||
|
|
|
@ -55,16 +55,16 @@ def to_os_path(path):
|
|||
|
||||
|
||||
def git(path):
|
||||
# type: (bytes) -> Optional[Callable[..., bytes]]
|
||||
# type: (bytes) -> Optional[Callable[..., Text]]
|
||||
def gitfunc(cmd, *args):
|
||||
# type: (bytes, *bytes) -> bytes
|
||||
# type: (bytes, *bytes) -> Text
|
||||
full_cmd = ["git", cmd] + list(args)
|
||||
try:
|
||||
return subprocess.check_output(full_cmd, cwd=path, stderr=subprocess.STDOUT)
|
||||
return subprocess.check_output(full_cmd, cwd=path, stderr=subprocess.STDOUT).decode('utf8')
|
||||
except Exception as e:
|
||||
if platform.uname()[0] == "Windows" and isinstance(e, WindowsError):
|
||||
full_cmd[0] = "git.bat"
|
||||
return subprocess.check_output(full_cmd, cwd=path, stderr=subprocess.STDOUT)
|
||||
return subprocess.check_output(full_cmd, cwd=path, stderr=subprocess.STDOUT).decode('utf8')
|
||||
else:
|
||||
raise
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ def get_tree(tests_root, manifest, manifest_path, cache_root,
|
|||
# type: (bytes, Manifest, Optional[bytes], Optional[bytes], bool, bool) -> FileSystem
|
||||
tree = None
|
||||
if cache_root is None:
|
||||
cache_root = os.path.join(tests_root, b".wptcache")
|
||||
cache_root = os.path.join(tests_root, ".wptcache")
|
||||
if not os.path.exists(cache_root):
|
||||
try:
|
||||
os.makedirs(cache_root)
|
||||
|
@ -58,21 +58,21 @@ class GitHasher(object):
|
|||
self.git = git(path)
|
||||
|
||||
def _local_changes(self):
|
||||
# type: () -> Set[bytes]
|
||||
# type: () -> Set[Text]
|
||||
"""get a set of files which have changed between HEAD and working copy"""
|
||||
assert self.git is not None
|
||||
# note that git runs the command with tests_root as the cwd, which may
|
||||
# not be the root of the git repo (e.g., within a browser repo)
|
||||
cmd = [b"diff-index", b"--relative", b"--no-renames", b"--name-only", b"-z", b"HEAD"]
|
||||
data = self.git(*cmd)
|
||||
return set(data.split(b"\0"))
|
||||
return set(data.split("\0"))
|
||||
|
||||
def hash_cache(self):
|
||||
# type: () -> Dict[bytes, Optional[bytes]]
|
||||
# type: () -> Dict[Text, Optional[Text]]
|
||||
"""
|
||||
A dict of rel_path -> current git object id if the working tree matches HEAD else None
|
||||
"""
|
||||
hash_cache = {} # type: Dict[bytes, Optional[bytes]]
|
||||
hash_cache = {} # type: Dict[Text, Optional[Text]]
|
||||
|
||||
if self.git is None:
|
||||
return hash_cache
|
||||
|
@ -81,9 +81,9 @@ class GitHasher(object):
|
|||
# not be the root of the git repo (e.g., within a browser repo)
|
||||
cmd = ["ls-tree", "-r", "-z", "HEAD"]
|
||||
local_changes = self._local_changes()
|
||||
for result in self.git(*cmd).split(b"\0")[:-1]: # type: bytes
|
||||
data, rel_path = result.rsplit(b"\t", 1)
|
||||
hash_cache[rel_path] = None if rel_path in local_changes else data.split(b" ", 3)[2]
|
||||
for result in self.git(*cmd).split("\0")[:-1]: # type: Text
|
||||
data, rel_path = result.rsplit("\t", 1)
|
||||
hash_cache[rel_path] = None if rel_path in local_changes else data.split(" ", 3)[2]
|
||||
|
||||
return hash_cache
|
||||
|
||||
|
@ -174,7 +174,7 @@ class CacheFile(with_metaclass(abc.ABCMeta)):
|
|||
|
||||
|
||||
class MtimeCache(CacheFile):
|
||||
file_name = b"mtime.json"
|
||||
file_name = "mtime.json"
|
||||
|
||||
def __init__(self, cache_root, tests_root, manifest_path, rebuild=False):
|
||||
# type: (bytes, bytes, bytes, bool) -> None
|
||||
|
@ -222,7 +222,7 @@ class MtimeCache(CacheFile):
|
|||
|
||||
|
||||
class GitIgnoreCache(CacheFile, MutableMapping): # type: ignore
|
||||
file_name = b"gitignore.json"
|
||||
file_name = "gitignore.json"
|
||||
|
||||
def check_valid(self, data):
|
||||
# type: (Dict[Any, Any]) -> Dict[Any, Any]
|
||||
|
@ -286,7 +286,7 @@ def walk(root):
|
|||
relpath = os.path.relpath
|
||||
|
||||
root = os.path.abspath(root)
|
||||
stack = deque([(root, b"")])
|
||||
stack = deque([(root, "")])
|
||||
|
||||
while stack:
|
||||
dir_path, rel_path = stack.popleft()
|
||||
|
|
|
@ -299,7 +299,7 @@ def affected_testfiles(files_changed, # type: Iterable[Text]
|
|||
|
||||
def affected_by_interfaces(file_contents):
|
||||
# type: (Union[bytes, Text]) -> bool
|
||||
if len(interfaces_changed_names) > 0:
|
||||
if len(interfaces_changed) > 0:
|
||||
if 'idlharness.js' in file_contents:
|
||||
for interface in interfaces_changed_names:
|
||||
regex = '[\'"]' + interface + '(\\.idl)?[\'"]'
|
||||
|
@ -324,9 +324,9 @@ def affected_testfiles(files_changed, # type: Iterable[Text]
|
|||
|
||||
with open(test_full_path, "rb") as fh:
|
||||
raw_file_contents = fh.read() # type: bytes
|
||||
if raw_file_contents.startswith("\xfe\xff"):
|
||||
if raw_file_contents.startswith(b"\xfe\xff"):
|
||||
file_contents = raw_file_contents.decode("utf-16be", "replace") # type: Text
|
||||
elif raw_file_contents.startswith("\xff\xfe"):
|
||||
elif raw_file_contents.startswith(b"\xff\xfe"):
|
||||
file_contents = raw_file_contents.decode("utf-16le", "replace")
|
||||
else:
|
||||
file_contents = raw_file_contents.decode("utf8", "replace")
|
||||
|
|
|
@ -332,6 +332,8 @@ class ServoCrashtestExecutor(ProcessTestExecutor):
|
|||
self.test = test
|
||||
success, data = ServoTimedRunner(self.logger, self.do_crashtest, self.protocol,
|
||||
test_url, timeout, self.extra_timeout).run()
|
||||
# Ensure that no processes hang around if they timeout.
|
||||
self.proc.kill()
|
||||
|
||||
if success:
|
||||
return self.convert_result(test, data)
|
||||
|
|
|
@ -26,12 +26,13 @@ def do_delayed_imports():
|
|||
|
||||
|
||||
class TestChunker(object):
|
||||
def __init__(self, total_chunks, chunk_number):
|
||||
def __init__(self, total_chunks, chunk_number, **kwargs):
|
||||
self.total_chunks = total_chunks
|
||||
self.chunk_number = chunk_number
|
||||
assert self.chunk_number <= self.total_chunks
|
||||
self.logger = structured.get_default_logger()
|
||||
assert self.logger
|
||||
self.kwargs = kwargs
|
||||
|
||||
def __call__(self, manifest):
|
||||
raise NotImplementedError
|
||||
|
@ -42,7 +43,7 @@ class Unchunked(TestChunker):
|
|||
TestChunker.__init__(self, *args, **kwargs)
|
||||
assert self.total_chunks == 1
|
||||
|
||||
def __call__(self, manifest):
|
||||
def __call__(self, manifest, **kwargs):
|
||||
for item in manifest:
|
||||
yield item
|
||||
|
||||
|
@ -64,8 +65,13 @@ class DirectoryHashChunker(TestChunker):
|
|||
"""
|
||||
def __call__(self, manifest):
|
||||
chunk_index = self.chunk_number - 1
|
||||
depth = self.kwargs.get("depth")
|
||||
for test_type, test_path, tests in manifest:
|
||||
h = int(hashlib.md5(ensure_binary(os.path.dirname(test_path))).hexdigest(), 16)
|
||||
if depth:
|
||||
hash_path = os.path.sep.join(os.path.dirname(test_path).split(os.path.sep, depth)[:depth])
|
||||
else:
|
||||
hash_path = os.path.dirname(test_path)
|
||||
h = int(hashlib.md5(ensure_binary(hash_path)).hexdigest(), 16)
|
||||
if h % self.total_chunks == chunk_index:
|
||||
yield test_type, test_path, tests
|
||||
|
||||
|
@ -161,7 +167,8 @@ class TestLoader(object):
|
|||
total_chunks=1,
|
||||
chunk_number=1,
|
||||
include_https=True,
|
||||
skip_timeout=False):
|
||||
skip_timeout=False,
|
||||
chunker_kwargs=None):
|
||||
|
||||
self.test_types = test_types
|
||||
self.run_info = run_info
|
||||
|
@ -178,10 +185,13 @@ class TestLoader(object):
|
|||
self.total_chunks = total_chunks
|
||||
self.chunk_number = chunk_number
|
||||
|
||||
if chunker_kwargs is None:
|
||||
chunker_kwargs = {}
|
||||
self.chunker = {"none": Unchunked,
|
||||
"hash": HashChunker,
|
||||
"dir_hash": DirectoryHashChunker}[chunk_type](total_chunks,
|
||||
chunk_number)
|
||||
chunk_number,
|
||||
**chunker_kwargs)
|
||||
|
||||
self._test_ids = None
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ def setup_logging(*args, **kwargs):
|
|||
return logger
|
||||
|
||||
|
||||
def get_loader(test_paths, product, debug=None, run_info_extras=None, **kwargs):
|
||||
def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kwargs=None, **kwargs):
|
||||
if run_info_extras is None:
|
||||
run_info_extras = {}
|
||||
|
||||
|
@ -78,7 +78,8 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, **kwargs):
|
|||
total_chunks=kwargs["total_chunks"],
|
||||
chunk_number=kwargs["this_chunk"],
|
||||
include_https=ssl_enabled,
|
||||
skip_timeout=kwargs["skip_timeout"])
|
||||
skip_timeout=kwargs["skip_timeout"],
|
||||
chunker_kwargs=chunker_kwargs)
|
||||
return run_info, test_loader
|
||||
|
||||
|
||||
|
@ -162,18 +163,23 @@ def run_tests(config, test_paths, product, **kwargs):
|
|||
))
|
||||
|
||||
recording.set(["startup", "load_tests"])
|
||||
run_info, test_loader = get_loader(test_paths,
|
||||
product.name,
|
||||
run_info_extras=product.run_info_extras(**kwargs),
|
||||
**kwargs)
|
||||
|
||||
test_source_kwargs = {"processes": kwargs["processes"]}
|
||||
chunker_kwargs = {}
|
||||
if kwargs["run_by_dir"] is False:
|
||||
test_source_cls = testloader.SingleTestSource
|
||||
else:
|
||||
# A value of None indicates infinite depth
|
||||
test_source_cls = testloader.PathGroupedSource
|
||||
test_source_kwargs["depth"] = kwargs["run_by_dir"]
|
||||
chunker_kwargs["depth"] = kwargs["run_by_dir"]
|
||||
|
||||
run_info, test_loader = get_loader(test_paths,
|
||||
product.name,
|
||||
run_info_extras=product.run_info_extras(**kwargs),
|
||||
chunker_kwargs=chunker_kwargs,
|
||||
**kwargs)
|
||||
|
||||
|
||||
logger.info("Using %i client processes" % kwargs["processes"])
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ setup(() => {
|
|||
|
||||
for (const method of ["compileStreaming", "instantiateStreaming"]) {
|
||||
promise_test(t => {
|
||||
const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
|
||||
const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0xCA, 0xFE]));
|
||||
const response = new Response(buffer, { headers: { "Content-Type": "application/wasm" } });
|
||||
return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly[method](response));
|
||||
}, `Invalid code: ${method}`);
|
||||
|
|
|
@ -69,6 +69,17 @@ async_test(t => {
|
|||
c1.postMessage('test');
|
||||
}, 'messages aren\'t delivered to a closed port');
|
||||
|
||||
async_test(t => {
|
||||
let c1 = new BroadcastChannel('closed');
|
||||
let c2 = new BroadcastChannel('closed');
|
||||
let c3 = new BroadcastChannel('closed');
|
||||
|
||||
c2.onmessage = t.unreached_func();
|
||||
c3.onmessage = t.step_func(() => t.done());
|
||||
c1.postMessage('test');
|
||||
c2.close();
|
||||
}, 'messages aren\'t delivered to a port closed after calling postMessage.');
|
||||
|
||||
async_test(t => {
|
||||
let c1 = new BroadcastChannel('create-in-onmessage');
|
||||
let c2 = new BroadcastChannel('create-in-onmessage');
|
||||
|
@ -87,8 +98,6 @@ async_test(t => {
|
|||
c2.postMessage('second');
|
||||
}, 'closing and creating channels during message delivery works correctly');
|
||||
|
||||
// TODO(mek): Depending on https://github.com/whatwg/html/issues/1371 adjust
|
||||
// this test to match the correct behavior.
|
||||
async_test(t => {
|
||||
let c1 = new BroadcastChannel('close-in-onmessage');
|
||||
let c2 = new BroadcastChannel('close-in-onmessage');
|
||||
|
@ -108,13 +117,12 @@ async_test(t => {
|
|||
assert_array_equals(events, [
|
||||
'c2: first',
|
||||
'c3: first',
|
||||
'c2: done',
|
||||
'c3: done']);
|
||||
t.done();
|
||||
}
|
||||
}));
|
||||
c1.postMessage('first');
|
||||
c1.postMessage('done');
|
||||
}, 'Closing a channel in onmessage doesn\'t cancel already queued events');
|
||||
}, 'Closing a channel in onmessage prevents already queued tasks from firing onmessage events');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// META: global=!default,worker
|
||||
|
||||
test(function() {
|
||||
assert_equals(self, self);
|
||||
}, 'self === self');
|
||||
|
||||
test(function() {
|
||||
assert_true(self instanceof WorkerGlobalScope);
|
||||
}, 'self instanceof WorkerGlobalScope');
|
||||
|
||||
test(function() {
|
||||
assert_true('self' in self);
|
||||
}, '\'self\' in self');
|
||||
|
||||
test(function() {
|
||||
var x = self;
|
||||
self = 1;
|
||||
assert_equals(self, x);
|
||||
}, 'self = 1');
|
|
@ -1,16 +0,0 @@
|
|||
<!doctype html>
|
||||
<title>self</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
async_test(function() {
|
||||
var worker = new Worker('self.js');
|
||||
worker.onmessage = this.step_func(function(e) {
|
||||
for (var i = 0; i < e.data.length; ++i) {
|
||||
assert_true(e.data[i][0], e.data[i][1]);
|
||||
}
|
||||
this.done();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -1,17 +0,0 @@
|
|||
var results = [];
|
||||
function check(func, msg) {
|
||||
try {
|
||||
results.push([func(), msg]);
|
||||
} catch(ex) {
|
||||
results.push([String(ex), msg]);
|
||||
}
|
||||
}
|
||||
check(function() { return self === self; }, 'self === self');
|
||||
check(function() { return self instanceof WorkerGlobalScope; }, 'self instanceof WorkerGlobalScope');
|
||||
check(function() { return 'self' in self; }, '\'self\' in self');
|
||||
check(function() {
|
||||
var x = self;
|
||||
self = 1;
|
||||
return x === self;
|
||||
}, 'self = 1');
|
||||
postMessage(results);
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>DedicatedWorker: Referrer</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue