mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Update web-platform-tests to revision 4984b190341b535c645729b8f99247aace0022fe
This commit is contained in:
parent
9ca6768a56
commit
d61756ac9d
73 changed files with 1198 additions and 1135 deletions
|
@ -14,9 +14,6 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-with-fetch.any.html]
|
||||
[Untitled]
|
||||
|
|
|
@ -8647,18 +8647,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-009.xht": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-break-all-009.xht",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-keep-all-004.xht": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-keep-all-004.xht",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-transitions/transition-delay-000.html": [
|
||||
[
|
||||
"/css/css-transitions/transition-delay-000.html",
|
||||
|
@ -109873,6 +109861,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/contain-layout-baseline-005.html": [
|
||||
[
|
||||
"/css/css-contain/contain-layout-baseline-005.html",
|
||||
[
|
||||
[
|
||||
"/css/css-contain/reference/contain-layout-baseline-005-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/contain-layout-breaks-001.html": [
|
||||
[
|
||||
"/css/css-contain/contain-layout-breaks-001.html",
|
||||
|
@ -138829,18 +138829,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-003.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-003.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-003-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-004.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-004.html",
|
||||
|
@ -138853,18 +138841,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-005.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-005.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-003-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-break-word-001.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-break-word-001.html",
|
||||
|
@ -139009,18 +138985,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-003.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/word-wrap-003.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-003-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-004.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/word-wrap-004.html",
|
||||
|
@ -139033,18 +138997,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-005.html": [
|
||||
[
|
||||
"/css/css-text/overflow-wrap/word-wrap-005.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text/overflow-wrap/overflow-wrap-003-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/tab-size/tab-min-rendered-width-1.html": [
|
||||
[
|
||||
"/css/css-text/tab-size/tab-min-rendered-width-1.html",
|
||||
|
@ -252245,6 +252197,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/reference/contain-layout-baseline-005-ref.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-contain/reference/contain-layout-breaks-002-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -268870,11 +268827,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-003-ref.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-004-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -269860,11 +269812,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-010-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -269925,11 +269872,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-keep-all-004-ref.xht": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-keep-all-005-ref.html": [
|
||||
[
|
||||
{}
|
||||
|
@ -304800,6 +304742,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resources/buffer-full-utilities.js": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resources/empty.js": [
|
||||
[
|
||||
{}
|
||||
|
@ -404830,6 +404777,72 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-add-after-full-event.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-add-after-full-event.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-add-entries-during-callback-that-drop.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-add-entries-during-callback-that-drop.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-add-entries-during-callback.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-add-entries-during-callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-add-then-clear.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-add-then-clear.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-decrease-buffer-during-callback.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-decrease-buffer-during-callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-increase-buffer-during-callback.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-increase-buffer-during-callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-inspect-buffer-during-callback.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-inspect-buffer-during-callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-set-to-current-buffer.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-set-to-current-buffer.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-store-and-clear-during-callback.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-store-and-clear-during-callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-then-increased.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-then-increased.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/buffer-full-when-populate-entries.html": [
|
||||
[
|
||||
"/resource-timing/buffer-full-when-populate-entries.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/clear_resource_timing_functionality.html": [
|
||||
[
|
||||
"/resource-timing/clear_resource_timing_functionality.html",
|
||||
|
@ -405016,12 +405029,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resource_timing_buffer_full_when_populate_entries.html": [
|
||||
[
|
||||
"/resource-timing/resource_timing_buffer_full_when_populate_entries.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html": [
|
||||
[
|
||||
"/resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html",
|
||||
|
@ -405046,12 +405053,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resource_timing_store_and_clear_during_callback.html": [
|
||||
[
|
||||
"/resource-timing/resource_timing_store_and_clear_during_callback.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/single-entry-per-resource.html": [
|
||||
[
|
||||
"/resource-timing/single-entry-per-resource.html",
|
||||
|
@ -418818,17 +418819,17 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"workers/importscripts_mime.tentative.any.js": [
|
||||
"workers/importscripts_mime.any.js": [
|
||||
[
|
||||
"/workers/importscripts_mime.tentative.any.serviceworker.html",
|
||||
"/workers/importscripts_mime.any.serviceworker.html",
|
||||
{}
|
||||
],
|
||||
[
|
||||
"/workers/importscripts_mime.tentative.any.sharedworker.html",
|
||||
"/workers/importscripts_mime.any.sharedworker.html",
|
||||
{}
|
||||
],
|
||||
[
|
||||
"/workers/importscripts_mime.tentative.any.worker.html",
|
||||
"/workers/importscripts_mime.any.worker.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
|
@ -440206,30 +440207,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-001.html": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-001.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-002.html": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-002.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-003.html": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-003.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/word-break/word-break-004.html": [
|
||||
[
|
||||
"/css/css-text/word-break/word-break-004.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-transforms/css-transform-inherit-rotate.html": [
|
||||
[
|
||||
"/css/css-transforms/css-transform-inherit-rotate.html",
|
||||
|
@ -542405,6 +542382,10 @@
|
|||
"df3f5782354ea437e66341aae93100f1872ba447",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-layout-baseline-005.html": [
|
||||
"a447744bd7c63d7c36e4dece1654885c6cc8f7a7",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-contain/contain-layout-breaks-001.html": [
|
||||
"a85cf2c6c8e00f1d21fa5a63da81eff8148f3d71",
|
||||
"reftest"
|
||||
|
@ -542909,6 +542890,10 @@
|
|||
"d0c7788fc18533343ee3830d96161f04ccb5d406",
|
||||
"support"
|
||||
],
|
||||
"css/css-contain/reference/contain-layout-baseline-005-ref.html": [
|
||||
"40a34f9ff156cb1d876b4f538b59c57e560403c4",
|
||||
"support"
|
||||
],
|
||||
"css/css-contain/reference/contain-layout-breaks-002-ref.html": [
|
||||
"c68bee1d0aa4f9201fb6e48cc25199f373128ca8",
|
||||
"support"
|
||||
|
@ -571522,7 +571507,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-001.html": [
|
||||
"2407942f09f8775a9b2f20e334c5c36693116551",
|
||||
"3c6ee263fb47b79bc51cff530ff39d77f357f6b7",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-002-ref.html": [
|
||||
|
@ -571530,15 +571515,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-002.html": [
|
||||
"2c6d34d01da680939df27850b64cd0091751a21a",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-003-ref.html": [
|
||||
"fa4ca42b587efba8d7ccb353309caab9a26bc5bc",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-003.html": [
|
||||
"99ead18f2811b2762b34ddbd918a66f0af52b7f0",
|
||||
"e1b5c0610388b1fc8625fdd92a0889c12c406b2c",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-004-ref.html": [
|
||||
|
@ -571546,11 +571523,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-004.html": [
|
||||
"92ad750207dbd573df83e235be4cee52d92d4add",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-005.html": [
|
||||
"181137450d58d9fa072ba40e8d4d5f75b23e7f4e",
|
||||
"166bfc1f474be5b4aad88211f5a724c55fcca000",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-break-word-001.html": [
|
||||
|
@ -571574,7 +571547,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
|
||||
"bce6c68389c32960d79e8fbbf61f9fa28c733165",
|
||||
"2c83c46aa50f6d51efbb4d05635d86f7c166042d",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/overflow-wrap-break-word-span-001.html": [
|
||||
|
@ -571630,23 +571603,15 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-001.html": [
|
||||
"dd5f0f2bf132de85c7a1045e88aa3ad2b72616c1",
|
||||
"af326a6cdf2d02aa51e6eccfd11b90fcc4c16456",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-002.html": [
|
||||
"380fb8ec4fde4decb82e52961ce5ef71a0a6c965",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-003.html": [
|
||||
"282d184b06927311f575d1022ecf1b21b6fd677f",
|
||||
"24b39d6cacda38975948d42044c5b4552d1504af",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-004.html": [
|
||||
"ce7a2fe504747e6c6ffc35a019021bdedbec6d21",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-005.html": [
|
||||
"4b9973a19de2e7b3182d29134102843a2c6b4eb6",
|
||||
"773c4aef6cc14d395e8a7f173e3732ddcb3474e0",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/overflow-wrap/word-wrap-alias.html": [
|
||||
|
@ -573290,7 +573255,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/white-space/pre-wrap-015.html": [
|
||||
"f9063c98767e70c3899bc9a59b50b42a61240ae4",
|
||||
"b17af29bf54b573268522619d6e993750f9b51be",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/white-space/pre-wrap-float-001.html": [
|
||||
|
@ -573557,16 +573522,12 @@
|
|||
"6b21df62c5cbdfa2cce9e52d91c7a792d94354e8",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [
|
||||
"0768b857d96624a63129f002d317019674d1ef0d",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-010-ref.html": [
|
||||
"0e0300a72dc920a5ffb54cda6fbe84a2f517d010",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-014-ref.html": [
|
||||
"a8720a101c3b2d2616b661e51c60b55b85d2d667",
|
||||
"044ea40dd2c737f61a05751d1a778f13d93ad33a",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-break-all-020-ref.html": [
|
||||
|
@ -573609,10 +573570,6 @@
|
|||
"0499f82e799e76f757eb17f81733447d2186481f",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-keep-all-004-ref.xht": [
|
||||
"65ede653fcc21183c8353137873113ee3a05aa2b",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-keep-all-005-ref.html": [
|
||||
"2a33ce75e23f6c65ec98a2a808633349b1ae465e",
|
||||
"support"
|
||||
|
@ -573630,7 +573587,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-keep-all-ref-003.html": [
|
||||
"a6adfdc8340d53184d7182e944e5991108f3188b",
|
||||
"5aba6783f4ed6a2ef19a5a3f59c862ce4584faeb",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/reference/word-break-normal-ar-ref-000.html": [
|
||||
|
@ -573697,22 +573654,6 @@
|
|||
"afdd82454c059b487cb1329751f3e1ca9f1cf750",
|
||||
"support"
|
||||
],
|
||||
"css/css-text/word-break/word-break-001.html": [
|
||||
"f0b6aee34467d077dec49de5d54f497bb0877b97",
|
||||
"visual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-002.html": [
|
||||
"652e40de2664ea4ae079e48f03c3a74449b28c22",
|
||||
"visual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-003.html": [
|
||||
"34546ad61f5c85fbeed9bb40f120069355327f53",
|
||||
"visual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-004.html": [
|
||||
"9f4ccd0331d69b82ac13de439d59d8cc64be897c",
|
||||
"visual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-000.html": [
|
||||
"af21bedf4bdc3219b3c3b1225f76b55e127d3f13",
|
||||
"reftest"
|
||||
|
@ -573746,13 +573687,9 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-008.html": [
|
||||
"83a74c46a39590ebc7d25d4d665e104ba38fbc18",
|
||||
"85e91b56aa1b696538b49a6969e9053f1ee19f0b",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-009.xht": [
|
||||
"9a7a591dafd4352f7df11dc9396608027ef80cd6",
|
||||
"manual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-010.html": [
|
||||
"7d3bc056d822ca15b523f332c6c23ed22a85b340",
|
||||
"reftest"
|
||||
|
@ -573762,7 +573699,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-014.html": [
|
||||
"6885553ad685700e89d4d83ded7bc65269aa1123",
|
||||
"674b0545e05a5d25f056ac9850abd11791de6a58",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-break-all-020.html": [
|
||||
|
@ -573782,13 +573719,9 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-keep-all-003.html": [
|
||||
"1395e354465c5018bd761305933bdcd601fff639",
|
||||
"776d56d828084e95d260b936b3a8c9f282966728",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text/word-break/word-break-keep-all-004.xht": [
|
||||
"c66bfe4bae042170581ab087fb90e41f8a1fc122",
|
||||
"manual"
|
||||
],
|
||||
"css/css-text/word-break/word-break-keep-all-005.html": [
|
||||
"4bb523ab7ca395b36204148755ee5e6d9243761a",
|
||||
"reftest"
|
||||
|
@ -609006,7 +608939,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"encoding/textdecoder-fatal.any.js": [
|
||||
"3cb75736b2c42c33ece1baf7a81a6783ab5d0ce2",
|
||||
"5884f11ec3cf145e2d405e30e3ce346abfc97c1b",
|
||||
"testharness"
|
||||
],
|
||||
"encoding/textdecoder-ignorebom.any.js": [
|
||||
|
@ -633198,7 +633131,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/input-events.idl": [
|
||||
"bd4024856b5be0483f32f65f33ef9cebe81a4521",
|
||||
"0086128e562fbdb11e6c07ecd41f99a6e9a84189",
|
||||
"support"
|
||||
],
|
||||
"interfaces/intersection-observer.idl": [
|
||||
|
@ -633490,7 +633423,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webxr.idl": [
|
||||
"27ee27493aaa98869c9fe3adc0f4f19ec99e85e2",
|
||||
"ea45aef97715ec7d4e098e357af69575eb432ebd",
|
||||
"support"
|
||||
],
|
||||
"interfaces/worklets.idl": [
|
||||
|
@ -635050,7 +634983,7 @@
|
|||
"support"
|
||||
],
|
||||
"mediacapture-fromelement/capture.html": [
|
||||
"cf6168ba17f28ec56fe8f98dbaced91b41fa23ed",
|
||||
"74858737f13f818ed4f52d71221580957302676f",
|
||||
"testharness"
|
||||
],
|
||||
"mediacapture-fromelement/creation.html": [
|
||||
|
@ -656254,9 +656187,53 @@
|
|||
"support"
|
||||
],
|
||||
"resource-timing/SyntheticResponse.py": [
|
||||
"19a788178a1958fd2abd130443f79031c32a8e1a",
|
||||
"528ee239c174e9bd7618288f88cc09f8c5a9b58b",
|
||||
"support"
|
||||
],
|
||||
"resource-timing/buffer-full-add-after-full-event.html": [
|
||||
"07897b5d28dfb281463dc49dc5481d2a1de187b5",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-add-entries-during-callback-that-drop.html": [
|
||||
"d61d2af05c6730c57703e7ba9482067689e78fbb",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-add-entries-during-callback.html": [
|
||||
"b37c47b23fb5026480683594b964ee712abbe708",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-add-then-clear.html": [
|
||||
"710852ced55f716a348cc9e6865d7a8b7048a46a",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-decrease-buffer-during-callback.html": [
|
||||
"e6de33ded1b73345a763692a1bac9138c8f208de",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-increase-buffer-during-callback.html": [
|
||||
"b46d2d65690a886837b8ea7621f3926081552d97",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-inspect-buffer-during-callback.html": [
|
||||
"d46d4692a55b9cbef1aa5f882f38887e1f7940e9",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-set-to-current-buffer.html": [
|
||||
"1e5486ec2cdfc442876ba1f5b2c524985e70e5b5",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-store-and-clear-during-callback.html": [
|
||||
"f0791cba6b39fb4b7e1af09077772f1ee3b42744",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-then-increased.html": [
|
||||
"2265077fc15a277c3352da215fa5ac8a276c60aa",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/buffer-full-when-populate-entries.html": [
|
||||
"00d2ae0e4426f4644f70e921751fffc327de46d6",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/clear_resource_timing_functionality.html": [
|
||||
"eaf21b483ccd6ec63bcb8dc87c9e19a4305bf43d",
|
||||
"testharness"
|
||||
|
@ -656278,7 +656255,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"resource-timing/resource-timing.js": [
|
||||
"58bf19b52bfb23c8aaf8a05ba671eb3fee9c7eb3",
|
||||
"8d97b2f26871e3a492cc6d3d253808e0cf18b0f2",
|
||||
"support"
|
||||
],
|
||||
"resource-timing/resource_TAO_cross_origin_redirect_chain.html": [
|
||||
|
@ -656385,10 +656362,6 @@
|
|||
"ce745237c0657c7045b00d9c7b8e71770ed490fc",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resource_timing_buffer_full_when_populate_entries.html": [
|
||||
"3e62b199a32b1cb7ff5eafc7fc690b379409b660",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html": [
|
||||
"e42c19d05e081ec3673606b4f0d686f0e69e65d8",
|
||||
"testharness"
|
||||
|
@ -656405,10 +656378,6 @@
|
|||
"d9fbf944f6c65b7a247b4764ee39e6aa33bc465d",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resource_timing_store_and_clear_during_callback.html": [
|
||||
"218fc0c2bcd5f987c2aee511bb66fd338476215f",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resources/TAOResponse.py": [
|
||||
"fefc75b7b7fc68872b36f56bcb0fa59dd41d2918",
|
||||
"support"
|
||||
|
@ -656425,6 +656394,10 @@
|
|||
"820f8cace2143bfc45c0c301e84b6c29b8630068",
|
||||
"support"
|
||||
],
|
||||
"resource-timing/resources/buffer-full-utilities.js": [
|
||||
"b143da7b325f0ad24a2f9ad67db7ba31d0aa912c",
|
||||
"support"
|
||||
],
|
||||
"resource-timing/resources/empty.js": [
|
||||
"3b44754e301ded90e559f6343df641e476803542",
|
||||
"support"
|
||||
|
@ -660882,7 +660855,7 @@
|
|||
"support"
|
||||
],
|
||||
"service-workers/service-worker/resources/performance-timeline-worker.js": [
|
||||
"a752b436524e628959e35c9de73e15ccc7dd783f",
|
||||
"cac327c34bf9df184913c561b584b038f3504c94",
|
||||
"support"
|
||||
],
|
||||
"service-workers/service-worker/resources/postmessage-blob-url.js": [
|
||||
|
@ -671530,15 +671503,15 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wpt/requirements.txt": [
|
||||
"5610e90053f6bcab3d699fd2132aba5274818697",
|
||||
"da3fa4c34e31e91dc84998348368802b31f29b97",
|
||||
"support"
|
||||
],
|
||||
"tools/wpt/run.py": [
|
||||
"ea6069504416f57542619bfbb0e3c17db3ed7142",
|
||||
"00984af6c7ca88cbe2dbdbee58b2c0ed1de96ae6",
|
||||
"support"
|
||||
],
|
||||
"tools/wpt/testfiles.py": [
|
||||
"c25ca2d43e21b15a614f3cf8a2d237165164bc57",
|
||||
"2b20b07694bf9c91159ac3356a7055a4d395e77c",
|
||||
"support"
|
||||
],
|
||||
"tools/wpt/tests/latest_mozilla_central.txt": [
|
||||
|
@ -671826,7 +671799,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/browsers/ie.py": [
|
||||
"0eca40925c205848d967f5771858e9cc0b271e38",
|
||||
"78c22b909acf410038ff06769366662ab0c589a0",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/browsers/opera.py": [
|
||||
|
@ -683581,7 +683554,7 @@
|
|||
"f54faf54350990a9593e7af022c9eeb769595b15",
|
||||
"testharness"
|
||||
],
|
||||
"workers/importscripts_mime.tentative.any.js": [
|
||||
"workers/importscripts_mime.any.js": [
|
||||
"04c63a3a5f6d9bd3b71d94142f65a1825358b8ed",
|
||||
"testharness"
|
||||
],
|
||||
|
|
|
@ -38,6 +38,3 @@
|
|||
[Test @font-face matching for weight 399]
|
||||
expected: FAIL
|
||||
|
||||
[Test @font-face matching for weight 420]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[elementsFromPoint-iframes.html]
|
||||
expected: CRASH
|
||||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
type: testharness
|
||||
|
||||
[single-byte-decoder.html?document]
|
||||
expected: CRASH
|
||||
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -54,7 +55,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
@ -155,5 +156,20 @@
|
|||
[windows-1252: us-ascii (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1252: iso88591 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1252: iso_8859-1 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1252: iso8859-1 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1252: l1 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1252: iso-ir-100 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
||||
[single-byte-decoder.html?TextDecoder]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -21,9 +21,6 @@
|
|||
[Set HTTP URL frame location.protocol to x]
|
||||
expected: FAIL
|
||||
|
||||
[Set HTTP URL frame location.protocol to data]
|
||||
expected: FAIL
|
||||
|
||||
[Set HTTP URL frame location.protocol to gopher]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
||||
expected: TIMEOUT
|
||||
|
@ -16,18 +16,9 @@
|
|||
[picture: source (max-width:500px) broken image, img valid image, resize to narrow]
|
||||
expected: FAIL
|
||||
|
||||
[img (srcset 1 cand) valid image, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
[picture: same URL in source (max-width:500px) and img, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
[img (srcset 1 cand) valid image, resize to narrow]
|
||||
expected: FAIL
|
||||
|
||||
[picture: source (max-width:500px) valid image, img broken image, resize to wide]
|
||||
expected: FAIL
|
||||
|
||||
[picture: same URL in source (max-width:500px) and img, resize to narrow]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[toggleEvent.html]
|
||||
[Calling open twice on 'details' fires only one toggle event]
|
||||
expected: FAIL
|
||||
|
||||
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[aborted-parser.window.html]
|
||||
[document.open() after parser is aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[bailout-exception-vs-return-xml.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[document.open should throw an InvalidStateError with XML document even when the ignore-opens-during-unload counter is greater than 0 (during beforeunload event)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,283 +0,0 @@
|
|||
[quirks.html]
|
||||
[top: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[top: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #01]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[top: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: a]
|
||||
expected: FAIL
|
||||
|
||||
[top: A]
|
||||
expected: FAIL
|
||||
|
||||
[top: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: +a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #01]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: -A]
|
||||
expected: FAIL
|
||||
|
||||
[top: -a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[buffer-full-add-after-full-event.html]
|
||||
expected: ERROR
|
||||
[Test that entry was added to the buffer after a buffer full event]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[buffer-full-set-to-current-buffer.html]
|
||||
expected: ERROR
|
||||
[Test that entries added and event firing happened in the right sequence]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -65,3 +65,15 @@
|
|||
['script 250ms delay in headers does not affect responseStart']
|
||||
expected: FAIL
|
||||
|
||||
['link responseStart uses 1XX (first) response timings']
|
||||
expected: FAIL
|
||||
|
||||
['script responseStart uses 1XX (first) response timings']
|
||||
expected: FAIL
|
||||
|
||||
['iframe responseStart uses 1XX (first) response timings']
|
||||
expected: FAIL
|
||||
|
||||
['xmlhttprequest responseStart uses 1XX (first) response timings']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
47
tests/wpt/metadata/workers/importscripts_mime.any.js.ini
Normal file
47
tests/wpt/metadata/workers/importscripts_mime.any.js.ini
Normal file
|
@ -0,0 +1,47 @@
|
|||
[importscripts_mime.any.worker.html]
|
||||
[importScripts() requires scripty MIME types: aaa/aaa is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: Text/html is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: zzz/zzz is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: application/octet-stream is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: text/potato is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: TEXT/HTML is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: potato/text is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: text/Html is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: TeXt/HtMl is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: text/html is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: application/xml is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[importScripts() requires scripty MIME types: text/plain is blocked.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[importscripts_mime.any.sharedworker.html]
|
||||
[importscripts_mime]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[importscripts_mime.any.serviceworker.html]
|
||||
[importscripts_mime]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[005.html]
|
||||
expected: ERROR
|
||||
[dedicated worker in shared worker in dedicated worker]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[transition_calc_implicit.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Containment Test: Layout containment supress baseline</title>
|
||||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout">
|
||||
<link rel="match" href="reference/contain-layout-baseline-005-ref.html">
|
||||
<meta name=assert content="This test checks that baseline is suppressed for elements with 'contain: layout', so they are treated as having no baseline (thus its baseline is synthetized).">
|
||||
<style>
|
||||
.wrapper {
|
||||
height: 110px;
|
||||
}
|
||||
.wrapper > * {
|
||||
contain: layout;
|
||||
background: cyan;
|
||||
font-size: 20px;
|
||||
}
|
||||
.wrapper > :nth-child(1) {
|
||||
background: magenta;
|
||||
}
|
||||
.inline-block {
|
||||
display: inline-block;
|
||||
}
|
||||
canvas {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
fieldset, details {
|
||||
display: inline-block;
|
||||
width: max-content;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if it has the same output than the reference (all elements are aligned on the bottom edge).</p>
|
||||
<div class="wrapper">
|
||||
<div class="inline-block" style="font-size: 80px;">foo</div>
|
||||
<div class="inline-block">foo</div>
|
||||
<div class="inline-block" style="border: solid thick; padding: 2px;">foo</div>
|
||||
<div style="display: inline-flex;">foo</div>
|
||||
<div style="display: inline-flex; border: solid thick; padding: 2px;">foo</div>
|
||||
<div style="display: inline-grid;">foo</div>
|
||||
<div style="display: inline-grid; border: solid thick; padding: 2px;">foo</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<div class="inline-block">foo</div>
|
||||
<button>foo</button>
|
||||
<select><option>foo</option></select>
|
||||
<select multiple style="height: 40px;"><option>foo</option></select>
|
||||
<textarea style="height: 40px;"></textarea>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<input value="foo"></input>
|
||||
<input type="file"></input>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<table style="display: inline-table;"><tr><td>foo</td></tr></table>
|
||||
<canvas></canvas>
|
||||
<fieldset></fieldset>
|
||||
<fieldset><legend>foo</legend></fieldset>
|
||||
<fieldset><legend>foo</legend>foo</fieldset>
|
||||
<details></details>
|
||||
<details><summary>foo</summary>foo</details> <details open="true"><summary>foo</summary>foo</details>
|
||||
</div>
|
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Containment Test: Reference file</title>
|
||||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<style>
|
||||
.wrapper {
|
||||
height: 110px;
|
||||
}
|
||||
.wrapper > * {
|
||||
vertical-align: bottom;
|
||||
background: cyan;
|
||||
font-size: 20px;
|
||||
}
|
||||
.wrapper > :nth-child(1) {
|
||||
background: magenta;
|
||||
}
|
||||
.inline-block {
|
||||
display: inline-block;
|
||||
}
|
||||
canvas {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
fieldset, details {
|
||||
display: inline-block;
|
||||
width: max-content;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if it has the same output than the reference (all elements are aligned on the bottom edge).</p>
|
||||
<div class="wrapper">
|
||||
<div class="inline-block" style="font-size: 80px;">foo</div>
|
||||
<div class="inline-block">foo</div>
|
||||
<div class="inline-block" style="border: solid thick; padding: 2px;">foo</div>
|
||||
<div style="display: inline-flex;">foo</div>
|
||||
<div style="display: inline-flex; border: solid thick; padding: 2px;">foo</div>
|
||||
<div style="display: inline-grid;">foo</div>
|
||||
<div style="display: inline-grid; border: solid thick; padding: 2px;">foo</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<div class="inline-block">foo</div>
|
||||
<button>foo</button>
|
||||
<select><option>foo</option></select>
|
||||
<select multiple style="height: 40px;"><option>foo</option></select>
|
||||
<textarea style="height: 40px;"></textarea>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<input value="foo"></input>
|
||||
<input type="file"></input>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<canvas></canvas>
|
||||
<table style="display: inline-table;"><tr><td>foo</td></tr></table>
|
||||
<canvas></canvas>
|
||||
<fieldset></fieldset>
|
||||
<fieldset><legend>foo</legend></fieldset>
|
||||
<fieldset><legend>foo</legend>foo</fieldset>
|
||||
<details></details>
|
||||
<details><summary>foo</summary>foo</details> <details open="true"><summary>foo</summary>foo</details>
|
||||
</div>
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: overflow-wrap - break-word (basic)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<link rel="match" href="overflow-wrap-001-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'overflow-wrap' property set 'break-word' breaks the word at an arbitrary point">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: overflow-wrap - break-word and white-space - nowrap</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#white-space">
|
||||
<link rel="match" href="overflow-wrap-002-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test Reference File</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<style>
|
||||
#test {
|
||||
border: 5px solid orange;
|
||||
font: 20px/1 Ahem;
|
||||
width: 20em;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the black box displayed in two rows within the orange box.</p>
|
||||
<p id="test">FillerTextFillerText<br>FillerTextFillerText</p>
|
||||
</body>
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: overflow-wrap - break-word (white space)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="match" href="overflow-wrap-003-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'overflow-wrap' property set 'break-word' breaks line at white space">
|
||||
<style>
|
||||
#test {
|
||||
border: 5px solid orange;
|
||||
font: 20px/1 Ahem;
|
||||
overflow-wrap: break-word;
|
||||
width: 20em;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the black box displayed in two rows within the orange box.</p>
|
||||
<p id="test">FillerTextFillerText FillerTextFillerText</p>
|
||||
</body>
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: overflow-wrap - normal (basic)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<link rel="match" href="overflow-wrap-004-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'overflow-wrap' property set 'normal' overflows container">
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: overflow-wrap - normal (white space)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="match" href="overflow-wrap-003-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'overflow-wrap' property set 'normal' will break line at white space">
|
||||
<style>
|
||||
#test {
|
||||
border: 5px solid orange;
|
||||
font: 20px/1 Ahem;
|
||||
overflow-wrap: normal;
|
||||
width: 20em;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the black box displayed in two rows within the orange box.</p>
|
||||
<p id="test">FillerTextFillerText FillerTextFillerText</p>
|
||||
</body>
|
|
@ -2,10 +2,10 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: overflow-wrap: break-word with fit-content</title>
|
||||
<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<meta name="flags" content="">
|
||||
<link rel="match" href="reference/overflow-wrap-break-word-fit-content-001.html">
|
||||
<meta name="assert" content="The 'overflow-wrap: break-word' must not break surrogate pairs">
|
||||
<meta name="assert" content="The 'overflow-wrap: break-word' must not break non-BMP characters (which might be represented as surrogate pairs internally)">
|
||||
<style>
|
||||
.test {
|
||||
display: inline-block;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: word-wrap - break-word (basic)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrapproperty">
|
||||
<link rel="match" href="overflow-wrap-001-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'word-wrap' property set 'break-word' breaks the word at an arbitrary point">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: word-wrap - break-word and white-space - nowrap</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#white-space">
|
||||
<link rel="match" href="overflow-wrap-002-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-wrap - break-word (white space)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="match" href="overflow-wrap-003-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'word-wrap' property set 'break-word' breaks line at white space">
|
||||
<style>
|
||||
#test {
|
||||
border: 5px solid orange;
|
||||
font: 20px/1 Ahem;
|
||||
word-wrap: break-word;
|
||||
width: 20em;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the black box displayed in two rows within the orange box.</p>
|
||||
<p id="test">FillerTextFillerText FillerTextFillerText</p>
|
||||
</body>
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: word-wrap - normal (basic)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#overflow-wrap-property">
|
||||
<link rel="match" href="overflow-wrap-004-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'word-wrap' property set 'normal' overflows container">
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-wrap - normal (white space)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" title="6.2. Overflow Wrapping: the 'word-wrap'/'overflow-wrap' property" href="http://www.w3.org/TR/css-text-3/#overflow-wrap">
|
||||
<link rel="match" href="overflow-wrap-003-ref.html">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="assert" content="The 'word-wrap' property set 'normal' will break line at white space">
|
||||
<style>
|
||||
#test {
|
||||
border: 5px solid orange;
|
||||
font: 20px/1 Ahem;
|
||||
word-wrap: normal;
|
||||
width: 20em;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the black box displayed in two rows within the orange box.</p>
|
||||
<p id="test">FillerTextFillerText FillerTextFillerText</p>
|
||||
</body>
|
|
@ -22,7 +22,7 @@ div {
|
|||
width: 20px;
|
||||
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
|
||||
<head>
|
||||
<title>CSS Test: word-break - break-all - basic cases</title>
|
||||
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.test span {
|
||||
word-break: break-all;
|
||||
}
|
||||
/* the CSS below is not part of the test */
|
||||
p.test, p.control {
|
||||
border: 1px solid gray;
|
||||
color: blue;
|
||||
font-family: "IPAMincho", "IPAGothic", "IPA明朝", "IPAゴシック";
|
||||
width: 10em;
|
||||
}
|
||||
div.wrapper {
|
||||
display: inline-block;
|
||||
border: 1px solid;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
span.attention {
|
||||
color: red;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Test passes if each pair of upper and lower text in the square box is identical.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>Filler Text Filler Text Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>Filler Text Filler T<br />ext Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字 Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字 Fil<br />ler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字満た<br />すための文字</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span class="attention">* You will need a Japanese font.</span><br />
|
||||
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and reload this page.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -2,5 +2,5 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: overflow-wrap: break-all</title>
|
||||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<p>Test passes if 2 icons are rendered in a row, matching the reference file.</p>
|
||||
<p>Test passes if 2 (different) heart emojis are rendered below each other.</p>
|
||||
<div>💖<br>💔</div>
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
|
||||
<head>
|
||||
<title>CSS Test: word-break - keep-all - basic cases Reftest Reference</title>
|
||||
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
p.control {
|
||||
border: 1px solid gray;
|
||||
color: blue;
|
||||
font-family: "IPAMincho", "IPAGothic", "IPA明朝", "IPAゴシック";
|
||||
width: 10em;
|
||||
}
|
||||
div.wrapper {
|
||||
display: inline-block;
|
||||
border: 1px solid;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
span.attention {
|
||||
color: red;
|
||||
}
|
||||
span.no_wrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Test passes if each pair of upper and lower text in the square box is identical.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<p class="control">
|
||||
<span>Filler Text Filler<br />Text Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>Filler Text Filler<br />Text Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="control">
|
||||
<span>満たすための文字<br />Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字<br />Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="control">
|
||||
<span class="no_wrap">満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span class="no_wrap">満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span class="attention">* You will need a Japanese font.</span><br />
|
||||
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and reload this page.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -12,7 +12,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<div id='instructions'>Test passes if the two orange boxes are the same.</div>
|
||||
<div class="ref" lang="th"><span>แและ แและ<br/>แและ</span></div>
|
||||
<div class="ref" lang="th"><span>แและ แและ<br/>แและ</span></div>
|
||||
<div class="ref" lang="th"><span>และ และ<br/>และ</span></div>
|
||||
<div class="ref" lang="th"><span>และ และ<br/>และ</span></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-break - break-all keyword value</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#word-break">
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="Check that 'word-break' with 'break-all' keyword value implies to words break between any two letters without hyphenate.">
|
||||
<style>
|
||||
div {
|
||||
border: 2px black solid;
|
||||
color: blue;
|
||||
width: 100px;
|
||||
word-break: break-all;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p>Test passes if all the words below are inside the box and break between any two letters without hyphenate.</p>
|
||||
<div>Words in these lines should break between any two letters and be inside the box.</div>
|
||||
</body>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-break - normal keyword value</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#word-break">
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="Check that 'word-break' with 'normal' keyword value implies to words break after word.">
|
||||
<style>
|
||||
div {
|
||||
border: 2px black solid;
|
||||
color: blue;
|
||||
width: 100px;
|
||||
word-break: normal;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p>Test passes if all the words below are within the box and break only after a word.</p>
|
||||
<div>Words in these lines should break after word and be inside the box.</div>
|
||||
</body>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-break - normal keyword value - single word not break</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#word-break">
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="Check that 'word-break' with 'normal' keyword value implies to words break after word, so that a single word won't break.">
|
||||
<style>
|
||||
div {
|
||||
border: 2px black solid;
|
||||
color: blue;
|
||||
width: 100px;
|
||||
word-break: normal;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p>Test passes if there is <strong>no</strong> word break below.</p>
|
||||
<div>ThisWordShouldNotBeBreakedAndMayBeOutOfTheBox</div>
|
||||
</body>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Test: word-break - normal keyword value - Chinese words break</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-text-3/#word-break">
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="Check that 'word-break' with 'normal' keyword value implies to words break after word, including Chinese words.">
|
||||
<style>
|
||||
div {
|
||||
border: 2px black solid;
|
||||
color: blue;
|
||||
width: 100px;
|
||||
word-break: normal;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<p>Test passes if all the Chinese words below are inside the box and break normally.</p>
|
||||
<div>这些文字会自动换行,但不会超出黑色框。</div>
|
||||
</body>
|
||||
|
|
@ -3,7 +3,15 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>word-break: break-all, syllabic cluster</title>
|
||||
<meta name="assert" content="[Exploratory test] word-break: break-all means lines may break between any two typographic letter units. An indic syllable cluster should be wrapped as a unit to the next line.">
|
||||
<meta name="assert" content="word-break: break-all means lines may break between any two typographic letter units. An indic syllable cluster should be wrapped as a unit to the next line.">
|
||||
<meta name="flags" content="should">
|
||||
<!--
|
||||
Marking as "should"
|
||||
because while the spec requires this behavior
|
||||
about typographic letter units,
|
||||
it is handwavy about what constitutes one,
|
||||
and appeals to the UA's knowledge of "the right thing to do" for that language.
|
||||
-->
|
||||
<link rel='help' href='https://drafts.csswg.org/css-text-3/#word-break-property'>
|
||||
<link rel='match' href='reference/word-break-break-all-ref-008.html'>
|
||||
<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
|
||||
|
@ -21,9 +29,5 @@
|
|||
var sentenceWidth = document.getElementById('testspan').offsetWidth
|
||||
document.getElementById('testdiv').style.width = String(sentenceWidth - 5)+'px'
|
||||
</script>
|
||||
<!--
|
||||
Notes:
|
||||
This test is exploratory because indic conjuncts containing more than one consonant are not covered by the extended grapheme cluster definition, and therefore constitute more than one typographic unit, as defined in the CSS spec. Nevertheless, people using indic scripts expect the user agent to keep the orthographic syllable as a single unit.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -1,68 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
|
||||
<head>
|
||||
<title>CSS Test: word-break - break-all - basic cases</title>
|
||||
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
|
||||
<link rel="help" title="CSS Text Level 3: 5.2. Word Breaking Rules: the ‘word-break’ property" href="http://www.w3.org/TR/css-text-3/#word-break" />
|
||||
<link rel="match" href="reference/word-break-break-all-009-ref.xht"/>
|
||||
<meta name="flags" content="font" />
|
||||
<meta name="assert" content="Lines may break between any two grapheme clusters within words." />
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.test span {
|
||||
word-break: break-all;
|
||||
}
|
||||
/* the CSS below is not part of the test */
|
||||
p.test, p.control {
|
||||
border: 1px solid gray;
|
||||
color: blue;
|
||||
font-family: "IPAMincho", "IPAGothic", "IPA明朝", "IPAゴシック";
|
||||
width: 10em;
|
||||
}
|
||||
div.wrapper {
|
||||
display: inline-block;
|
||||
border: 1px solid;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
span.attention {
|
||||
color: red;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Test passes if each pair of upper and lower text in the square box is identical.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>Filler Text Filler Text Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>Filler Text Filler T<br />ext Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字 Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字 Fil<br />ler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字満た<br />すための文字</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span class="attention">* You will need a Japanese font.</span><br />
|
||||
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and reload this page.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -3,7 +3,7 @@
|
|||
<title>CSS Text Test: overflow-wrap: break-all</title>
|
||||
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
|
||||
<meta name="flags" content="ahem">
|
||||
<meta name="flags" content="">
|
||||
<link rel="match" href="reference/word-break-break-all-014-ref.html">
|
||||
<meta name="assert" content="The text is wrapped after the first character and no unicode unit is broken.">
|
||||
<style>
|
||||
|
@ -12,5 +12,5 @@ div {
|
|||
word-break: break-all;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if 2 icons are rendered in a row, matching the reference file.</p>
|
||||
<p>Test passes if 2 (different) heart emojis are rendered below each other.</p>
|
||||
<div>💖💔</div>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
</head>
|
||||
<body>
|
||||
<div id='instructions'>Test passes if the two orange boxes are the same.</div>
|
||||
<div class="test" lang="th"><div id="testdiv"><span id="testspan">แและ แและแและ</span></div></div>
|
||||
<div class="ref" lang="th"><span>แและ แและ<br/>แและ</span></div>
|
||||
<div class="test" lang="th"><div id="testdiv"><span id="testspan">และ และและ</span></div></div>
|
||||
<div class="ref" lang="th"><span>และ และ<br/>และ</span></div>
|
||||
<script>
|
||||
var sentenceWidth = document.getElementById('testspan').offsetWidth
|
||||
document.getElementById('testdiv').style.width = String(sentenceWidth - 5)+'px'
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
|
||||
<head>
|
||||
<title>CSS Test: word-break - keep-all - basic cases</title>
|
||||
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
|
||||
<link rel="help" title="CSS Text Level 3: 5.2. Word Breaking Rules: the ‘word-break’ property" href="http://www.w3.org/TR/css-text-3/#word-break" />
|
||||
<link rel="match" href="reference/word-break-keep-all-004-ref.xht"/>
|
||||
<meta name="flags" content="font" />
|
||||
<meta name="assert" content="Block characters can no longer create implied break points." />
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.test span {
|
||||
word-break: keep-all;
|
||||
}
|
||||
/* the CSS below is not part of the test */
|
||||
p.test, p.control {
|
||||
border: 1px solid gray;
|
||||
color: blue;
|
||||
font-family: "IPAMincho", "IPAGothic", "IPA明朝", "IPAゴシック";
|
||||
width: 10em;
|
||||
}
|
||||
div.wrapper {
|
||||
display: inline-block;
|
||||
border: 1px solid;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
span.attention {
|
||||
color: red;
|
||||
}
|
||||
span.no_wrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Test passes if each pair of upper and lower text in the square box is identical.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>Filler Text Filler Text Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>Filler Text Filler<br />Text Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字 Filler Text</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span>満たすための文字<br />Filler Text</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<p class="test">
|
||||
<span>満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
<p class="control">
|
||||
<span class="no_wrap">満たすための文字満たすための文字</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span class="attention">* You will need a Japanese font.</span><br />
|
||||
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and reload this page.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
|
@ -64,3 +64,17 @@ test(function() {
|
|||
assert_true(new TextDecoder('utf-8', {fatal: true}).fatal, 'The fatal attribute can be set using an option.');
|
||||
|
||||
}, 'The fatal attribute of TextDecoder');
|
||||
|
||||
test(() => {
|
||||
const bytes = new Uint8Array([226, 153, 165]);
|
||||
const decoder = new TextDecoder('utf-8', {fatal: true});
|
||||
assert_equals(decoder.decode(new DataView(bytes.buffer, 0, 3)),
|
||||
'♥',
|
||||
'decode() should decode full sequence');
|
||||
assert_throws(new TypeError,
|
||||
() => decoder.decode(new DataView(bytes.buffer, 0, 2)),
|
||||
'decode() should throw on incomplete sequence');
|
||||
assert_equals(decoder.decode(new DataView(bytes.buffer, 0, 3)),
|
||||
'♥',
|
||||
'decode() should not throw on subsequent call');
|
||||
}, 'Error seen with fatal does not prevent future decodes');
|
||||
|
|
|
@ -4,13 +4,11 @@
|
|||
// Source: Input Events Level 1 (https://cdn.staticaly.com/gh/w3c/input-events/v1/index.html)
|
||||
|
||||
partial interface InputEvent {
|
||||
readonly attribute DOMString inputType;
|
||||
readonly attribute DataTransfer? dataTransfer;
|
||||
sequence<StaticRange> getTargetRanges();
|
||||
};
|
||||
|
||||
partial dictionary InputEventInit {
|
||||
DOMString inputType = "";
|
||||
DataTransfer? dataTransfer = null;
|
||||
sequence<StaticRange> targetRanges = [];
|
||||
};
|
||||
|
|
|
@ -74,7 +74,7 @@ callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame)
|
|||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRSpace : EventTarget {
|
||||
Float32Array? getTransformTo(XRSpace other);
|
||||
XRRigidTransform? getTransformTo(XRSpace other);
|
||||
};
|
||||
|
||||
enum XRReferenceSpaceType {
|
||||
|
@ -125,6 +125,7 @@ enum XREye {
|
|||
readonly attribute XREye eye;
|
||||
readonly attribute Float32Array projectionMatrix;
|
||||
readonly attribute Float32Array viewMatrix;
|
||||
readonly attribute XRRigidTransform transform;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRViewport {
|
||||
|
@ -134,8 +135,25 @@ enum XREye {
|
|||
readonly attribute long height;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window,
|
||||
Constructor(optional DOMPointInit position, optional DOMPointInit orientation)]
|
||||
interface XRRigidTransform {
|
||||
readonly attribute DOMPointReadOnly position;
|
||||
readonly attribute DOMPointReadOnly orientation;
|
||||
readonly attribute Float32Array matrix;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window,
|
||||
Constructor(optional DOMPointInit origin, optional DOMPointInit direction),
|
||||
Constructor(XRRigidTransform transform)]
|
||||
interface XRRay {
|
||||
readonly attribute DOMPointReadOnly origin;
|
||||
readonly attribute DOMPointReadOnly direction;
|
||||
readonly attribute Float32Array matrix;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRViewerPose {
|
||||
readonly attribute Float32Array poseMatrix;
|
||||
readonly attribute XRRigidTransform transform;
|
||||
readonly attribute FrozenArray<XRView> views;
|
||||
};
|
||||
|
||||
|
@ -157,18 +175,11 @@ interface XRInputSource {
|
|||
readonly attribute XRTargetRayMode targetRayMode;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window]
|
||||
interface XRRay {
|
||||
readonly attribute DOMPointReadOnly origin;
|
||||
readonly attribute DOMPointReadOnly direction;
|
||||
readonly attribute Float32Array transformMatrix;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window]
|
||||
interface XRInputPose {
|
||||
readonly attribute boolean emulatedPosition;
|
||||
readonly attribute XRRay targetRay;
|
||||
readonly attribute Float32Array? gripMatrix;
|
||||
readonly attribute XRRigidTransform? gripTransform;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRLayer {};
|
||||
|
@ -243,10 +254,10 @@ dictionary XRInputSourceEventInit : EventInit {
|
|||
[SecureContext, Exposed=Window, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)]
|
||||
interface XRReferenceSpaceEvent : Event {
|
||||
readonly attribute XRReferenceSpace referenceSpace;
|
||||
readonly attribute Float32Array? transformMatrix;
|
||||
readonly attribute XRRigidTransform? transform;
|
||||
};
|
||||
|
||||
dictionary XRReferenceSpaceEventInit : EventInit {
|
||||
required XRReferenceSpace referenceSpace;
|
||||
Float32Array transformMatrix;
|
||||
XRRigidTransform transform;
|
||||
};
|
||||
|
|
|
@ -9,25 +9,23 @@
|
|||
|
||||
// Run captureStream() on different videos, and assert data is flowing.
|
||||
|
||||
var makeAsyncTest = function(filename) {
|
||||
async_test(function(test) {
|
||||
var video = document.createElement('video');
|
||||
function makeAsyncTest(filename) {
|
||||
promise_test(async test => {
|
||||
const video = document.createElement('video');
|
||||
video.src = "/media/" + filename;
|
||||
video.onerror = this.unreached_func("<video> error");
|
||||
video.play();
|
||||
|
||||
var stream = video.captureStream();
|
||||
const stream = video.captureStream();
|
||||
|
||||
await new Promise(r => stream.onaddtrack = r);
|
||||
const recorder = new MediaRecorder(stream);
|
||||
|
||||
// onactive event is marked for deprecation (https://crbug.com/649328)
|
||||
stream.onactive = this.step_func_done(function() {
|
||||
var recorder = new MediaRecorder(stream);
|
||||
recorder.ondataavailable = test.step_func_done(function(event) {
|
||||
assert_true(event.data.size > 0, 'Recorded data size should be > 0');
|
||||
});
|
||||
recorder.start(0);
|
||||
});
|
||||
const {data} = await new Promise(r => recorder.ondataavailable = r);
|
||||
assert_true(data.size > 0, 'Recorded data size should be > 0');
|
||||
}), "<video>.captureStream() and assert data flows.";
|
||||
};
|
||||
}
|
||||
|
||||
generate_tests(makeAsyncTest, [
|
||||
[ "video-only", "test-v-128k-320x240-24fps-8kfr.webm" ],
|
||||
|
|
|
@ -33,6 +33,10 @@ def main(request, response):
|
|||
elif arg.startswith("status:"):
|
||||
code = int(urllib.unquote(arg[7:]))
|
||||
response.writer.write_status(code)
|
||||
if code // 100 == 1:
|
||||
# Terminate informational 1XX responses with an empty line.
|
||||
response.writer.end_headers()
|
||||
else:
|
||||
statusSent = True
|
||||
elif arg == "flush":
|
||||
response.writer.flush()
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="help" href="https://w3c.github.io/resource-timing/#dom-performance-setresourcetimingbuffersize">
|
||||
<title>This test validates that setResourceTimingBufferFull behaves appropriately when set to the current buffer level.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
let eventFired = false;
|
||||
let loadRandomResource = () => {
|
||||
return fetch(window.location.href + "?" + Math.random());
|
||||
}
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(100);
|
||||
});
|
||||
|
||||
let loadResourcesToFillFutureBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// Gather up 3 Resource Entries to kick off the rest of test behavior.
|
||||
let resources = 0;
|
||||
let observer = new PerformanceObserver(function(list) {
|
||||
resources += list.getEntriesByType("resource").length;
|
||||
if (resources !== 3)
|
||||
return;
|
||||
observer.disconnect();
|
||||
resolve();
|
||||
});
|
||||
observer.observe({entryTypes: ["resource"]});
|
||||
for (let i = 0; i < 3; ++i)
|
||||
loadRandomResource();
|
||||
});
|
||||
};
|
||||
|
||||
let setBufferFullEventAndBufferSize = () => {
|
||||
performance.setResourceTimingBufferSize(3);
|
||||
performance.onresourcetimingbufferfull = function() {
|
||||
eventFired = true;
|
||||
performance.clearResourceTimings();
|
||||
};
|
||||
};
|
||||
|
||||
let clearAndAddAnotherEntryToBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
performance.clearResourceTimings();
|
||||
loadRandomResource().then(resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatEntryWasAdded = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let waitForIt = function() {
|
||||
if (performance.getEntriesByType("resource").length) {
|
||||
resolve();
|
||||
} else {
|
||||
reject("After buffer full, entry never added to primary");
|
||||
}
|
||||
}
|
||||
step_timeout(waitForIt, 0);
|
||||
});
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await loadResourcesToFillFutureBuffer();
|
||||
setBufferFullEventAndBufferSize();
|
||||
// Overflow the buffer.
|
||||
await loadRandomResource();
|
||||
await waitForEventToFire();
|
||||
await clearAndAddAnotherEntryToBuffer();
|
||||
await testThatEntryWasAdded();
|
||||
}, "Test that entry was added to the buffer after a buffer full event");
|
||||
</script>
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates that synchronously adding entries in onresourcetimingbufferfull callback results in these entries being properly handled.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
});
|
||||
|
||||
let overflowTheBufferAndWaitForEvent = () => {
|
||||
return new Promise(resolve => {
|
||||
var add_entry = () => {
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size + 1);
|
||||
// The sync entry is added to the secondary buffer, so will be the last one there and eventually dropped.
|
||||
xhrScript("resources/empty.js?xhr");
|
||||
resolve();
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', add_entry);
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js');
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 2,
|
||||
'Both entries should be stored in resource timing buffer since its increases size once it overflows.');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
await overflowTheBufferAndWaitForEvent();
|
||||
// TODO(yoav): Figure out why this task is needed
|
||||
await waitForNextTask();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that entries synchronously added to the buffer during the callback are dropped");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates that synchronously adding entries in onresourcetimingbufferfull callback results in these entries being properly handled.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
});
|
||||
|
||||
let overflowTheBufferAndWaitForEvent = () => {
|
||||
return new Promise(resolve => {
|
||||
var add_entry = () => {
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size + 2);
|
||||
xhrScript("resources/empty.js?xhr");
|
||||
resolve();
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', add_entry);
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js');
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 3,
|
||||
'All entries should be stored in resource timing buffer since its increases size once it overflows.');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
|
||||
assert_true(entries[2].name.includes('empty.js?xhr'), "empty.js?xhr is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
await overflowTheBufferAndWaitForEvent();
|
||||
await waitForNextTask();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that entries synchronously added to the buffer during the callback don't get dropped if the buffer is increased");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates that synchronously adding entries in onresourcetimingbufferfull callback results in these entries being properly handled.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
performance.addEventListener('resourcetimingbufferfull', () => { assert_unreached("resourcetimingbufferfull should not fire")});
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
// These resources overflow the entry buffer, and go into the secondary buffer.
|
||||
xhrScript('resources/empty.js?xhr2');
|
||||
xhrScript('resources/empty.js?xhr3');
|
||||
performance.clearResourceTimings();
|
||||
performance.setResourceTimingBufferSize(3);
|
||||
xhrScript('resources/empty.js?xhr4');
|
||||
window.entriesAfterAddition = performance.getEntriesByType('resource');
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 3,
|
||||
'the last 3 resources should be in the buffer, since the first one was cleared');
|
||||
assert_true(entries[0].name.includes('empty.js?xhr2'), "empty.js?xhr2 is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty.js?xhr3'), "empty.js?xhr3 is in the entries buffer");
|
||||
assert_true(entries[2].name.includes('empty.js?xhr4'), "empty.js?xhr4 is in the entries buffer");
|
||||
assert_equals(entriesAfterAddition.length, 0, "No entries should have been added to the primary buffer before the task to 'fire a buffer full event'.");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
overflowTheBuffer();
|
||||
await waitForNextTask();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates that decreasing the buffer size in onresourcetimingbufferfull callback does not result in extra entries being dropped.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 2;
|
||||
let eventFired = false;
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
let resize = () => {
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size - 1);
|
||||
eventFired = true;
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', resize);
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
// Since the buffer size doesn't increase, it will eventually be dropped.
|
||||
appendScript('resources/empty_script.js', resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 2,
|
||||
'Both entries should be stored in resource timing buffer since it decreased its limit only after it overflowed.');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty.js?second'), "empty.js?second is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithTwoResources('resources/empty.js');
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that decreasing the buffer limit during the callback does not drop entries");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates increasing the buffer size in onresourcetimingbufferfull callback of resource timing.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
let eventFired = false;
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
var increase = function() {
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size * 2);
|
||||
eventFired = true;
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', increase);
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js', resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 2,
|
||||
'Both entries should be stored in resource timing buffer since its increases size once it overflows.');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that increasing the buffer during the callback is enough for entries not to be dropped");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates the buffer doesn't contain more entries than it should inside onresourcetimingbufferfull callback.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
let resource_timing_buffer_size = 2;
|
||||
let eventFired = false;
|
||||
|
||||
setup(() => {
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
var resize = function() {
|
||||
assert_equals(performance.getEntriesByType("resource").length, resource_timing_buffer_size, "resource timing buffer in resourcetimingbufferfull is the size of the limit");
|
||||
++resource_timing_buffer_size;
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size);
|
||||
xhrScript("resources/empty.js?xhr");
|
||||
assert_equals(performance.getEntriesByType("resource").length, resource_timing_buffer_size - 1, "A sync request was not added to the primary buffer just yet, because it is full");
|
||||
++resource_timing_buffer_size;
|
||||
performance.setResourceTimingBufferSize(resource_timing_buffer_size);
|
||||
eventFired = true;
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', resize);
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js', resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, resource_timing_buffer_size,
|
||||
'All 4 entries should be stored in resource timing buffer.');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty.js?second'), "empty.js?second is in the entries buffer");
|
||||
assert_true(entries[2].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
|
||||
assert_true(entries[3].name.includes('empty.js?xhr'), "empty.js?xhr is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithTwoResources('resources/empty.js');
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that entries in the secondary buffer are not exposed during the callback and before they are copied to the primary buffer");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,82 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="help" href="https://w3c.github.io/resource-timing/#dom-performance-setresourcetimingbuffersize">
|
||||
<title>This test validates that setResourceTimingBufferFull behaves appropriately when set to the current buffer level.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
let eventFired = false;
|
||||
|
||||
let loadRandomResource = () => {
|
||||
return fetch(window.location.href + "?" + Math.random());
|
||||
};
|
||||
|
||||
setup(() => {
|
||||
// Get the browser into a consistent state.
|
||||
clearBufferAndSetSize(100);
|
||||
window.result = "";
|
||||
});
|
||||
|
||||
let fillUpTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// Gather up 3 Resource Entries to kick off the rest of test behavior.
|
||||
let resources = 0;
|
||||
let observer = new PerformanceObserver(list => {
|
||||
resources += list.getEntriesByType("resource").length;
|
||||
if (resources !== 3)
|
||||
return;
|
||||
observer.disconnect();
|
||||
resolve();
|
||||
});
|
||||
observer.observe({entryTypes: ["resource"]});
|
||||
for (let i = 0; i < 3; ++i)
|
||||
loadRandomResource();
|
||||
});
|
||||
};
|
||||
|
||||
let setBufferSize = () => {
|
||||
performance.onresourcetimingbufferfull = () => {
|
||||
eventFired = true;
|
||||
window.result += "Event Fired with " + performance.getEntriesByType("resource").length + " entries. ";
|
||||
performance.clearResourceTimings();
|
||||
};
|
||||
window.result += "before setLimit(3). ";
|
||||
performance.setResourceTimingBufferSize(3);
|
||||
window.result += "after setLimit(3). ";
|
||||
};
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
loadRandomResource().then(() => {
|
||||
window.result += "after loading 4th resource. ";
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
let checkResult = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (window.result != "before setLimit(3). after setLimit(3). after loading 4th resource. Event Fired with 3 entries. ") {
|
||||
reject("Non matching value: " + window.result);
|
||||
}
|
||||
let entries = performance.getEntriesByType("resource");
|
||||
if (entries.length != 1) {
|
||||
reject("Number of entries in resource timing buffer is unexpected: " + entries.length);
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBuffer();
|
||||
setBufferSize();
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
await checkResult();
|
||||
}, "Test that entries added and event firing happened in the right sequence");
|
||||
</script>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates the behavior of read and clear operation in onresourcetimingbufferfull callback of resource timing.</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
let global_buffer = [];
|
||||
let eventFired = false;
|
||||
|
||||
setup(() => {
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
let store_and_clear = function() {
|
||||
const entryList = performance.getEntriesByType('resource');
|
||||
entryList.forEach(function (entry) {
|
||||
global_buffer.push(entry);
|
||||
});
|
||||
performance.clearResourceTimings();
|
||||
eventFired = true;
|
||||
}
|
||||
performance.addEventListener('resourcetimingbufferfull', store_and_clear);
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js', resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 1,
|
||||
"Only the last entry should be stored in resource timing buffer since it's cleared once it overflows.");
|
||||
assert_equals(global_buffer.length, 1, '1 resource timing entry should be moved to global buffer.');
|
||||
assert_true(global_buffer[0].name.includes('empty.js'), "empty.js is in the global buffer");
|
||||
assert_true(entries[0].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that entries overflowing the buffer trigger the buffer full event, can be stored, and find themselves in the primary buffer after it's cleared.");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates that synchronously adding entries in onresourcetimingbufferfull callback results in these entries being properly handled.</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 1;
|
||||
|
||||
setup(() => {
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
performance.addEventListener('resourcetimingbufferfull', () => { assert_unreached("resourcetimingbufferfull should not fire"); });
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
// These resources overflow the entry buffer, and go into the secondary buffer.
|
||||
xhrScript('resources/empty.js?xhr2');
|
||||
xhrScript('resources/empty.js?xhr3');
|
||||
performance.setResourceTimingBufferSize(3);
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
let entries = performance.getEntriesByType('resource');
|
||||
assert_equals(entries.length, 3,
|
||||
'All resources should be in the buffer, since its size was increased');
|
||||
assert_true(entries[0].name.includes('empty.js'), "empty.js?xhr2 is in the entries buffer");
|
||||
assert_true(entries[1].name.includes('empty.js?xhr2'), "empty.js?xhr3 is in the entries buffer");
|
||||
assert_true(entries[2].name.includes('empty.js?xhr3'), "empty.js?xhr3 is in the entries buffer");
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithSingleResource("resources/empty.js");
|
||||
overflowTheBuffer();
|
||||
await waitForNextTask();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that overflowing the buffer and immediately increasing its limit does not trigger the resourcetimingbufferfull event");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<title>This test validates the functionality of onresourcetimingbufferfull in resource timing.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/buffer-full-utilities.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const resource_timing_buffer_size = 2;
|
||||
let bufferFullCount = 0;
|
||||
let eventFired = false;
|
||||
setup(() => {
|
||||
clearBufferAndSetSize(resource_timing_buffer_size);
|
||||
performance.addEventListener('resourcetimingbufferfull', e => {
|
||||
assert_equals(e.bubbles, false, "Event bubbles attribute is false");
|
||||
bufferFullCount++;
|
||||
eventFired = true;
|
||||
});
|
||||
});
|
||||
|
||||
let overflowTheBuffer = () => {
|
||||
return new Promise(resolve => {
|
||||
// This resource overflows the entry buffer, and goes into the secondary buffer.
|
||||
appendScript('resources/empty_script.js', resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let testThatBufferContainsTheRightResources = () => {
|
||||
assert_equals(performance.getEntriesByType('resource').length, resource_timing_buffer_size, 'There should only be |bufferSize| resource entries.');
|
||||
assert_equals(bufferFullCount, 1, 'onresourcetimingbufferfull should have been invoked once.');
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
await fillUpTheBufferWithTwoResources('resources/empty.js');
|
||||
await overflowTheBuffer();
|
||||
await waitForEventToFire();
|
||||
testThatBufferContainsTheRightResources();
|
||||
}, "Test that a buffer full event does not bubble and that resourcetimingbufferfull is called only once per overflow");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -227,7 +227,7 @@ window.onload =
|
|||
// Ensure that responseStart only measures the time up to the first few
|
||||
// bytes of the header response. This is tested by writing an HTTP 1.1
|
||||
// status line, followed by a flush, then a pause before the end of the
|
||||
// headers. The tests makes sure that responseStart is not delayed by
|
||||
// headers. The test makes sure that responseStart is not delayed by
|
||||
// this pause.
|
||||
[
|
||||
{ initiator: "iframe", response: "(done)", mime: mimeHtml },
|
||||
|
@ -248,12 +248,13 @@ window.onload =
|
|||
+ "&mime:" + template.mime
|
||||
+ "&send:" + encodeURIComponent(template.response)),
|
||||
function (initiator, entry) {
|
||||
// Test that the delay between 'requestStart' and
|
||||
// 'responseStart' does not include the added delay
|
||||
// post-statusline.
|
||||
assert_less_than(
|
||||
entry.responseStart - entry.requestStart,
|
||||
serverStepDelay,
|
||||
// Test that the delay between 'responseStart' and
|
||||
// 'responseEnd' includes the delay, which implies
|
||||
// that 'responseStart' was measured at the time of
|
||||
// status line receipt.
|
||||
assert_greater_than_equal(
|
||||
entry.responseEnd,
|
||||
entry.responseStart + serverStepDelay,
|
||||
"Delay after HTTP/1.1 status should not affect 'responseStart'.");
|
||||
|
||||
test.done();
|
||||
|
@ -262,6 +263,47 @@ window.onload =
|
|||
});
|
||||
});
|
||||
|
||||
// Test that responseStart uses the timing of 1XX responses by
|
||||
// synthesizing a delay between a 100 and 200 status, and verifying that
|
||||
// this delay is included before responseEnd. If the delay is not
|
||||
// included, this implies that the 200 status line was (incorrectly) used
|
||||
// for responseStart timing, despite the 100 response arriving earlier.
|
||||
//
|
||||
// Source: "In the case where more than one response is available for a
|
||||
// request, due to an Informational 1xx response, the reported
|
||||
// responseStart value is that of the first response to the last
|
||||
// request."
|
||||
[
|
||||
{ initiator: "iframe", response: "(done)", mime: mimeHtml },
|
||||
{ initiator: "xmlhttprequest", response: "(done)", mime: mimeText },
|
||||
{ initiator: "script", response: '"";', mime: mimeScript },
|
||||
{ initiator: "link", response: ".unused{}", mime: mimeCss },
|
||||
]
|
||||
.forEach(function (template) {
|
||||
testCases.push({
|
||||
description: "'" + template.initiator + " responseStart uses 1XX (first) response timings'",
|
||||
test: function (test) {
|
||||
initiateFetch(
|
||||
test,
|
||||
template.initiator,
|
||||
getSyntheticUrl("status:100"
|
||||
+ "&flush"
|
||||
+ "&" + serverStepDelay + "ms"
|
||||
+ "&status:200"
|
||||
+ "&mime:" + template.mime
|
||||
+ "&send:" + encodeURIComponent(template.response)),
|
||||
function (initiator, entry) {
|
||||
assert_greater_than_equal(
|
||||
entry.responseEnd,
|
||||
entry.responseStart + serverStepDelay,
|
||||
"HTTP/1.1 1XX (first) response should determine 'responseStart' timing.");
|
||||
|
||||
test.done();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Function to run the next case in the queue.
|
||||
var currentTestIndex = -1;
|
||||
function runNextCase() {
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<title>This test validates the functionality of onresourcetimingbufferfull in resource timing.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/webperftestharness.js"></script>
|
||||
<script src="resources/webperftestharnessextension.js"></script>
|
||||
</head>
|
||||
<body onload=onload_test()>
|
||||
<script>
|
||||
const context = new PerformanceContext(performance);
|
||||
const bufferSize = 5;
|
||||
context.setResourceTimingBufferSize(bufferSize);
|
||||
let bufferFullCount = 0;
|
||||
function buffer_full_callback() {
|
||||
bufferFullCount++;
|
||||
}
|
||||
context.registerResourceTimingBufferFullCallback(buffer_full_callback);
|
||||
// Scripts appended in JS to ensure setResourceTimingBufferSize is called before.
|
||||
function appendScript(src) {
|
||||
const script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = src;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
appendScript('resources/empty.js');
|
||||
appendScript('resources/empty_script.js');
|
||||
appendScript('resources/resource_timing_test0.js');
|
||||
setup({ explicit_done: true });
|
||||
function onload_test() {
|
||||
test_equals(context.getEntriesByType('resource').length, bufferSize, 'There should only be |bufferSize| resource entries.');
|
||||
test_equals(bufferFullCount, 1, 'onresourcetimingbufferfull should have been invoked once buffer is full.');
|
||||
done();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,56 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head onload>
|
||||
<meta charset="utf-8" />
|
||||
<title>This test validates the behavior of read and clear operation in onresourcetimingbufferfull callback of resource timing.</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/webperftestharness.js"></script>
|
||||
<script src="resources/webperftestharnessextension.js"></script>
|
||||
</head>
|
||||
<body onload=onload_test()>
|
||||
<script>
|
||||
const context = new PerformanceContext(performance);
|
||||
const resource_timing_buffer_size = 1;
|
||||
let global_buffer = [];
|
||||
function store_and_clear() {
|
||||
const entryList = context.getEntriesByType('resource');
|
||||
entryList.forEach(function (entry) {
|
||||
global_buffer.push(entry);
|
||||
});
|
||||
context.clearResourceTimings();
|
||||
}
|
||||
context.registerResourceTimingBufferFullCallback(store_and_clear);
|
||||
context.setResourceTimingBufferSize(resource_timing_buffer_size);
|
||||
// Scripts appended in JS to ensure setResourceTimingBufferSize is called before.
|
||||
function appendScript(src) {
|
||||
const script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = src;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
appendScript('resources/empty.js');
|
||||
appendScript('resources/empty_script.js');
|
||||
appendScript('resources/resource_timing_test0.js');
|
||||
setup({ explicit_done: true });
|
||||
function onload_test() {
|
||||
test_equals(context.getEntriesByType('resource').length, 0, 'No entry should be stored in resource timing buffer since its cleared once an item arrived.');
|
||||
// The entry for empty.js must not be in the global buffer, but all others should be.
|
||||
test_equals(global_buffer.length, 6, '6 resource timing entries should be moved to global buffer.');
|
||||
const index = window.location.pathname.lastIndexOf('resource-timing');
|
||||
const pathname = window.location.pathname.substring(0, index);
|
||||
let expected_entries = {};
|
||||
expected_entries[pathname + 'resources/testharness.js'] = 'script';
|
||||
expected_entries[pathname + 'resources/testharnessreport.js'] = 'script';
|
||||
expected_entries[pathname + 'resource-timing/resources/webperftestharness.js'] = 'script';
|
||||
expected_entries[pathname + 'resource-timing/resources/webperftestharnessextension.js'] = 'script';
|
||||
expected_entries[pathname + 'resource-timing/resources/empty_script.js'] = 'script';
|
||||
expected_entries[pathname + 'resource-timing/resources/resource_timing_test0.js'] = 'script';
|
||||
test_resource_entries(global_buffer, expected_entries);
|
||||
done();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,58 @@
|
|||
let appendScript = (src, resolve) => {
|
||||
const script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = src;
|
||||
script.onload = resolve;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
|
||||
let xhrScript = src => {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", src, false);
|
||||
xhr.send(null);
|
||||
}
|
||||
|
||||
let waitForNextTask = () => {
|
||||
return new Promise(resolve => {
|
||||
step_timeout(resolve, 0);
|
||||
});
|
||||
};
|
||||
|
||||
let waitForEventToFire = () => {
|
||||
return new Promise(resolve => {
|
||||
let waitForIt = function() {
|
||||
if (eventFired) {
|
||||
eventFired = false;
|
||||
resolve();
|
||||
} else {
|
||||
step_timeout(waitForIt, 0);
|
||||
}
|
||||
}
|
||||
step_timeout(waitForIt, 0);
|
||||
});
|
||||
};
|
||||
|
||||
let clearBufferAndSetSize = size => {
|
||||
performance.clearResourceTimings();
|
||||
performance.setResourceTimingBufferSize(size);
|
||||
}
|
||||
|
||||
let fillUpTheBufferWithSingleResource = src => {
|
||||
return new Promise(resolve => {
|
||||
// This resource gets buffered in the resource timing entry buffer.
|
||||
appendScript(src, resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let loadResource = src => {
|
||||
return new Promise(resolve => {
|
||||
appendScript(src, resolve);
|
||||
});
|
||||
};
|
||||
|
||||
let fillUpTheBufferWithTwoResources = async src => {
|
||||
// These resources get buffered in the resource timing entry buffer.
|
||||
await loadResource(src);
|
||||
await loadResource(src + '?second');
|
||||
};
|
||||
|
|
@ -44,19 +44,13 @@ promise_test(function(test) {
|
|||
assert_greater_than(entry.startTime, 0);
|
||||
assert_greater_than(entry.responseEnd, entry.startTime);
|
||||
}
|
||||
return Promise.race([
|
||||
new Promise(function(resolve) {
|
||||
return new Promise(function(resolve) {
|
||||
performance.onresourcetimingbufferfull = _ => {
|
||||
resolve('bufferfull');
|
||||
}
|
||||
performance.setResourceTimingBufferSize(expectedResources.length);
|
||||
}),
|
||||
|
||||
// Race the bufferfull event against another fetch. We should get the
|
||||
// event before this completes. This allows us to detect a failure
|
||||
// to dispatch the event without timing out the entire test.
|
||||
fetch('dummy.txt').then(resp => resp.text())
|
||||
]);
|
||||
fetch('dummy.txt');
|
||||
});
|
||||
})
|
||||
.then(function(result) {
|
||||
assert_equals(result, 'bufferfull');
|
||||
|
|
|
@ -1 +1 @@
|
|||
requests==2.20.1
|
||||
requests==2.21.0
|
||||
|
|
|
@ -496,8 +496,12 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
|||
|
||||
affected_revish = kwargs.pop("affected", None)
|
||||
if affected_revish is not None:
|
||||
# TODO: Consolidate with `./wpt tests-affected --ignore-rules`:
|
||||
# https://github.com/web-platform-tests/wpt/issues/14560
|
||||
files_changed, _ = testfiles.files_changed(
|
||||
affected_revish, include_uncommitted=True, include_new=True)
|
||||
affected_revish,
|
||||
ignore_rules=["resources/testharness*"],
|
||||
include_uncommitted=True, include_new=True)
|
||||
# TODO: Perhaps use wptrunner.testloader.ManifestLoader here
|
||||
# and remove the manifest-related code from testfiles.
|
||||
# https://github.com/web-platform-tests/wpt/issues/14421
|
||||
|
|
|
@ -309,6 +309,8 @@ def get_parser():
|
|||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("revish", default=None, help="Commits to consider. Defaults to the "
|
||||
"commits on the current branch", nargs="?")
|
||||
# TODO: Consolidate with `./wpt run --affected`:
|
||||
# https://github.com/web-platform-tests/wpt/issues/14560
|
||||
parser.add_argument("--ignore-rules", nargs="*", type=set,
|
||||
default=set(["resources/testharness*"]),
|
||||
help="Rules for paths to exclude from lists of changes. Rules are paths "
|
||||
|
|
|
@ -2,16 +2,12 @@ from .base import Browser, ExecutorBrowser, require_arg
|
|||
from .base import get_timeout_multiplier # noqa: F401
|
||||
from ..webdriver_server import InternetExplorerDriverServer
|
||||
from ..executors import executor_kwargs as base_executor_kwargs
|
||||
from ..executors.executorselenium import (SeleniumTestharnessExecutor, # noqa: F401
|
||||
SeleniumRefTestExecutor) # noqa: F401
|
||||
from ..executors.executorinternetexplorer import InternetExplorerDriverWdspecExecutor # noqa: F401
|
||||
|
||||
__wptrunner__ = {"product": "ie",
|
||||
"check_args": "check_args",
|
||||
"browser": "InternetExplorerBrowser",
|
||||
"executor": {"testharness": "SeleniumTestharnessExecutor",
|
||||
"reftest": "SeleniumRefTestExecutor",
|
||||
"wdspec": "InternetExplorerDriverWdspecExecutor"},
|
||||
"executor": {"wdspec": "InternetExplorerDriverWdspecExecutor"},
|
||||
"browser_kwargs": "browser_kwargs",
|
||||
"executor_kwargs": "executor_kwargs",
|
||||
"env_extras": "env_extras",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue