Update web-platform-tests to revision 0cde5f6b37c9b3e3f9153eb1b172680e9aea9bf9

This commit is contained in:
WPT Sync Bot 2019-04-04 22:11:37 -04:00
parent f142b1d1c7
commit 2575230dce
60 changed files with 924 additions and 268 deletions

View file

@ -8617,6 +8617,162 @@
{}
]
],
"css/css-text-decor/text-decoration-001-manual.html": [
[
"css/css-text-decor/text-decoration-001-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-002-manual.html": [
[
"css/css-text-decor/text-decoration-002-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-003-manual.html": [
[
"css/css-text-decor/text-decoration-003-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-004-manual.html": [
[
"css/css-text-decor/text-decoration-004-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-040-manual.html": [
[
"css/css-text-decor/text-decoration-040-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-040a-manual.html": [
[
"css/css-text-decor/text-decoration-040a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-041-manual.html": [
[
"css/css-text-decor/text-decoration-041-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-044-manual.html": [
[
"css/css-text-decor/text-decoration-044-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-045-manual.html": [
[
"css/css-text-decor/text-decoration-045-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-046a-manual.html": [
[
"css/css-text-decor/text-decoration-046a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-048-manual.html": [
[
"css/css-text-decor/text-decoration-048-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-048a-manual.html": [
[
"css/css-text-decor/text-decoration-048a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-049-manual.html": [
[
"css/css-text-decor/text-decoration-049-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-082-manual.html": [
[
"css/css-text-decor/text-decoration-082-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-085-manual.html": [
[
"css/css-text-decor/text-decoration-085-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-090-manual.html": [
[
"css/css-text-decor/text-decoration-090-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-090a-manual.html": [
[
"css/css-text-decor/text-decoration-090a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-091-manual.html": [
[
"css/css-text-decor/text-decoration-091-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-091a-manual.html": [
[
"css/css-text-decor/text-decoration-091a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-092-manual.html": [
[
"css/css-text-decor/text-decoration-092-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-092a-manual.html": [
[
"css/css-text-decor/text-decoration-092a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-095a-manual.html": [
[
"css/css-text-decor/text-decoration-095a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-096-manual.html": [
[
"css/css-text-decor/text-decoration-096-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-096a-manual.html": [
[
"css/css-text-decor/text-decoration-096a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-097-manual.html": [
[
"css/css-text-decor/text-decoration-097-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-097a-manual.html": [
[
"css/css-text-decor/text-decoration-097a-manual.html",
{}
]
],
"css/css-text-decor/text-decoration-line-014.xht": [
[
"css/css-text-decor/text-decoration-line-014.xht",
@ -13681,6 +13837,12 @@
{}
]
],
"payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html": [
[
"payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html",
{}
]
],
"payment-request/payment-response/payerdetailschange-updateWith-manual.https.html": [
[
"payment-request/payment-response/payerdetailschange-updateWith-manual.https.html",
@ -19075,6 +19237,12 @@
{}
]
],
"web-nfc/NFCWriter_push_signal-manual.https.html": [
[
"web-nfc/NFCWriter_push_signal-manual.https.html",
{}
]
],
"web-nfc/nfc_hw_disabled-manual.https.html": [
[
"web-nfc/nfc_hw_disabled-manual.https.html",
@ -197195,6 +197363,18 @@
{}
]
],
"svg/extensibility/foreignObject/compositing-backface-visibility.html": [
[
"svg/extensibility/foreignObject/compositing-backface-visibility.html",
[
[
"/svg/extensibility/foreignObject/compositing-backface-visibility-ref.html",
"=="
]
],
{}
]
],
"svg/extensibility/foreignObject/foreign-object-margin-collapsing.html": [
[
"svg/extensibility/foreignObject/foreign-object-margin-collapsing.html",
@ -317462,6 +317642,11 @@
{}
]
],
"svg/extensibility/foreignObject/compositing-backface-visibility-ref.html": [
[
{}
]
],
"svg/extensibility/foreignObject/foreign-object-paints-before-rect-ref.html": [
[
{}
@ -370137,6 +370322,18 @@
}
]
],
"element-timing/background-image-multiple-elements.html": [
[
"element-timing/background-image-multiple-elements.html",
{}
]
],
"element-timing/background-image-stretched.html": [
[
"element-timing/background-image-stretched.html",
{}
]
],
"element-timing/buffer-before-onload.html": [
[
"element-timing/buffer-before-onload.html",
@ -370203,6 +370400,18 @@
{}
]
],
"element-timing/multiple-background-images.html": [
[
"element-timing/multiple-background-images.html",
{}
]
],
"element-timing/observe-background-image.html": [
[
"element-timing/observe-background-image.html",
{}
]
],
"element-timing/observe-child-element.html": [
[
"element-timing/observe-child-element.html",
@ -415662,6 +415871,7 @@
[
"portals/portals-post-message.sub.html",
{
"testdriver": true,
"timeout": "long"
}
]
@ -471125,162 +471335,6 @@
{}
]
],
"css/css-text-decor/text-decoration-001.html": [
[
"css/css-text-decor/text-decoration-001.html",
{}
]
],
"css/css-text-decor/text-decoration-002.html": [
[
"css/css-text-decor/text-decoration-002.html",
{}
]
],
"css/css-text-decor/text-decoration-003.html": [
[
"css/css-text-decor/text-decoration-003.html",
{}
]
],
"css/css-text-decor/text-decoration-004.html": [
[
"css/css-text-decor/text-decoration-004.html",
{}
]
],
"css/css-text-decor/text-decoration-040.html": [
[
"css/css-text-decor/text-decoration-040.html",
{}
]
],
"css/css-text-decor/text-decoration-040a.html": [
[
"css/css-text-decor/text-decoration-040a.html",
{}
]
],
"css/css-text-decor/text-decoration-041.html": [
[
"css/css-text-decor/text-decoration-041.html",
{}
]
],
"css/css-text-decor/text-decoration-044.html": [
[
"css/css-text-decor/text-decoration-044.html",
{}
]
],
"css/css-text-decor/text-decoration-045.html": [
[
"css/css-text-decor/text-decoration-045.html",
{}
]
],
"css/css-text-decor/text-decoration-046a.html": [
[
"css/css-text-decor/text-decoration-046a.html",
{}
]
],
"css/css-text-decor/text-decoration-048.html": [
[
"css/css-text-decor/text-decoration-048.html",
{}
]
],
"css/css-text-decor/text-decoration-048a.html": [
[
"css/css-text-decor/text-decoration-048a.html",
{}
]
],
"css/css-text-decor/text-decoration-049.html": [
[
"css/css-text-decor/text-decoration-049.html",
{}
]
],
"css/css-text-decor/text-decoration-082.html": [
[
"css/css-text-decor/text-decoration-082.html",
{}
]
],
"css/css-text-decor/text-decoration-085.html": [
[
"css/css-text-decor/text-decoration-085.html",
{}
]
],
"css/css-text-decor/text-decoration-090.html": [
[
"css/css-text-decor/text-decoration-090.html",
{}
]
],
"css/css-text-decor/text-decoration-090a.html": [
[
"css/css-text-decor/text-decoration-090a.html",
{}
]
],
"css/css-text-decor/text-decoration-091.html": [
[
"css/css-text-decor/text-decoration-091.html",
{}
]
],
"css/css-text-decor/text-decoration-091a.html": [
[
"css/css-text-decor/text-decoration-091a.html",
{}
]
],
"css/css-text-decor/text-decoration-092.html": [
[
"css/css-text-decor/text-decoration-092.html",
{}
]
],
"css/css-text-decor/text-decoration-092a.html": [
[
"css/css-text-decor/text-decoration-092a.html",
{}
]
],
"css/css-text-decor/text-decoration-095a.html": [
[
"css/css-text-decor/text-decoration-095a.html",
{}
]
],
"css/css-text-decor/text-decoration-096.html": [
[
"css/css-text-decor/text-decoration-096.html",
{}
]
],
"css/css-text-decor/text-decoration-096a.html": [
[
"css/css-text-decor/text-decoration-096a.html",
{}
]
],
"css/css-text-decor/text-decoration-097.html": [
[
"css/css-text-decor/text-decoration-097.html",
{}
]
],
"css/css-text-decor/text-decoration-097a.html": [
[
"css/css-text-decor/text-decoration-097a.html",
{}
]
],
"css/css-text-decor/text-decoration-visibility-001.xht": [
[
"css/css-text-decor/text-decoration-visibility-001.xht",
@ -602208,109 +602262,109 @@
"6bf79ba4527f99af740bdeca945449e8f9ed7a57",
"support"
],
"css/css-text-decor/text-decoration-001.html": [
"css/css-text-decor/text-decoration-001-manual.html": [
"9b620132697dfbf68f0d10575afaf7d902e649da",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-002.html": [
"css/css-text-decor/text-decoration-002-manual.html": [
"71c815b34e0eb43d38456ac3ec67cf3a7f96308c",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-003.html": [
"css/css-text-decor/text-decoration-003-manual.html": [
"ee987654bf1eab14c45393314adcc6425713c154",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-004.html": [
"css/css-text-decor/text-decoration-004-manual.html": [
"0419d85f9625f07d439b57ebc72a422ced6a5099",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-040.html": [
"css/css-text-decor/text-decoration-040-manual.html": [
"63b63759197870f9a0616b853a4dd58e282876b1",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-040a.html": [
"css/css-text-decor/text-decoration-040a-manual.html": [
"90963c8db6ca41c9c962ee0f38d6153cc9e7fc2b",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-041.html": [
"css/css-text-decor/text-decoration-041-manual.html": [
"32e0598ab4a9268fd4c2f4b48dec7bbc4632ab0b",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-044.html": [
"css/css-text-decor/text-decoration-044-manual.html": [
"63732387f27a9bd32ee42fcf3400f4b8a22c642c",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-045.html": [
"css/css-text-decor/text-decoration-045-manual.html": [
"e8a6904071419c0b049ed5b5aad83401e236957d",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-046a.html": [
"css/css-text-decor/text-decoration-046a-manual.html": [
"a3d5e717e3f882ba2ce9a4bf148fd62856c73b76",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-048.html": [
"css/css-text-decor/text-decoration-048-manual.html": [
"c9070bedb3b3450e7d2c0b2b0a76dfbdfdb8e4f2",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-048a.html": [
"css/css-text-decor/text-decoration-048a-manual.html": [
"7d598af677e9f5be323886842560f9c04d79da8a",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-049.html": [
"css/css-text-decor/text-decoration-049-manual.html": [
"b8fb70dcd79a50ae2a49bf705688695f66ee2a88",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-082.html": [
"css/css-text-decor/text-decoration-082-manual.html": [
"a1d5497ad2ac01d8df295b8203a9769780317f27",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-085.html": [
"css/css-text-decor/text-decoration-085-manual.html": [
"30522cf331fecc3eb17a43a53b1bc9aa5d63ae1d",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-090.html": [
"css/css-text-decor/text-decoration-090-manual.html": [
"580fb98c87961670cd2c23f3d01be40477cd06db",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-090a.html": [
"css/css-text-decor/text-decoration-090a-manual.html": [
"d9ac430079b621104da62a11fca6b0bd3d6cff57",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-091.html": [
"css/css-text-decor/text-decoration-091-manual.html": [
"2097792f1c317daaad0f05281a3b547d3555cd3d",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-091a.html": [
"css/css-text-decor/text-decoration-091a-manual.html": [
"ee2464c5263e1cd7eb1389d4b052bc08633a78e8",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-092.html": [
"css/css-text-decor/text-decoration-092-manual.html": [
"5ba99f0de3b463eef56f477d5e2cfffd06f16786",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-092a.html": [
"css/css-text-decor/text-decoration-092a-manual.html": [
"5f034b3e729955dbc4c0be3c1787745423f224ff",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-095a.html": [
"css/css-text-decor/text-decoration-095a-manual.html": [
"dc4ae513d125b9cb065875ecd2b5155ff2169fe2",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-096.html": [
"css/css-text-decor/text-decoration-096-manual.html": [
"b7c0dc4878b365e9009026c4f537a4312bab761c",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-096a.html": [
"css/css-text-decor/text-decoration-096a-manual.html": [
"a1f13e57cafd437805633587bdcc1190c18fb26a",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-097.html": [
"css/css-text-decor/text-decoration-097-manual.html": [
"4d352e4da17d515aa4426ac286ca663bd8a13834",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-097a.html": [
"css/css-text-decor/text-decoration-097a-manual.html": [
"64b3249dd6be2cf4364c3ebe62ff256a0373a29d",
"visual"
"manual"
],
"css/css-text-decor/text-decoration-color-recalc.html": [
"b7cde934fcfd3c73ac351f7b9566adadad542294",
@ -612445,47 +612499,47 @@
"support"
],
"css/css-transforms/transform3d-scale-001-notref.html": [
"c2bde5a8e7124b782bee4f5b33c704222ae7e205",
"ab5ae4cb4028aa428a79fff89641537bf47b7309",
"support"
],
"css/css-transforms/transform3d-scale-001-ref.html": [
"213d81bed75b68a36f7377404a4c681940036d76",
"05e7b31d27bd0569d75c832a707462ba1e024204",
"support"
],
"css/css-transforms/transform3d-scale-001.html": [
"36fe800feeddf04525cad74d290fdb1d2b677ae9",
"d6287818bf7369a95e5858175e02218e22ac18d1",
"reftest"
],
"css/css-transforms/transform3d-scale-002.html": [
"723dfc8a949108902db9d1b5eff57ef37a7516f9",
"a677aaedd226b06db1a378fe9ffa3b5d81acb114",
"reftest"
],
"css/css-transforms/transform3d-scale-003.html": [
"0bb647b80564c35ee6c4e667c4b81282350405a7",
"e613ba520ea638ec880fffb73d4659fbafbcf636",
"reftest"
],
"css/css-transforms/transform3d-scale-004.html": [
"f5a161c06f0337d325ec6e42665786c4fa33658c",
"ed8247cc5bdc8902509a6f8d415b5efc846384fb",
"reftest"
],
"css/css-transforms/transform3d-scale-005-ref.html": [
"201300cfda0e69515300c220c4b427613d4cbd92",
"270e413ddb21c37ce11c1f7715b2120c2e78bfdc",
"support"
],
"css/css-transforms/transform3d-scale-005.html": [
"fda6f7f5ca1335859ef080f14571768136e6ddba",
"524323c1c615ccf082ec82f5c4781c1ed3743aa1",
"reftest"
],
"css/css-transforms/transform3d-scale-006.html": [
"b821776ee49b21b65cecb149f8d15247425941b0",
"b3dd5378f4bed2dcfe577ae489fdf689cf6dcfeb",
"reftest"
],
"css/css-transforms/transform3d-scale-007-ref.html": [
"f476aa9c77b4e5b19cf29a35d5a9c916fb8ad32a",
"b719044a5695c1f500144a3423d10a9fa8ba2c3d",
"support"
],
"css/css-transforms/transform3d-scale-007.html": [
"e9c199700a81d515739ff8bb4df03ffcc0e15c40",
"88261b7ad65dee6a2235c8df9bef43ad7c430dee",
"reftest"
],
"css/css-transforms/transform3d-sorting-001.html": [
@ -642620,6 +642674,14 @@
"7cd0be939f16e8aea7b00ff2b13a06102e26cc4d",
"testharness"
],
"element-timing/background-image-multiple-elements.html": [
"669f94d6b0189ba387cf90c1b49c7d4120319673",
"testharness"
],
"element-timing/background-image-stretched.html": [
"8f93b43524f7b3d051af90d9807a3f30ad299ae7",
"testharness"
],
"element-timing/buffer-before-onload.html": [
"805777f29c297a22497d3e4f07b6ea462b0a0b7c",
"testharness"
@ -642664,6 +642726,14 @@
"dbcad248e3aea0d148416275adeec93e20d8c267",
"testharness"
],
"element-timing/multiple-background-images.html": [
"ca349fec45f6ae4bde53dbe03de673d19d295794",
"testharness"
],
"element-timing/observe-background-image.html": [
"0669b4c4d83b6c2e81de94beb7db15c6ca775d1b",
"testharness"
],
"element-timing/observe-child-element.html": [
"9166a4b0e6d129c356d74da2b81a6e02c08105b6",
"testharness"
@ -659109,7 +659179,7 @@
"testharness"
],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/loop-from-ended.tentative.html": [
"03a9b5d454473872f0d321b74524518438372fac",
"d099a8a0f8d3f41f08dd825fd42b1b1947e15956",
"testharness"
],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html": [
@ -669333,7 +669403,7 @@
"support"
],
"interfaces/webrtc-stats.idl": [
"b6b30e88268d27dd6e9a902768521fcf74c3a514",
"0992b341e1fe3cede699c09eeb5838bd1e7a3999",
"support"
],
"interfaces/webrtc.idl": [
@ -681864,6 +681934,10 @@
"85a44a819cd8555e032520f887cf89508bdb98b6",
"manual"
],
"payment-request/payment-response/payerdetailschange-updateWith-immediate-manual.https.html": [
"912ceaa6086fd616908115d4f17117e76867d830",
"manual"
],
"payment-request/payment-response/payerdetailschange-updateWith-manual.https.html": [
"30e27088e7de1384489fcf9aa72391d353e34b36",
"manual"
@ -682641,7 +682715,7 @@
"testharness"
],
"portals/portals-post-message.sub.html": [
"9fc6f6192cfa114053ae3ae6976e1c4491f299ad",
"fe58e25180ecec148e8f5bee4d79eaa366268476",
"testharness"
],
"portals/portals-rendering.html": [
@ -682717,7 +682791,7 @@
"support"
],
"portals/resources/portal-post-message-cross-origin-portal.sub.html": [
"4aca1bde6983027fc363f318f22cfaaa156dee59",
"577c10ac666536eed4ed4a62fdc4924f06a47b6f",
"support"
],
"portals/resources/portal-post-message-during-activate-window.html": [
@ -682725,7 +682799,7 @@
"support"
],
"portals/resources/portal-post-message-portal.html": [
"c657894f8ac4ec83e6a3ed3fd66dbc3be3b0c985",
"539048c13f5e8c21f7bda5e7d7e1b4772efb5ded",
"support"
],
"portals/resources/portals-adopt-predecessor-portal.html": [
@ -699708,6 +699782,14 @@
"120941444a4898197d6b6001f9908a6cd48b62ba",
"support"
],
"svg/extensibility/foreignObject/compositing-backface-visibility-ref.html": [
"b0f504974a552545053a1a5d7c1e55eefa527fdb",
"support"
],
"svg/extensibility/foreignObject/compositing-backface-visibility.html": [
"1551e25f8f9675dd5cde0dc656635656f5d33023",
"reftest"
],
"svg/extensibility/foreignObject/containing-block.html": [
"da0728c96b5d0eb81435efad329bdcc3ee4dfb26",
"testharness"
@ -712697,9 +712779,13 @@
"testharness"
],
"web-nfc/NFCWriter_push.https.html": [
"f5a0a84273681f7c2af402061fd3e6fb456cac76",
"d53e5023a1b6aa6133a6f878888d5450c252678d",
"testharness"
],
"web-nfc/NFCWriter_push_signal-manual.https.html": [
"f45d0bbbd49821d0de8953884f5dbb908e904f83",
"manual"
],
"web-nfc/idlharness.https.window.js": [
"ab0d6cd191a5b576674c0c038087ef17ece4cdfd",
"testharness"

View file

@ -1,5 +1,5 @@
[elementsFromPoint-iframes.html]
expected: TIMEOUT
expected: CRASH
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL

View file

@ -22,7 +22,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
expected: TIMEOUT
[fetch(): separate response Content-Type: text/html;x=" text/plain]
expected: NOTRUN
@ -163,7 +163,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" " text/plain]
expected: FAIL
expected: TIMEOUT
[Request: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
expected: NOTRUN
@ -172,7 +172,7 @@
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
expected: TIMEOUT
[Response: combined response Content-Type: text/html;x=" text/plain]
expected: NOTRUN
@ -202,7 +202,7 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" " text/plain]
expected: FAIL
expected: TIMEOUT
[fetch(): separate response Content-Type: text/plain */*;charset=gbk]
expected: NOTRUN
@ -286,7 +286,7 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: FAIL
expected: TIMEOUT
[fetch(): combined response Content-Type: text/html;" " text/plain]
expected: NOTRUN
@ -310,11 +310,32 @@
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
expected: TIMEOUT
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: TIMEOUT
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: TIMEOUT
[<iframe>: combined response Content-Type: text/html */*]
expected: TIMEOUT
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: TIMEOUT
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: TIMEOUT
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: TIMEOUT
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: TIMEOUT
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Test looping edge case to verify http://crbug.com/364442.]
expected: FAIL
[play() with loop set to true after playback ended]
expected: FAIL

View file

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

View file

@ -1,7 +0,0 @@
[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

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

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

View file

@ -6,7 +6,8 @@
</head>
<body>
<div style="width: 100px; height: 100px">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -7,7 +7,8 @@
</head>
<body>
<div style="transform: scaleX(2) scaleY(2); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -14,7 +14,8 @@
</head>
<body>
<div style="transform: scale3D(2,2,2); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -15,7 +15,8 @@
</head>
<body>
<div style="transform: rotatex(90deg) scale3D(2,1,2) rotatex(-90deg); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -14,7 +14,8 @@
</head>
<body>
<div style="transform: scaleX(2) scaleY(2) scaleZ(2); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -13,7 +13,8 @@
<body>
<p>Nothing should appear except this sentence.</p>
<div style="transform: scale3d(2, 2, 0); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -7,7 +7,8 @@
</head>
<body>
<div style="transform: scaleY(2); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -14,7 +14,8 @@
</head>
<body>
<div style="transform: rotatex(90deg) scale3D(1,1,2) rotatex(-90deg); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -14,7 +14,8 @@
</head>
<body>
<div style="transform: rotatex(90deg) scaleZ(2) rotatex(-90deg); transform-origin: 0 0; width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -7,7 +7,8 @@
</head>
<body>
<div style="transform: scaleY(-1); width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -12,7 +12,8 @@
</head>
<body>
<div style="transform: rotatex(180deg) scaleZ(-1); width: 100px; height: 100px;">
Test Text
<div style="background: blue; width: 50px; height: 50px;"></div>
<div style="background: lime; width: 50px; height: 50px; margin-left: 50px;"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,74 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: background image affecting multiple elements</title>
<body>
<style>
body {
margin: 0;
}
.my_div {
background-image: url('resources/square100.png');
}
#div1 {
width: 100px;
height: 100px;
}
#div2 {
width: 200px;
height: 100px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
async_test(function (t) {
let beforeRender = performance.now();
let numObservedElements = 0;
let observedDiv1 = false;
let observedDiv2 = false;
const index = window.location.href.lastIndexOf('/');
const pathname = window.location.href.substring(0, index) +
'/resources/square100.png';
const observer = new PerformanceObserver(
t.step_func(function(entryList) {
entryList.getEntries().forEach(entry => {
numObservedElements++;
if (entry.id == 'div1') {
observedDiv1 = true;
checkElement(entry, pathname, 'et1', 'div1', beforeRender);
// Div is in the top left corner.
checkRect(entry, [0, 100, 0, 100]);
checkNaturalSize(entry, 100, 100);
}
else if (entry.id == 'div2') {
observedDiv2 = true;
checkElement(entry, pathname, 'et2', 'div2', beforeRender);
// Div is below div1, on the left.
checkRect(entry, [0, 200, 100, 200]);
checkNaturalSize(entry, 100, 100);
}
else {
assert_unreached("Should not observe other elements!");
}
if (numObservedElements === 2) {
assert_true(observedDiv1);
assert_true(observedDiv2);
t.done();
}
});
})
);
observer.observe({entryTypes: ['element']});
}, 'Background image affecting various elements is observed.');
</script>
<div id="div1" class="my_div" elementtiming="et1">
<img width=50 height=50 src='resources/circle.svg'/>
</div>
<div width=200 height=100 id="div2" class="my_div" elementtiming="et2">
Sample text inside div.
</div>
<div id="div3"/>
I am a div that should not be observed!
</div>
</body>

View file

@ -0,0 +1,39 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe larger element with stretched background image</title>
<body>
<style>
body {
margin: 0;
}
#target {
width: 200px;
height: 150px;
background-image: url('resources/square100.png');
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
let beforeRender = performance.now();
async_test(function (t) {
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
const index = window.location.href.lastIndexOf('/');
const pathname = window.location.href.substring(0, index) +
'/resources/square100.png';
checkElement(entry, pathname, 'my_div', 'target', beforeRender);
// The background image extends to occupy to full size of the div.
checkRect(entry, [0, 200, 0, 150]);
// The natural size of the square remains unchanged.
checkNaturalSize(entry, 100, 100);
})
);
observer.observe({entryTypes: ['element']});
}, 'Element with background image shows correct image size.');
</script>
<div id='target' elementtiming='my_div'></div>
</body>

View file

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe element with multiple background images</title>
<body>
<style>
body {
margin: 0;
}
#target {
width: 200px;
height: 200px;
background-image: url('resources/circle.svg'), url('resources/square100.png');
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
let beforeRender = performance.now();
async_test(function (t) {
let numObservedElements = 0;
let observedCircle = false;
let observedSquare = false;
const index = window.location.href.lastIndexOf('/');
const pathname = window.location.href.substring(0, index) + '/resources/';
const observer = new PerformanceObserver(
t.step_func(entryList => {
entryList.getEntries().forEach(entry => {
numObservedElements++;
if (entry.name.endsWith('square100.png')) {
observedSquare = true;
checkElement(entry, pathname + 'square100.png', 'multi', 'target', beforeRender);
checkRect(entry, [0, 200, 0, 200]);
checkNaturalSize(entry, 100, 100);
}
else if (entry.name.endsWith('circle.svg')) {
observedCircle = true;
checkElement(entry, pathname + 'circle.svg', 'multi', 'target', beforeRender);
checkRect(entry, [0, 200, 0, 200]);
checkNaturalSize(entry, 200, 200);
}
else {
assert_unreached("Should not have observed an entry with different name!");
}
if (numObservedElements === 2) {
assert_true(observedCircle);
assert_true(observedSquare);
t.done();
}
});
})
);
observer.observe({entryTypes: ['element']});
}, 'Element with two background images receives both.');
</script>
<div id='target' elementtiming='multi'></div>
</body>

View file

@ -0,0 +1,37 @@
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe element with background image</title>
<body>
<style>
body {
margin: 0;
}
#target {
width: 100px;
height: 50px;
background-image: url('/images/black-rectangle.png');
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
let beforeRender = performance.now();
async_test(function (t) {
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
const index = window.location.href.lastIndexOf('/');
const pathname = window.location.href.substring(0, index - 14) +
'images/black-rectangle.png';
checkElement(entry, pathname, 'my_div', 'target', beforeRender);
checkRect(entry, [0, 100, 0, 50]);
checkNaturalSize(entry, 100, 50);
})
);
observer.observe({entryTypes: ['element']});
}, 'Element with elementtiming attribute and background image is observable.');
</script>
<div id='target' elementtiming='my_div'></div>
</body>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<title>Test looping edge case to verify http://crbug.com/364442.</title>
<title>play() with loop set to true after playback ended</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
@ -10,6 +10,8 @@
// Once ended, set "loop" to true. Call play.
// Verify that "seeked" event fires, seeking back to the beginning.
// Pause video and end test.
// Chromium bug: https://crbug.com/364442
// Spec issue: https://github.com/whatwg/html/issues/4487
async_test(function(t) {
var video = document.querySelector("video");

View file

@ -207,6 +207,8 @@ dictionary RTCAudioReceiverStats : RTCAudioHandlerStats {
unsigned long long concealedSamples;
unsigned long long silentConcealedSamples;
unsigned long long concealmentEvents;
unsigned long long insertedSamplesForDeceleration;
unsigned long long removedSamplesForAcceleration;
};
dictionary RTCDataChannelStats : RTCStats {

View file

@ -0,0 +1,68 @@
<!doctype html>
<meta charset=utf-8>
<title>Dispatching PaymentRequestUpdateEvent for "payerdetailschange"</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="helpers.js"></script>
<script>
function testImmediateUpdate({ textContent: testName }) {
promise_test(async t => {
const response = await getPaymentResponse({ requestPayerName: true });
const eventPromise = new Promise((resolve, reject) => {
response.addEventListener(
"payerdetailchange",
ev => {
// Forces updateWith() to be run in the next event loop tick so that
// [[waitForUpdate]] is already true when it runs.
t.step_timeout(() => {
try {
ev.updateWith({});
resolve(); // This is bad.
} catch (err) {
reject(err); // this is good.
}
});
},
{ once: true }
);
});
const retryPromise = response.retry({
payer: { name: "Change me!" },
});
await promise_rejects(
t,
"InvalidStateError",
eventPromise,
"The event loop already spun, so [[waitForUpdate]] is now true"
);
await retryPromise;
await response.complete("success");
}, testName.trim());
}
</script>
<h2>Handling PaymentResponse.prototype.onpayerdetailchange events</h2>
<p>
The test brings up the Payment Request UI window.
When shown the payment sheet, use any details and hit pay.
</p>
<p>
When asked to retry the payment:
</p>
<ol>
<li>
<p>
Change payer's name to anything.
</p>
<button onclick="testImmediateUpdate(this);">
updateWith() must be called immediately, otherwise must throw an InvalidStateError.
</button>
</li>
<li>
<button onclick="done();">DONE!</button>
</li>
</ol>
<small>
If you find a buggy test, please <a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a>
and tag one of the <a href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/OWNERS">owners</a>.
</small>

View file

@ -3,7 +3,10 @@
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<body>
<input id="input"/>
<script>
const sameOriginUrl = "resources/portal-post-message-portal.html"
const crossOriginUrl = "http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/portal-post-message-cross-origin-portal.sub.html"
@ -35,20 +38,33 @@
});
}
function postMessageWithMessagePorts(portal, message, targetOrigin) {
return new Promise((resolve, reject) => {
var channel = new MessageChannel();
channel.port1.onmessage = e => {
channel.port1.close();
resolve(e.data);
};
portal.postMessage(message, targetOrigin, [channel.port2]);
});
}
promise_test(async () => {
var portal = await createAndInsertPortal(sameOriginUrl);
var message = "test message";
var {origin, data} = await postMessage(portal, message, "*");
var {origin, data, sourceIsPortalHost} = await postMessage(portal, message, "*");
assert_equals(data, message);
assert_equals(origin, window.location.origin);
assert_true(sourceIsPortalHost);
}, "postMessage message received by portalHost");
promise_test(async () => {
var portal = await createAndInsertPortal(crossOriginUrl);
var message = "test message";
var {origin, data} = await postMessage(portal, message, "*");
var {origin, data, sourceIsPortalHost} = await postMessage(portal, message, "*");
assert_equals(data, message);
assert_equals(origin, window.location.origin);
assert_true(sourceIsPortalHost);
}, "postMessage message received by portalHost in cross-origin portal");
promise_test(async () => {
@ -71,12 +87,100 @@
assert_equals(data, message);
}, "postMessage received by portal host in cross-origin portal when target origin is specified");
promise_test(async () => {
var portal = await createAndInsertPortal(sameOriginUrl);
var message = {
prop1: "value1",
prop2: 2.5,
prop3: [1, 2, "3"],
prop4: {
prop4_1: "value4_1"
}
}
var {data} = await postMessage(portal, message);
assert_object_equals(data, message);
}, "postMessage with message object");
promise_test(async () => {
var portal = await createAndInsertPortal(sameOriginUrl);
var message = "test message";
var {data} = await postMessageWithMessagePorts(portal, message, "*");
assert_equals(data, message);
}, "postMessage with message ports and same-origin portal");
promise_test(async () => {
var portal = await createAndInsertPortal(crossOriginUrl);
var message = "test message";
var {data} = await postMessageWithMessagePorts(portal, message, "*");
assert_equals(data, message);
}, "postMessage with message ports and cross-origin portal");
promise_test(async () => {
var portal = await createAndInsertPortal(sameOriginUrl);
var arrayBuffer = new ArrayBuffer(5);
var int8View = new Int8Array(arrayBuffer);
for (var i = 0; i < int8View.length; i++)
int8View[i] = i;
var message = {
arrayBuffer: arrayBuffer
};
var {data} = await postMessage(portal, message, "*");
assert_array_equals([0, 1, 2, 3, 4], int8View);
assert_array_equals([0, 1, 2, 3, 4], data.array);
}, "postMessage with array buffer without transfer");
promise_test(async () => {
var portal = await createAndInsertPortal(sameOriginUrl);
var arrayBuffer = new ArrayBuffer(5);
var int8View = new Int8Array(arrayBuffer);
for (var i = 0; i < int8View.length; i++)
int8View[i] = i;
var message = {
arrayBuffer: arrayBuffer
};
var {data} = await postMessage(portal, message, "*", [arrayBuffer]);
assert_equals(int8View.length, 0);
assert_array_equals(data.array, [0, 1, 2, 3, 4]);
}, "postMessage with transferred array buffer");
promise_test(async t => {
var portal = await createAndInsertPortal(sameOriginUrl);
var {gotUserActivation} = await postMessage(portal, "test");
assert_false(gotUserActivation);
var {gotUserActivation, userActivation} = await postMessage(portal, "test", {includeUserActivation: true});
assert_true(gotUserActivation);
assert_false(userActivation.isActive);
assert_false(userActivation.hasBeenActive);
await test_driver.click(document.getElementById("input"));
assert_true(navigator.userActivation.isActive);
assert_true(navigator.userActivation.hasBeenActive);
var {userActivation} = await postMessage(portal, "test", {includeUserActivation: true});
assert_true(userActivation.isActive, "should have sent gesture");
assert_true(userActivation.hasBeenActive);
}, "postMessage with includeUserActivation");
promise_test(async t => {
var portal = document.createElement("portal");
return promise_rejects(t, "InvalidStateError",
postMessage(portal, "test message"));
}, "cannot call postMessage on portal without portal browsing context");
promise_test(async t => {
var portal = await createAndInsertPortal(sameOriginUrl);
return promise_rejects(t, "DataCloneError",
postMessage(portal, document.body));
}, "postMessage should fail if message serialization fails");
promise_test(async t => {
var portal = await createAndInsertPortal(sameOriginUrl);
return promise_rejects(t, new TypeError(),
postMessage(portal, "test", "*", [null]));
}, "postMessage should fail with invalid ports");
async function waitForMessage(channelName) {
var bc = new BroadcastChannel(channelName);
return new Promise((resolve, reject) => {

View file

@ -13,8 +13,14 @@
window.portalHost.addEventListener("message", e => {
var message = {
origin: e.origin,
data: e.data
data: e.data,
sourceIsPortalHost: e.source === window.portalHost
};
if (e.ports.length > 0) {
e.ports[0].postMessage(message);
e.ports[0].close();
return;
}
forwardingIframe.contentWindow.postMessage(message, "*");
});
</script>

View file

@ -6,8 +6,27 @@
window.portalHost.addEventListener("message", e => {
var message = {
origin: e.origin,
data: e.data
data: e.data,
sourceIsPortalHost: e.source === window.portalHost,
gotUserActivation: !!e.userActivation,
userActivation: {
isActive: e.userActivation && e.userActivation.isActive,
hasBeenActive: e.userActivation && e.userActivation.hasBeenActive
}
};
if (e.data.arrayBuffer) {
message.data = {
array: Array.from(new Uint8Array(e.data.arrayBuffer))
};
}
if (e.ports.length > 0) {
e.ports[0].postMessage(message);
e.ports[0].close();
return;
}
bc = new BroadcastChannel("portals-post-message");
bc.postMessage(message);
bc.close();

View file

@ -0,0 +1,8 @@
<!doctype HTML>
<title>Basic backface-visibility compositing works referece</title>
<link rel="author" title="Chris Harrelson" href="chrishtr@chromium.org">
<svg>
<foreignObject>
<div>Test</div>
</foreignObject>
</svg>

View file

@ -0,0 +1,13 @@
<!doctype HTML>
<title>Basic backface-visibility compositing works.</title>
<link rel="author" title="Chris Harrelson" href="chrishtr@chromium.org">
<link rel="match" href="compositing-backface-visibility-ref.html">
<link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#embedded-ForeignObjectElement"/>
<style>
* { backface-visibility: hidden }
</style>
<svg>
<foreignObject>
<div style="will-change: transform">Test</div>
</foreignObject>
</svg>

View file

@ -74,6 +74,25 @@ const invalid_syntax_messages =
createMessage([createRecord('json', 'custom/app+json', test_json_data)]),
];
const invalid_signals = [
"string",
123,
{},
true,
Symbol(),
() => {},
self
]
const non_strings = [
123,
{},
true,
Symbol(),
() => {},
self
]
promise_test(t => {
const writer = new NFCWriter();
const promises = [];
@ -94,13 +113,19 @@ promise_test(t => {
return Promise.all(promises);
}, "'Test that promise is rejected with SyntaxError if NDEFMessageSource contains invalid records.");
promise_test(t => {
promise_test(async t => {
const writer = new NFCWriter();
const controller = new AbortController();
const p = writer.push(test_text_data, { signal: controller.signal });
const rejected = promise_rejects(t, 'AbortError', p);
let callback_called = false;
t.step_timeout(() => {
callback_called = true;
controller.abort();
return promise_rejects(t, 'NoModificationAllowedError', p);
}, "NFCWriter.push should fail if the instance has already initiated NFC data transfer.");
}, 10);
await rejected;
assert_true(callback_called, 'timeout should have caused the abort');
}, "NFCWriter.push should fail if abort push request before push happends.");
promise_test(t => {
const writer = new NFCWriter();
@ -111,6 +136,16 @@ promise_test(t => {
return promise_rejects(t, 'AbortError', writer.push(test_text_data, { signal: controller.signal }));
}, "NFCWriter.push should fail if signal's aborted flag is set.");
promise_test(t => {
const writer = new NFCWriter();
const promises = [];
invalid_signals.forEach(invalid_signal => {
promises.push(
promise_rejects(t, 'TypeError', writer.push(test_text_data, { signal: invalid_signal })));
});
return Promise.all(promises);
}, "NFCWriter.push should fail if signal is not an AbortSignal.");
promise_test(t => {
const writer = new NFCWriter();
return promise_rejects(t, new TypeError(), writer.push(test_text_data, { timeout: "invalid"}));
@ -185,4 +220,32 @@ promise_test(() => {
});
}, 'Test that WebNFC API is not accessible from iframe context.');
promise_test(t => {
const writer = new NFCWriter();
const promises = [];
non_strings.forEach(invalid_url => {
promises.push(
promise_rejects(t, new TypeError(), writer.push({
url: invalid_url,
records: [{ recordType: "text", data: 'Hello World' }]
}));
);
});
return Promise.all(promises);
}, "Test that promise is rejected with TypeError if NDEFMessageSource contains non-string url.");
promise_test(t => {
const writer = new NFCWriter();
const promises = [];
non_strings.forEach(invalid_serialNumber => {
promises.push(
promise_rejects(t, new TypeError(), writer.push({
serialNumber: invalid_serialNumber,
records: [{ recordType: "text", data: 'Hello World' }]
}));
);
});
return Promise.all(promises);
}, "Test that promise is rejected with TypeError if NDEFMessageSource contains non-string serialNumber.");
</script>

View file

@ -0,0 +1,45 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Web NFC Test: NFCWriter signal test</title>
<link rel="author" title="Intel" href="http://www.intel.com"/>
<link rel="help" href="https://w3c.github.io/web-nfc/"/>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/nfc_help.js"></script>
<meta name="flags" content="interact">
<p>Tap an NFC tag to the test device with NFC support.</p>
<p>Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.</p>
<div id="log"></div>
<script>
"use strict";
setup({ explicit_timeout: true });
promise_test(async t => {
const writer = new NFCWriter();
const reader = new NFCReader();
const controller = new AbortController();
const p1 = writer.push(test_text_data, { signal: controller.signal });
const p2 = writer.push(test_text_data);
// Even though push request is grantable, this abort should be processed synchronously.
controller.abort();
await promise_rejects(t, 'AbortError', p1);
await p2;
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
reader.start();
const event = await readerWatcher.wait_for("reading");
for (let record of event.message.records) {
assert_equals(record.data, test_text_data);
}
}, "Synchronously signaled abort.");
</script>