mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Update web-platform-tests to revision 4adce83d1f2b08fa2e92427c4687d0cf535aee53
This commit is contained in:
parent
d3763452b5
commit
3e4ec1724a
102 changed files with 3019 additions and 1309 deletions
|
@ -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]
|
||||||
|
|
|
@ -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": [
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[floats-in-table-caption-001.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
||||||
[line-height-204.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[mix-blend-mode-paragraph.html]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[background-image-first-line.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
||||||
[background-repeat-round-roundup.xht]
|
|
||||||
expected: FAIL
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[line-break-normal-018.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[line-break-strict-018.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[text-transform-full-size-kana-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-ideographic-space-004.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
||||||
[word-break-keep-all-006.html]
|
|
||||||
expected: FAIL
|
|
|
@ -74,3 +74,6 @@
|
||||||
[opacity end]
|
[opacity end]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[outline-width end]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[CaretPosition-001.html]
|
||||||
|
[Element at (400, 100)]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[parser-sets-attributes-and-children.html]
|
[parser-sets-attributes-and-children.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
|
|
7
tests/wpt/metadata/fetch/http-cache/post-patch.html.ini
Normal file
7
tests/wpt/metadata/fetch/http-cache/post-patch.html.ini
Normal 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
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[006.html]
|
|
||||||
[Link with onclick form submit and href navigation ]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[non-active-document.html]
|
||||||
|
[DOMParser]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[createHTMLDocument]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<template>]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[FormDataEvent.window.html]
|
||||||
|
[Successful FormDataEvent constructor]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Failing FormDataEvent constructor]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-submission-algorithm.html]
|
||||||
|
[If constructing entry list flag of form is true, then return]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[toggleEvent.html]
|
||||||
|
[Calling open twice on 'details' fires only one toggle event]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[077.html]
|
|
||||||
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[aborted-parser.window.html]
|
|
||||||
[document.open() after parser is aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[promise-rejection-events.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[rejectionhandled is dispatched from a queued task, and not immediately]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
7
tests/wpt/metadata/xhr/formdata.htm.ini
Normal file
7
tests/wpt/metadata/xhr/formdata.htm.ini
Normal 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||||
|
|
BIN
tests/wpt/web-platform-tests/css/css-lists/resources/white.gif
Normal file
BIN
tests/wpt/web-platform-tests/css/css-lists/resources/white.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 B |
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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)
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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>
|
|
@ -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])
|
||||||
|
|
|
@ -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'],
|
||||||
|
|
|
@ -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>
|
|
@ -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 => {
|
||||||
|
|
|
@ -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');
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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;
|
||||||
|
}
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
})();
|
|
@ -0,0 +1 @@
|
||||||
|
Content-Type: text/javascript; charset=utf-8
|
|
@ -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;
|
||||||
})();
|
})();
|
|
@ -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;
|
||||||
|
})();
|
|
@ -0,0 +1 @@
|
||||||
|
Content-Type: text/javascript; charset=utf-8
|
|
@ -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;
|
|
||||||
})();
|
|
|
@ -1 +0,0 @@
|
||||||
Content-Type: text/javascript; charset=utf-8
|
|
|
@ -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;
|
||||||
|
})();
|
|
@ -0,0 +1 @@
|
||||||
|
Content-Type: text/javascript; charset=utf-8
|
File diff suppressed because it is too large
Load diff
|
@ -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;
|
})();
|
||||||
});
|
|
||||||
}
|
|
|
@ -76,4 +76,4 @@
|
||||||
encoder.encodeStruct(codec.String, val.url);
|
encoder.encodeStruct(codec.String, val.url);
|
||||||
};
|
};
|
||||||
exports.Url = Url;
|
exports.Url = Url;
|
||||||
})();
|
})();
|
|
@ -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;
|
||||||
})();
|
})();
|
|
@ -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 |
|
@ -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:
|
||||||
|
|
|
@ -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})]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue