Update web-platform-tests to revision 4adce83d1f2b08fa2e92427c4687d0cf535aee53

This commit is contained in:
WPT Sync Bot 2019-01-08 20:47:25 -05:00
parent d3763452b5
commit 3e4ec1724a
102 changed files with 3019 additions and 1309 deletions

View file

@ -14,6 +14,9 @@
[Revoke blob URL after creating Request, will fetch] [Revoke blob URL after creating Request, will fetch]
expected: FAIL expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html] [url-with-fetch.any.html]
[Untitled] [Untitled]

View file

@ -104515,6 +104515,18 @@
{} {}
] ]
], ],
"css/css-backgrounds/background-image-first-line.html": [
[
"/css/css-backgrounds/background-image-first-line.html",
[
[
"/css/css-backgrounds/reference/background-image-first-line-ref.html",
"=="
]
],
{}
]
],
"css/css-backgrounds/background-image-none-gradient-repaint.html": [ "css/css-backgrounds/background-image-none-gradient-repaint.html": [
[ [
"/css/css-backgrounds/background-image-none-gradient-repaint.html", "/css/css-backgrounds/background-image-none-gradient-repaint.html",
@ -125499,6 +125511,18 @@
{} {}
] ]
], ],
"css/css-lists/add-inline-child-after-marker-001.html": [
[
"/css/css-lists/add-inline-child-after-marker-001.html",
[
[
"/css/css-lists/add-inline-child-after-marker-001-ref.html",
"=="
]
],
{}
]
],
"css/css-lists/content-property/marker-text-matches-armenian.html": [ "css/css-lists/content-property/marker-text-matches-armenian.html": [
[ [
"/css/css-lists/content-property/marker-text-matches-armenian.html", "/css/css-lists/content-property/marker-text-matches-armenian.html",
@ -125715,6 +125739,66 @@
{} {}
] ]
], ],
"css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html": [
[
"/css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html",
[
[
"/css/css-lists/li-with-overflow-hidden-change-list-style-position-001-ref.html",
"=="
]
],
{}
]
],
"css/css-lists/list-and-flex-001.html": [
[
"/css/css-lists/list-and-flex-001.html",
[
[
"/css/css-lists/list-and-flex-001-ref.html",
"=="
]
],
{}
]
],
"css/css-lists/list-and-grid-001.html": [
[
"/css/css-lists/list-and-grid-001.html",
[
[
"/css/css-lists/list-and-grid-001-ref.html",
"=="
]
],
{}
]
],
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001.html": [
[
"/css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001.html",
[
[
"/css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001-ref.html",
"=="
]
],
{}
]
],
"css/css-lists/list-with-image-display-changed-001.html": [
[
"/css/css-lists/list-with-image-display-changed-001.html",
[
[
"/css/css-lists/list-with-image-display-changed-001-ref.html",
"=="
]
],
{}
]
],
"css/css-logical/cascading-001.html": [ "css/css-logical/cascading-001.html": [
[ [
"/css/css-logical/cascading-001.html", "/css/css-logical/cascading-001.html",
@ -127107,6 +127191,18 @@
{} {}
] ]
], ],
"css/css-masking/clip-path/clip-path-fixed-nested.html": [
[
"/css/css-masking/clip-path/clip-path-fixed-nested.html",
[
[
"/css/css-masking/clip-path/clip-path-fixed-nested-ref.html",
"=="
]
],
{}
]
],
"css/css-masking/clip-path/clip-path-inline-001.html": [ "css/css-masking/clip-path/clip-path-inline-001.html": [
[ [
"/css/css-masking/clip-path/clip-path-inline-001.html", "/css/css-masking/clip-path/clip-path-inline-001.html",
@ -253152,6 +253248,11 @@
{} {}
] ]
], ],
"css/css-backgrounds/reference/background-image-first-line-ref.html": [
[
{}
]
],
"css/css-backgrounds/reference/background-origin-002-ref.html": [ "css/css-backgrounds/reference/background-origin-002-ref.html": [
[ [
{} {}
@ -265402,6 +265503,11 @@
{} {}
] ]
], ],
"css/css-lists/add-inline-child-after-marker-001-ref.html": [
[
{}
]
],
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [ "css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
[ [
{} {}
@ -265472,6 +265578,36 @@
{} {}
] ]
], ],
"css/css-lists/li-with-overflow-hidden-change-list-style-position-001-ref.html": [
[
{}
]
],
"css/css-lists/list-and-flex-001-ref.html": [
[
{}
]
],
"css/css-lists/list-and-grid-001-ref.html": [
[
{}
]
],
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001-ref.html": [
[
{}
]
],
"css/css-lists/list-with-image-display-changed-001-ref.html": [
[
{}
]
],
"css/css-lists/resources/white.gif": [
[
{}
]
],
"css/css-logical/META.yml": [ "css/css-logical/META.yml": [
[ [
{} {}
@ -265632,6 +265768,11 @@
{} {}
] ]
], ],
"css/css-masking/clip-path/clip-path-fixed-nested-ref.html": [
[
{}
]
],
"css/css-masking/clip-path/reference/clip-path-circle-2-ref.html": [ "css/css-masking/clip-path/reference/clip-path-circle-2-ref.html": [
[ [
{} {}
@ -297692,6 +297833,11 @@
{} {}
] ]
], ],
"html/semantics/forms/form-submission-0/resources/targetted-form.js": [
[
{}
]
],
"html/semantics/forms/form-submission-target/form-target-iframe-helper.py": [ "html/semantics/forms/form-submission-target/form-target-iframe-helper.py": [
[ [
{} {}
@ -307212,6 +307358,16 @@
{} {}
] ]
], ],
"resources/chromium/big_buffer.mojom.js": [
[
{}
]
],
"resources/chromium/big_buffer.mojom.js.headers": [
[
{}
]
],
"resources/chromium/device.mojom.js": [ "resources/chromium/device.mojom.js": [
[ [
{} {}
@ -307222,12 +307378,22 @@
{} {}
] ]
], ],
"resources/chromium/device_manager.mojom.js": [ "resources/chromium/device_enumeration_options.mojom.js": [
[ [
{} {}
] ]
], ],
"resources/chromium/device_manager.mojom.js.headers": [ "resources/chromium/device_enumeration_options.mojom.js.headers": [
[
{}
]
],
"resources/chromium/device_manager_client.mojom.js": [
[
{}
]
],
"resources/chromium/device_manager_client.mojom.js.headers": [
[ [
{} {}
] ]
@ -344165,6 +344331,24 @@
{} {}
] ]
], ],
"css/css-lists/list-and-block-textarea-001.html": [
[
"/css/css-lists/list-and-block-textarea-001.html",
{}
]
],
"css/css-lists/list-and-margin-collapse-001.html": [
[
"/css/css-lists/list-and-margin-collapse-001.html",
{}
]
],
"css/css-lists/list-and-writing-mode-001.html": [
[
"/css/css-lists/list-and-writing-mode-001.html",
{}
]
],
"css/css-logical/animation-001.html": [ "css/css-logical/animation-001.html": [
[ [
"/css/css-logical/animation-001.html", "/css/css-logical/animation-001.html",
@ -344867,6 +345051,12 @@
{} {}
] ]
], ],
"css/css-position/position-absolute-in-inline-crash.html": [
[
"/css/css-position/position-absolute-in-inline-crash.html",
{}
]
],
"css/css-position/position-sticky-bottom.html": [ "css/css-position/position-sticky-bottom.html": [
[ [
"/css/css-position/position-sticky-bottom.html", "/css/css-position/position-sticky-bottom.html",
@ -345329,6 +345519,12 @@
{} {}
] ]
], ],
"css/css-scroll-anchoring/exclude-inline.html": [
[
"/css/css-scroll-anchoring/exclude-inline.html",
{}
]
],
"css/css-scroll-anchoring/inheritance.html": [ "css/css-scroll-anchoring/inheritance.html": [
[ [
"/css/css-scroll-anchoring/inheritance.html", "/css/css-scroll-anchoring/inheritance.html",
@ -367287,6 +367483,14 @@
} }
] ]
], ],
"fetch/http-cache/post-patch.html": [
[
"/fetch/http-cache/post-patch.html",
{
"timeout": "long"
}
]
],
"fetch/http-cache/status.html": [ "fetch/http-cache/status.html": [
[ [
"/fetch/http-cache/status.html", "/fetch/http-cache/status.html",
@ -371087,6 +371291,12 @@
{} {}
] ]
], ],
"html/rendering/non-replaced-elements/tables/table-attribute.html": [
[
"/html/rendering/non-replaced-elements/tables/table-attribute.html",
{}
]
],
"html/rendering/non-replaced-elements/tables/table-vspace-hspace-s.html": [ "html/rendering/non-replaced-elements/tables/table-vspace-hspace-s.html": [
[ [
"/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s.html", "/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s.html",
@ -375025,6 +375235,12 @@
{} {}
] ]
], ],
"html/semantics/forms/form-submission-0/FormDataEvent.window.js": [
[
"/html/semantics/forms/form-submission-0/FormDataEvent.window.html",
{}
]
],
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [ "html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
[ [
"/html/semantics/forms/form-submission-0/constructing-form-data-set.html", "/html/semantics/forms/form-submission-0/constructing-form-data-set.html",
@ -375043,6 +375259,12 @@
{} {}
] ]
], ],
"html/semantics/forms/form-submission-0/form-submission-algorithm.html": [
[
"/html/semantics/forms/form-submission-0/form-submission-algorithm.html",
{}
]
],
"html/semantics/forms/form-submission-0/getactionurl.html": [ "html/semantics/forms/form-submission-0/getactionurl.html": [
[ [
"/html/semantics/forms/form-submission-0/getactionurl.html", "/html/semantics/forms/form-submission-0/getactionurl.html",
@ -411937,6 +412159,12 @@
{} {}
] ]
], ],
"svg/animations/scripted/end-element-on-inactive-element.svg": [
[
"/svg/animations/scripted/end-element-on-inactive-element.svg",
{}
]
],
"svg/extensibility/foreignObject/containing-block.html": [ "svg/extensibility/foreignObject/containing-block.html": [
[ [
"/svg/extensibility/foreignObject/containing-block.html", "/svg/extensibility/foreignObject/containing-block.html",
@ -417645,6 +417873,12 @@
{} {}
] ]
], ],
"webrtc/RTCDtlsTransport-state.html": [
[
"/webrtc/RTCDtlsTransport-state.html",
{}
]
],
"webrtc/RTCIceCandidate-constructor.html": [ "webrtc/RTCIceCandidate-constructor.html": [
[ [
"/webrtc/RTCIceCandidate-constructor.html", "/webrtc/RTCIceCandidate-constructor.html",
@ -455735,7 +455969,7 @@
"testharness" "testharness"
], ],
"bluetooth/resources/bluetooth-helpers.js": [ "bluetooth/resources/bluetooth-helpers.js": [
"c01fc9fcf168056b319c18ca40a92df73665b12a", "83643232ae5f5c86b7d180b52c681bef57e27ece",
"support" "support"
], ],
"bluetooth/resources/bluetooth-scanning-helpers.js": [ "bluetooth/resources/bluetooth-scanning-helpers.js": [
@ -476875,7 +477109,7 @@
"testharness" "testharness"
], ],
"content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html": [ "content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank.html": [
"30d05ee04f5cda2de1b8fcc577872a7f639cb95e", "d1c2b38f247a0a11ecff8ead40eff2152545f461",
"testharness" "testharness"
], ],
"content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html": [ "content-security-policy/unsafe-hashes/javascript_src_allowed-window_location.html": [
@ -540502,6 +540736,10 @@
"f78460b90708223616a019aa48aaaa4fe8b2ce43", "f78460b90708223616a019aa48aaaa4fe8b2ce43",
"reftest" "reftest"
], ],
"css/css-backgrounds/background-image-first-line.html": [
"c8dee7050b6241279d5f462263b9fdead50004fc",
"reftest"
],
"css/css-backgrounds/background-image-none-gradient-repaint.html": [ "css/css-backgrounds/background-image-none-gradient-repaint.html": [
"3f39fb8d850d7561703f791135ea7dd4b3aa9fe8", "3f39fb8d850d7561703f791135ea7dd4b3aa9fe8",
"reftest" "reftest"
@ -543082,6 +543320,10 @@
"304be71fbace6a964566e2a24dc8ab802cdec7e3", "304be71fbace6a964566e2a24dc8ab802cdec7e3",
"support" "support"
], ],
"css/css-backgrounds/reference/background-image-first-line-ref.html": [
"82fd9a2d3d0e3c886835168283ec3f32270c0356",
"support"
],
"css/css-backgrounds/reference/background-origin-002-ref.html": [ "css/css-backgrounds/reference/background-origin-002-ref.html": [
"88d61225a623d112e5f54505899a21dd4d929a5b", "88d61225a623d112e5f54505899a21dd4d929a5b",
"support" "support"
@ -562150,6 +562392,14 @@
"05e60af1d8a558ec87a6c6f8acdeecdc0c7bb78d", "05e60af1d8a558ec87a6c6f8acdeecdc0c7bb78d",
"support" "support"
], ],
"css/css-lists/add-inline-child-after-marker-001-ref.html": [
"0c1d2397d75c34f7238c65b8762d5d206c36bf73",
"support"
],
"css/css-lists/add-inline-child-after-marker-001.html": [
"228604ee357d22027c1691bf2baf27a52729222b",
"reftest"
],
"css/css-lists/content-property/marker-text-matches-armenian-ref.html": [ "css/css-lists/content-property/marker-text-matches-armenian-ref.html": [
"f21dfff69608a6a1201bd586c2a6e1e24d5fd915", "f21dfff69608a6a1201bd586c2a6e1e24d5fd915",
"support" "support"
@ -562282,6 +562532,50 @@
"ad2ac65e179714dd5fb85de6b67a6f097823a507", "ad2ac65e179714dd5fb85de6b67a6f097823a507",
"reftest" "reftest"
], ],
"css/css-lists/li-with-overflow-hidden-change-list-style-position-001-ref.html": [
"a3ea8b66ee0d3bf329f2b03caf8ff8cab745216e",
"support"
],
"css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html": [
"992ed83cedaa50208a3870707ecbcb18da337bbc",
"reftest"
],
"css/css-lists/list-and-block-textarea-001.html": [
"96af38a8adb236bd5004a55fa59a830fbb6576eb",
"testharness"
],
"css/css-lists/list-and-flex-001-ref.html": [
"d7be687125aad54054338694ae35866a94380251",
"support"
],
"css/css-lists/list-and-flex-001.html": [
"98ab9c400b683932021d84127438d564b0b49bfc",
"reftest"
],
"css/css-lists/list-and-grid-001-ref.html": [
"b6e777428df55c9a1c93e38c54dd748b7452ab41",
"support"
],
"css/css-lists/list-and-grid-001.html": [
"562961d5a98cfc53f6bfc8daa7f912b174eecc73",
"reftest"
],
"css/css-lists/list-and-margin-collapse-001.html": [
"e267b839083b4dfb343c92118f93d73a7e8d019f",
"testharness"
],
"css/css-lists/list-and-writing-mode-001.html": [
"df54e8fb0df8146f896c2abd136d63d930d92d1c",
"testharness"
],
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001-ref.html": [
"ae6486147e28502db80f6b887b1a6b16c30184f2",
"support"
],
"css/css-lists/list-marker-with-lineheight-and-overflow-hidden-001.html": [
"d78743facb53bf622b217e3118cb7a609faadede",
"reftest"
],
"css/css-lists/list-style-type-armenian-002.xht": [ "css/css-lists/list-style-type-armenian-002.xht": [
"02e06b707f709870b30e810e4b1a4ec330ada296", "02e06b707f709870b30e810e4b1a4ec330ada296",
"visual" "visual"
@ -562290,6 +562584,18 @@
"4852e423273efe6ee99a832b141f943e7a3c4bca", "4852e423273efe6ee99a832b141f943e7a3c4bca",
"visual" "visual"
], ],
"css/css-lists/list-with-image-display-changed-001-ref.html": [
"bfe0eb60f8dfbc30311fdec49490f7ecf2dc0b1c",
"support"
],
"css/css-lists/list-with-image-display-changed-001.html": [
"d4b3e300f8ea5011249e433b925a9a8f32e8c935",
"reftest"
],
"css/css-lists/resources/white.gif": [
"3aa2098dc8817f5360d13440f3d6245a030dc31d",
"support"
],
"css/css-logical/META.yml": [ "css/css-logical/META.yml": [
"98d838c04e110e484cae63998cf4ee6c2dd559ed", "98d838c04e110e484cae63998cf4ee6c2dd559ed",
"support" "support"
@ -563006,6 +563312,14 @@
"5806e75d536cc34a4610630782e5cdfd4b5e552d", "5806e75d536cc34a4610630782e5cdfd4b5e552d",
"reftest" "reftest"
], ],
"css/css-masking/clip-path/clip-path-fixed-nested-ref.html": [
"b860304f04fe22498eb5b43d9de00d7e261353bb",
"support"
],
"css/css-masking/clip-path/clip-path-fixed-nested.html": [
"5090bc2aed43e0619eb7b966c2ed46cd43057e40",
"reftest"
],
"css/css-masking/clip-path/clip-path-inline-001.html": [ "css/css-masking/clip-path/clip-path-inline-001.html": [
"21acae0ee7e06da76a6b5830e5aaa6b5e0d2e6a6", "21acae0ee7e06da76a6b5830e5aaa6b5e0d2e6a6",
"reftest" "reftest"
@ -565986,6 +566300,10 @@
"3d1ffa01507dfd8397d8ae6b52766dfadfebee1c", "3d1ffa01507dfd8397d8ae6b52766dfadfebee1c",
"testharness" "testharness"
], ],
"css/css-position/position-absolute-in-inline-crash.html": [
"5d36710b6fe694b256d9841b3e7a0fff4535c85b",
"testharness"
],
"css/css-position/position-relative-table-left-ref.html": [ "css/css-position/position-relative-table-left-ref.html": [
"7c1193b80007d8e7f89b35400a6d2ea2266cb3ac", "7c1193b80007d8e7f89b35400a6d2ea2266cb3ac",
"support" "support"
@ -569118,6 +569436,10 @@
"99686bdee440ab511acc55d7cb5c7a5ce97b07ad", "99686bdee440ab511acc55d7cb5c7a5ce97b07ad",
"testharness" "testharness"
], ],
"css/css-scroll-anchoring/exclude-inline.html": [
"cea6b61dfe8b60754f656c860fe4d6f2dfff0c18",
"testharness"
],
"css/css-scroll-anchoring/inheritance.html": [ "css/css-scroll-anchoring/inheritance.html": [
"035d4ffd2e2c8955d4e8f80af3aff5db9285c8ae", "035d4ffd2e2c8955d4e8f80af3aff5db9285c8ae",
"testharness" "testharness"
@ -614907,7 +615229,7 @@
"reftest" "reftest"
], ],
"fetch/corb/img-mime-types-coverage.tentative.sub.html": [ "fetch/corb/img-mime-types-coverage.tentative.sub.html": [
"65c5b846d5348a065fb935cc9426fb07a5df1e77", "223a0a375c333511b72bcc3e276edee6519bf615",
"testharness" "testharness"
], ],
"fetch/corb/img-png-mislabeled-as-html-nosniff.tentative.sub-ref.html": [ "fetch/corb/img-png-mislabeled-as-html-nosniff.tentative.sub-ref.html": [
@ -614915,7 +615237,7 @@
"support" "support"
], ],
"fetch/corb/img-png-mislabeled-as-html-nosniff.tentative.sub.html": [ "fetch/corb/img-png-mislabeled-as-html-nosniff.tentative.sub.html": [
"82adc47b0cf31c779637d2a55f9c3b9b532aceca", "46403b0b18107c7943575c424773348a11e39cb2",
"reftest" "reftest"
], ],
"fetch/corb/img-png-mislabeled-as-html.sub-ref.html": [ "fetch/corb/img-png-mislabeled-as-html.sub-ref.html": [
@ -614927,7 +615249,7 @@
"reftest" "reftest"
], ],
"fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html": [ "fetch/corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.html": [
"cea80f2f89fac47e0ec8b3ac53f8b15d0ccfb76d", "2fc93f8317e6bc0188ebe52e3587d37290fed18e",
"testharness" "testharness"
], ],
"fetch/corb/resources/css-mislabeled-as-html-nosniff.css": [ "fetch/corb/resources/css-mislabeled-as-html-nosniff.css": [
@ -615031,7 +615353,7 @@
"support" "support"
], ],
"fetch/corb/script-html-correctly-labeled.tentative.sub.html": [ "fetch/corb/script-html-correctly-labeled.tentative.sub.html": [
"8f4d7679e3d749b3cd402997f607b7358fe98c28", "407cef9158444d4fd19bfc8c09ed73d663d55fba",
"testharness" "testharness"
], ],
"fetch/corb/script-html-js-polyglot.sub.html": [ "fetch/corb/script-html-js-polyglot.sub.html": [
@ -615051,7 +615373,7 @@
"testharness" "testharness"
], ],
"fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html": [ "fetch/corb/script-resource-with-json-parser-breaker.tentative.sub.html": [
"cabc7b09c458ca1f3852c633c9cd47680ab6e89d", "03924cdad0dbad0e5fb2bc05cdd8ac19b619fa13",
"testharness" "testharness"
], ],
"fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [ "fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [
@ -615194,8 +615516,12 @@
"8f0b528e8ce396c90a87fc76b64f930e99700068", "8f0b528e8ce396c90a87fc76b64f930e99700068",
"testharness" "testharness"
], ],
"fetch/http-cache/post-patch.html": [
"9025a96e4e3503830d3df69e6e0035e3217df1eb",
"testharness"
],
"fetch/http-cache/resources/http-cache.py": [ "fetch/http-cache/resources/http-cache.py": [
"b22dadada3beb8b9c689c4ac645431d6e8aba4ee", "e64fe6dfea0e5e9d0bd267f464aa828a0bd35342",
"support" "support"
], ],
"fetch/http-cache/resources/securedimage.py": [ "fetch/http-cache/resources/securedimage.py": [
@ -620475,7 +620801,7 @@
"testharness" "testharness"
], ],
"html/dom/interfaces.https.html": [ "html/dom/interfaces.https.html": [
"3848837cb2b7c37d23d3eefa3cb54e344f4ffaf1", "47254a4361c46ad5fdc46efd2165da1bbab4c9b5",
"testharness" "testharness"
], ],
"html/dom/interfaces.worker.js": [ "html/dom/interfaces.worker.js": [
@ -625290,6 +625616,10 @@
"f06c3dc9b4f101faa253b8b1d980510475894992", "f06c3dc9b4f101faa253b8b1d980510475894992",
"testharness" "testharness"
], ],
"html/rendering/non-replaced-elements/tables/table-attribute.html": [
"54acff0350eaee7fced7869c566bfb780b26cfd0",
"testharness"
],
"html/rendering/non-replaced-elements/tables/table-border-1-ref.html": [ "html/rendering/non-replaced-elements/tables/table-border-1-ref.html": [
"ceac88e9a3c82013165b1a64e7acd3d3841271fb", "ceac88e9a3c82013165b1a64e7acd3d3841271fb",
"support" "support"
@ -626195,7 +626525,7 @@
"support" "support"
], ],
"html/semantics/document-metadata/the-link-element/resources/link-style-error.js": [ "html/semantics/document-metadata/the-link-element/resources/link-style-error.js": [
"d1fa5ac2d6fcb4d94561c18b2d2e22a5a2afd6e3", "7ebc39ba6cc5b25e6743684c1e2975049ed8fcd1",
"support" "support"
], ],
"html/semantics/document-metadata/the-link-element/resources/stylesheet.css": [ "html/semantics/document-metadata/the-link-element/resources/stylesheet.css": [
@ -629782,8 +630112,12 @@
"db70b34b1adb81f197013175dc131a8aa361ac52", "db70b34b1adb81f197013175dc131a8aa361ac52",
"testharness" "testharness"
], ],
"html/semantics/forms/form-submission-0/FormDataEvent.window.js": [
"145b5dd3727f995fba56407f07e158d1fb80ba5a",
"testharness"
],
"html/semantics/forms/form-submission-0/constructing-form-data-set.html": [ "html/semantics/forms/form-submission-0/constructing-form-data-set.html": [
"afd75d87e95a6344bb3cb004c5af9973b63d645e", "914d61b07898867f2728c2d3cf9d7ad7bdd6aa1b",
"testharness" "testharness"
], ],
"html/semantics/forms/form-submission-0/contains.json": [ "html/semantics/forms/form-submission-0/contains.json": [
@ -629806,6 +630140,10 @@
"a7f0dc87efd2d3bf8798919649873cb81fc25ade", "a7f0dc87efd2d3bf8798919649873cb81fc25ade",
"support" "support"
], ],
"html/semantics/forms/form-submission-0/form-submission-algorithm.html": [
"bf9f9ce330a3a8ffbeb3b67b81e451dbcf064bdf",
"testharness"
],
"html/semantics/forms/form-submission-0/getactionurl.html": [ "html/semantics/forms/form-submission-0/getactionurl.html": [
"83de220267e7c37374bcd4d4490f27e4488e1126", "83de220267e7c37374bcd4d4490f27e4488e1126",
"testharness" "testharness"
@ -629814,6 +630152,10 @@
"5fc67faa880ffa9300a093aa0ef1f67c3a76eb0c", "5fc67faa880ffa9300a093aa0ef1f67c3a76eb0c",
"support" "support"
], ],
"html/semantics/forms/form-submission-0/resources/targetted-form.js": [
"74d0f8c81eeeb46c16ba9c640484d99ea7e87ceb",
"support"
],
"html/semantics/forms/form-submission-0/submission-checks.window.js": [ "html/semantics/forms/form-submission-0/submission-checks.window.js": [
"e242ce830a618cb1bff17c80a6c6559250c1a16d", "e242ce830a618cb1bff17c80a6c6559250c1a16d",
"testharness" "testharness"
@ -636087,7 +636429,7 @@
"manual" "manual"
], ],
"input-events/input-events-exec-command.html": [ "input-events/input-events-exec-command.html": [
"d4dea0859e26e024b363dfcc1ee2ab2d263fb062", "9ba423f4bade15ee47a099b611306b0e941af459",
"testharness" "testharness"
], ],
"input-events/input-events-get-target-ranges-manual.html": [ "input-events/input-events-get-target-ranges-manual.html": [
@ -636359,7 +636701,7 @@
"support" "support"
], ],
"interfaces/html.idl": [ "interfaces/html.idl": [
"fa3cd4f56ac2c1b7eb60eeb3cc172e8854a165ba", "3a513c5b9dbb47dc0b7a29af5efcf36259b22ef0",
"support" "support"
], ],
"interfaces/image-capture.idl": [ "interfaces/image-capture.idl": [
@ -659854,20 +660196,36 @@
"b53c6a8c4232dbe9c787b0ea17f0ed1a49f1e386", "b53c6a8c4232dbe9c787b0ea17f0ed1a49f1e386",
"support" "support"
], ],
"resources/chromium/big_buffer.mojom.js": [
"f09706eebb82285184cdc27ad9a369f0bef54193",
"support"
],
"resources/chromium/big_buffer.mojom.js.headers": [
"6c61a34a4ec2e75096db0eb9f7748b142f0db7bb",
"support"
],
"resources/chromium/device.mojom.js": [ "resources/chromium/device.mojom.js": [
"495971c23192ece2b832392baea4f7af97a4d557", "436d3038b85e4d6f92fa25cd93a41af667e85d26",
"support" "support"
], ],
"resources/chromium/device.mojom.js.headers": [ "resources/chromium/device.mojom.js.headers": [
"6805c323df5a975231648b830e33ce183c3cbbd3", "6805c323df5a975231648b830e33ce183c3cbbd3",
"support" "support"
], ],
"resources/chromium/device_manager.mojom.js": [ "resources/chromium/device_enumeration_options.mojom.js": [
"2d76263ba9b7a3608e05c72a8ae2666e20bb376f", "5a775ad36878f2c2a3cf05db55697b851e2a4db7",
"support" "support"
], ],
"resources/chromium/device_manager.mojom.js.headers": [ "resources/chromium/device_enumeration_options.mojom.js.headers": [
"6805c323df5a975231648b830e33ce183c3cbbd3", "6c61a34a4ec2e75096db0eb9f7748b142f0db7bb",
"support"
],
"resources/chromium/device_manager_client.mojom.js": [
"439f646574dfa785d8f4d15994597ed156dae695",
"support"
],
"resources/chromium/device_manager_client.mojom.js.headers": [
"6c61a34a4ec2e75096db0eb9f7748b142f0db7bb",
"support" "support"
], ],
"resources/chromium/fake_bluetooth.mojom.js": [ "resources/chromium/fake_bluetooth.mojom.js": [
@ -659907,7 +660265,7 @@
"support" "support"
], ],
"resources/chromium/mojo_bindings.js": [ "resources/chromium/mojo_bindings.js": [
"67d6a8828551c1f703ef29831592f2e4d8a42485", "70f6cad5e5f06f4f64a0fd4cdcd693fcea12bb78",
"support" "support"
], ],
"resources/chromium/mojo_bindings.js.headers": [ "resources/chromium/mojo_bindings.js.headers": [
@ -659931,7 +660289,7 @@
"support" "support"
], ],
"resources/chromium/string16.mojom.js": [ "resources/chromium/string16.mojom.js": [
"9dbb35664fabc2c8d9ace357927960785a531287", "25377e66571b145907a490d17c673a5abd023171",
"support" "support"
], ],
"resources/chromium/string16.mojom.js.headers": [ "resources/chromium/string16.mojom.js.headers": [
@ -659939,7 +660297,7 @@
"support" "support"
], ],
"resources/chromium/url.mojom.js": [ "resources/chromium/url.mojom.js": [
"abe7d00e7f9ce659c925baeebea94b535ae7a5d3", "c5eee1f2aeb4069c595914ee022a9e509b9da545",
"support" "support"
], ],
"resources/chromium/uuid.mojom.js": [ "resources/chromium/uuid.mojom.js": [
@ -659959,7 +660317,7 @@
"support" "support"
], ],
"resources/chromium/web_usb_service.mojom.js": [ "resources/chromium/web_usb_service.mojom.js": [
"bacad8fa39095760aff4f67654ef6cc8ff723153", "a4a017b1de178c0c51addb878d257b8b1a740334",
"support" "support"
], ],
"resources/chromium/web_usb_service.mojom.js.headers": [ "resources/chromium/web_usb_service.mojom.js.headers": [
@ -666154,6 +666512,10 @@
"ee86b537ae987483687cc8ba6181db82f99ab162", "ee86b537ae987483687cc8ba6181db82f99ab162",
"support" "support"
], ],
"svg/animations/scripted/end-element-on-inactive-element.svg": [
"34be9b9781f707d488e284c3285b82009557366b",
"testharness"
],
"svg/coordinate-systems/abspos.html": [ "svg/coordinate-systems/abspos.html": [
"fb37bbe7f3ae4a61d1c216970c8a263673aed0dc", "fb37bbe7f3ae4a61d1c216970c8a263673aed0dc",
"reftest" "reftest"
@ -670363,7 +670725,7 @@
"support" "support"
], ],
"tools/manifest/manifest.py": [ "tools/manifest/manifest.py": [
"7333a2e63d67b5850cd93f98af291c5b6e2f3793", "127d45dbc66632c1b5131e88ad58ec2abb9c5543",
"support" "support"
], ],
"tools/manifest/sourcefile.py": [ "tools/manifest/sourcefile.py": [
@ -670383,7 +670745,7 @@
"support" "support"
], ],
"tools/manifest/tests/test_manifest.py": [ "tools/manifest/tests/test_manifest.py": [
"f398c7e1d8758c316de867f3fe3f59763d27c8f8", "010a0c0a00a176bdabb561cc2a141aa0d1bbf139",
"support" "support"
], ],
"tools/manifest/tests/test_sourcefile.py": [ "tools/manifest/tests/test_sourcefile.py": [
@ -670883,7 +671245,7 @@
"support" "support"
], ],
"tools/serve/serve.py": [ "tools/serve/serve.py": [
"4eee732443bdb9e38a7fba290f63e407cfe06a98", "53f81457be1948936b1e4f161b7d2b1c221ab759",
"support" "support"
], ],
"tools/serve/test_functional.py": [ "tools/serve/test_functional.py": [
@ -670891,7 +671253,7 @@
"support" "support"
], ],
"tools/serve/test_serve.py": [ "tools/serve/test_serve.py": [
"1c089b506738ee73e2f1e29cf1729a1abc1e0c0b", "62a6e74f980427ab88b05774f18b769b2f48702e",
"support" "support"
], ],
"tools/third_party/atomicwrites/.gitignore": [ "tools/third_party/atomicwrites/.gitignore": [
@ -675755,7 +676117,7 @@
"support" "support"
], ],
"tools/wptserve/tests/test_config.py": [ "tools/wptserve/tests/test_config.py": [
"2ee8287710e91ed6908f94c3fb0a44cf1eae808b", "45f138f131d3bcb754fcd4605d5e3a101cf8d6e8",
"support" "support"
], ],
"tools/wptserve/tests/test_replacement_tokenizer.py": [ "tools/wptserve/tests/test_replacement_tokenizer.py": [
@ -675771,7 +676133,7 @@
"support" "support"
], ],
"tools/wptserve/wptserve/config.py": [ "tools/wptserve/wptserve/config.py": [
"aadcbb9b5a635d9b254352f07dda96be6d3cb006", "e11cae137b9c51d86774001ead71938fd55c0555",
"support" "support"
], ],
"tools/wptserve/wptserve/constants.py": [ "tools/wptserve/wptserve/constants.py": [
@ -681614,6 +681976,10 @@
"0614364e9756ec933ca842b97b1dbd31489b35ee", "0614364e9756ec933ca842b97b1dbd31489b35ee",
"testharness" "testharness"
], ],
"webrtc/RTCDtlsTransport-state.html": [
"283ab087f703e5cd43df92d6240ad7d7babe4f2c",
"testharness"
],
"webrtc/RTCIceCandidate-constructor.html": [ "webrtc/RTCIceCandidate-constructor.html": [
"9842593a83c5330e0ed19bedac9f6c9908362c41", "9842593a83c5330e0ed19bedac9f6c9908362c41",
"testharness" "testharness"
@ -683259,7 +683625,7 @@
"support" "support"
], ],
"webusb/resources/usb-helpers.js": [ "webusb/resources/usb-helpers.js": [
"0abca1691a3aa320a82672a5f776abbfe19775b1", "67d907d2c2f8ea056590a3735feb6044814de952",
"support" "support"
], ],
"webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ "webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
@ -688411,7 +688777,7 @@
"testharness" "testharness"
], ],
"xhr/formdata.htm": [ "xhr/formdata.htm": [
"4390af4a00f21f201bd4db9e4e7197bd27decac3", "1f69de4e2813a1bbcca9ed37cb76d783d575c7c6",
"testharness" "testharness"
], ],
"xhr/getallresponseheaders-cookies.htm": [ "xhr/getallresponseheaders-cookies.htm": [

View file

@ -0,0 +1,2 @@
[floats-in-table-caption-001.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[line-height-204.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[mix-blend-mode-paragraph.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[background-image-first-line.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[background-repeat-round-roundup.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[line-break-normal-018.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[line-break-strict-018.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-transform-full-size-kana-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[trailing-ideographic-space-004.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[word-break-keep-all-006.html]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

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

View file

@ -2,6 +2,3 @@
[The root element is the last element returned for valid queries] [The root element is the last element returned for valid queries]
expected: FAIL expected: FAIL
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -1,2 +1,2 @@
[parser-sets-attributes-and-children.html] [parser-sets-attributes-and-children.html]
expected: CRASH expected: TIMEOUT

View file

@ -0,0 +1,7 @@
[post-patch.html]
[HTTP cache uses content after POST request with response containing Content-Location and cache-allowing header]
expected: FAIL
[HTTP cache uses content after PATCH request with response containing Content-Location and cache-allowing header]
expected: FAIL

View file

@ -1,4 +0,0 @@
[006.html]
[Link with onclick form submit and href navigation ]
expected: FAIL

View file

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

View file

@ -1404,7 +1404,7 @@
expected: PASS expected: PASS
[HTMLMediaElement interface: attribute playbackRate] [HTMLMediaElement interface: attribute playbackRate]
expected: PASS expected: PASS
[HTMLMediaElement interface: attribute played] [HTMLMediaElement interface: attribute played]
expected: FAIL expected: FAIL
@ -6079,6 +6079,21 @@
[html interfaces] [html interfaces]
expected: FAIL expected: FAIL
[Window interface: attribute onformdata]
expected: FAIL
[Window interface: window must inherit property "onformdata" with the proper type]
expected: FAIL
[Document interface: new Document() must inherit property "onformdata" with the proper type]
expected: FAIL
[Document interface: iframe.contentDocument must inherit property "onformdata" with the proper type]
expected: FAIL
[Document interface: attribute onformdata]
expected: FAIL
[interfaces.https.html?include=HTML.*] [interfaces.https.html?include=HTML.*]
[HTML IDL tests] [HTML IDL tests]
@ -6774,12 +6789,6 @@
[HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type] [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type]
expected: FAIL expected: FAIL
[HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type] [HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type]
expected: FAIL expected: FAIL
@ -6816,12 +6825,6 @@
[HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type] [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type]
expected: FAIL expected: FAIL
[HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type] [HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type]
expected: FAIL expected: FAIL
@ -6858,12 +6861,6 @@
[HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type] [HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type]
expected: FAIL expected: FAIL
[HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type]
expected: PASS
[HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type] [HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type]
expected: FAIL expected: FAIL
@ -6897,12 +6894,6 @@
[HTMLMediaElement interface: operation getStartDate()] [HTMLMediaElement interface: operation getStartDate()]
expected: FAIL expected: FAIL
[HTMLMediaElement interface: attribute defaultPlaybackRate]
expected: PASS
[HTMLMediaElement interface: attribute playbackRate]
expected: PASS
[HTMLMediaElement interface: attribute seekable] [HTMLMediaElement interface: attribute seekable]
expected: FAIL expected: FAIL
@ -9396,6 +9387,12 @@
[html interfaces] [html interfaces]
expected: FAIL expected: FAIL
[HTMLElement interface: attribute onformdata]
expected: FAIL
[HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type]
expected: FAIL
[interfaces.https.html?exclude=(Document|Window|HTML.*)] [interfaces.https.html?exclude=(Document|Window|HTML.*)]
[HTML IDL tests] [HTML IDL tests]
@ -10970,3 +10967,33 @@
[ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type] [ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type]
expected: FAIL expected: FAIL
[FormDataEvent interface object name]
expected: FAIL
[FormDataEvent interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[FormDataEvent interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[FormDataEvent interface: attribute formData]
expected: FAIL
[Stringification of new FormDataEvent("formdata", { formData: new FormData() })]
expected: FAIL
[FormDataEvent interface: new FormDataEvent("formdata", { formData: new FormData() }) must inherit property "formData" with the proper type]
expected: FAIL
[FormDataEvent interface: existence and properties of interface object]
expected: FAIL
[FormDataEvent interface object length]
expected: FAIL
[FormDataEvent must be primary interface of new FormDataEvent("formdata", { formData: new FormData() })]
expected: FAIL
[FormDataEvent interface: existence and properties of interface prototype object]
expected: FAIL

View file

@ -0,0 +1,166 @@
[table-attribute.html]
[table tfoot align attribute center is correct]
expected: FAIL
[table th align attribute middle is correct]
expected: FAIL
[thead background attribute is correct]
expected: FAIL
[table thead align attribute right is correct]
expected: FAIL
[table td align attribute justify is correct]
expected: FAIL
[table thead align attribute justify is correct]
expected: FAIL
[tr height attribute pixel is correct]
expected: FAIL
[table thead align attribute middle is correct]
expected: FAIL
[table tr align attribute center is correct]
expected: FAIL
[table tbody align attribute justify is correct]
expected: FAIL
[table_th height attribute percentage is correct]
expected: FAIL
[tbody bgcolor attribute is correct]
expected: FAIL
[thead bgcolor attribute is correct]
expected: FAIL
[tr bgcolor attribute is correct]
expected: FAIL
[table th align attribute left is correct]
expected: FAIL
[table tbody align attribute right is correct]
expected: FAIL
[table thead align attribute left is correct]
expected: FAIL
[table bgcolor attribute is correct]
expected: FAIL
[table tr align attribute justify is correct]
expected: FAIL
[th default align attribute is center]
expected: FAIL
[th background attribute is correct]
expected: FAIL
[td bgcolor attribute is correct]
expected: FAIL
[table height attribute 110% is correct]
expected: FAIL
[th height attribute pixel is correct]
expected: FAIL
[table th align attribute center is correct]
expected: FAIL
[table tr align attribute middle is correct]
expected: FAIL
[table tfoot align attribute middle is correct]
expected: FAIL
[table bordercolor attribute is correct]
expected: FAIL
[table th align attribute right is correct]
expected: FAIL
[table cellpadding attribute is correct]
expected: FAIL
[table_td height attribute percentage is correct]
expected: FAIL
[tr background attribute is correct]
expected: FAIL
[table tr align attribute left is correct]
expected: FAIL
[th bgcolor attribute is correct]
expected: FAIL
[table height attribute pixel is correct]
expected: FAIL
[table col width attribute is correct]
expected: FAIL
[td height attribute pixel is correct]
expected: FAIL
[table tfoot align attribute left is correct]
expected: FAIL
[td background attribute is correct]
expected: FAIL
[table tfoot align attribute right is correct]
expected: FAIL
[table tfoot align attribute justify is correct]
expected: FAIL
[table thead align attribute center is correct]
expected: FAIL
[table tbody align attribute middle is correct]
expected: FAIL
[table tbody align attribute left is correct]
expected: FAIL
[tbody background attribute is correct]
expected: FAIL
[table tbody align attribute center is correct]
expected: FAIL
[table th align attribute justify is correct]
expected: FAIL
[table td align attribute middle is correct]
expected: FAIL
[tfoot background attribute is correct]
expected: FAIL
[table cellspacing attribute is correct]
expected: FAIL
[tfoot bgcolor attribute is correct]
expected: FAIL
[table height attribute 90% is correct]
expected: FAIL
[table tr align attribute right is correct]
expected: FAIL
[table_tr height attribute percentage is correct]
expected: FAIL
[table background attribute is correct]
expected: FAIL

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
type: testharness type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL expected: NOTRUN

View file

@ -16,18 +16,9 @@
[picture: source (max-width:500px) broken image, img valid image, resize to narrow] [picture: source (max-width:500px) broken image, img valid image, resize to narrow]
expected: FAIL 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] [img (srcset 1 cand) valid image, resize to narrow]
expected: FAIL 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] [picture: same URL in source (max-width:500px) and img, resize to narrow]
expected: FAIL expected: FAIL

View file

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

View file

@ -0,0 +1,7 @@
[FormDataEvent.window.html]
[Successful FormDataEvent constructor]
expected: FAIL
[Failing FormDataEvent constructor]
expected: FAIL

View file

@ -8,3 +8,15 @@
[The button cannot be setted if it is not a submitter.] [The button cannot be setted if it is not a submitter.]
expected: FAIL expected: FAIL
[Entries added to "formData" IDL attribute should be submitted.]
expected: FAIL
["formData" IDL attribute should have entries for form-associated elements in the first event handler, and the second handler can read entries set by the first handler.]
expected: FAIL
["formdata" event bubbles, and is not cancelable.]
expected: FAIL
["formdata" event bubbles in an orphan tree.]
expected: FAIL

View file

@ -0,0 +1,4 @@
[form-submission-algorithm.html]
[If constructing entry list flag of form is true, then return]
expected: FAIL

View file

@ -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

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -1,4 +0,0 @@
[aborted-parser.window.html]
[document.open() after parser is aborted]
expected: FAIL

View file

@ -378,3 +378,12 @@
[onwaiting: the default value must be null] [onwaiting: the default value must be null]
expected: FAIL expected: FAIL
[onformdata: the content attribute must be compiled into a function as the corresponding property]
expected: FAIL
[onformdata: must be on the appropriate locations for GlobalEventHandlers]
expected: FAIL
[onformdata: the default value must be null]
expected: FAIL

View file

@ -69,3 +69,12 @@
[shadowed error (window)] [shadowed error (window)]
expected: FAIL expected: FAIL
[not shadowed formdata (window)]
expected: FAIL
[not shadowed formdata (document.body)]
expected: FAIL
[not shadowed formdata (document.createElement("body"))]
expected: FAIL

View file

@ -62,3 +62,12 @@
[not shadowed auxclick (document.createElement("frameset"))] [not shadowed auxclick (document.createElement("frameset"))]
expected: FAIL expected: FAIL
[not shadowed formdata (document.body)]
expected: FAIL
[not shadowed formdata (document.createElement("frameset"))]
expected: FAIL
[not shadowed formdata (window)]
expected: FAIL

View file

@ -25,3 +25,10 @@
[securitypolicyviolation is unaffected on a windowless frameset] [securitypolicyviolation is unaffected on a windowless frameset]
expected: FAIL expected: FAIL
[formdata is unaffected on a windowless frameset]
expected: FAIL
[formdata is unaffected on a windowless body]
expected: FAIL

View file

@ -0,0 +1,5 @@
[promise-rejection-events.html]
expected: TIMEOUT
[rejectionhandled is dispatched from a queued task, and not immediately]
expected: TIMEOUT

View file

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

View file

@ -1,4 +1,5 @@
[005.html] [005.html]
expected: ERROR
[dedicated worker in shared worker in dedicated worker] [dedicated worker in shared worker in dedicated worker]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,7 @@
[formdata.htm]
[|new FormData()| in formdata event handler should throw]
expected: FAIL
[Newly created FormData contains entries added to "formData" IDL attribute of FormDataEvent.]
expected: FAIL

View file

@ -263,8 +263,9 @@ function requestDeviceWithTrustedClick() {
// Calls requestLEScan() in a context that's 'allowed to show a popup'. // Calls requestLEScan() in a context that's 'allowed to show a popup'.
function requestLEScanWithTrustedClick() { function requestLEScanWithTrustedClick() {
let args = arguments;
return callWithTrustedClick( return callWithTrustedClick(
() => navigator.bluetooth.requestLEScan.apply(navigator.bluetooth)); () => navigator.bluetooth.requestLEScan.apply(navigator.bluetooth, args));
} }
// errorUUID(alias) returns a UUID with the top 32 bits of // errorUUID(alias) returns a UUID with the top 32 bits of

View file

@ -3,9 +3,9 @@
<head> <head>
<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc' <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-hashes' 'nonce-abc'
'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=';"> 'sha256-WZYVPzLjoxd1Cbc8gcx07ChlPmT3WP+KxkOiY0s4h8g=';">
<!-- <!--
'sha256-r5W8SQIDMTbMxAjJ7KzCzFT38dwBy7Y5KF5B+20009g=' ==> 'javascript:t1.done();' 'sha256-WZYVPzLjoxd1Cbc8gcx07ChlPmT3WP+KxkOiY0s4h8g=' ==> 'javascript:opener.t1.done();'
--> -->
<script src='/resources/testharness.js' nonce='abc'></script> <script src='/resources/testharness.js' nonce='abc'></script>
<script src='/resources/testharnessreport.js' nonce='abc'></script> <script src='/resources/testharnessreport.js' nonce='abc'></script>
@ -13,7 +13,7 @@
<body> <body>
<div id='log'></div> <div id='log'></div>
<a target="_blank" href='javascript:t1.done();' id='test'> <a target="_blank" href='javascript:opener.t1.done();' id='test'>
<script nonce='abc'> <script nonce='abc'>
var t1 = async_test("Test that the javascript: src is allowed to run"); var t1 = async_test("Test that the javascript: src is allowed to run");

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<title>CSS Test: background-image applicability to ::first-letter</title>
<link rel="help" href="http://www.w3.org/TR/css3-background/">
<link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo">
<link rel="match" href="reference/background-image-first-line-ref.html">
<meta name="flags" content="ahem image">
<meta name="assert" content="background-image applicability to ::first-line">
<style type="text/css">
#content {
color: transparent;
font: 100px Ahem;
}
#content::first-line {
background-image: url("support/cat.png"); /* 98 w. by 99px h. */
background-repeat: no-repeat;
}
</style>
<p>Test passes if cat image is visible.</p>
<div id="content">X</div>

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<meta name="flags" content="ahem image">
<style type="text/css">
#content {
color: transparent;
font: 100px Ahem;
background-image: url("../support/cat.png"); /* 98 w. by 99px h. */
background-repeat: no-repeat;
}
</style>
<p>Test passes if cat image is visible.</p>
<div id="content">X</div>

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: Add inline child after marker</title>
<p>The test passes if you see the list marker followed by the text "inline" and "axxx" in a line below.</p>
<ul>
<li>
<span>inline</span>
<div style="overflow:hidden;">
<span>a</span>xxx
</div>
</li>
</ul>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: Add inline child after marker</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel=match href="add-inline-child-after-marker-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=344941 -->
<p>The test passes if you see the list marker followed by the text "inline" and "axxx" in a line below.</p>
<ul>
<li id="liTarget">
<div id="divTarget" style="overflow:hidden;">
<span>a</span>xxx
</div>
</li>
</ul>
<script>
document.body.offsetHeight;
var new_span=document.createElement("span");
var text_node=document.createTextNode("inline");
new_span.appendChild(text_node);
var div_target=document.getElementById("divTarget");
var li_target=document.getElementById("liTarget");
li_target.insertBefore(new_span,div_target);
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test inside and outside switch</title>
<p>The test passes if the first li is inside and the second one is outside.</p>
<ul>
<li style="list-style-position: inside;">
<div style="overflow:hidden;">
outside to inside
</div>
</li>
</ul>
<ul>
<li style="list-style-position: outside;">
<div style="overflow:hidden;">
inside to outside
</div>
</li>
</ul>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test inside and outside switch</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel=match href="li-with-overflow-hidden-change-list-style-position-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=344941 -->
<p>The test passes if the first li is inside and the second one is outside.</p>
<ul>
<li id="outSide" style="list-style-position: outside;">
<div style="overflow:hidden;">
outside to inside
</div>
</li>
</ul>
<ul>
<li id="inSide" style="list-style-position: inside;">
<div style="overflow:hidden;">
inside to outside
</div>
</li>
</ul>
<script>
document.body.offsetHeight;
var outside_li=document.getElementById("outSide");
outside_li.style.listStylePosition = "inside";
document.body.offsetHeight;
var inside_li=document.getElementById("inSide");
inside_li.style.listStylePosition = "outside";
document.body.offsetHeight;
</script>

View file

@ -0,0 +1,33 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with textarea as its first child</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=767408 -->
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
textarea {
border: 0px;
padding: 0px;
}
</style>
<div id="log"></div>
<ul>
<li id="target">
<textarea rows="3" cols="20" style="display:block; height:45px">
hello
</textarea>
</li>
</ul>
<script>
test(function() {
var height = document.getElementById("target").offsetHeight;
assert_equals(height, 45, "the height of li should be 45px, and no extra line generated")
}, "list and block textarea");
</script>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with flex as its first child</title>
<p>There should be no extra line generated between the marker and the flex.</p>
<ul>
<li>
<div style="border: 1px black solid;">
<div style="display: inline-flex; align-items: flex-end; height: 200px;">
<span style="line-height: 50px">text</span>
</div>
</div>
</li>
</ul>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with flex as its first child</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel=match href="list-and-flex-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=767408 -->
<p>There should be no extra line generated between the marker and the flex.</p>
<ul>
<li>
<div style="border: 1px black solid;">
<div style="display: flex; align-items: flex-end; height: 200px;">
<span style="line-height: 50px">text</span>
</div>
</div>
</li>
</ul>

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with grid as its first child</title>
<p>There should be no extra line generated between the marker and the grid.</p>
<ul>
<li>
<div style="display: inline-grid; grid-template-rows: 100px; align-items: center;">
<div>grid</div>
</div>
</li>
</ul>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with grid as its first child</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel=match href="list-and-grid-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=767408 -->
<p>There should be no extra line generated between the marker and the grid.</p>
<ul>
<li>
<div style="display: grid; grid-template-rows: 100px; align-items: center;">
<div>grid</div>
</div>
</li>
</ul>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test the margin collapse of marker</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=767408 -->
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<ul id="target" style="margin-top:100px;">
<li>
<div style="overflow:hidden; margin-top:100px; height:25px;"><a href="#">xxx</a></div>
</li>
</ul>
<script>
test(function() {
var height = document.getElementById("target").clientHeight;
assert_equals(height, 25, "the height of ul should be 25px")
}, "list and margin collapse");
</script>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with root writing-mode as its first child</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=767408 -->
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<ul>
<li id="target">
<div style="writing-mode: vertical-lr; height: 45px;">a b c</div>
</li>
</ul>
<script>
test(function() {
var height = document.getElementById("target").offsetHeight;
assert_equals(height, 45, "the height of li should be 45px, and no extra line generated")
}, "list and writing-mode");
</script>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with overflow:hidden and line-height firstchild</title>
<p>This test passes if there is a marker for each li and followed by "text" in the same line.</p>
<ul>
<li>
<div style="line-height:100px;">
<span>text</span>
</div>
</li>
</ul>
<ul>
<li style="list-style-image: url(resources/white.gif);">
<div style="line-height:100px;">text</div>
</li>
</ul>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with overflow:hidden and line-height firstchild</title>
<link rel=help href="https://www.w3.org/TR/CSS22/generate.html#lists">
<link rel=match href="list-marker-with-lineheight-and-overflow-hidden-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=344941 -->
<p>This test passes if there is a marker for each li and followed by "text" in the same line.</p>
<ul>
<li>
<div style="overflow:hidden; line-height:100px;">
<span>text</span>
</div>
</li>
</ul>
<ul>
<li style="list-style-image: url(resources/white.gif);">
<div style="overflow:hidden; line-height:100px;">text</div>
</li>
</ul>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with firstchild changing display</title>
<style>
li { border: 3px solid black; margin: 3px; }
img { display: block; }
</style>
<ul>
<li>
<a href="#"><img src="./resources/white.gif" width=32 height=32 /></a>
Some other text
</li>
</ul>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Lists: test list with firstchild changing display</title>
<link rel=help href="https://github.com/w3c/csswg-drafts/issues/2787">
<link rel=match href="list-with-image-display-changed-001-ref.html">
<!-- https://bugs.chromium.org/p/chromium/issues/detail?id=715288 -->
<meta name="assert" content="
After the display of img being changed from block to inline, then back to block,
the final position of marker should be the same as the beginning." />
<style>
li { border: 3px solid black; margin: 3px; }
img { display: block; }
</style>
<ul>
<li>
<a href="#"><img src="./resources/white.gif" width=32 height=32 /></a>
Some other text
</li>
</ul>
<script>
document.body.offsetTop;
var img = document.querySelector('a img');
img.style.display = 'inline';
img.offsetWidth;
img.style.display = 'block';
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

View file

@ -0,0 +1,17 @@
<!doctype html>
<title>CSS Test Reference</title>
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<style>
body, html {
margin: 0;
padding: 0;
background: green;
}
.purple-square {
background: purple;
width: 50px;
height: 50px;
}
</style>
<div class="purple-square"></div>

View file

@ -0,0 +1,38 @@
<!doctype html>
<title>CSS Test: nested clip-path() inside the same reference frame with position: fixed</title>
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1501111">
<link rel="help" href="https://drafts.fxtf.org/css-masking/#the-clip-path">
<link rel="match" href="clip-path-fixed-nested-ref.html">
<style>
body, html {
margin: 0;
padding: 0;
}
.outer-clip {
height: 100vh;
clip-path: inset(0 0 0 0);
background: green;
}
.fixed {
position: fixed;
}
.inner-clip {
height: 50px;
width: 50px;
clip-path: inset(0 0 0 0);
}
.inner-clip-contents {
height: 100px;
width: 100px;
background: purple;
}
</style>
<div class="outer-clip">
<div class="fixed">
<div class="inner-clip">
<div class="inner-clip-contents"></div>
</div>
</div>
</div>

View file

@ -0,0 +1,23 @@
<!doctype html>
<html>
<head>
<title>Should not crash with split inline abspos container, and flex ancestor</title>
<link rel="help" href="https://www.w3.org/TR/css-position-3/#def-cb">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>test(()=>{})</script>
</head>
<!-- There should be a green square below -->
<body style="font-family: Ahem;font-size: 20px;">
<div id="container">
<span id="split" style="position:relative;color:green">
AAA
<div style="display:flex">
<a>
<span id="target" style="position:absolute;color:green;top:20px">XXX</span></a>
</div>
ZZZ
</span>
</div>
</body>
</html>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
#expander {
margin-bottom: 50px;
}
#no {
overflow-anchor: none;
}
#spacing {
margin-bottom: 300vh;
}
</style>
<span>out of view</span>
<div id="expander"></div>
<span id="no">excluded subtree <span>[nested inline]</span></span>
<div id="spacing"></div>
<script>
// Tests that an inline element can be an excluded subtree.
test(() => {
scrollTo(0, 50);
document.querySelector('#expander').style = "margin-bottom: 100px";
assert_equals(document.scrollingElement.scrollTop, 50,
"Scroll anchoring should not anchor within the span.");
scrollTo(0, 0);
});
</script>

View file

@ -45,7 +45,12 @@
const get_url = (mime) => { const get_url = (mime) => {
// www1 is cross-origin, so the HTTP response is CORB-eligible --> // www1 is cross-origin, so the HTTP response is CORB-eligible -->
url = "http://{{domains[www1]}}:{{ports[http][0]}}" //
// TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
// https://crbug.com/891872 are fixed, we should use a cross-*origin*
// rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
// See also https://crbug.com/918660 for more context.
url = "http://{{hosts[alt][www1]}}:{{ports[http][0]}}"
url = url + "/fetch/nosniff/resources/image.py" url = url + "/fetch/nosniff/resources/image.py"
if (mime != null) { if (mime != null) {
url += "?type=" + encodeURIComponent(mime) url += "?type=" + encodeURIComponent(mime)

View file

@ -7,5 +7,11 @@
<meta charset="utf-8"> <meta charset="utf-8">
<!-- Reference page uses same-origin resources, which are not CORB-eligible. --> <!-- Reference page uses same-origin resources, which are not CORB-eligible. -->
<link rel="match" href="img-png-mislabeled-as-html-nosniff.tentative.sub-ref.html"> <link rel="match" href="img-png-mislabeled-as-html-nosniff.tentative.sub-ref.html">
<!-- www1 is cross-origin, so the HTTP response is CORB-eligible --> <!-- www1 is cross-origin, so the HTTP response is CORB-eligible
<img src="http://{{domains[www1]}}:{{ports[http][0]}}/fetch/corb/resources/png-mislabeled-as-html-nosniff.png">
TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
https://crbug.com/891872 are fixed, we should use a cross-*origin*
rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
See also https://crbug.com/918660 for more context.
-->
<img src="http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/png-mislabeled-as-html-nosniff.png">

View file

@ -17,8 +17,14 @@ async_test(function(t) {
}); });
</script> </script>
<!-- www1 is cross-origin, so the HTTP response is CORB-eligible --> <!-- www1 is cross-origin, so the HTTP response is CORB-eligible
TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
https://crbug.com/891872 are fixed, we should use a cross-*origin*
rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
See also https://crbug.com/918660 for more context.
-->
<link rel="preload" as="image" <link rel="preload" as="image"
onerror="window.preloadErrorEvent()" onerror="window.preloadErrorEvent()"
onload="window.preloadLoadEvent()" onload="window.preloadLoadEvent()"
href="http://{{domains[www1]}}:{{ports[http][0]}}/fetch/corb/resources/png-mislabeled-as-html-nosniff.png"> href="http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/png-mislabeled-as-html-nosniff.png">

View file

@ -24,7 +24,12 @@ async_test(function(t) {
}); });
// www1 is cross-origin, so the HTTP response is CORB-eligible. // www1 is cross-origin, so the HTTP response is CORB-eligible.
script.src = 'http://{{domains[www1]}}:{{ports[http][0]}}/fetch/corb/resources/html-correctly-labeled.html'; //
// TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
// https://crbug.com/891872 are fixed, we should use a cross-*origin*
// rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
// See also https://crbug.com/918660 for more context.
script.src = 'http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/html-correctly-labeled.html';
document.body.appendChild(script) document.body.appendChild(script)
}, "CORB-blocked script has no syntax errors"); }, "CORB-blocked script has no syntax errors");
</script> </script>

View file

@ -68,7 +68,12 @@ function test(mime_type, body) {
}); });
// www1 is cross-origin, so the HTTP response is CORB-eligible. // www1 is cross-origin, so the HTTP response is CORB-eligible.
var src_prefix = "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/corb/resources/sniffable-resource.py"; //
// TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
// https://crbug.com/891872 are fixed, we should use a cross-*origin*
// rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
// See also https://crbug.com/918660 for more context.
var src_prefix = "http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/sniffable-resource.py";
script.src = src_prefix + "?type=" + mime_type + "&body=" + encodeURIComponent(body); script.src = src_prefix + "?type=" + mime_type + "&body=" + encodeURIComponent(body);
document.body.appendChild(script) document.body.appendChild(script)
}, "CORB-blocks '" + mime_type + "' that starts with the following JSON parser breaker: " + body); }, "CORB-blocks '" + mime_type + "' that starts with the following JSON parser breaker: " + body);

View file

@ -0,0 +1,57 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>HTTP Cache - Caching POST and PATCH responses</title>
<meta name="help" href="https://fetch.spec.whatwg.org/#request">
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="http-cache.js"></script>
</head>
<body>
<script>
var tests = [
{
name: "HTTP cache uses content after PATCH request with response containing Content-Location and cache-allowing header",
requests: [
{
request_method: "PATCH",
request_body: "abc",
response_status: [200, "OK"],
response_headers: [
['Cache-Control', "private, max-age=1000"],
['Content-Location', ""]
],
response_body: "abc"
},
{
expected_type: "cached"
}
]
},
{
name: "HTTP cache uses content after POST request with response containing Content-Location and cache-allowing header",
requests: [
{
request_method: "POST",
request_body: "abc",
response_status: [200, "OK"],
response_headers: [
['Cache-Control', "private, max-age=1000"],
['Content-Location', ""]
],
response_body: "abc"
},
{
expected_type: "cached"
}
]
}
];
run_tests(tests);
</script>
</body>
</html>

View file

@ -46,7 +46,10 @@ def handle_test(uuid, request, response):
now = time.time() now = time.time()
for header in config.get('response_headers', []): for header in config.get('response_headers', []):
if header[0].lower() in LOCATIONHDRS: # magic locations if header[0].lower() in LOCATIONHDRS: # magic locations
header[1] = "%s&target=%s" % (request.url, header[1]) if (len(header[1]) > 0):
header[1] = "%s&target=%s" % (request.url, header[1])
else:
header[1] = request.url
if header[0].lower() in DATEHDRS and isinstance(header[1], int): # magic dates if header[0].lower() in DATEHDRS and isinstance(header[1], int): # magic dates
header[1] = http_date(now, header[1]) header[1] = http_date(now, header[1])
response.headers.set(header[0], header[1]) response.headers.set(header[0], header[1])

View file

@ -37,7 +37,7 @@ const waitForLoad = new Promise(resolve => { addEventListener('load', resolve);
idl_test( idl_test(
['html'], ['html'],
['SVG', 'cssom', 'touch-events', 'uievents', 'dom'], ['SVG', 'cssom', 'touch-events', 'uievents', 'dom', 'xhr'],
async idlArray => { async idlArray => {
idlArray.add_objects({ idlArray.add_objects({
NodeList: ['document.getElementsByName("name")'], NodeList: ['document.getElementsByName("name")'],
@ -174,6 +174,7 @@ idl_test(
HTMLProgressElement: ['document.createElement("progress")'], HTMLProgressElement: ['document.createElement("progress")'],
HTMLMeterElement: ['document.createElement("meter")'], HTMLMeterElement: ['document.createElement("meter")'],
ValidityState: ['document.createElement("input").validity'], ValidityState: ['document.createElement("input").validity'],
FormDataEvent: ['new FormDataEvent("formdata", { formData: new FormData() })'],
HTMLDetailsElement: ['document.createElement("details")'], HTMLDetailsElement: ['document.createElement("details")'],
HTMLMenuElement: ['document.createElement("menu")'], HTMLMenuElement: ['document.createElement("menu")'],
Window: ['window'], Window: ['window'],

View file

@ -0,0 +1,194 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Table attribute test</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#tables-2">
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.div_tbl table {
width: 400px;
height: 300px;
border-spacing: 0px;
}
.div_tbl td {
padding: 0px;
}
.div_tbl th {
padding: 0px;
}
.div_200 {
height: 200px;
}
</style>
<div id="div">
<table id="table">
<thead id="thead">
<tr>
<th id="th">Month</th>
<th>Savings</th>
</tr>
</thead>
<tbody id="tbody">
<tr id="tr">
<td>January</td>
<td>$60</td>
</tr>
<tr>
<td id="td">February</td>
<td>$80</td>
</tr>
</tbody>
<tfoot id="tfoot">
<tr>
<td>Sum</td>
<td>$140</td>
</tr>
</tfoot>
</table>
</div>
<script>
const ids = ["table", "thead", "tbody", "tfoot", "tr", "td", "th"];
const alignIds = ["thead", "tbody", "tfoot", "tr", "td", "th"];
const heightIds = ["tr", "td", "th"];
const div = document.getElementById("div");
const table = document.getElementById("table");
const aligns = [
["center", "center"],
["middle", "center"],
["left", "left"],
["right", "right"],
["justify", "justify"]
];
function commonTest(id, attr, value, cssProp, expected) {
test(t => {
let elem = document.getElementById(id);
t.add_cleanup(() => {
elem.removeAttribute(attr);
});
elem.setAttribute(attr, value);
let css = window.getComputedStyle(elem, null).getPropertyValue(cssProp);
assert_equals(css, expected);
}, `${id} ${attr} attribute is correct`);
}
function commonAlignTest(id, attr, value, cssProp, expected) {
test(t => {
let elem = document.getElementById(id);
t.add_cleanup(() => {
elem.removeAttribute(attr);
});
elem.setAttribute(attr, value);
let css = window.getComputedStyle(elem, null).getPropertyValue(cssProp);
assert_equals(css, expected);
}, `table ${id} align attribute ${value} is correct`);
}
function commonHeightTest(id, attr, value, cssProp, expected, type="", divClass) {
test(t => {
let elem = document.getElementById(id);
t.add_cleanup(() => {
elem.removeAttribute(attr);
div.classList.remove(divClass);
});
elem.setAttribute(attr, value);
div.classList.add(divClass);
let css = window.getComputedStyle(elem, null).getPropertyValue(cssProp);
assert_equals(css, expected);
}, `${id} ${attr} attribute ${type} is correct`);
}
// table#bordercolor
commonTest("table", "bordercolor", "red", "border-color", "rgb(255, 0, 0)");
// table#cellspacing
commonTest("table", "cellspacing", "10", "border-spacing", "10px 10px", "10");
// {table, thead, body, tfoot, tr, td, th}#background
// {table, thead, body, tfoot, tr, td, th}#bgcolor
const url = new URL('/images/threecolors.png', window.location.href).href;
for (let id of ids) {
commonTest(id, "background", "/images/threecolors.png", "background-image", `url(\"${url}\")`);
commonTest(id, "bgcolor", "red", "background-color", "rgb(255, 0, 0)");
}
// {thead, body, tfoot, tr, td, th}#align#{center, middle, left, right, justify}
for (let id of alignIds) {
for (let [value, expected] of aligns) {
commonAlignTest(id, "align", value, "text-align", expected);
}
}
// {tr, td, th}#height#pixel
for (let id of heightIds) {
commonHeightTest(id, "height", "60", "height", "60px", "pixel", "div_tbl");
}
// {tr, td, th}#height#percentage
let tbl = document.createElement("table");
tbl.innerHTML = '<tr id="table_tr"><th id="table_th"></th></tr><tr><td id="table_td"></td></tr>';
div.appendChild(tbl);
const heightPercIds = ["table_tr", "table_td", "table_th"];
for (let id of heightPercIds) {
commonHeightTest(id, "height", "20%", "height", "60px", "percentage", "div_tbl");
}
div.removeChild(tbl);
// table#height#{pixel, percentage}
commonHeightTest("table", "height", "180", "height", "180px", "pixel", "div_200");
commonHeightTest("table", "height", "90%", "height", "180px", "90%", "div_200");
commonHeightTest("table", "height", "110%", "height", "220px", "110%", "div_200");
// table#cellpadding
test(t => {
t.add_cleanup(() => {
table.removeAttribute("cellpadding");
});
table.setAttribute("cellpadding", "10");
let th = document.getElementById("th");
let th_css = window.getComputedStyle(th, null).getPropertyValue("padding");
assert_equals(th_css, "10px");
let td = document.getElementById("td");
let td_css = window.getComputedStyle(td, null).getPropertyValue("padding");
assert_equals(td_css, "10px");
}, "table cellpadding attribute is correct");
// th default text-align property is center
test(t => {
let elem = document.getElementById("th");
let css = window.getComputedStyle(elem, null).getPropertyValue("text-align");
assert_equals(css, "center");
}, "th default align attribute is center");
// col#width#{pixel, percentage}
test(t => {
let colgroup = document.createElement("colgroup");
let col1 = document.createElement("col");
let col2 = document.createElement("col");
t.add_cleanup(() => {
table.removeChild(colgroup);
div.classList.remove("div_tbl");
});
colgroup.appendChild(col1);
colgroup.appendChild(col2);
table.insertBefore(colgroup, table.firstChild);
div.classList.add("div_tbl");
col1.setAttribute("width", "100");
let td = document.getElementById("td");
let css = window.getComputedStyle(td, null).getPropertyValue("width");
assert_equals(css, "100px");
col1.setAttribute("width", "50%");
css = window.getComputedStyle(td, null).getPropertyValue("width");
assert_equals(css, "200px");
}, "table col width attribute is correct");
</script>

View file

@ -1,7 +1,13 @@
["<link>", "@import"].forEach(linkType => { ["<link>", "@import"].forEach(linkType => {
[ [
["same-origin", "resources/css.py"], ["same-origin", "resources/css.py"],
["cross-origin", get_host_info().HTTP_REMOTE_ORIGIN + "/html/semantics/document-metadata/the-link-element/resources/css.py"]
// TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
// https://crbug.com/891872 are fixed, we should use a cross-*origin* rather
// than cross-*site* URL below (e.g. s/ HTTP_NOTSAMESITE_ORIGIN /
// HTTP_REMOTE_ORIGIN /g). See also https://crbug.com/918660 for more
// context.
["cross-origin", get_host_info().HTTP_NOTSAMESITE_ORIGIN + "/html/semantics/document-metadata/the-link-element/resources/css.py"]
].forEach(originType => { ].forEach(originType => {
["no Content-Type", "wrong Content-Type", "broken Content-Type"].forEach(contentType => { ["no Content-Type", "wrong Content-Type", "broken Content-Type"].forEach(contentType => {
["no nosniff", "nosniff"].forEach(nosniff => { ["no nosniff", "nosniff"].forEach(nosniff => {

View file

@ -0,0 +1,21 @@
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-formdataevent-interface
test(() => {
let fd = new FormData();
let typeError = new TypeError();
assert_throws(typeError, () => { new FormDataEvent() }, '0 arguments');
assert_throws(typeError, () => { new FormDataEvent('foo') }, '1 argument');
assert_throws(typeError, () => { new FormDataEvent(fd, fd) }, '2 invalid arguments');
assert_throws(typeError, () => { new FormDataEvent('foo', null) }, 'Null dictionary');
assert_throws(typeError, () => { new FormDataEvent('foo', undefined) }, 'Undefined dictionary');
assert_throws(typeError, () => { new FormDataEvent('foo', { formData: null }) }, 'Null formData');
assert_throws(typeError, () => { new FormDataEvent('foo', { formData: undefined }) }, 'Undefined formData');
assert_throws(typeError, () => { new FormDataEvent('foo', { formData: 'bar' }) }, 'Wrong type of formData');
}, 'Failing FormDataEvent constructor');
test(() => {
let fd = new FormData();
let event = new FormDataEvent('bar', { formData: fd, bubbles: true });
assert_equals(event.formData, fd);
assert_true(event.bubbles);
}, 'Successful FormDataEvent constructor');

View file

@ -5,6 +5,7 @@
<link rel="help" href="https://fetch.spec.whatwg.org/#concept-bodyinit-extract"> <link rel="help" href="https://fetch.spec.whatwg.org/#concept-bodyinit-extract">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="./resources/targetted-form.js"></script>
<iframe name="frame1" id="frame1"></iframe> <iframe name="frame1" id="frame1"></iframe>
<form accept-charset="iso-8859-1" target="frame1" action="/common/blank.html" id="form1"> <form accept-charset="iso-8859-1" target="frame1" action="/common/blank.html" id="form1">
@ -46,4 +47,64 @@ async_test(t => {
form2.submit.click(); form2.submit.click();
}, 'The button cannot be setted if it is not a submitter.'); }, 'The button cannot be setted if it is not a submitter.');
test(() => {
let didCallHandler = false;
let wasBubbles = false;
let wasCancelable = true;
let form = populateForm();
document.addEventListener('formdata', e => {
didCallHandler = true;
wasBubbles = e.bubbles;
wasCancelable = e.cancelable;
});
new FormData(form);
assert_true(didCallHandler);
assert_true(wasBubbles);
assert_false(wasCancelable);
}, '"formdata" event bubbles, and is not cancelable.');
test(() => {
let didCallHandler = false;
let form = populateForm();
let orphanRoot = document.createElement('div');
orphanRoot.appendChild(form);
orphanRoot.addEventListener('formdata', e => {
didCallHandler = true;
});
new FormData(form);
assert_true(didCallHandler);
}, '"formdata" event bubbles in an orphan tree.');
test(() => {
let listener1ok = false;
let listeern2ok = false;
let form = populateForm('<input name=n1 value=v1>');
form.addEventListener('formdata', e => {
listener1ok = e.formData.get('n1') == 'v1';
e.formData.append('h1', 'vh1');
e.formData.append('h2', 'vh2');
});
form.addEventListener('formdata', e => {
if (e.formData.get('h1') == 'vh1' && e.formData.get('h2') == 'vh2')
listener2ok = true;
});
form.submit();
assert_true(listener1ok);
assert_true(listener2ok);
}, '"formData" IDL attribute should have entries for form-associated elements' +
' in the first event handler, and the second handler can read entries ' +
'set by the first handler.');
let t1 = async_test('Entries added to "formData" IDL attribute should be submitted.');
t1.step(() => {
let form = populateForm('<input name=n1 value=v1>');
form.addEventListener('formdata', e => {
e.formData.append('h1', 'vh1');
});
let iframe = form.previousSibling;
iframe.onload = t1.step_func_done(() => {
assert_true(iframe.contentWindow.location.search.indexOf('n1=v1&h1=vh1') != -1);
});
form.submit();
});
</script> </script>

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<link rel="help" href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="./resources/targetted-form.js"></script>
<body>
<script>
test(() => {
let form = populateForm('<input name=n10 value=v10>');
let counter = 0;
form.addEventListener('formdata', e => {
++counter;
form.submit();
});
form.submit();
assert_equals(counter, 1);
new FormData(form);
assert_equals(counter, 2);
}, 'If constructing entry list flag of form is true, then return');
let test10 = async_test('Cannot navigate (after constructing the entry list)');
test10.step(() => {
let form = populateForm('<input name=n1 value=v1>');
form.onformdata = (e) => { e.target.remove(); };
let wasLoaded = false;
let iframe = form.previousSibling;
// Request to load '/common/dummy.xhtml', and immediately submit the form to
// the same frame. If the form submission is aborted, the first request
// will be completed.
iframe.onload = test10.step_func_done(() => {
wasLoaded = true;
assert_true(iframe.contentWindow.location.search.indexOf('n1=v1') == -1);
});
iframe.src = '/common/dummy.xhtml';
assert_false(wasLoaded, 'Make sure the first loading is ongoing.');
form.submit();
});
</script>
</body>

View file

@ -0,0 +1,13 @@
let frameCounter = 0;
function populateForm(optionalContentHtml) {
if (!optionalContentHtml)
optionalContentHtml = '';
document.body.insertAdjacentHTML(
'afterbegin',
`<iframe name="form-test-target-${frameCounter}"></iframe>` +
`<form action="/common/blank.html" target="` +
`form-test-target-${frameCounter}">${optionalContentHtml}</form>`);
++frameCounter;
return document.body.firstChild.nextSibling;
}

View file

@ -3,9 +3,9 @@
<title>execCommand() should only trigger 'input'</title> <title>execCommand() should only trigger 'input'</title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<p id="txt" contenteditable></p> <div id="txt" contenteditable></div>
<script> <script>
test(function() { (function() {
let lastBeforeInputType = ''; let lastBeforeInputType = '';
let lastInputType = ''; let lastInputType = '';
const txt = document.getElementById('txt'); const txt = document.getElementById('txt');
@ -22,24 +22,41 @@ test(function() {
const NO_INPUT_EVENT_FIRED = 'NO_INPUT_EVENT_FIRED'; const NO_INPUT_EVENT_FIRED = 'NO_INPUT_EVENT_FIRED';
function testExecCommandInputType(command, args, inputType) { function testExecCommandInputType(command, args, inputType) {
lastBeforeInputType = NO_INPUT_EVENT_FIRED; const description = `Calling execCommand("${command}", false, ${args})`;
lastInputType = NO_INPUT_EVENT_FIRED; test(function() {
document.execCommand(command, false, args); lastBeforeInputType = NO_INPUT_EVENT_FIRED;
assert_equals(lastBeforeInputType, NO_INPUT_EVENT_FIRED, `execCommand(${command}, false, ${args}) shouldn't fire beforeinput`); lastInputType = NO_INPUT_EVENT_FIRED;
assert_equals(lastInputType, inputType, `execCommand(${command}, false, ${args}) should produce inputType: ${inputType}`); try {
document.execCommand(command, false, args);
} catch (e) {
assert(false, `execCommand shouldn't cause any exception: ${e}`);
}
assert_equals(lastBeforeInputType, NO_INPUT_EVENT_FIRED,
`${description} shouldn't fire beforeinput`);
assert_equals(lastInputType, inputType,
`${description} should produce inputType: ${inputType}`);
}, description);
} }
txt.focus(); txt.focus();
// InsertText // InsertText
testExecCommandInputType('insertText', 'a', 'insertText'); testExecCommandInputType('insertText', 'a', 'insertText');
testExecCommandInputType('insertText', 'bc', 'insertText'); testExecCommandInputType('insertText', 'bc', 'insertText');
assert_equals(txt.innerHTML, 'abc'); test(function() {
assert_equals(txt.innerHTML, 'abc');
}, "execCommand(\"insertText\") should insert \"abc\" into the editor");
testExecCommandInputType('insertOrderedList', null, 'insertOrderedList'); testExecCommandInputType('insertOrderedList', null, 'insertOrderedList');
assert_equals(txt.innerHTML, '<ol><li>abc</li></ol>'); test(function() {
assert_equals(txt.innerHTML, '<ol><li>abc</li></ol>');
}, "execCommand(\"insertOrderedList\") should make <ol> and wrap the text with it");
testExecCommandInputType('insertUnorderedList', null, 'insertUnorderedList'); testExecCommandInputType('insertUnorderedList', null, 'insertUnorderedList');
assert_equals(txt.innerHTML, '<ul><li>abc</li></ul>'); test(function() {
assert_equals(txt.innerHTML, '<ul><li>abc</li></ul>');
}, "execCommand(\"insertUnorderedList\") should make <ul> and wrap the text with it");
testExecCommandInputType('insertLineBreak', null, 'insertLineBreak'); testExecCommandInputType('insertLineBreak', null, 'insertLineBreak');
testExecCommandInputType('insertParagraph', null, 'insertParagraph'); testExecCommandInputType('insertParagraph', null, 'insertParagraph');
txt.innerHTML = '';
testExecCommandInputType('insertHorizontalRule', null, 'insertHorizontalRule');
// Styling // Styling
txt.innerHTML = 'abc'; txt.innerHTML = 'abc';
@ -47,40 +64,84 @@ test(function() {
selection.collapse(txt, 0); selection.collapse(txt, 0);
selection.extend(txt, 1); selection.extend(txt, 1);
testExecCommandInputType('bold', null, 'formatBold'); testExecCommandInputType('bold', null, 'formatBold');
assert_equals(txt.innerHTML, '<b>abc</b>'); test(function() {
assert_equals(txt.innerHTML, '<b>abc</b>');
}, "execCommand(\"bold\") should wrap selected text with <b> element");
testExecCommandInputType('italic', null, 'formatItalic'); testExecCommandInputType('italic', null, 'formatItalic');
assert_equals(txt.innerHTML, '<b><i>abc</i></b>'); test(function() {
assert_equals(txt.innerHTML, '<b><i>abc</i></b>');
}, "execCommand(\"italic\") should wrap selected text with <i> element");
testExecCommandInputType('underline', null, 'formatUnderline'); testExecCommandInputType('underline', null, 'formatUnderline');
assert_equals(txt.innerHTML, '<b><i><u>abc</u></i></b>'); test(function() {
assert_equals(txt.innerHTML, '<b><i><u>abc</u></i></b>');
}, "execCommand(\"underline\") should wrap selected text with <u> element");
testExecCommandInputType('strikeThrough', null, 'formatStrikeThrough'); testExecCommandInputType('strikeThrough', null, 'formatStrikeThrough');
assert_equals(txt.innerHTML, '<b><i><u><strike>abc</strike></u></i></b>'); test(function() {
assert_equals(txt.innerHTML, '<b><i><u><strike>abc</strike></u></i></b>');
}, "execCommand(\"strikeThrough\") should wrap selected text with <strike> element");
testExecCommandInputType('superscript', null, 'formatSuperscript'); testExecCommandInputType('superscript', null, 'formatSuperscript');
assert_equals(txt.innerHTML, '<b><i><u><strike><sup>abc</sup></strike></u></i></b>'); test(function() {
assert_equals(txt.innerHTML, '<b><i><u><strike><sup>abc</sup></strike></u></i></b>');
}, "execCommand(\"superscript\") should wrap selected text with <sup> element");
testExecCommandInputType('subscript', null, 'formatSubscript'); testExecCommandInputType('subscript', null, 'formatSubscript');
assert_equals(txt.innerHTML, '<b><i><u><strike><sub>abc</sub></strike></u></i></b>'); test(function() {
assert_equals(txt.innerHTML, '<b><i><u><strike><sub>abc</sub></strike></u></i></b>');
}, "execCommand(\"subscript\") should wrap selected text with <sub> element");
txt.innerHTML = 'abc';
selection.collapse(txt, 0);
selection.extend(txt, 1);
testExecCommandInputType('backColor', '#000000', 'formatBackColor');
testExecCommandInputType('foreColor', '#FFFFFF', 'formatFontColor');
testExecCommandInputType('hiliteColor', '#FFFF00', 'formatBackColor');
testExecCommandInputType('fontName', 'monospace', 'formatFontName');
// Formating // Formating
txt.innerHTML = 'abc'; txt.innerHTML = 'abc';
testExecCommandInputType('justifyCenter', null, 'formatJustifyCenter'); testExecCommandInputType('justifyCenter', null, 'formatJustifyCenter');
assert_equals(txt.innerHTML, '<div style="text-align: center;">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="text-align: center;">abc</div>');
}, "execCommand(\"justifyCenter\") should wrap the text with <div> element whose text-align is center");
testExecCommandInputType('justifyFull', null, 'formatJustifyFull'); testExecCommandInputType('justifyFull', null, 'formatJustifyFull');
assert_equals(txt.innerHTML, '<div style="text-align: justify;">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="text-align: justify;">abc</div>');
}, "execCommand(\"justifyFull\") should wrap the text with <div> element whose text-align is justify");
testExecCommandInputType('justifyRight', null, 'formatJustifyRight'); testExecCommandInputType('justifyRight', null, 'formatJustifyRight');
assert_equals(txt.innerHTML, '<div style="text-align: right;">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="text-align: right;">abc</div>');
}, "execCommand(\"justifyRight\") should wrap the text with <div> element whose text-align is right");
testExecCommandInputType('justifyLeft', null, 'formatJustifyLeft'); testExecCommandInputType('justifyLeft', null, 'formatJustifyLeft');
assert_equals(txt.innerHTML, '<div style="text-align: left;">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="text-align: left;">abc</div>');
}, "execCommand(\"justifyLeft\") should wrap the text with <div> element whose text-align is left");
selection.collapse(txt, 0); selection.collapse(txt, 0);
selection.extend(txt, 1); selection.extend(txt, 1);
testExecCommandInputType('removeFormat', null, 'formatRemove'); testExecCommandInputType('removeFormat', null, 'formatRemove');
assert_equals(txt.innerHTML, '<div style="">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="">abc</div>');
}, "execCommand(\"removeFormat\") should remove the style of current block");
testExecCommandInputType('indent', null, 'formatIndent'); testExecCommandInputType('indent', null, 'formatIndent');
testExecCommandInputType('outdent', null, 'formatOutdent'); testExecCommandInputType('outdent', null, 'formatOutdent');
assert_equals(txt.innerHTML, '<div style="">abc</div>'); test(function() {
assert_equals(txt.innerHTML, '<div style="">abc</div>');
}, "Set of execCommand(\"indent\") and execCommand(\"outdent\") should keep same DOM tree");
// Copy shouldn't fire 'input'. // Copy shouldn't fire 'input'.
testExecCommandInputType('copy', null, NO_INPUT_EVENT_FIRED); testExecCommandInputType('copy', null, NO_INPUT_EVENT_FIRED);
// Cut/Paste should fire 'input'. // Cut/Paste should fire 'input'.
testExecCommandInputType('cut', null, 'deleteByCut'); testExecCommandInputType('cut', null, 'deleteByCut');
testExecCommandInputType('paste', null, 'insertFromPaste'); testExecCommandInputType('paste', null, 'insertFromPaste');
});
// Link and Unlink
txt.innerHTML = 'abc';
selection.collapse(txt.firstChild, 1);
selection.extend(txt.firstChild, 2);
testExecCommandInputType('createLink', 'https://example.com/', 'insertLink');
test(function() {
assert_equals(txt.innerHTML, 'a<a href="https://example.com/">b</a>c');
}, "execCommand(\"createLink\") should create a link");
testExecCommandInputType('unlink', null, '');
test(function() {
assert_equals(txt.innerHTML, 'abc');
}, "execCommand(\"createLink\") should remove the link");
})();
</script> </script>

View file

@ -1081,6 +1081,16 @@ interface ValidityState {
readonly attribute boolean valid; readonly attribute boolean valid;
}; };
[Exposed=Window,
Constructor(DOMString type, optional FormDataEventInit eventInitDict)]
interface FormDataEvent : Event {
readonly attribute FormData formData;
};
dictionary FormDataEventInit : EventInit {
required FormData formData;
};
[Exposed=Window, [Exposed=Window,
HTMLConstructor] HTMLConstructor]
interface HTMLDetailsElement : HTMLElement { interface HTMLDetailsElement : HTMLElement {
@ -1735,6 +1745,7 @@ interface mixin GlobalEventHandlers {
attribute EventHandler onended; attribute EventHandler onended;
attribute OnErrorEventHandler onerror; attribute OnErrorEventHandler onerror;
attribute EventHandler onfocus; attribute EventHandler onfocus;
attribute EventHandler onformdata;
attribute EventHandler oninput; attribute EventHandler oninput;
attribute EventHandler oninvalid; attribute EventHandler oninvalid;
attribute EventHandler onkeydown; attribute EventHandler onkeydown;

View file

@ -0,0 +1,263 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
(function() {
var mojomId = 'mojo/public/mojom/base/big_buffer.mojom';
if (mojo.internal.isMojomLoaded(mojomId)) {
console.warn('The following mojom is loaded multiple times: ' + mojomId);
return;
}
mojo.internal.markMojomLoaded(mojomId);
var bindings = mojo;
var associatedBindings = mojo;
var codec = mojo.internal;
var validator = mojo.internal;
var exports = mojo.internal.exposeNamespace('mojoBase.mojom');
function BigBufferSharedMemoryRegion(values) {
this.initDefaults_();
this.initFields_(values);
}
BigBufferSharedMemoryRegion.prototype.initDefaults_ = function() {
this.bufferHandle = null;
this.size = 0;
};
BigBufferSharedMemoryRegion.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
BigBufferSharedMemoryRegion.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate BigBufferSharedMemoryRegion.bufferHandle
err = messageValidator.validateHandle(offset + codec.kStructHeaderSize + 0, false)
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
BigBufferSharedMemoryRegion.encodedSize = codec.kStructHeaderSize + 8;
BigBufferSharedMemoryRegion.decode = function(decoder) {
var packed;
var val = new BigBufferSharedMemoryRegion();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.bufferHandle = decoder.decodeStruct(codec.Handle);
val.size = decoder.decodeStruct(codec.Uint32);
return val;
};
BigBufferSharedMemoryRegion.encode = function(encoder, val) {
var packed;
encoder.writeUint32(BigBufferSharedMemoryRegion.encodedSize);
encoder.writeUint32(0);
encoder.encodeStruct(codec.Handle, val.bufferHandle);
encoder.encodeStruct(codec.Uint32, val.size);
};
function BigBuffer(value) {
this.initDefault_();
this.initValue_(value);
}
BigBuffer.Tags = {
bytes: 0,
sharedMemory: 1,
invalidBuffer: 2,
};
BigBuffer.prototype.initDefault_ = function() {
this.$data = null;
this.$tag = undefined;
}
BigBuffer.prototype.initValue_ = function(value) {
if (value == undefined) {
return;
}
var keys = Object.keys(value);
if (keys.length == 0) {
return;
}
if (keys.length > 1) {
throw new TypeError("You may set only one member on a union.");
}
var fields = [
"bytes",
"sharedMemory",
"invalidBuffer",
];
if (fields.indexOf(keys[0]) < 0) {
throw new ReferenceError(keys[0] + " is not a BigBuffer member.");
}
this[keys[0]] = value[keys[0]];
}
Object.defineProperty(BigBuffer.prototype, "bytes", {
get: function() {
if (this.$tag != BigBuffer.Tags.bytes) {
throw new ReferenceError(
"BigBuffer.bytes is not currently set.");
}
return this.$data;
},
set: function(value) {
this.$tag = BigBuffer.Tags.bytes;
this.$data = value;
}
});
Object.defineProperty(BigBuffer.prototype, "sharedMemory", {
get: function() {
if (this.$tag != BigBuffer.Tags.sharedMemory) {
throw new ReferenceError(
"BigBuffer.sharedMemory is not currently set.");
}
return this.$data;
},
set: function(value) {
this.$tag = BigBuffer.Tags.sharedMemory;
this.$data = value;
}
});
Object.defineProperty(BigBuffer.prototype, "invalidBuffer", {
get: function() {
if (this.$tag != BigBuffer.Tags.invalidBuffer) {
throw new ReferenceError(
"BigBuffer.invalidBuffer is not currently set.");
}
return this.$data;
},
set: function(value) {
this.$tag = BigBuffer.Tags.invalidBuffer;
this.$data = value;
}
});
BigBuffer.encode = function(encoder, val) {
if (val == null) {
encoder.writeUint64(0);
encoder.writeUint64(0);
return;
}
if (val.$tag == undefined) {
throw new TypeError("Cannot encode unions with an unknown member set.");
}
encoder.writeUint32(16);
encoder.writeUint32(val.$tag);
switch (val.$tag) {
case BigBuffer.Tags.bytes:
encoder.encodeArrayPointer(codec.Uint8, val.bytes);
break;
case BigBuffer.Tags.sharedMemory:
encoder.encodeStructPointer(BigBufferSharedMemoryRegion, val.sharedMemory);
break;
case BigBuffer.Tags.invalidBuffer:
encoder.writeUint8(val.invalidBuffer ? 1 : 0);
break;
}
encoder.align();
};
BigBuffer.decode = function(decoder) {
var size = decoder.readUint32();
if (size == 0) {
decoder.readUint32();
decoder.readUint64();
return null;
}
var result = new BigBuffer();
var tag = decoder.readUint32();
switch (tag) {
case BigBuffer.Tags.bytes:
result.bytes = decoder.decodeArrayPointer(codec.Uint8);
break;
case BigBuffer.Tags.sharedMemory:
result.sharedMemory = decoder.decodeStructPointer(BigBufferSharedMemoryRegion);
break;
case BigBuffer.Tags.invalidBuffer:
result.invalidBuffer = decoder.readUint8() ? true : false;
break;
}
decoder.align();
return result;
};
BigBuffer.validate = function(messageValidator, offset) {
var size = messageValidator.decodeUnionSize(offset);
if (size != 16) {
return validator.validationError.INVALID_UNION_SIZE;
}
var tag = messageValidator.decodeUnionTag(offset);
var data_offset = offset + 8;
var err;
switch (tag) {
case BigBuffer.Tags.bytes:
// validate BigBuffer.bytes
err = messageValidator.validateArrayPointer(data_offset, 1, codec.Uint8, false, [0], 0);
if (err !== validator.validationError.NONE)
return err;
break;
case BigBuffer.Tags.sharedMemory:
// validate BigBuffer.sharedMemory
err = messageValidator.validateStructPointer(data_offset, BigBufferSharedMemoryRegion, false);
if (err !== validator.validationError.NONE)
return err;
break;
case BigBuffer.Tags.invalidBuffer:
break;
}
return validator.validationError.NONE;
};
BigBuffer.encodedSize = 16;
exports.BigBufferSharedMemoryRegion = BigBufferSharedMemoryRegion;
exports.BigBuffer = BigBuffer;
})();

View file

@ -0,0 +1 @@
Content-Type: text/javascript; charset=utf-8

View file

@ -18,7 +18,7 @@
var exports = mojo.internal.exposeNamespace('device.mojom'); var exports = mojo.internal.exposeNamespace('device.mojom');
var string16$ = var string16$ =
mojo.internal.exposeNamespace('mojo.common.mojom'); mojo.internal.exposeNamespace('mojoBase.mojom');
if (mojo.config.autoLoadMojomDeps) { if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary( mojo.internal.loadMojomIfNecessary(
'mojo/public/mojom/base/string16.mojom', '../../../../mojo/public/mojom/base/string16.mojom.js'); 'mojo/public/mojom/base/string16.mojom', '../../../../mojo/public/mojom/base/string16.mojom.js');
@ -35,6 +35,8 @@
UsbOpenDeviceError.OK = 0; UsbOpenDeviceError.OK = 0;
UsbOpenDeviceError.ACCESS_DENIED = UsbOpenDeviceError.OK + 1; UsbOpenDeviceError.ACCESS_DENIED = UsbOpenDeviceError.OK + 1;
UsbOpenDeviceError.ALREADY_OPEN = UsbOpenDeviceError.ACCESS_DENIED + 1; UsbOpenDeviceError.ALREADY_OPEN = UsbOpenDeviceError.ACCESS_DENIED + 1;
UsbOpenDeviceError.MIN_VALUE = 0,
UsbOpenDeviceError.MAX_VALUE = 2,
UsbOpenDeviceError.isKnownEnumValue = function(value) { UsbOpenDeviceError.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -56,6 +58,8 @@
var UsbTransferDirection = {}; var UsbTransferDirection = {};
UsbTransferDirection.INBOUND = 0; UsbTransferDirection.INBOUND = 0;
UsbTransferDirection.OUTBOUND = UsbTransferDirection.INBOUND + 1; UsbTransferDirection.OUTBOUND = UsbTransferDirection.INBOUND + 1;
UsbTransferDirection.MIN_VALUE = 0,
UsbTransferDirection.MAX_VALUE = 1,
UsbTransferDirection.isKnownEnumValue = function(value) { UsbTransferDirection.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -78,6 +82,8 @@
UsbControlTransferType.CLASS = UsbControlTransferType.STANDARD + 1; UsbControlTransferType.CLASS = UsbControlTransferType.STANDARD + 1;
UsbControlTransferType.VENDOR = UsbControlTransferType.CLASS + 1; UsbControlTransferType.VENDOR = UsbControlTransferType.CLASS + 1;
UsbControlTransferType.RESERVED = UsbControlTransferType.VENDOR + 1; UsbControlTransferType.RESERVED = UsbControlTransferType.VENDOR + 1;
UsbControlTransferType.MIN_VALUE = 0,
UsbControlTransferType.MAX_VALUE = 3,
UsbControlTransferType.isKnownEnumValue = function(value) { UsbControlTransferType.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -102,6 +108,8 @@
UsbControlTransferRecipient.INTERFACE = UsbControlTransferRecipient.DEVICE + 1; UsbControlTransferRecipient.INTERFACE = UsbControlTransferRecipient.DEVICE + 1;
UsbControlTransferRecipient.ENDPOINT = UsbControlTransferRecipient.INTERFACE + 1; UsbControlTransferRecipient.ENDPOINT = UsbControlTransferRecipient.INTERFACE + 1;
UsbControlTransferRecipient.OTHER = UsbControlTransferRecipient.ENDPOINT + 1; UsbControlTransferRecipient.OTHER = UsbControlTransferRecipient.ENDPOINT + 1;
UsbControlTransferRecipient.MIN_VALUE = 0,
UsbControlTransferRecipient.MAX_VALUE = 3,
UsbControlTransferRecipient.isKnownEnumValue = function(value) { UsbControlTransferRecipient.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -126,6 +134,8 @@
UsbTransferType.ISOCHRONOUS = UsbTransferType.CONTROL + 1; UsbTransferType.ISOCHRONOUS = UsbTransferType.CONTROL + 1;
UsbTransferType.BULK = UsbTransferType.ISOCHRONOUS + 1; UsbTransferType.BULK = UsbTransferType.ISOCHRONOUS + 1;
UsbTransferType.INTERRUPT = UsbTransferType.BULK + 1; UsbTransferType.INTERRUPT = UsbTransferType.BULK + 1;
UsbTransferType.MIN_VALUE = 0,
UsbTransferType.MAX_VALUE = 3,
UsbTransferType.isKnownEnumValue = function(value) { UsbTransferType.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -155,6 +165,8 @@
UsbTransferStatus.BABBLE = UsbTransferStatus.DISCONNECT + 1; UsbTransferStatus.BABBLE = UsbTransferStatus.DISCONNECT + 1;
UsbTransferStatus.SHORT_PACKET = UsbTransferStatus.BABBLE + 1; UsbTransferStatus.SHORT_PACKET = UsbTransferStatus.BABBLE + 1;
UsbTransferStatus.PERMISSION_DENIED = UsbTransferStatus.SHORT_PACKET + 1; UsbTransferStatus.PERMISSION_DENIED = UsbTransferStatus.SHORT_PACKET + 1;
UsbTransferStatus.MIN_VALUE = 0,
UsbTransferStatus.MAX_VALUE = 8,
UsbTransferStatus.isKnownEnumValue = function(value) { UsbTransferStatus.isKnownEnumValue = function(value) {
switch (value) { switch (value) {
@ -516,6 +528,8 @@
this.subclassCode = 0; this.subclassCode = 0;
this.protocolCode = 0; this.protocolCode = 0;
this.vendorId = 0; this.vendorId = 0;
this.busNumber = 0;
this.portNumber = 0;
this.productId = 0; this.productId = 0;
this.deviceVersionMajor = 0; this.deviceVersionMajor = 0;
this.deviceVersionMinor = 0; this.deviceVersionMinor = 0;
@ -541,7 +555,7 @@
return err; return err;
var kVersionSizes = [ var kVersionSizes = [
{version: 0, numBytes: 72} {version: 0, numBytes: 80}
]; ];
err = messageValidator.validateStructVersion(offset, kVersionSizes); err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
@ -565,40 +579,42 @@
// validate UsbDeviceInfo.manufacturerName // validate UsbDeviceInfo.manufacturerName
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 24, string16$.String16, true);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceInfo.productName
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 32, string16$.String16, true); err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 32, string16$.String16, true);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
// validate UsbDeviceInfo.serialNumber // validate UsbDeviceInfo.productName
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 40, string16$.String16, true); err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 40, string16$.String16, true);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
// validate UsbDeviceInfo.serialNumber
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 48, string16$.String16, true);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceInfo.webusbLandingPage // validate UsbDeviceInfo.webusbLandingPage
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 48, url$.Url, true); err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 56, url$.Url, true);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
// validate UsbDeviceInfo.configurations // validate UsbDeviceInfo.configurations
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 56, 8, new codec.PointerTo(UsbConfigurationInfo), false, [0], 0); err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 64, 8, new codec.PointerTo(UsbConfigurationInfo), false, [0], 0);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
return validator.validationError.NONE; return validator.validationError.NONE;
}; };
UsbDeviceInfo.encodedSize = codec.kStructHeaderSize + 64; UsbDeviceInfo.encodedSize = codec.kStructHeaderSize + 72;
UsbDeviceInfo.decode = function(decoder) { UsbDeviceInfo.decode = function(decoder) {
var packed; var packed;
@ -613,6 +629,8 @@
val.subclassCode = decoder.decodeStruct(codec.Uint8); val.subclassCode = decoder.decodeStruct(codec.Uint8);
val.protocolCode = decoder.decodeStruct(codec.Uint8); val.protocolCode = decoder.decodeStruct(codec.Uint8);
val.vendorId = decoder.decodeStruct(codec.Uint16); val.vendorId = decoder.decodeStruct(codec.Uint16);
val.busNumber = decoder.decodeStruct(codec.Uint32);
val.portNumber = decoder.decodeStruct(codec.Uint32);
val.productId = decoder.decodeStruct(codec.Uint16); val.productId = decoder.decodeStruct(codec.Uint16);
val.deviceVersionMajor = decoder.decodeStruct(codec.Uint8); val.deviceVersionMajor = decoder.decodeStruct(codec.Uint8);
val.deviceVersionMinor = decoder.decodeStruct(codec.Uint8); val.deviceVersionMinor = decoder.decodeStruct(codec.Uint8);
@ -640,6 +658,8 @@
encoder.encodeStruct(codec.Uint8, val.subclassCode); encoder.encodeStruct(codec.Uint8, val.subclassCode);
encoder.encodeStruct(codec.Uint8, val.protocolCode); encoder.encodeStruct(codec.Uint8, val.protocolCode);
encoder.encodeStruct(codec.Uint16, val.vendorId); encoder.encodeStruct(codec.Uint16, val.vendorId);
encoder.encodeStruct(codec.Uint32, val.busNumber);
encoder.encodeStruct(codec.Uint32, val.portNumber);
encoder.encodeStruct(codec.Uint16, val.productId); encoder.encodeStruct(codec.Uint16, val.productId);
encoder.encodeStruct(codec.Uint8, val.deviceVersionMajor); encoder.encodeStruct(codec.Uint8, val.deviceVersionMajor);
encoder.encodeStruct(codec.Uint8, val.deviceVersionMinor); encoder.encodeStruct(codec.Uint8, val.deviceVersionMinor);
@ -3649,4 +3669,4 @@
exports.UsbDeviceClient = UsbDeviceClient; exports.UsbDeviceClient = UsbDeviceClient;
exports.UsbDeviceClientPtr = UsbDeviceClientPtr; exports.UsbDeviceClientPtr = UsbDeviceClientPtr;
exports.UsbDeviceClientAssociatedPtr = UsbDeviceClientAssociatedPtr; exports.UsbDeviceClientAssociatedPtr = UsbDeviceClientAssociatedPtr;
})(); })();

View file

@ -0,0 +1,184 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
(function() {
var mojomId = 'device/usb/public/mojom/device_enumeration_options.mojom';
if (mojo.internal.isMojomLoaded(mojomId)) {
console.warn('The following mojom is loaded multiple times: ' + mojomId);
return;
}
mojo.internal.markMojomLoaded(mojomId);
var bindings = mojo;
var associatedBindings = mojo;
var codec = mojo.internal;
var validator = mojo.internal;
var exports = mojo.internal.exposeNamespace('device.mojom');
var string16$ =
mojo.internal.exposeNamespace('mojoBase.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'mojo/public/mojom/base/string16.mojom', '../../../../mojo/public/mojom/base/string16.mojom.js');
}
function UsbDeviceFilter(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceFilter.prototype.initDefaults_ = function() {
this.hasVendorId = false;
this.hasProductId = false;
this.hasClassCode = false;
this.hasSubclassCode = false;
this.hasProtocolCode = false;
this.classCode = 0;
this.vendorId = 0;
this.productId = 0;
this.subclassCode = 0;
this.protocolCode = 0;
this.serialNumber = null;
};
UsbDeviceFilter.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceFilter.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 24}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceFilter.serialNumber
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 8, string16$.String16, true);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceFilter.encodedSize = codec.kStructHeaderSize + 16;
UsbDeviceFilter.decode = function(decoder) {
var packed;
var val = new UsbDeviceFilter();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
packed = decoder.readUint8();
val.hasVendorId = (packed >> 0) & 1 ? true : false;
val.hasProductId = (packed >> 1) & 1 ? true : false;
val.hasClassCode = (packed >> 2) & 1 ? true : false;
val.hasSubclassCode = (packed >> 3) & 1 ? true : false;
val.hasProtocolCode = (packed >> 4) & 1 ? true : false;
val.classCode = decoder.decodeStruct(codec.Uint8);
val.vendorId = decoder.decodeStruct(codec.Uint16);
val.productId = decoder.decodeStruct(codec.Uint16);
val.subclassCode = decoder.decodeStruct(codec.Uint8);
val.protocolCode = decoder.decodeStruct(codec.Uint8);
val.serialNumber = decoder.decodeStructPointer(string16$.String16);
return val;
};
UsbDeviceFilter.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceFilter.encodedSize);
encoder.writeUint32(0);
packed = 0;
packed |= (val.hasVendorId & 1) << 0
packed |= (val.hasProductId & 1) << 1
packed |= (val.hasClassCode & 1) << 2
packed |= (val.hasSubclassCode & 1) << 3
packed |= (val.hasProtocolCode & 1) << 4
encoder.writeUint8(packed);
encoder.encodeStruct(codec.Uint8, val.classCode);
encoder.encodeStruct(codec.Uint16, val.vendorId);
encoder.encodeStruct(codec.Uint16, val.productId);
encoder.encodeStruct(codec.Uint8, val.subclassCode);
encoder.encodeStruct(codec.Uint8, val.protocolCode);
encoder.encodeStructPointer(string16$.String16, val.serialNumber);
};
function UsbEnumerationOptions(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbEnumerationOptions.prototype.initDefaults_ = function() {
this.filters = null;
};
UsbEnumerationOptions.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbEnumerationOptions.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbEnumerationOptions.filters
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 8, new codec.PointerTo(UsbDeviceFilter), false, [0], 0);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbEnumerationOptions.encodedSize = codec.kStructHeaderSize + 8;
UsbEnumerationOptions.decode = function(decoder) {
var packed;
var val = new UsbEnumerationOptions();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.filters = decoder.decodeArrayPointer(new codec.PointerTo(UsbDeviceFilter));
return val;
};
UsbEnumerationOptions.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbEnumerationOptions.encodedSize);
encoder.writeUint32(0);
encoder.encodeArrayPointer(new codec.PointerTo(UsbDeviceFilter), val.filters);
};
exports.UsbDeviceFilter = UsbDeviceFilter;
exports.UsbEnumerationOptions = UsbEnumerationOptions;
})();

View file

@ -0,0 +1 @@
Content-Type: text/javascript; charset=utf-8

View file

@ -1,843 +0,0 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
(function() {
var mojomId = 'device/usb/public/mojom/device_manager.mojom';
if (mojo.internal.isMojomLoaded(mojomId)) {
console.warn('The following mojom is loaded multiple times: ' + mojomId);
return;
}
mojo.internal.markMojomLoaded(mojomId);
var bindings = mojo;
var associatedBindings = mojo;
var codec = mojo.internal;
var validator = mojo.internal;
var exports = mojo.internal.exposeNamespace('device.mojom');
var device$ =
mojo.internal.exposeNamespace('device.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'device/usb/public/mojom/device.mojom', 'device.mojom.js');
}
var string16$ =
mojo.internal.exposeNamespace('mojo.common.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'mojo/public/mojom/base/string16.mojom', '../../../../mojo/public/mojom/base/string16.mojom.js');
}
function UsbDeviceFilter(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceFilter.prototype.initDefaults_ = function() {
this.hasVendorId = false;
this.hasProductId = false;
this.hasClassCode = false;
this.hasSubclassCode = false;
this.hasProtocolCode = false;
this.classCode = 0;
this.vendorId = 0;
this.productId = 0;
this.subclassCode = 0;
this.protocolCode = 0;
this.serialNumber = null;
};
UsbDeviceFilter.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceFilter.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 24}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceFilter.serialNumber
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 8, string16$.String16, true);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceFilter.encodedSize = codec.kStructHeaderSize + 16;
UsbDeviceFilter.decode = function(decoder) {
var packed;
var val = new UsbDeviceFilter();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
packed = decoder.readUint8();
val.hasVendorId = (packed >> 0) & 1 ? true : false;
val.hasProductId = (packed >> 1) & 1 ? true : false;
val.hasClassCode = (packed >> 2) & 1 ? true : false;
val.hasSubclassCode = (packed >> 3) & 1 ? true : false;
val.hasProtocolCode = (packed >> 4) & 1 ? true : false;
val.classCode = decoder.decodeStruct(codec.Uint8);
val.vendorId = decoder.decodeStruct(codec.Uint16);
val.productId = decoder.decodeStruct(codec.Uint16);
val.subclassCode = decoder.decodeStruct(codec.Uint8);
val.protocolCode = decoder.decodeStruct(codec.Uint8);
val.serialNumber = decoder.decodeStructPointer(string16$.String16);
return val;
};
UsbDeviceFilter.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceFilter.encodedSize);
encoder.writeUint32(0);
packed = 0;
packed |= (val.hasVendorId & 1) << 0
packed |= (val.hasProductId & 1) << 1
packed |= (val.hasClassCode & 1) << 2
packed |= (val.hasSubclassCode & 1) << 3
packed |= (val.hasProtocolCode & 1) << 4
encoder.writeUint8(packed);
encoder.encodeStruct(codec.Uint8, val.classCode);
encoder.encodeStruct(codec.Uint16, val.vendorId);
encoder.encodeStruct(codec.Uint16, val.productId);
encoder.encodeStruct(codec.Uint8, val.subclassCode);
encoder.encodeStruct(codec.Uint8, val.protocolCode);
encoder.encodeStructPointer(string16$.String16, val.serialNumber);
};
function UsbEnumerationOptions(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbEnumerationOptions.prototype.initDefaults_ = function() {
this.filters = null;
};
UsbEnumerationOptions.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbEnumerationOptions.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbEnumerationOptions.filters
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 8, new codec.PointerTo(UsbDeviceFilter), false, [0], 0);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbEnumerationOptions.encodedSize = codec.kStructHeaderSize + 8;
UsbEnumerationOptions.decode = function(decoder) {
var packed;
var val = new UsbEnumerationOptions();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.filters = decoder.decodeArrayPointer(new codec.PointerTo(UsbDeviceFilter));
return val;
};
UsbEnumerationOptions.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbEnumerationOptions.encodedSize);
encoder.writeUint32(0);
encoder.encodeArrayPointer(new codec.PointerTo(UsbDeviceFilter), val.filters);
};
function UsbDeviceManager_GetDevices_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManager_GetDevices_Params.prototype.initDefaults_ = function() {
this.options = null;
};
UsbDeviceManager_GetDevices_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManager_GetDevices_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManager_GetDevices_Params.options
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, UsbEnumerationOptions, true);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManager_GetDevices_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManager_GetDevices_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManager_GetDevices_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.options = decoder.decodeStructPointer(UsbEnumerationOptions);
return val;
};
UsbDeviceManager_GetDevices_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManager_GetDevices_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStructPointer(UsbEnumerationOptions, val.options);
};
function UsbDeviceManager_GetDevices_ResponseParams(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManager_GetDevices_ResponseParams.prototype.initDefaults_ = function() {
this.results = null;
};
UsbDeviceManager_GetDevices_ResponseParams.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManager_GetDevices_ResponseParams.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManager_GetDevices_ResponseParams.results
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 8, new codec.PointerTo(device$.UsbDeviceInfo), false, [0], 0);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManager_GetDevices_ResponseParams.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManager_GetDevices_ResponseParams.decode = function(decoder) {
var packed;
var val = new UsbDeviceManager_GetDevices_ResponseParams();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.results = decoder.decodeArrayPointer(new codec.PointerTo(device$.UsbDeviceInfo));
return val;
};
UsbDeviceManager_GetDevices_ResponseParams.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManager_GetDevices_ResponseParams.encodedSize);
encoder.writeUint32(0);
encoder.encodeArrayPointer(new codec.PointerTo(device$.UsbDeviceInfo), val.results);
};
function UsbDeviceManager_GetDevice_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManager_GetDevice_Params.prototype.initDefaults_ = function() {
this.guid = null;
this.deviceRequest = new bindings.InterfaceRequest();
};
UsbDeviceManager_GetDevice_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManager_GetDevice_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 24}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManager_GetDevice_Params.guid
err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false)
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManager_GetDevice_Params.deviceRequest
err = messageValidator.validateInterfaceRequest(offset + codec.kStructHeaderSize + 8, false)
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManager_GetDevice_Params.encodedSize = codec.kStructHeaderSize + 16;
UsbDeviceManager_GetDevice_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManager_GetDevice_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.guid = decoder.decodeStruct(codec.String);
val.deviceRequest = decoder.decodeStruct(codec.InterfaceRequest);
decoder.skip(1);
decoder.skip(1);
decoder.skip(1);
decoder.skip(1);
return val;
};
UsbDeviceManager_GetDevice_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManager_GetDevice_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStruct(codec.String, val.guid);
encoder.encodeStruct(codec.InterfaceRequest, val.deviceRequest);
encoder.skip(1);
encoder.skip(1);
encoder.skip(1);
encoder.skip(1);
};
function UsbDeviceManager_SetClient_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManager_SetClient_Params.prototype.initDefaults_ = function() {
this.client = new UsbDeviceManagerClientPtr();
};
UsbDeviceManager_SetClient_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManager_SetClient_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManager_SetClient_Params.client
err = messageValidator.validateInterface(offset + codec.kStructHeaderSize + 0, false);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManager_SetClient_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManager_SetClient_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManager_SetClient_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.client = decoder.decodeStruct(new codec.Interface(UsbDeviceManagerClientPtr));
return val;
};
UsbDeviceManager_SetClient_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManager_SetClient_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStruct(new codec.Interface(UsbDeviceManagerClientPtr), val.client);
};
function UsbDeviceManagerClient_OnDeviceAdded_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManagerClient_OnDeviceAdded_Params.prototype.initDefaults_ = function() {
this.deviceInfo = null;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManagerClient_OnDeviceAdded_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManagerClient_OnDeviceAdded_Params.deviceInfo
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, device$.UsbDeviceInfo, false);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManagerClient_OnDeviceAdded_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManagerClient_OnDeviceAdded_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.deviceInfo = decoder.decodeStructPointer(device$.UsbDeviceInfo);
return val;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStructPointer(device$.UsbDeviceInfo, val.deviceInfo);
};
function UsbDeviceManagerClient_OnDeviceRemoved_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManagerClient_OnDeviceRemoved_Params.prototype.initDefaults_ = function() {
this.deviceInfo = null;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManagerClient_OnDeviceRemoved_Params.deviceInfo
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, device$.UsbDeviceInfo, false);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManagerClient_OnDeviceRemoved_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManagerClient_OnDeviceRemoved_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.deviceInfo = decoder.decodeStructPointer(device$.UsbDeviceInfo);
return val;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStructPointer(device$.UsbDeviceInfo, val.deviceInfo);
};
var kUsbDeviceManager_GetDevices_Name = 0;
var kUsbDeviceManager_GetDevice_Name = 1;
var kUsbDeviceManager_SetClient_Name = 2;
function UsbDeviceManagerPtr(handleOrPtrInfo) {
this.ptr = new bindings.InterfacePtrController(UsbDeviceManager,
handleOrPtrInfo);
}
function UsbDeviceManagerAssociatedPtr(associatedInterfacePtrInfo) {
this.ptr = new associatedBindings.AssociatedInterfacePtrController(
UsbDeviceManager, associatedInterfacePtrInfo);
}
UsbDeviceManagerAssociatedPtr.prototype =
Object.create(UsbDeviceManagerPtr.prototype);
UsbDeviceManagerAssociatedPtr.prototype.constructor =
UsbDeviceManagerAssociatedPtr;
function UsbDeviceManagerProxy(receiver) {
this.receiver_ = receiver;
}
UsbDeviceManagerPtr.prototype.getDevices = function() {
return UsbDeviceManagerProxy.prototype.getDevices
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerProxy.prototype.getDevices = function(options) {
var params = new UsbDeviceManager_GetDevices_Params();
params.options = options;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDeviceManager_GetDevices_Name,
codec.align(UsbDeviceManager_GetDevices_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
builder.encodeStruct(UsbDeviceManager_GetDevices_Params, params);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
var responseParams =
reader.decodeStruct(UsbDeviceManager_GetDevices_ResponseParams);
resolve(responseParams);
}).catch(function(result) {
reject(Error("Connection error: " + result));
});
}.bind(this));
};
UsbDeviceManagerPtr.prototype.getDevice = function() {
return UsbDeviceManagerProxy.prototype.getDevice
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerProxy.prototype.getDevice = function(guid, deviceRequest) {
var params = new UsbDeviceManager_GetDevice_Params();
params.guid = guid;
params.deviceRequest = deviceRequest;
var builder = new codec.MessageV0Builder(
kUsbDeviceManager_GetDevice_Name,
codec.align(UsbDeviceManager_GetDevice_Params.encodedSize));
builder.encodeStruct(UsbDeviceManager_GetDevice_Params, params);
var message = builder.finish();
this.receiver_.accept(message);
};
UsbDeviceManagerPtr.prototype.setClient = function() {
return UsbDeviceManagerProxy.prototype.setClient
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerProxy.prototype.setClient = function(client) {
var params = new UsbDeviceManager_SetClient_Params();
params.client = client;
var builder = new codec.MessageV0Builder(
kUsbDeviceManager_SetClient_Name,
codec.align(UsbDeviceManager_SetClient_Params.encodedSize));
builder.encodeStruct(UsbDeviceManager_SetClient_Params, params);
var message = builder.finish();
this.receiver_.accept(message);
};
function UsbDeviceManagerStub(delegate) {
this.delegate_ = delegate;
}
UsbDeviceManagerStub.prototype.getDevices = function(options) {
return this.delegate_ && this.delegate_.getDevices && this.delegate_.getDevices(options);
}
UsbDeviceManagerStub.prototype.getDevice = function(guid, deviceRequest) {
return this.delegate_ && this.delegate_.getDevice && this.delegate_.getDevice(guid, deviceRequest);
}
UsbDeviceManagerStub.prototype.setClient = function(client) {
return this.delegate_ && this.delegate_.setClient && this.delegate_.setClient(client);
}
UsbDeviceManagerStub.prototype.accept = function(message) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
case kUsbDeviceManager_GetDevice_Name:
var params = reader.decodeStruct(UsbDeviceManager_GetDevice_Params);
this.getDevice(params.guid, params.deviceRequest);
return true;
case kUsbDeviceManager_SetClient_Name:
var params = reader.decodeStruct(UsbDeviceManager_SetClient_Params);
this.setClient(params.client);
return true;
default:
return false;
}
};
UsbDeviceManagerStub.prototype.acceptWithResponder =
function(message, responder) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
case kUsbDeviceManager_GetDevices_Name:
var params = reader.decodeStruct(UsbDeviceManager_GetDevices_Params);
this.getDevices(params.options).then(function(response) {
var responseParams =
new UsbDeviceManager_GetDevices_ResponseParams();
responseParams.results = response.results;
var builder = new codec.MessageV1Builder(
kUsbDeviceManager_GetDevices_Name,
codec.align(UsbDeviceManager_GetDevices_ResponseParams.encodedSize),
codec.kMessageIsResponse, reader.requestID);
builder.encodeStruct(UsbDeviceManager_GetDevices_ResponseParams,
responseParams);
var message = builder.finish();
responder.accept(message);
});
return true;
default:
return false;
}
};
function validateUsbDeviceManagerRequest(messageValidator) {
var message = messageValidator.message;
var paramsClass = null;
switch (message.getName()) {
case kUsbDeviceManager_GetDevices_Name:
if (message.expectsResponse())
paramsClass = UsbDeviceManager_GetDevices_Params;
break;
case kUsbDeviceManager_GetDevice_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManager_GetDevice_Params;
break;
case kUsbDeviceManager_SetClient_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManager_SetClient_Params;
break;
}
if (paramsClass === null)
return validator.validationError.NONE;
return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes());
}
function validateUsbDeviceManagerResponse(messageValidator) {
var message = messageValidator.message;
var paramsClass = null;
switch (message.getName()) {
case kUsbDeviceManager_GetDevices_Name:
if (message.isResponse())
paramsClass = UsbDeviceManager_GetDevices_ResponseParams;
break;
}
if (paramsClass === null)
return validator.validationError.NONE;
return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes());
}
var UsbDeviceManager = {
name: 'device.mojom.UsbDeviceManager',
kVersion: 0,
ptrClass: UsbDeviceManagerPtr,
proxyClass: UsbDeviceManagerProxy,
stubClass: UsbDeviceManagerStub,
validateRequest: validateUsbDeviceManagerRequest,
validateResponse: validateUsbDeviceManagerResponse,
};
UsbDeviceManagerStub.prototype.validator = validateUsbDeviceManagerRequest;
UsbDeviceManagerProxy.prototype.validator = validateUsbDeviceManagerResponse;
var kUsbDeviceManagerClient_OnDeviceAdded_Name = 0;
var kUsbDeviceManagerClient_OnDeviceRemoved_Name = 1;
function UsbDeviceManagerClientPtr(handleOrPtrInfo) {
this.ptr = new bindings.InterfacePtrController(UsbDeviceManagerClient,
handleOrPtrInfo);
}
function UsbDeviceManagerClientAssociatedPtr(associatedInterfacePtrInfo) {
this.ptr = new associatedBindings.AssociatedInterfacePtrController(
UsbDeviceManagerClient, associatedInterfacePtrInfo);
}
UsbDeviceManagerClientAssociatedPtr.prototype =
Object.create(UsbDeviceManagerClientPtr.prototype);
UsbDeviceManagerClientAssociatedPtr.prototype.constructor =
UsbDeviceManagerClientAssociatedPtr;
function UsbDeviceManagerClientProxy(receiver) {
this.receiver_ = receiver;
}
UsbDeviceManagerClientPtr.prototype.onDeviceAdded = function() {
return UsbDeviceManagerClientProxy.prototype.onDeviceAdded
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerClientProxy.prototype.onDeviceAdded = function(deviceInfo) {
var params = new UsbDeviceManagerClient_OnDeviceAdded_Params();
params.deviceInfo = deviceInfo;
var builder = new codec.MessageV0Builder(
kUsbDeviceManagerClient_OnDeviceAdded_Name,
codec.align(UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize));
builder.encodeStruct(UsbDeviceManagerClient_OnDeviceAdded_Params, params);
var message = builder.finish();
this.receiver_.accept(message);
};
UsbDeviceManagerClientPtr.prototype.onDeviceRemoved = function() {
return UsbDeviceManagerClientProxy.prototype.onDeviceRemoved
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerClientProxy.prototype.onDeviceRemoved = function(deviceInfo) {
var params = new UsbDeviceManagerClient_OnDeviceRemoved_Params();
params.deviceInfo = deviceInfo;
var builder = new codec.MessageV0Builder(
kUsbDeviceManagerClient_OnDeviceRemoved_Name,
codec.align(UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize));
builder.encodeStruct(UsbDeviceManagerClient_OnDeviceRemoved_Params, params);
var message = builder.finish();
this.receiver_.accept(message);
};
function UsbDeviceManagerClientStub(delegate) {
this.delegate_ = delegate;
}
UsbDeviceManagerClientStub.prototype.onDeviceAdded = function(deviceInfo) {
return this.delegate_ && this.delegate_.onDeviceAdded && this.delegate_.onDeviceAdded(deviceInfo);
}
UsbDeviceManagerClientStub.prototype.onDeviceRemoved = function(deviceInfo) {
return this.delegate_ && this.delegate_.onDeviceRemoved && this.delegate_.onDeviceRemoved(deviceInfo);
}
UsbDeviceManagerClientStub.prototype.accept = function(message) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
case kUsbDeviceManagerClient_OnDeviceAdded_Name:
var params = reader.decodeStruct(UsbDeviceManagerClient_OnDeviceAdded_Params);
this.onDeviceAdded(params.deviceInfo);
return true;
case kUsbDeviceManagerClient_OnDeviceRemoved_Name:
var params = reader.decodeStruct(UsbDeviceManagerClient_OnDeviceRemoved_Params);
this.onDeviceRemoved(params.deviceInfo);
return true;
default:
return false;
}
};
UsbDeviceManagerClientStub.prototype.acceptWithResponder =
function(message, responder) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
default:
return false;
}
};
function validateUsbDeviceManagerClientRequest(messageValidator) {
var message = messageValidator.message;
var paramsClass = null;
switch (message.getName()) {
case kUsbDeviceManagerClient_OnDeviceAdded_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManagerClient_OnDeviceAdded_Params;
break;
case kUsbDeviceManagerClient_OnDeviceRemoved_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManagerClient_OnDeviceRemoved_Params;
break;
}
if (paramsClass === null)
return validator.validationError.NONE;
return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes());
}
function validateUsbDeviceManagerClientResponse(messageValidator) {
return validator.validationError.NONE;
}
var UsbDeviceManagerClient = {
name: 'device.mojom.UsbDeviceManagerClient',
kVersion: 0,
ptrClass: UsbDeviceManagerClientPtr,
proxyClass: UsbDeviceManagerClientProxy,
stubClass: UsbDeviceManagerClientStub,
validateRequest: validateUsbDeviceManagerClientRequest,
validateResponse: null,
};
UsbDeviceManagerClientStub.prototype.validator = validateUsbDeviceManagerClientRequest;
UsbDeviceManagerClientProxy.prototype.validator = null;
exports.UsbDeviceFilter = UsbDeviceFilter;
exports.UsbEnumerationOptions = UsbEnumerationOptions;
exports.UsbDeviceManager = UsbDeviceManager;
exports.UsbDeviceManagerPtr = UsbDeviceManagerPtr;
exports.UsbDeviceManagerAssociatedPtr = UsbDeviceManagerAssociatedPtr;
exports.UsbDeviceManagerClient = UsbDeviceManagerClient;
exports.UsbDeviceManagerClientPtr = UsbDeviceManagerClientPtr;
exports.UsbDeviceManagerClientAssociatedPtr = UsbDeviceManagerClientAssociatedPtr;
})();

View file

@ -1 +0,0 @@
Content-Type: text/javascript; charset=utf-8

View file

@ -0,0 +1,262 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
(function() {
var mojomId = 'device/usb/public/mojom/device_manager_client.mojom';
if (mojo.internal.isMojomLoaded(mojomId)) {
console.warn('The following mojom is loaded multiple times: ' + mojomId);
return;
}
mojo.internal.markMojomLoaded(mojomId);
var bindings = mojo;
var associatedBindings = mojo;
var codec = mojo.internal;
var validator = mojo.internal;
var exports = mojo.internal.exposeNamespace('device.mojom');
var device$ =
mojo.internal.exposeNamespace('device.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'device/usb/public/mojom/device.mojom', 'device.mojom.js');
}
function UsbDeviceManagerClient_OnDeviceAdded_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManagerClient_OnDeviceAdded_Params.prototype.initDefaults_ = function() {
this.deviceInfo = null;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManagerClient_OnDeviceAdded_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManagerClient_OnDeviceAdded_Params.deviceInfo
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, device$.UsbDeviceInfo, false);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManagerClient_OnDeviceAdded_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManagerClient_OnDeviceAdded_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.deviceInfo = decoder.decodeStructPointer(device$.UsbDeviceInfo);
return val;
};
UsbDeviceManagerClient_OnDeviceAdded_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStructPointer(device$.UsbDeviceInfo, val.deviceInfo);
};
function UsbDeviceManagerClient_OnDeviceRemoved_Params(values) {
this.initDefaults_();
this.initFields_(values);
}
UsbDeviceManagerClient_OnDeviceRemoved_Params.prototype.initDefaults_ = function() {
this.deviceInfo = null;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.prototype.initFields_ = function(fields) {
for(var field in fields) {
if (this.hasOwnProperty(field))
this[field] = fields[field];
}
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.validate = function(messageValidator, offset) {
var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE)
return err;
var kVersionSizes = [
{version: 0, numBytes: 16}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
return err;
// validate UsbDeviceManagerClient_OnDeviceRemoved_Params.deviceInfo
err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, device$.UsbDeviceInfo, false);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize = codec.kStructHeaderSize + 8;
UsbDeviceManagerClient_OnDeviceRemoved_Params.decode = function(decoder) {
var packed;
var val = new UsbDeviceManagerClient_OnDeviceRemoved_Params();
var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32();
val.deviceInfo = decoder.decodeStructPointer(device$.UsbDeviceInfo);
return val;
};
UsbDeviceManagerClient_OnDeviceRemoved_Params.encode = function(encoder, val) {
var packed;
encoder.writeUint32(UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize);
encoder.writeUint32(0);
encoder.encodeStructPointer(device$.UsbDeviceInfo, val.deviceInfo);
};
var kUsbDeviceManagerClient_OnDeviceAdded_Name = 0;
var kUsbDeviceManagerClient_OnDeviceRemoved_Name = 1;
function UsbDeviceManagerClientPtr(handleOrPtrInfo) {
this.ptr = new bindings.InterfacePtrController(UsbDeviceManagerClient,
handleOrPtrInfo);
}
function UsbDeviceManagerClientAssociatedPtr(associatedInterfacePtrInfo) {
this.ptr = new associatedBindings.AssociatedInterfacePtrController(
UsbDeviceManagerClient, associatedInterfacePtrInfo);
}
UsbDeviceManagerClientAssociatedPtr.prototype =
Object.create(UsbDeviceManagerClientPtr.prototype);
UsbDeviceManagerClientAssociatedPtr.prototype.constructor =
UsbDeviceManagerClientAssociatedPtr;
function UsbDeviceManagerClientProxy(receiver) {
this.receiver_ = receiver;
}
UsbDeviceManagerClientPtr.prototype.onDeviceAdded = function() {
return UsbDeviceManagerClientProxy.prototype.onDeviceAdded
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerClientProxy.prototype.onDeviceAdded = function(deviceInfo) {
var params_ = new UsbDeviceManagerClient_OnDeviceAdded_Params();
params_.deviceInfo = deviceInfo;
var builder = new codec.MessageV0Builder(
kUsbDeviceManagerClient_OnDeviceAdded_Name,
codec.align(UsbDeviceManagerClient_OnDeviceAdded_Params.encodedSize));
builder.encodeStruct(UsbDeviceManagerClient_OnDeviceAdded_Params, params_);
var message = builder.finish();
this.receiver_.accept(message);
};
UsbDeviceManagerClientPtr.prototype.onDeviceRemoved = function() {
return UsbDeviceManagerClientProxy.prototype.onDeviceRemoved
.apply(this.ptr.getProxy(), arguments);
};
UsbDeviceManagerClientProxy.prototype.onDeviceRemoved = function(deviceInfo) {
var params_ = new UsbDeviceManagerClient_OnDeviceRemoved_Params();
params_.deviceInfo = deviceInfo;
var builder = new codec.MessageV0Builder(
kUsbDeviceManagerClient_OnDeviceRemoved_Name,
codec.align(UsbDeviceManagerClient_OnDeviceRemoved_Params.encodedSize));
builder.encodeStruct(UsbDeviceManagerClient_OnDeviceRemoved_Params, params_);
var message = builder.finish();
this.receiver_.accept(message);
};
function UsbDeviceManagerClientStub(delegate) {
this.delegate_ = delegate;
}
UsbDeviceManagerClientStub.prototype.onDeviceAdded = function(deviceInfo) {
return this.delegate_ && this.delegate_.onDeviceAdded && this.delegate_.onDeviceAdded(deviceInfo);
}
UsbDeviceManagerClientStub.prototype.onDeviceRemoved = function(deviceInfo) {
return this.delegate_ && this.delegate_.onDeviceRemoved && this.delegate_.onDeviceRemoved(deviceInfo);
}
UsbDeviceManagerClientStub.prototype.accept = function(message) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
case kUsbDeviceManagerClient_OnDeviceAdded_Name:
var params = reader.decodeStruct(UsbDeviceManagerClient_OnDeviceAdded_Params);
this.onDeviceAdded(params.deviceInfo);
return true;
case kUsbDeviceManagerClient_OnDeviceRemoved_Name:
var params = reader.decodeStruct(UsbDeviceManagerClient_OnDeviceRemoved_Params);
this.onDeviceRemoved(params.deviceInfo);
return true;
default:
return false;
}
};
UsbDeviceManagerClientStub.prototype.acceptWithResponder =
function(message, responder) {
var reader = new codec.MessageReader(message);
switch (reader.messageName) {
default:
return false;
}
};
function validateUsbDeviceManagerClientRequest(messageValidator) {
var message = messageValidator.message;
var paramsClass = null;
switch (message.getName()) {
case kUsbDeviceManagerClient_OnDeviceAdded_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManagerClient_OnDeviceAdded_Params;
break;
case kUsbDeviceManagerClient_OnDeviceRemoved_Name:
if (!message.expectsResponse() && !message.isResponse())
paramsClass = UsbDeviceManagerClient_OnDeviceRemoved_Params;
break;
}
if (paramsClass === null)
return validator.validationError.NONE;
return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes());
}
function validateUsbDeviceManagerClientResponse(messageValidator) {
return validator.validationError.NONE;
}
var UsbDeviceManagerClient = {
name: 'device.mojom.UsbDeviceManagerClient',
kVersion: 0,
ptrClass: UsbDeviceManagerClientPtr,
proxyClass: UsbDeviceManagerClientProxy,
stubClass: UsbDeviceManagerClientStub,
validateRequest: validateUsbDeviceManagerClientRequest,
validateResponse: null,
};
UsbDeviceManagerClientStub.prototype.validator = validateUsbDeviceManagerClientRequest;
UsbDeviceManagerClientProxy.prototype.validator = null;
exports.UsbDeviceManagerClient = UsbDeviceManagerClient;
exports.UsbDeviceManagerClientPtr = UsbDeviceManagerClientPtr;
exports.UsbDeviceManagerClientAssociatedPtr = UsbDeviceManagerClientAssociatedPtr;
})();

View file

@ -0,0 +1 @@
Content-Type: text/javascript; charset=utf-8

View file

@ -2,9 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
'use strict'; 'use strict';
if ((typeof mojo !== 'undefined') && mojo.internal && mojo.config) {
(function() { (function() {
var mojomId = 'mojo/public/mojom/base/string16.mojom'; var mojomId = 'mojo/public/mojom/base/string16.mojom';
@ -13,15 +11,18 @@ if ((typeof mojo !== 'undefined') && mojo.internal && mojo.config) {
return; return;
} }
mojo.internal.markMojomLoaded(mojomId); mojo.internal.markMojomLoaded(mojomId);
// TODO(yzshen): Define these aliases to minimize the differences between the
// old/new modes. Remove them when the old mode goes away.
var bindings = mojo; var bindings = mojo;
var associatedBindings = mojo; var associatedBindings = mojo;
var codec = mojo.internal; var codec = mojo.internal;
var validator = mojo.internal; var validator = mojo.internal;
var exports = mojo.internal.exposeNamespace('mojo.common.mojom'); var exports = mojo.internal.exposeNamespace('mojoBase.mojom');
var big_buffer$ =
mojo.internal.exposeNamespace('mojoBase.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'mojo/public/mojom/base/big_buffer.mojom', 'big_buffer.mojom.js');
}
@ -55,7 +56,6 @@ if ((typeof mojo !== 'undefined') && mojo.internal && mojo.config) {
return err; return err;
// validate String16.data // validate String16.data
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 2, codec.Uint16, false, [0], 0); err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 2, codec.Uint16, false, [0], 0);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
@ -81,79 +81,61 @@ if ((typeof mojo !== 'undefined') && mojo.internal && mojo.config) {
encoder.writeUint32(0); encoder.writeUint32(0);
encoder.encodeArrayPointer(codec.Uint16, val.data); encoder.encodeArrayPointer(codec.Uint16, val.data);
}; };
exports.String16 = String16; function BigString16(values) {
})();
}
if ((typeof mojo === 'undefined') || !mojo.internal || !mojo.config) {
define("mojo/public/mojom/base/string16.mojom", [
"mojo/public/js/associated_bindings",
"mojo/public/js/bindings",
"mojo/public/js/codec",
"mojo/public/js/core",
"mojo/public/js/validator",
], function(associatedBindings, bindings, codec, core, validator) {
var exports = {};
function String16(values) {
this.initDefaults_(); this.initDefaults_();
this.initFields_(values); this.initFields_(values);
} }
String16.prototype.initDefaults_ = function() { BigString16.prototype.initDefaults_ = function() {
this.data = null; this.data = null;
}; };
String16.prototype.initFields_ = function(fields) { BigString16.prototype.initFields_ = function(fields) {
for(var field in fields) { for(var field in fields) {
if (this.hasOwnProperty(field)) if (this.hasOwnProperty(field))
this[field] = fields[field]; this[field] = fields[field];
} }
}; };
String16.validate = function(messageValidator, offset) { BigString16.validate = function(messageValidator, offset) {
var err; var err;
err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize); err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
var kVersionSizes = [ var kVersionSizes = [
{version: 0, numBytes: 16} {version: 0, numBytes: 24}
]; ];
err = messageValidator.validateStructVersion(offset, kVersionSizes); err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
// validate BigString16.data
// validate String16.data err = messageValidator.validateUnion(offset + codec.kStructHeaderSize + 0, big_buffer$.BigBuffer, false);
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 2, codec.Uint16, false, [0], 0);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
return validator.validationError.NONE; return validator.validationError.NONE;
}; };
String16.encodedSize = codec.kStructHeaderSize + 8; BigString16.encodedSize = codec.kStructHeaderSize + 16;
String16.decode = function(decoder) { BigString16.decode = function(decoder) {
var packed; var packed;
var val = new String16(); var val = new BigString16();
var numberOfBytes = decoder.readUint32(); var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32(); var version = decoder.readUint32();
val.data = decoder.decodeArrayPointer(codec.Uint16); val.data = decoder.decodeStruct(big_buffer$.BigBuffer);
return val; return val;
}; };
String16.encode = function(encoder, val) { BigString16.encode = function(encoder, val) {
var packed; var packed;
encoder.writeUint32(String16.encodedSize); encoder.writeUint32(BigString16.encodedSize);
encoder.writeUint32(0); encoder.writeUint32(0);
encoder.encodeArrayPointer(codec.Uint16, val.data); encoder.encodeStruct(big_buffer$.BigBuffer, val.data);
}; };
exports.String16 = String16; exports.String16 = String16;
exports.BigString16 = BigString16;
return exports; })();
});
}

View file

@ -76,4 +76,4 @@
encoder.encodeStruct(codec.String, val.url); encoder.encodeStruct(codec.String, val.url);
}; };
exports.Url = Url; exports.Url = Url;
})(); })();

View file

@ -23,11 +23,17 @@
mojo.internal.loadMojomIfNecessary( mojo.internal.loadMojomIfNecessary(
'device/usb/public/mojom/device.mojom', '../../../../../device/usb/public/mojom/device.mojom.js'); 'device/usb/public/mojom/device.mojom', '../../../../../device/usb/public/mojom/device.mojom.js');
} }
var device_manager$ = var device_enumeration_options$ =
mojo.internal.exposeNamespace('device.mojom'); mojo.internal.exposeNamespace('device.mojom');
if (mojo.config.autoLoadMojomDeps) { if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary( mojo.internal.loadMojomIfNecessary(
'device/usb/public/mojom/device_manager.mojom', '../../../../../device/usb/public/mojom/device_manager.mojom.js'); 'device/usb/public/mojom/device_enumeration_options.mojom', '../../../../../device/usb/public/mojom/device_enumeration_options.mojom.js');
}
var device_manager_client$ =
mojo.internal.exposeNamespace('device.mojom');
if (mojo.config.autoLoadMojomDeps) {
mojo.internal.loadMojomIfNecessary(
'device/usb/public/mojom/device_manager_client.mojom', '../../../../../device/usb/public/mojom/device_manager_client.mojom.js');
} }
@ -236,7 +242,7 @@
// validate WebUsbService_GetPermission_Params.deviceFilters // validate WebUsbService_GetPermission_Params.deviceFilters
err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 8, new codec.PointerTo(device_manager$.UsbDeviceFilter), false, [0], 0); err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 8, new codec.PointerTo(device_enumeration_options$.UsbDeviceFilter), false, [0], 0);
if (err !== validator.validationError.NONE) if (err !== validator.validationError.NONE)
return err; return err;
@ -250,7 +256,7 @@
var val = new WebUsbService_GetPermission_Params(); var val = new WebUsbService_GetPermission_Params();
var numberOfBytes = decoder.readUint32(); var numberOfBytes = decoder.readUint32();
var version = decoder.readUint32(); var version = decoder.readUint32();
val.deviceFilters = decoder.decodeArrayPointer(new codec.PointerTo(device_manager$.UsbDeviceFilter)); val.deviceFilters = decoder.decodeArrayPointer(new codec.PointerTo(device_enumeration_options$.UsbDeviceFilter));
return val; return val;
}; };
@ -258,7 +264,7 @@
var packed; var packed;
encoder.writeUint32(WebUsbService_GetPermission_Params.encodedSize); encoder.writeUint32(WebUsbService_GetPermission_Params.encodedSize);
encoder.writeUint32(0); encoder.writeUint32(0);
encoder.encodeArrayPointer(new codec.PointerTo(device_manager$.UsbDeviceFilter), val.deviceFilters); encoder.encodeArrayPointer(new codec.PointerTo(device_enumeration_options$.UsbDeviceFilter), val.deviceFilters);
}; };
function WebUsbService_GetPermission_ResponseParams(values) { function WebUsbService_GetPermission_ResponseParams(values) {
this.initDefaults_(); this.initDefaults_();
@ -605,4 +611,4 @@
exports.WebUsbService = WebUsbService; exports.WebUsbService = WebUsbService;
exports.WebUsbServicePtr = WebUsbServicePtr; exports.WebUsbServicePtr = WebUsbServicePtr;
exports.WebUsbServiceAssociatedPtr = WebUsbServiceAssociatedPtr; exports.WebUsbServiceAssociatedPtr = WebUsbServiceAssociatedPtr;
})(); })();

View file

@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<h:script src="/resources/testharness.js"/>
<h:script src="/resources/testharnessreport.js"/>
<rect width="100" height="100" fill="red">
<set id="anim" attributeName="fill" to="green" begin="indefinite"/>
</rect>
<script>
async_test(t => {
let anim = document.getElementById("anim");
onload = t.step_func(() => {
anim.endElement();
anim.beginElement();
requestAnimationFrame(t.step_func_done(() => {
assert_equals(getComputedStyle(anim.parentNode).fill, "rgb(0, 128, 0)");
}));
});
}, "endElement() on an inactive element");
</script>
</svg>

After

Width:  |  Height:  |  Size: 707 B

View file

@ -79,7 +79,12 @@ class TypeData(object):
return rv return rv
def __delitem__(self, key): def __delitem__(self, key):
del self.data[key] if key in self.data:
del self.data[key]
elif self.json_data is not None:
del self.json_data[from_os_path(key)]
else:
raise KeyError
def __setitem__(self, key, value): def __setitem__(self, key, value):
self.data[key] = value self.data[key] = value
@ -279,6 +284,11 @@ class Manifest(object):
if old_hash != file_hash: if old_hash != file_hash:
new_type, manifest_items = source_file.manifest_items() new_type, manifest_items = source_file.manifest_items()
hash_changed = True hash_changed = True
if new_type != old_type:
try:
del self._data[old_type][rel_path]
except KeyError:
pass
else: else:
new_type, manifest_items = old_type, self._data[old_type][rel_path] new_type, manifest_items = old_type, self._data[old_type][rel_path]
if old_type in reftest_types and new_type != old_type: if old_type in reftest_types and new_type != old_type:
@ -306,10 +316,7 @@ class Manifest(object):
_, old_type = self._path_hash[rel_path] _, old_type = self._path_hash[rel_path]
if old_type in reftest_types: if old_type in reftest_types:
reftest_changes = True reftest_changes = True
try: del self._path_hash[rel_path]
del self._path_hash[rel_path]
except KeyError:
pass
try: try:
del self._data[old_type][rel_path] del self._data[old_type][rel_path]
except KeyError: except KeyError:

View file

@ -353,13 +353,13 @@ def test_no_update():
assert list(m) == [("testharness", test1.path, {test1}), assert list(m) == [("testharness", test1.path, {test1}),
("testharness", test2.path, {test2})] ("testharness", test2.path, {test2})]
s1_1 = SourceFileWithTest("test1", "1"*40, item.TestharnessTest) s1_1 = SourceFileWithTest("test1", "1"*40, item.ManualTest)
m.update([(s1, True), (s2.rel_path, False)]) m.update([(s1_1, True), (s2.rel_path, False)])
test1_1 = s1_1.manifest_items()[1][0] test1_1 = s1_1.manifest_items()[1][0]
assert list(m) == [("testharness", test1_1.path, {test1_1}), assert list(m) == [("manual", test1_1.path, {test1_1}),
("testharness", test2.path, {test2})] ("testharness", test2.path, {test2})]
@ -371,10 +371,28 @@ def test_no_update_delete():
m.update([(s1, True), (s2, True)]) m.update([(s1, True), (s2, True)])
s1_1 = SourceFileWithTest("test1", "1"*40, item.TestharnessTest) test1 = s1.manifest_items()[1][0]
s1_1 = SourceFileWithTest("test1", "1"*40, item.ManualTest)
m.update([(s1_1.rel_path, False)])
assert list(m) == [("testharness", test1.path, {test1})]
def test_update_from_json():
m = manifest.Manifest()
s1 = SourceFileWithTest("test1", "0"*40, item.TestharnessTest)
s2 = SourceFileWithTest("test2", "0"*40, item.TestharnessTest)
m.update([(s1, True), (s2, True)])
json_str = m.to_json()
m = manifest.Manifest.from_json("/", json_str)
m.update([(s1, True)]) m.update([(s1, True)])
test1_1 = s1_1.manifest_items()[1][0] test1 = s1.manifest_items()[1][0]
assert list(m) == [("testharness", test1_1.path, {test1_1})] assert list(m) == [("testharness", test1.path, {test1})]

View file

@ -16,6 +16,7 @@ import traceback
from six.moves import urllib from six.moves import urllib
import uuid import uuid
from collections import defaultdict, OrderedDict from collections import defaultdict, OrderedDict
from itertools import chain, product
from multiprocessing import Process, Event from multiprocessing import Process, Event
from localpaths import repo_root from localpaths import repo_root
@ -720,6 +721,9 @@ def build_config(override_path=None, **kwargs):
return rv return rv
def _make_subdomains_product(s, depth=2):
return set(u".".join(x) for x in chain(*(product(s, repeat=i) for i in range(1, depth+1))))
_subdomains = {u"www", _subdomains = {u"www",
u"www1", u"www1",
u"www2", u"www2",
@ -728,6 +732,10 @@ _subdomains = {u"www",
_not_subdomains = {u"nonexistent"} _not_subdomains = {u"nonexistent"}
_subdomains = _make_subdomains_product(_subdomains)
_not_subdomains = _make_subdomains_product(_not_subdomains)
class ConfigBuilder(config.ConfigBuilder): class ConfigBuilder(config.ConfigBuilder):
"""serve config """serve config

View file

@ -1,6 +1,7 @@
import json
import os
import pickle import pickle
import platform import platform
import os
import pytest import pytest
@ -75,3 +76,11 @@ def test_pickle():
# Ensure that the config object can be pickled # Ensure that the config object can be pickled
with ConfigBuilder() as c: with ConfigBuilder() as c:
pickle.dumps(c) pickle.dumps(c)
def test_config_json_length():
# we serialize the config as JSON for pytestrunner and put it in an env
# variable, which on Windows must have a length <= 0x7FFF (int16)
with ConfigBuilder() as c:
data = json.dumps(c.as_dict())
assert len(data) <= 0x7FFF

View file

@ -1,3 +1,4 @@
import json
import logging import logging
import pickle import pickle
@ -43,6 +44,16 @@ def test_logger_preserved():
assert c.logger is logger assert c.logger is logger
def test_as_dict():
with config.ConfigBuilder() as c:
assert c.as_dict() is not None
def test_as_dict_is_json():
with config.ConfigBuilder() as c:
assert json.dumps(c.as_dict()) is not None
def test_init_basic_prop(): def test_init_basic_prop():
with config.ConfigBuilder(browser_host="foo.bar") as c: with config.ConfigBuilder(browser_host="foo.bar") as c:
assert c.browser_host == "foo.bar" assert c.browser_host == "foo.bar"

View file

@ -75,7 +75,9 @@ def json_types(obj):
return {key: json_types(value) for key, value in iteritems(obj)} return {key: json_types(value) for key, value in iteritems(obj)}
if (isinstance(obj, string_types) or if (isinstance(obj, string_types) or
isinstance(obj, integer_types) or isinstance(obj, integer_types) or
isinstance(obj, float)): isinstance(obj, float) or
isinstance(obj, bool) or
obj is None):
return obj return obj
if isinstance(obj, list) or hasattr(obj, "__iter__"): if isinstance(obj, list) or hasattr(obj, "__iter__"):
return [json_types(value) for value in obj] return [json_types(value) for value in obj]

View file

@ -0,0 +1,99 @@
<!doctype html>
<meta charset="utf-8">
<title>RTCDtlsTransport</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script>
'use strict';
// The following helper functions are called from RTCPeerConnection-helper.js:
// exchangeIceCandidates
// doSignalingHandshake
// trackFactories.audio()
/*
5.5. RTCDtlsTransport Interface
interface RTCDtlsTransport : EventTarget {
readonly attribute RTCDtlsTransportState state;
sequence<ArrayBuffer> getRemoteCertificates();
attribute EventHandler onstatechange;
attribute EventHandler onerror;
...
};
enum RTCDtlsTransportState {
"new",
"connecting",
"connected",
"closed",
"failed"
};
*/
function resolveWhen(t, dtlstransport, state) {
return new Promise((resolve, reject) => {
if (dtlstransport.state == state) { resolve(); }
dtlstransport.addEventListener('statechange', t.step_func(e => {
if (dtlstransport.state == state) {
resolve();
}
}));
});
}
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc1.addTrack(trackFactories.audio());
exchangeIceCandidates(pc1, pc2);
await doSignalingHandshake(pc1, pc2);
const dtlsTransport1 = pc1.getTransceivers()[0].sender.transport;
const dtlsTransport2 = pc2.getTransceivers()[0].sender.transport;
assert_true(dtlsTransport1 instanceof RTCDtlsTransport);
assert_true(dtlsTransport2 instanceof RTCDtlsTransport);
await Promise.all([resolveWhen(t, dtlsTransport1, 'connected'),
resolveWhen(t, dtlsTransport2, 'connected')]);
}, 'DTLS transport goes to connected state');
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc1.addTrack(trackFactories.audio());
exchangeIceCandidates(pc1, pc2);
await doSignalingHandshake(pc1, pc2);
const dtlsTransport1 = pc1.getTransceivers()[0].sender.transport;
const dtlsTransport2 = pc2.getTransceivers()[0].sender.transport;
await Promise.all([resolveWhen(t, dtlsTransport1, 'connected'),
resolveWhen(t, dtlsTransport2, 'connected')]);
pc1.close();
assert_equals(dtlsTransport1.state, 'closed');
}, 'close() causes the local transport to close immediately');
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc1.addTrack(trackFactories.audio());
exchangeIceCandidates(pc1, pc2);
await doSignalingHandshake(pc1, pc2);
const dtlsTransport1 = pc1.getTransceivers()[0].sender.transport;
const dtlsTransport2 = pc2.getTransceivers()[0].sender.transport;
await Promise.all([resolveWhen(t, dtlsTransport1, 'connected'),
resolveWhen(t, dtlsTransport2, 'connected')]);
pc1.close();
await resolveWhen(t, dtlsTransport2, 'closed');
}, 'close() causes the other end\'s DTLS transport to close');
</script>

Some files were not shown because too many files have changed in this diff Show more