mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Update web-platform-tests to revision b'79fa4cf76e0d39e3fc1b7ead85e067b0a064b892'
This commit is contained in:
parent
4a46a476d7
commit
31f9c69336
83 changed files with 2200 additions and 954 deletions
|
@ -4,7 +4,7 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -326,3 +326,153 @@
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[color color(rgba) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(keyword) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(numeric) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(integer) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(decimal) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-shadow shadow(shadow) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -236,156 +236,6 @@
|
||||||
[margin-right length(mm) / events]
|
[margin-right length(mm) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[max-height length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[color color(rgba) / events]
|
[color color(rgba) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -506,3 +356,126 @@
|
||||||
[word-spacing percentage(%) / events]
|
[word-spacing percentage(%) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[background-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -326,3 +326,153 @@
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -8,3 +8,12 @@
|
||||||
[A custom property referencing a non-existent variable is treated as unset]
|
[A custom property referencing a non-existent variable is treated as unset]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Custom properties in a cycle become guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[A custom property referencing a cycle becomes guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[A custom property referencing a non-existent variable becomes guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
[request-upload.any.html]
|
[request-upload.any.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fetch with POST with ReadableStream]
|
[Fetch with POST with ReadableStream]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with text body on 421 response should be retried once on new connection.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
||||||
[request-upload.any.serviceworker.html]
|
[request-upload.any.serviceworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
@ -10,6 +17,13 @@
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[request-upload.any.worker.html]
|
[request-upload.any.worker.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fetch with POST with ReadableStream]
|
[Fetch with POST with ReadableStream]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with text body on 421 response should be retried once on new connection.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -41,3 +41,45 @@
|
||||||
[Content-Length%3A%20]
|
[Content-Length%3A%20]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42,42". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30,30". Expected: 30.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30\\r\\nContent-Length: 30,30". Expected: 30.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah\\r\\nContent-Length: aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah, aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42s". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30s". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: -1". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 0x20". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 030\\r\\nContent-Length: 30". Expected: network error.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: \\"30\\"". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: ". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -309,12 +309,9 @@
|
||||||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[cross-origin-objects-on-new-window.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +1,5 @@
|
||||||
[creating_browsing_context_test_01.html]
|
[creating_browsing_context_test_01.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[first argument: absolute url]
|
[first argument: absolute url]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
|
expected: CRASH
|
||||||
[opener of discarded nested browsing context]
|
[opener of discarded nested browsing context]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -14,3 +14,6 @@
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Non-HTMLElement should not support autofocus]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[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: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[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: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
|
expected: CRASH
|
||||||
[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: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-double-submit-3.html]
|
||||||
|
[<button> should have the same double-submit protection as <input type=submit>]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionStart a second time (must not fire select)]
|
[input type search: selectionStart a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -23,42 +20,15 @@
|
||||||
[input type text: selectionEnd out of range a second time (must not fire select)]
|
[input type text: selectionEnd out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: select() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionEnd a second time (must not fire select)]
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setRangeText() a second time (must not fire select)]
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -68,9 +38,48 @@
|
||||||
[input type url: setSelectionRange() a second time (must not fire select)]
|
[input type url: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: select() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type url: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[module-delayed.html]
|
||||||
|
[async document.write in a module]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -3,6 +3,3 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[promise-job-entry-different-function-realm.html]
|
[promise-job-entry-different-function-realm.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fulfillment handler on fulfilled promise]
|
[Fulfillment handler on fulfilled promise]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Rejection handler on pending-then-rejected promise]
|
[Rejection handler on pending-then-rejected promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Thenable resolution]
|
[Thenable resolution]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -12,5 +13,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fulfillment handler on pending-then-fulfilled promise]
|
[Fulfillment handler on pending-then-fulfilled promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -620,3 +620,9 @@
|
||||||
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
|
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-6.9001540120165462e-27\t3.3531737327575684e-1\t3.3531737327575684e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[15241\]\t4.5592646835272248e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 3.9367997646331787e-1 at index of 15241.\n\tMax RelError of 1.0000000000000000e+0 at index of 15240.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-7.1126672850560558e-27\t-9.8956179618835449e-1\t9.8956179618835449e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956179618835449e-1 at index of 7189.\n\tMax RelError of 1.0000000000000000e+0 at index of 7189.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[test_element_in_object]
|
[test_element_in_object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_element_in_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
|
@ -53703,6 +53703,19 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"floats-placement-004.html": [
|
||||||
|
"bbfc9196c867206bef20bc9e16a79325c7b77ab0",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/CSS2/reference/ref-filled-green-100px-square.xht",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"floats-placement-vertical-001a.xht": [
|
"floats-placement-vertical-001a.xht": [
|
||||||
"07de02887e7f28693ef23b518c4729602ff77c3b",
|
"07de02887e7f28693ef23b518c4729602ff77c3b",
|
||||||
[
|
[
|
||||||
|
@ -285754,6 +285767,14 @@
|
||||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"javascript-url-srcdoc-cross-origin-iframe-inheritance-helper.sub.html": [
|
||||||
|
"afe4753cf93f8d68884eb731ce69e004a4b5e9ff",
|
||||||
|
[]
|
||||||
|
],
|
||||||
|
"navigate-parent-to-blob.html": [
|
||||||
|
"df4a4438935a5798d3672111081984d6ef9d0ef1",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"navigate-self-to-blob.html": [
|
"navigate-self-to-blob.html": [
|
||||||
"9ea069969cafff022e94fef3de535feafaca1de7",
|
"9ea069969cafff022e94fef3de535feafaca1de7",
|
||||||
[]
|
[]
|
||||||
|
@ -285762,6 +285783,10 @@
|
||||||
"2642b0fa06730692aa4617260b6903b7f698b4b4",
|
"2642b0fa06730692aa4617260b6903b7f698b4b4",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"postmessage-top.html": [
|
||||||
|
"4f83a58dd4a80b5a6171266d2944e628d204e434",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"srcdoc-child-frame.html": [
|
"srcdoc-child-frame.html": [
|
||||||
"9148be203d30ea043a56b38305877142735a4c49",
|
"9148be203d30ea043a56b38305877142735a4c49",
|
||||||
[]
|
[]
|
||||||
|
@ -286472,7 +286497,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"checkReport.sub.js": [
|
"checkReport.sub.js": [
|
||||||
"f188d18207e71569f004070ec4bc7d367ae9d6b0",
|
"ecbc69239098c6c99699e6678ec618b928cc31f1",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"dedicated-worker-helper.js": [
|
"dedicated-worker-helper.js": [
|
||||||
|
@ -324343,7 +324368,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"common.js": [
|
"common.js": [
|
||||||
"65feec3b6b61c1342217ba550652f9dbfa684d6c",
|
"038ef07a6d92af585101c864cdd048cffb68f3bc",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"scroll-target-align-001-iframe.html": [
|
"scroll-target-align-001-iframe.html": [
|
||||||
|
@ -341895,7 +341920,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"network-partition-key.py": [
|
"network-partition-key.py": [
|
||||||
"61e0496fca35d359008a11f2b581555cb6d94027",
|
"d59c74137b80a7135bb9b2c0b39014b764a61428",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"network-partition-worker-checker.html": [
|
"network-partition-worker-checker.html": [
|
||||||
|
@ -347228,7 +347253,7 @@
|
||||||
},
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"dispatcher.js": [
|
"dispatcher.js": [
|
||||||
"45225a7f263de4ac7700febf2f99b91c473f8a8d",
|
"dd96310e410b177d37c3224ece2b4cf87be34754",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"dispatcher.py": [
|
"dispatcher.py": [
|
||||||
|
@ -357597,11 +357622,11 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webgl1.idl": [
|
"webgl1.idl": [
|
||||||
"95a0fa342652d5ed76ad567f2a5437b7c888f7e0",
|
"46d629193c9139de5a570734c6ecaf249e3e9600",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webgl2.idl": [
|
"webgl2.idl": [
|
||||||
"b2e660e6b6545f33e4acb6e378bce3517ab4d4cb",
|
"518637fcc72d3e02924f00d269bf1c56794806dd",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"webhid.idl": [
|
"webhid.idl": [
|
||||||
|
@ -365485,7 +365510,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"fetch-event-test-worker.js": [
|
"fetch-event-test-worker.js": [
|
||||||
"ba8204b9bb8ae94906bb4b0964c999a6c38fc207",
|
"bb59bc928651acd5274431e6d31711c4288523ba",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"fetch-event-within-sw-worker.js": [
|
"fetch-event-within-sw-worker.js": [
|
||||||
|
@ -378508,7 +378533,7 @@
|
||||||
"urlpattern": {
|
"urlpattern": {
|
||||||
"resources": {
|
"resources": {
|
||||||
"urlpatterntestdata.json": [
|
"urlpatterntestdata.json": [
|
||||||
"9e7fe20005bed1aa02a9db4dba749c3ba134449a",
|
"ae9405ea4b1292a210c10add867f6cb0bff12013",
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -380567,6 +380592,10 @@
|
||||||
"META.yml": [
|
"META.yml": [
|
||||||
"be8cb028f08842589d6c2f06391bc5c8469048d2",
|
"be8cb028f08842589d6c2f06391bc5c8469048d2",
|
||||||
[]
|
[]
|
||||||
|
],
|
||||||
|
"RTCRtpSynchronizationSource-helper.js": [
|
||||||
|
"10cfd651554a259817cd34521ab44556063f4f44",
|
||||||
|
[]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"webrtc-ice": {
|
"webrtc-ice": {
|
||||||
|
@ -406831,6 +406860,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"blob-url-inherits-from-initiator.sub.html": [
|
||||||
|
"72d59325d196a816544a3a82c466e2e688484c3c",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"document-write-iframe.html": [
|
"document-write-iframe.html": [
|
||||||
"a84e3a37031280ec33ccb98307f422e3ca468744",
|
"a84e3a37031280ec33ccb98307f422e3ca468744",
|
||||||
[
|
[
|
||||||
|
@ -406873,6 +406909,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"javascript-url-srcdoc-cross-origin-iframe-inheritance.html": [
|
||||||
|
"81210fe30f41faf10a2ca9704c9295bbd228ecfd",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"sandboxed-blob-scheme.html": [
|
"sandboxed-blob-scheme.html": [
|
||||||
"590fa7ec1a9caafc6f18e6821f100629688bd300",
|
"590fa7ec1a9caafc6f18e6821f100629688bd300",
|
||||||
[
|
[
|
||||||
|
@ -415008,7 +415051,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"env-in-custom-properties.tentative.html": [
|
"env-in-custom-properties.tentative.html": [
|
||||||
"6dadcc586b039b7fe4d69dc6ce4678a601343b77",
|
"24afe2963b938a01d73fc6ff02eb944ee3822b85",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -423437,6 +423480,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"position-sticky-scrollIntoView.html": [
|
||||||
|
"6fb4723529e49a550577d6f38d884028acc277f5",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"position-sticky-scrolled-remove-sibling.html": [
|
"position-sticky-scrolled-remove-sibling.html": [
|
||||||
"f2cf8a98b30a2c19a986d31bc4da99f0bdd8df9d",
|
"f2cf8a98b30a2c19a986d31bc4da99f0bdd8df9d",
|
||||||
[
|
[
|
||||||
|
@ -423444,6 +423494,13 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"position-sticky-top-and-bottom.html": [
|
||||||
|
"c790eaaf3ee2b62916e5f151dea10af882c5568a",
|
||||||
|
[
|
||||||
|
null,
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"position-sticky-top.html": [
|
"position-sticky-top.html": [
|
||||||
"9929fc734bab4c9816200bdb04e859eedd11b110",
|
"9929fc734bab4c9816200bdb04e859eedd11b110",
|
||||||
[
|
[
|
||||||
|
@ -423616,7 +423673,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"unit-cycles.html": [
|
"unit-cycles.html": [
|
||||||
"5301b6fcc77b1b7885ef7602410e4f4586391b4f",
|
"f8eba17f2183bbc6fc02e9e5ee2cf5fc55d30d56",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -423630,7 +423687,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"var-reference-registered-properties-cycles.html": [
|
"var-reference-registered-properties-cycles.html": [
|
||||||
"e94da5ddaef0c6906acc37ac78cab571504535d4",
|
"91792ef51db097ed626839537b40814c12b98cef",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -434233,7 +434290,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"variable-substitution-variable-declaration.html": [
|
"variable-substitution-variable-declaration.html": [
|
||||||
"678d05a1acc234362c1f8ac54f6a2190fc3a9fb1",
|
"0b0ab1f0f0f868fa86673f51d6ada27245926add",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -434282,7 +434339,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"variables-substitute-guaranteed-invalid.html": [
|
"variables-substitute-guaranteed-invalid.html": [
|
||||||
"c30e8746db516f2ef35e904c948801b184ceecae",
|
"4abfe28d1f21b2891599543b3972b26fbd15b77e",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -443066,7 +443123,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"caretnavigation.html": [
|
"caretnavigation.html": [
|
||||||
"defe7fecfc2850355fe21da8a6d14ed6c5265885",
|
"c0a8eca4ac23e179ab7e8d7df741417564c4fda1",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -458162,7 +458219,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"request-upload.any.js": [
|
"request-upload.any.js": [
|
||||||
"1412816a3c220d60ca1b3c525ac5953d10157c3c",
|
"82b1ac93c996dc76a641fc7f85e342c513ffe3d8",
|
||||||
[
|
[
|
||||||
"fetch/api/basic/request-upload.any.html",
|
"fetch/api/basic/request-upload.any.html",
|
||||||
{
|
{
|
||||||
|
@ -458174,6 +458231,14 @@
|
||||||
[
|
[
|
||||||
"script",
|
"script",
|
||||||
"../resources/utils.js"
|
"../resources/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/get-host-info.sub.js"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -458189,6 +458254,14 @@
|
||||||
[
|
[
|
||||||
"script",
|
"script",
|
||||||
"../resources/utils.js"
|
"../resources/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/get-host-info.sub.js"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -458204,6 +458277,14 @@
|
||||||
[
|
[
|
||||||
"script",
|
"script",
|
||||||
"../resources/utils.js"
|
"../resources/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/get-host-info.sub.js"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -458219,6 +458300,14 @@
|
||||||
[
|
[
|
||||||
"script",
|
"script",
|
||||||
"../resources/utils.js"
|
"../resources/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/utils.js"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"script",
|
||||||
|
"/common/get-host-info.sub.js"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -464082,7 +464171,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"parsing.window.js": [
|
"parsing.window.js": [
|
||||||
"73fbb482e042c1f05cfedfac8927ea789991265b",
|
"5028ad943dee6ab7bdd915dd61dd87461b059ff3",
|
||||||
[
|
[
|
||||||
"fetch/content-length/parsing.window.html",
|
"fetch/content-length/parsing.window.html",
|
||||||
{}
|
{}
|
||||||
|
@ -509554,7 +509643,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"elementTiming.html": [
|
"elementTiming.html": [
|
||||||
"cdfdff55f33ba591d5068ed0aea644527b12bc4e",
|
"ec71e0477ba1ff98836bca7db9a19484cc01d4d2",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -522997,7 +523086,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"pointerevent_touch-action-keyboard.html": [
|
"pointerevent_touch-action-keyboard.html": [
|
||||||
"aeff71331dd61ec5e7da5c0e67e241e9e4bdd941",
|
"ba087ab64151343e6e49b0ae13b2fd1ccb2f7d10",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -540277,7 +540366,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"fetch-event.https.html": [
|
"fetch-event.https.html": [
|
||||||
"5e56fe248c9ef63cc9d028c15d0de123a8304612",
|
"31a2cb05e2ccb44b6de35beb8000599a516368ee",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
@ -565186,7 +565275,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"RTCRtpSynchronizationSource-captureTimestamp.html": [
|
"RTCRtpSynchronizationSource-captureTimestamp.html": [
|
||||||
"323c207f5e63e0ca77458e4254e12072c9ac9e2d",
|
"11f2540c94602a9b4e685b9a5a309466c47fcccf",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
|
|
|
@ -326,3 +326,153 @@
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[color color(rgba) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-size percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(keyword) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[font-weight font-weight(numeric) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(integer) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height number(decimal) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[line-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[letter-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[word-spacing percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-indent percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[text-shadow shadow(shadow) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -206,156 +206,6 @@
|
||||||
[margin-right length(mm) / events]
|
[margin-right length(mm) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[max-height length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-height percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max-width percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[top percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[right percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[bottom percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(pt) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(pc) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(px) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(em) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(ex) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(mm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(cm) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left length(in) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[left percentage(%) / events]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[color color(rgba) / events]
|
[color color(rgba) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -506,3 +356,126 @@
|
||||||
[text-shadow shadow(shadow) / events]
|
[text-shadow shadow(shadow) / events]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[background-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(ex) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(mm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(cm) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-width length(in) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-top-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-right-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-bottom-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[border-left-color color(rgba) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(pt) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(pc) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(px) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[padding-bottom length(em) / events]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -326,3 +326,153 @@
|
||||||
[margin-right length(mm) / values]
|
[margin-right length(mm) / values]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-height percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[max-width percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[top percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[right percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[bottom percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(pt) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(pc) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(px) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(em) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(ex) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(mm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(cm) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left length(in) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[left percentage(%) / values]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[variable-substitution-variable-declaration.html]
|
||||||
|
[target10 --varC]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -8,3 +8,12 @@
|
||||||
[A custom property referencing a non-existent variable is treated as unset]
|
[A custom property referencing a non-existent variable is treated as unset]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Custom properties in a cycle become guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[A custom property referencing a cycle becomes guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[A custom property referencing a non-existent variable becomes guaranteed-invalid]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,26 @@
|
||||||
[request-upload.any.html]
|
[request-upload.any.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fetch with POST with ReadableStream]
|
[Fetch with POST with ReadableStream]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with text body on 421 response should be retried once on new connection.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
||||||
[request-upload.any.worker.html]
|
[request-upload.any.worker.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fetch with POST with ReadableStream]
|
[Fetch with POST with ReadableStream]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with text body on 421 response should be retried once on new connection.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
||||||
[request-upload.any.serviceworker.html]
|
[request-upload.any.serviceworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
|
@ -41,3 +41,45 @@
|
||||||
[Content-Length%3A%20]
|
[Content-Length%3A%20]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42,42". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30,30". Expected: 30.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30\\r\\nContent-Length: 30,30". Expected: 30.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah\\r\\nContent-Length: aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah, aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: aaaah". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 42s". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 30s". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: -1". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 0x20". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: 030\\r\\nContent-Length: 30". Expected: network error.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: \\"30\\"". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Input: "Content-Length: ". Expected: 42.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -309,12 +309,9 @@
|
||||||
[fetch(): separate response Content-Type: text/plain ]
|
[fetch(): separate response Content-Type: text/plain ]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -56,3 +56,6 @@
|
||||||
[separate text/javascript x/x]
|
[separate text/javascript x/x]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[cross-origin-objects-on-new-window.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,4 +1,5 @@
|
||||||
[creating_browsing_context_test_01.html]
|
[creating_browsing_context_test_01.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[first argument: absolute url]
|
[first argument: absolute url]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[embedded-opener-remove-frame.html]
|
[embedded-opener-remove-frame.html]
|
||||||
|
expected: CRASH
|
||||||
[opener and "removed" embedded documents]
|
[opener and "removed" embedded documents]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -14,3 +14,6 @@
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Non-HTMLElement should not support autofocus]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-2.html]
|
[iframe_sandbox_popups_escaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[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: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: TIMEOUT
|
expected: CRASH
|
||||||
[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: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
|
expected: CRASH
|
||||||
[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: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit-2.html]
|
|
||||||
[preventDefault should allow onclick submit() to succeed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-double-submit-3.html]
|
||||||
|
[<button> should have the same double-submit protection as <input type=submit>]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
[input type search: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type password: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionStart a second time (must not fire select)]
|
[input type search: selectionStart a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -23,42 +20,15 @@
|
||||||
[input type text: selectionEnd out of range a second time (must not fire select)]
|
[input type text: selectionEnd out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionStart a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: select() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionEnd a second time (must not fire select)]
|
[input type text: selectionEnd a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type text: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type text: setRangeText() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionDirection a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: setSelectionRange() a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type search: selectionStart out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type tel: setRangeText() a second time (must not fire select)]
|
[input type tel: setRangeText() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -68,9 +38,48 @@
|
||||||
[input type url: setSelectionRange() a second time (must not fire select)]
|
[input type url: setSelectionRange() a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[textarea: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type text: setSelectionRange out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: selectionEnd a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type search: setRangeText() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: select() a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type tel: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type url: selectionDirection a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionStart a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[input type password: selectionEnd out of range a second time (must not fire select)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[module-delayed.html]
|
||||||
|
[async document.write in a module]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -4,6 +4,3 @@
|
||||||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[promise-job-entry-different-function-realm.html]
|
[promise-job-entry-different-function-realm.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fulfillment handler on fulfilled promise]
|
[Fulfillment handler on fulfilled promise]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Rejection handler on pending-then-rejected promise]
|
[Rejection handler on pending-then-rejected promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Thenable resolution]
|
[Thenable resolution]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -12,5 +13,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fulfillment handler on pending-then-fulfilled promise]
|
[Fulfillment handler on pending-then-fulfilled promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -848,3 +848,9 @@
|
||||||
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
|
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-6.9001540120165462e-27\t3.3531737327575684e-1\t3.3531737327575684e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[15241\]\t4.5592646835272248e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 3.9367997646331787e-1 at index of 15241.\n\tMax RelError of 1.0000000000000000e+0 at index of 15240.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-7.1126672850560558e-27\t-9.8956179618835449e-1\t9.8956179618835449e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956179618835449e-1 at index of 7189.\n\tMax RelError of 1.0000000000000000e+0 at index of 7189.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[test_element_in_object]
|
[test_element_in_object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_element_in_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Blob URL inherits CSP from initiator.</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
let testCases = [
|
||||||
|
{
|
||||||
|
initiator_origin: window.origin,
|
||||||
|
name: "Initiator is same-origin with target frame.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
initiator_origin: "http://{{hosts[alt][]}}:{{ports[http][0]}}",
|
||||||
|
name: "Initiator is cross-origin with target frame.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
testCases.forEach(test => {
|
||||||
|
async_test(t => {
|
||||||
|
// Create a popup. At the beginning, the popup has no CSPs.
|
||||||
|
let target = window.open();
|
||||||
|
t.add_cleanup(() => target.close());
|
||||||
|
|
||||||
|
// Create a child frame in the popup. The child frame has
|
||||||
|
// Content-Security-Policy: script-src 'unsafe-inline'. The child frame
|
||||||
|
// will navigate the popup to a blob URL, which will try if eval is
|
||||||
|
// allowed and message back.
|
||||||
|
let initiator = target.document.createElement('iframe');
|
||||||
|
initiator.sandbox = "allow-scripts allow-same-origin allow-top-navigation";
|
||||||
|
initiator.src = test.initiator_origin +
|
||||||
|
"/content-security-policy/inheritance/support/navigate-parent-to-blob.html";
|
||||||
|
|
||||||
|
window.addEventListener("message", t.step_func(e => {
|
||||||
|
if (e.source !== target) return;
|
||||||
|
assert_equals(e.data, "eval blocked",
|
||||||
|
"Eval should be blocked by CSP in blob URL.");
|
||||||
|
t.done();
|
||||||
|
}));
|
||||||
|
|
||||||
|
target.document.body.appendChild(initiator);
|
||||||
|
}, test.name);
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Content Security Policy: nested inheritance</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
// This test creates a page with CSP: frame-src 'self'. The page is
|
||||||
|
// navigated to a javascript URL creating a cross-origin iframe inside a
|
||||||
|
// srcdoc iframe. If everything works correctly, the cross-origin iframe
|
||||||
|
// should be blocked.
|
||||||
|
//
|
||||||
|
// Note that most of the logic is performed by the iframe. This file is only
|
||||||
|
// for managing testharness assertions.
|
||||||
|
async_test(t => {
|
||||||
|
window.addEventListener("message", t.step_func(function(e) {
|
||||||
|
if (e.data === "frame allowed") {
|
||||||
|
assert_unreached("Frame should have been blocked.");
|
||||||
|
} else if (e.data === "frame blocked") {
|
||||||
|
t.done();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}, "Nested cross-origin iframe should be blocked by frame-src 'self'.");
|
||||||
|
</script>
|
||||||
|
<iframe src="./support/javascript-url-srcdoc-cross-origin-iframe-inheritance-helper.sub.html"></iframe>
|
||||||
|
</body>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="frame-src 'self'">
|
||||||
|
<script>
|
||||||
|
// The following is the content of a srcdoc iframe. It contains:
|
||||||
|
// - a script that catches the frame-src securitypolicyviolation event and
|
||||||
|
// forwards the information to the parent,
|
||||||
|
// - a cross-origin iframe.
|
||||||
|
let doc = `
|
||||||
|
<script>
|
||||||
|
window.addEventListener("securitypolicyviolation", e => {
|
||||||
|
if (e.violatedDirective === "frame-src") {
|
||||||
|
window.top.postMessage("frame blocked", "*");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</scr` + `ipt>
|
||||||
|
<iframe src="http://{{hosts[alt][]}}:{{ports[http][0]}}/content-security-policy/inheritance/support/postmessage-top.html"></iframe>`;
|
||||||
|
doc = doc.replaceAll('"', "\\\'");
|
||||||
|
|
||||||
|
const js_url = "javascript:'<iframe srcdoc=\""+ doc +"\">'";
|
||||||
|
window.open(js_url, "_self");
|
||||||
|
</script>
|
||||||
|
</head>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline'">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
const blob_payload = `
|
||||||
|
<!doctype html>
|
||||||
|
<script>
|
||||||
|
var i = false;
|
||||||
|
try {
|
||||||
|
eval('i = true');
|
||||||
|
} catch {}
|
||||||
|
opener.postMessage(i ? "eval allowed" : "eval blocked", '*');
|
||||||
|
</scr` + `ipt>
|
||||||
|
`;
|
||||||
|
var blob_url = URL.createObjectURL(
|
||||||
|
new Blob([blob_payload], { type: 'text/html' }));
|
||||||
|
parent.location = blob_url;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<script>
|
||||||
|
top.postMessage("ready", "*");
|
||||||
|
</script>
|
|
@ -70,7 +70,7 @@
|
||||||
assert_equals("false", reportExists, data.error);
|
assert_equals("false", reportExists, data.error);
|
||||||
} else {
|
} else {
|
||||||
if(reportExists != "" && reportExists == "false" && data["csp-report"]) {
|
if(reportExists != "" && reportExists == "false" && data["csp-report"]) {
|
||||||
assert_unreached("CSP report sent, but not expecting one: " + JSON.stringify(data["csp-report"]));
|
assert_unreached("CSP report sent, but not expecting one");
|
||||||
}
|
}
|
||||||
// Firefox expands 'self' or origins in a policy to the actual origin value
|
// Firefox expands 'self' or origins in a policy to the actual origin value
|
||||||
// so "www.example.com" becomes "http://www.example.com:80".
|
// so "www.example.com" becomes "http://www.example.com:80".
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1183944">
|
||||||
|
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||||
|
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||||
|
<div style="width:100px; display: flow-root; background: red; line-height: 0;">
|
||||||
|
<div style="width: 100px; height: 50px; float: left; background: green;"></div>
|
||||||
|
<div style="width: 100px; height: 10px; float: right; background: green;"></div>
|
||||||
|
<div style="display: inline-block; width: 100px; height: 40px; background: green;"></div>
|
||||||
|
</div>
|
|
@ -28,8 +28,8 @@
|
||||||
|
|
||||||
test(() => {
|
test(() => {
|
||||||
const style = window.getComputedStyle(child);
|
const style = window.getComputedStyle(child);
|
||||||
assert_equals(style.getPropertyValue("--var1"), " inherited");
|
assert_equals(style.getPropertyValue("--var1"), "");
|
||||||
}, 'Substitution of unrecognized env() causes unset');
|
}, 'Substitution of unrecognized env() causes guaranteed-invalid');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>Scrolling to sticky position elements uses their unshifted position</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-position-3/#stickypos-scroll" />
|
||||||
|
<meta name="assert" content="This test checks that scrolling to sticky position elements uses their initial position" />
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
position: sticky;
|
||||||
|
background: #ddd;
|
||||||
|
border: 1px solid black;
|
||||||
|
top: 0px;
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Title 1</h1>
|
||||||
|
<section></section>
|
||||||
|
<h1>Title 2</h1>
|
||||||
|
<section></section>
|
||||||
|
<h1>Title 3</h1>
|
||||||
|
<section></section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
const element = document.querySelectorAll('h1')[2];
|
||||||
|
element.scrollIntoView();
|
||||||
|
assert_approx_equals(document.scrollingElement.scrollTop, element.offsetTop, 1);
|
||||||
|
}, 'scrolling a sticky element into view should use its unshifted position');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>position:sticky elements can be constrained by top and bottom exceeding container size</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
|
||||||
|
<meta name="assert" content="This test checks that position:sticky elements obey both top and bottom constraints" />
|
||||||
|
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.scroller {
|
||||||
|
height: 200px;
|
||||||
|
overflow: auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
height: 120px;
|
||||||
|
}
|
||||||
|
.padding, .sticky {
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
.overflow-padding {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.sticky {
|
||||||
|
position: sticky;
|
||||||
|
background: green;
|
||||||
|
top: -25px;
|
||||||
|
bottom: 150px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="scroller">
|
||||||
|
<div class="container">
|
||||||
|
<div class="padding"></div>
|
||||||
|
<div class="sticky"></div>
|
||||||
|
</div>
|
||||||
|
<div class="overflow-padding"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const scroller = document.querySelector('.scroller');
|
||||||
|
const element = document.querySelector('.sticky');
|
||||||
|
scroller.scrollTop = 0;
|
||||||
|
assert_equals(element.offsetTop, 0);
|
||||||
|
}, 'initially the sticky box should be pushed to the top of the container');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const scroller = document.querySelector('.scroller');
|
||||||
|
const element = document.querySelector('.sticky');
|
||||||
|
scroller.scrollTop = 95;
|
||||||
|
assert_equals(element.offsetTop, 70);
|
||||||
|
}, 'when we scroll past the flow position the top constraint pushes it down');
|
||||||
|
</script>
|
|
@ -4,7 +4,7 @@
|
||||||
<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>
|
<script>
|
||||||
function register_length(name, inherits=true) {
|
function register_length(name, inherits=false) {
|
||||||
CSS.registerProperty({
|
CSS.registerProperty({
|
||||||
name: name,
|
name: name,
|
||||||
syntax: '<length>',
|
syntax: '<length>',
|
||||||
|
@ -96,19 +96,19 @@
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-em);';
|
target.style = 'font-size: var(--font-size-em);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-em', '');
|
assert_property_equals('--font-size-em', '0px');
|
||||||
}, 'Lengths with em units may not be referenced from font-size');
|
}, 'Lengths with em units may not be referenced from font-size');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-ex);';
|
target.style = 'font-size: var(--font-size-ex);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-ex', '');
|
assert_property_equals('--font-size-ex', '0px');
|
||||||
}, 'Lengths with ex units may not be referenced from font-size');
|
}, 'Lengths with ex units may not be referenced from font-size');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-ch);';
|
target.style = 'font-size: var(--font-size-ch);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-ch', '');
|
assert_property_equals('--font-size-ch', '0px');
|
||||||
}, 'Lengths with ch units may not be referenced from font-size');
|
}, 'Lengths with ch units may not be referenced from font-size');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
let root = document.documentElement;
|
let root = document.documentElement;
|
||||||
root.style = 'font-size: var(--font-size-rem);';
|
root.style = 'font-size: var(--font-size-rem);';
|
||||||
assert_property_equals('font-size', unsetFontSize, root);
|
assert_property_equals('font-size', unsetFontSize, root);
|
||||||
assert_property_equals('--font-size-rem', '', root);
|
assert_property_equals('--font-size-rem', '0px', root);
|
||||||
}, 'Lengths with rem units may not be referenced from font-size on root element');
|
}, 'Lengths with rem units may not be referenced from font-size on root element');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
|
@ -155,26 +155,26 @@
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-em-via-var);';
|
target.style = 'font-size: var(--font-size-em-via-var);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-em-via-var', '');
|
assert_property_equals('--font-size-em-via-var', '0px');
|
||||||
}, 'Lengths with em units are detected via var references');
|
}, 'Lengths with em units are detected via var references');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-ex-via-var);';
|
target.style = 'font-size: var(--font-size-ex-via-var);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-ex-via-var', '');
|
assert_property_equals('--font-size-ex-via-var', '0px');
|
||||||
}, 'Lengths with ex units are detected via var references');
|
}, 'Lengths with ex units are detected via var references');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
target.style = 'font-size: var(--font-size-ch-via-var);';
|
target.style = 'font-size: var(--font-size-ch-via-var);';
|
||||||
assert_property_equals('font-size', unsetFontSize);
|
assert_property_equals('font-size', unsetFontSize);
|
||||||
assert_property_equals('--font-size-ch-via-var', '');
|
assert_property_equals('--font-size-ch-via-var', '0px');
|
||||||
}, 'Lengths with ch units are detected via var references');
|
}, 'Lengths with ch units are detected via var references');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
let root = document.documentElement;
|
let root = document.documentElement;
|
||||||
root.style = 'font-size: var(--font-size-rem-via-var);';
|
root.style = 'font-size: var(--font-size-rem-via-var);';
|
||||||
assert_property_equals('font-size', unsetFontSize, root);
|
assert_property_equals('font-size', unsetFontSize, root);
|
||||||
assert_property_equals('--font-size-rem-via-var', '', root);
|
assert_property_equals('--font-size-rem-via-var', '0px', root);
|
||||||
root.style = 'font-size: unset';
|
root.style = 'font-size: unset';
|
||||||
}, 'Lengths with rem units are detected via var references');
|
}, 'Lengths with rem units are detected via var references');
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,13 @@ test(function() {
|
||||||
CSS.registerProperty({name: '--registered-1-d', syntax: '<length>', initialValue: '4px', inherits: false});
|
CSS.registerProperty({name: '--registered-1-d', syntax: '<length>', initialValue: '4px', inherits: false});
|
||||||
|
|
||||||
computedStyle = getComputedStyle(test1);
|
computedStyle = getComputedStyle(test1);
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-1-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--registered-1-a'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-1-b'), '');
|
assert_equals(computedStyle.getPropertyValue('--registered-1-b'), '2px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-1-c'), '30px');
|
assert_equals(computedStyle.getPropertyValue('--registered-1-c'), '2px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-1-d'), '4px');
|
assert_equals(computedStyle.getPropertyValue('--registered-1-d'), '2px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-1-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-1-a'), '1px');
|
||||||
assert_equals(computedStyle.left, '50px');
|
assert_equals(computedStyle.left, '1px');
|
||||||
assert_equals(computedStyle.top, '60px');
|
assert_equals(computedStyle.top, '2px');
|
||||||
}, "A var() cycle between two registered properties is handled correctly.");
|
}, "A var() cycle between two registered properties is handled correctly.");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -62,18 +62,18 @@ test(function() {
|
||||||
CSS.registerProperty({name: '--registered-2-e', syntax: '<length>', initialValue: '5px', inherits: false});
|
CSS.registerProperty({name: '--registered-2-e', syntax: '<length>', initialValue: '5px', inherits: false});
|
||||||
|
|
||||||
computedStyle = getComputedStyle(test2);
|
computedStyle = getComputedStyle(test2);
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-2-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--registered-2-a'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-2-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-2-a'), '');
|
||||||
|
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-2-b'), '30px');
|
assert_equals(computedStyle.getPropertyValue('--registered-2-b'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-2-c'), '3px');
|
assert_equals(computedStyle.getPropertyValue('--registered-2-c'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-2-d'), '40px');
|
assert_equals(computedStyle.getPropertyValue('--registered-2-d'), '40px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-2-e'), '5px');
|
assert_equals(computedStyle.getPropertyValue('--registered-2-e'), '5px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-2-b'), '50px');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-2-b'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-2-c'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-2-c'), '1px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-2-d'), '60px');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-2-d'), '60px');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-2-e'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-2-e'), '');
|
||||||
assert_equals(computedStyle.left, '70px');
|
assert_equals(computedStyle.left, '1px');
|
||||||
assert_equals(computedStyle.top, '80px');
|
assert_equals(computedStyle.top, '80px');
|
||||||
}, "A var() cycle between a registered properties and an unregistered property is handled correctly.");
|
}, "A var() cycle between a registered properties and an unregistered property is handled correctly.");
|
||||||
</script>
|
</script>
|
||||||
|
@ -136,7 +136,7 @@ test(function() {
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-4-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-4-a'), '');
|
||||||
|
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-4-b'), 'meow');
|
assert_equals(computedStyle.getPropertyValue('--registered-4-b'), 'meow');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-4-c'), 'circle');
|
assert_equals(computedStyle.getPropertyValue('--registered-4-c'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-4-b'), 'woof');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-4-b'), 'woof');
|
||||||
assert_equals(computedStyle.getPropertyValue('--unregistered-4-c'), '');
|
assert_equals(computedStyle.getPropertyValue('--unregistered-4-c'), '');
|
||||||
assert_equals(computedStyle.transitionProperty, 'water');
|
assert_equals(computedStyle.transitionProperty, 'water');
|
||||||
|
@ -174,9 +174,10 @@ test(function() {
|
||||||
let computedStyle = getComputedStyle(test5);
|
let computedStyle = getComputedStyle(test5);
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-5-a'), '');
|
assert_equals(computedStyle.getPropertyValue('--registered-5-a'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-5-b'), '');
|
assert_equals(computedStyle.getPropertyValue('--registered-5-b'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-5-c'), 'foo');
|
assert_equals(computedStyle.getPropertyValue('--registered-5-c'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-5-d'), 'bar');
|
assert_equals(computedStyle.getPropertyValue('--registered-5-d'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('--registered-5-e'), 'baz');
|
assert_equals(computedStyle.getPropertyValue('--registered-5-e'), '');
|
||||||
assert_equals(computedStyle.getPropertyValue('color'), 'rgb(0, 128, 0)');
|
assert_equals(computedStyle.getPropertyValue('color'), 'rgb(0, 128, 0)');
|
||||||
}, "Invalid at computed-value time triggers 'unset' behavior");
|
}, "Custom properties with universal syntax become guaranteed-invalid when " +
|
||||||
|
"invalid at computed-value time");
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -19,14 +19,7 @@ async function keyPress(target, key) {
|
||||||
code = KEY_CODE_MAP[key];
|
code = KEY_CODE_MAP[key];
|
||||||
|
|
||||||
// First move pointer on target and click to ensure it receives the key.
|
// First move pointer on target and click to ensure it receives the key.
|
||||||
let actions = new test_driver.Actions()
|
return test_driver.send_keys(target, code);
|
||||||
.pointerMove(0, 0, {origin: target})
|
|
||||||
.pointerDown()
|
|
||||||
.pointerUp()
|
|
||||||
.keyDown(code)
|
|
||||||
.keyUp(code);
|
|
||||||
|
|
||||||
return actions.send();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use rAF to wait for the value of the getter function passed to not change for
|
// Use rAF to wait for the value of the getter function passed to not change for
|
||||||
|
|
|
@ -140,7 +140,7 @@
|
||||||
|
|
||||||
{ element: "target10", propertyName: "--varA", expectedPropertyValue: "" },
|
{ element: "target10", propertyName: "--varA", expectedPropertyValue: "" },
|
||||||
{ element: "target10", propertyName: "--varB", expectedPropertyValue: "" },
|
{ element: "target10", propertyName: "--varB", expectedPropertyValue: "" },
|
||||||
{ element: "target10", propertyName: "--varC", expectedPropertyValue: " another good one" },
|
{ element: "target10", propertyName: "--varC", expectedPropertyValue: "" },
|
||||||
];
|
];
|
||||||
|
|
||||||
testcases.forEach(function (testcase) {
|
testcases.forEach(function (testcase) {
|
||||||
|
|
|
@ -30,15 +30,15 @@
|
||||||
let cs = getComputedStyle(target1);
|
let cs = getComputedStyle(target1);
|
||||||
assert_equals(cs.getPropertyValue('--var1'), '');
|
assert_equals(cs.getPropertyValue('--var1'), '');
|
||||||
assert_equals(cs.getPropertyValue('--var2'), '');
|
assert_equals(cs.getPropertyValue('--var2'), '');
|
||||||
}, 'Custom properties in a cycle are guaranteed-invalid');
|
}, 'Custom properties in a cycle become guaranteed-invalid');
|
||||||
|
|
||||||
test( function () {
|
test( function () {
|
||||||
let cs = getComputedStyle(target1);
|
let cs = getComputedStyle(target1);
|
||||||
assert_equals(cs.getPropertyValue('--var3'), ' inherited');
|
assert_equals(cs.getPropertyValue('--var3'), '');
|
||||||
}, 'A custom property referencing a cycle is treated as unset');
|
}, 'A custom property referencing a cycle becomes guaranteed-invalid');
|
||||||
|
|
||||||
test( function () {
|
test( function () {
|
||||||
let cs = getComputedStyle(target1);
|
let cs = getComputedStyle(target1);
|
||||||
assert_equals(cs.getPropertyValue('--var4'), ' inherited');
|
assert_equals(cs.getPropertyValue('--var4'), '');
|
||||||
}, 'A custom property referencing a non-existent variable is treated as unset');
|
}, 'A custom property referencing a non-existent variable becomes guaranteed-invalid');
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -28,12 +28,7 @@ const KEY_CODE_MAP = {
|
||||||
*/
|
*/
|
||||||
function keyPress(target, key) {
|
function keyPress(target, key) {
|
||||||
const code = KEY_CODE_MAP[key];
|
const code = KEY_CODE_MAP[key];
|
||||||
|
return test_driver.send_keys(target, code);
|
||||||
let actions = new test_driver.Actions()
|
|
||||||
.keyDown(code)
|
|
||||||
.keyUp(code);
|
|
||||||
|
|
||||||
return actions.send();
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
// META: global=window,worker
|
// META: global=window,worker
|
||||||
// META: script=../resources/utils.js
|
// META: script=../resources/utils.js
|
||||||
|
// META: script=/common/utils.js
|
||||||
|
// META: script=/common/get-host-info.sub.js
|
||||||
|
|
||||||
function testUpload(desc, url, method, createBody, expectedBody) {
|
function testUpload(desc, url, method, createBody, expectedBody) {
|
||||||
const requestInit = {"method": method}
|
const requestInit = {"method": method}
|
||||||
|
@ -123,3 +125,30 @@ testUploadFailure("Fetch with POST with ReadableStream containing Blob", url,
|
||||||
controller.close();
|
controller.close();
|
||||||
}})
|
}})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
promise_test(async (test) => {
|
||||||
|
const resp = await fetch(
|
||||||
|
"/fetch/connection-pool/resources/network-partition-key.py?"
|
||||||
|
+ `status=421&uuid=${token()}&partition_id=${get_host_info().ORIGIN}`
|
||||||
|
+ `&dispatch=check_partition&addcounter=true`,
|
||||||
|
{method: "POST", body: "foobar"});
|
||||||
|
assert_equals(resp.status, 421);
|
||||||
|
const text = await resp.text();
|
||||||
|
assert_equals(text, "ok. Request was sent 2 times. 2 connections were created.");
|
||||||
|
}, "Fetch with POST with text body on 421 response should be retried once on new connection.");
|
||||||
|
|
||||||
|
promise_test(async (test) => {
|
||||||
|
const body = new ReadableStream({start: controller => {
|
||||||
|
const encoder = new TextEncoder();
|
||||||
|
controller.enqueue(encoder.encode("Test"));
|
||||||
|
controller.close();
|
||||||
|
}});
|
||||||
|
const resp = await fetch(
|
||||||
|
"/fetch/connection-pool/resources/network-partition-key.py?"
|
||||||
|
+ `status=421&uuid=${token()}&partition_id=${get_host_info().ORIGIN}`
|
||||||
|
+ `&dispatch=check_partition&addcounter=true`,
|
||||||
|
{method: "POST", body: body});
|
||||||
|
assert_equals(resp.status, 421);
|
||||||
|
const text = await resp.text();
|
||||||
|
assert_equals(text, "ok. Request was sent 1 times. 1 connections were created.");
|
||||||
|
}, "Fetch with POST with ReadableStream on 421 response should return the response and not retry.");
|
||||||
|
|
|
@ -25,15 +25,26 @@ def main(request, response):
|
||||||
# Unless nocheck_partition is true, check partition_id against server_state, and update server_state.
|
# Unless nocheck_partition is true, check partition_id against server_state, and update server_state.
|
||||||
stash = request.server.stash
|
stash = request.server.stash
|
||||||
test_failed = False
|
test_failed = False
|
||||||
|
request_count = 0;
|
||||||
|
connection_count = 0;
|
||||||
if request.GET.first(b"nocheck_partition", None) != b"True":
|
if request.GET.first(b"nocheck_partition", None) != b"True":
|
||||||
# Need to grab the lock to access the Stash, since requests are made in parallel.
|
# Need to grab the lock to access the Stash, since requests are made in parallel.
|
||||||
with stash.lock:
|
with stash.lock:
|
||||||
# Don't use server hostname here, since H2 allows multiple hosts to reuse a connection.
|
# Don't use server hostname here, since H2 allows multiple hosts to reuse a connection.
|
||||||
# Server IP is not currently available, unfortunately.
|
# Server IP is not currently available, unfortunately.
|
||||||
address_key = isomorphic_encode(str(request.client_address) + u"|" + str(request.url_parts.port))
|
address_key = isomorphic_encode(str(request.client_address) + u"|" + str(request.url_parts.port))
|
||||||
server_state = stash.take(uuid) or {b"test_failed": False}
|
server_state = stash.take(uuid) or {b"test_failed": False,
|
||||||
if address_key in server_state and server_state[address_key] != partition_id:
|
b"request_count": 0, b"connection_count": 0}
|
||||||
|
request_count = server_state[b"request_count"]
|
||||||
|
request_count += 1
|
||||||
|
server_state[b"request_count"] = request_count
|
||||||
|
if address_key in server_state:
|
||||||
|
if server_state[address_key] != partition_id:
|
||||||
server_state[b"test_failed"] = True
|
server_state[b"test_failed"] = True
|
||||||
|
else:
|
||||||
|
connection_count = server_state[b"connection_count"]
|
||||||
|
connection_count += 1
|
||||||
|
server_state[b"connection_count"] = connection_count
|
||||||
server_state[address_key] = partition_id
|
server_state[address_key] = partition_id
|
||||||
test_failed = server_state[b"test_failed"]
|
test_failed = server_state[b"test_failed"]
|
||||||
stash.put(uuid, server_state)
|
stash.put(uuid, server_state)
|
||||||
|
@ -50,9 +61,14 @@ def main(request, response):
|
||||||
return handle_fetch_file(request, response, partition_id, uuid)
|
return handle_fetch_file(request, response, partition_id, uuid)
|
||||||
|
|
||||||
if dispatch == b"check_partition":
|
if dispatch == b"check_partition":
|
||||||
|
status = request.GET.first(b"status", 200)
|
||||||
if test_failed:
|
if test_failed:
|
||||||
return simple_response(request, response, 200, b"OK", b"Multiple partition IDs used on a socket")
|
return simple_response(request, response, status, b"OK", b"Multiple partition IDs used on a socket")
|
||||||
return simple_response(request, response, 200, b"OK", b"ok")
|
body = b"ok"
|
||||||
|
if request.GET.first(b"addcounter", False):
|
||||||
|
body += (". Request was sent " + str(request_count) + " times. " +
|
||||||
|
str(connection_count) + " connections were created.").encode('utf-8')
|
||||||
|
return simple_response(request, response, status, b"OK", body)
|
||||||
|
|
||||||
if dispatch == b"clean_up":
|
if dispatch == b"clean_up":
|
||||||
stash.take(uuid)
|
stash.take(uuid)
|
||||||
|
|
|
@ -3,17 +3,16 @@ promise_test(() => {
|
||||||
}, "Loading JSON…");
|
}, "Loading JSON…");
|
||||||
|
|
||||||
function runTests(testUnits) {
|
function runTests(testUnits) {
|
||||||
testUnits.forEach(testUnit => {
|
testUnits.forEach(({ input, output }) => {
|
||||||
const input = encodeURIComponent(testUnit.input);
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
const result = fetch("resources/content-length.py?length=" + input);
|
const result = fetch(`resources/content-length.py?length=${encodeURIComponent(input)}`);
|
||||||
if (testUnit.output === null) {
|
if (output === null) {
|
||||||
return promise_rejects_js(t, TypeError, result);
|
return promise_rejects_js(t, TypeError, result);
|
||||||
} else {
|
} else {
|
||||||
return result.then(res => res.text()).then(text => {
|
return result.then(res => res.text()).then(text => {
|
||||||
assert_equals(text.length, testUnit.output);
|
assert_equals(text.length, output);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, input);
|
}, `Input: ${format_value(input)}. Expected: ${output === null ? "network error" : output}.`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,28 @@ const dispatcher_path =
|
||||||
'/html/cross-origin-opener-policy/reporting/resources/dispatcher.py';
|
'/html/cross-origin-opener-policy/reporting/resources/dispatcher.py';
|
||||||
const dispatcher_url = new URL(dispatcher_path, location.href).href;
|
const dispatcher_url = new URL(dispatcher_path, location.href).href;
|
||||||
|
|
||||||
|
// Return a promise, limiting the number of concurrent accesses to a shared
|
||||||
|
// resources to |max_concurrent_access|.
|
||||||
|
const concurrencyLimiter = (max_concurrency) => {
|
||||||
|
let pending = 0;
|
||||||
|
let waiting = [];
|
||||||
|
return async (task) => {
|
||||||
|
pending++;
|
||||||
|
if (pending > max_concurrency)
|
||||||
|
await new Promise(resolve => waiting.push(resolve));
|
||||||
|
await task();
|
||||||
|
pending--;
|
||||||
|
waiting.shift()?.();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// The official web-platform-test runner sometimes drop POST requests when
|
||||||
|
// too many are requested in parallel. Limiting this document to send only one
|
||||||
|
// at a time fixes the issue.
|
||||||
|
const sendLimiter = concurrencyLimiter(1);
|
||||||
|
|
||||||
const send = async function(uuid, message) {
|
const send = async function(uuid, message) {
|
||||||
// The official web-platform-test runner sometimes drop POST requests when
|
await sendLimiter(async () => {
|
||||||
// many are requested in parallel. Using a lock fixes the issue.
|
|
||||||
await navigator.locks.request("dispatcher_send", async lock => {
|
|
||||||
await fetch(dispatcher_url + `?uuid=${uuid}`, {
|
await fetch(dispatcher_url + `?uuid=${uuid}`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: message
|
body: message
|
||||||
|
|
|
@ -36,20 +36,31 @@ let events = [];
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
let test1 = document.getElementById("test1");
|
let test1 = document.getElementById("test1");
|
||||||
let test2 = document.getElementById("test2");
|
let test2 = document.getElementById("test2");
|
||||||
document.getElementById("test1").addEventListener("click",
|
test1.addEventListener("click",
|
||||||
() => {test2.style.display = "block"; test2.style.top = "100px"; test2.style.left = "0"});
|
() => {
|
||||||
document.getElementById("test2").addEventListener("click",
|
test2.style.display = "block";
|
||||||
e => {events.push(e.clientX); events.push(e.clientY)});
|
test2.style.top = "100px";
|
||||||
|
test2.style.left = "0"});
|
||||||
|
test2.addEventListener("click",
|
||||||
|
e => {
|
||||||
|
events.push(e.clientX);
|
||||||
|
events.push(e.clientY);});
|
||||||
|
|
||||||
let div = document.getElementById("backing");
|
const waitCondition = new Promise((resolve, reject)=>{setTimeout(resolve, 5000);});
|
||||||
|
const test1ClickWatcher = new EventWatcher(t, test1, ["click"], ()=>waitCondition);
|
||||||
|
const test2ClickWatcher = new EventWatcher(t, test2, ["click"], ()=>waitCondition);
|
||||||
|
let waitForClicks = Promise.all([test1ClickWatcher.wait_for(["click"]), test2ClickWatcher.wait_for(["click"])]);
|
||||||
let actions = new test_driver.Actions()
|
let actions = new test_driver.Actions()
|
||||||
.pointerMove(0, 0, {origin: test1})
|
.pointerMove(0, 0, {origin: test1})
|
||||||
.pointerDown()
|
.pointerDown()
|
||||||
.pointerUp()
|
.pointerUp()
|
||||||
|
.send()
|
||||||
|
.then(()=>new test_driver.Actions()
|
||||||
.pointerMove(0, 0, {origin: test2})
|
.pointerMove(0, 0, {origin: test2})
|
||||||
.pointerDown()
|
.pointerDown()
|
||||||
.pointerUp()
|
.pointerUp()
|
||||||
.send()
|
.send())
|
||||||
|
.then(()=>waitForClicks)
|
||||||
.then(t.step_func_done(() => assert_array_equals(events, [50, 150])))
|
.then(t.step_func_done(() => assert_array_equals(events, [50, 150])))
|
||||||
.catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
|
.catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
|
||||||
});
|
});
|
||||||
|
|
|
@ -523,32 +523,32 @@ interface mixin WebGLRenderingContextBase
|
||||||
sequence<DOMString>? getSupportedExtensions();
|
sequence<DOMString>? getSupportedExtensions();
|
||||||
object? getExtension(DOMString name);
|
object? getExtension(DOMString name);
|
||||||
|
|
||||||
void activeTexture(GLenum texture);
|
undefined activeTexture(GLenum texture);
|
||||||
void attachShader(WebGLProgram program, WebGLShader shader);
|
undefined attachShader(WebGLProgram program, WebGLShader shader);
|
||||||
void bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
|
undefined bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
|
||||||
void bindBuffer(GLenum target, WebGLBuffer? buffer);
|
undefined bindBuffer(GLenum target, WebGLBuffer? buffer);
|
||||||
void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
|
undefined bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
|
||||||
void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
|
undefined bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
|
||||||
void bindTexture(GLenum target, WebGLTexture? texture);
|
undefined bindTexture(GLenum target, WebGLTexture? texture);
|
||||||
void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
undefined blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||||
void blendEquation(GLenum mode);
|
undefined blendEquation(GLenum mode);
|
||||||
void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
undefined blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
||||||
void blendFunc(GLenum sfactor, GLenum dfactor);
|
undefined blendFunc(GLenum sfactor, GLenum dfactor);
|
||||||
void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
|
undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
|
||||||
GLenum srcAlpha, GLenum dstAlpha);
|
GLenum srcAlpha, GLenum dstAlpha);
|
||||||
|
|
||||||
[WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target);
|
[WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target);
|
||||||
void clear(GLbitfield mask);
|
undefined clear(GLbitfield mask);
|
||||||
void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
undefined clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||||
void clearDepth(GLclampf depth);
|
undefined clearDepth(GLclampf depth);
|
||||||
void clearStencil(GLint s);
|
undefined clearStencil(GLint s);
|
||||||
void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
undefined colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||||
void compileShader(WebGLShader shader);
|
undefined compileShader(WebGLShader shader);
|
||||||
|
|
||||||
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat,
|
undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat,
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height,
|
GLint x, GLint y, GLsizei width, GLsizei height,
|
||||||
GLint border);
|
GLint border);
|
||||||
void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
|
|
||||||
WebGLBuffer? createBuffer();
|
WebGLBuffer? createBuffer();
|
||||||
|
@ -558,36 +558,36 @@ interface mixin WebGLRenderingContextBase
|
||||||
WebGLShader? createShader(GLenum type);
|
WebGLShader? createShader(GLenum type);
|
||||||
WebGLTexture? createTexture();
|
WebGLTexture? createTexture();
|
||||||
|
|
||||||
void cullFace(GLenum mode);
|
undefined cullFace(GLenum mode);
|
||||||
|
|
||||||
void deleteBuffer(WebGLBuffer? buffer);
|
undefined deleteBuffer(WebGLBuffer? buffer);
|
||||||
void deleteFramebuffer(WebGLFramebuffer? framebuffer);
|
undefined deleteFramebuffer(WebGLFramebuffer? framebuffer);
|
||||||
void deleteProgram(WebGLProgram? program);
|
undefined deleteProgram(WebGLProgram? program);
|
||||||
void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
undefined deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||||
void deleteShader(WebGLShader? shader);
|
undefined deleteShader(WebGLShader? shader);
|
||||||
void deleteTexture(WebGLTexture? texture);
|
undefined deleteTexture(WebGLTexture? texture);
|
||||||
|
|
||||||
void depthFunc(GLenum func);
|
undefined depthFunc(GLenum func);
|
||||||
void depthMask(GLboolean flag);
|
undefined depthMask(GLboolean flag);
|
||||||
void depthRange(GLclampf zNear, GLclampf zFar);
|
undefined depthRange(GLclampf zNear, GLclampf zFar);
|
||||||
void detachShader(WebGLProgram program, WebGLShader shader);
|
undefined detachShader(WebGLProgram program, WebGLShader shader);
|
||||||
void disable(GLenum cap);
|
undefined disable(GLenum cap);
|
||||||
void disableVertexAttribArray(GLuint index);
|
undefined disableVertexAttribArray(GLuint index);
|
||||||
void drawArrays(GLenum mode, GLint first, GLsizei count);
|
undefined drawArrays(GLenum mode, GLint first, GLsizei count);
|
||||||
void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
|
undefined drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
|
||||||
|
|
||||||
void enable(GLenum cap);
|
undefined enable(GLenum cap);
|
||||||
void enableVertexAttribArray(GLuint index);
|
undefined enableVertexAttribArray(GLuint index);
|
||||||
void finish();
|
undefined finish();
|
||||||
void flush();
|
undefined flush();
|
||||||
void framebufferRenderbuffer(GLenum target, GLenum attachment,
|
undefined framebufferRenderbuffer(GLenum target, GLenum attachment,
|
||||||
GLenum renderbuffertarget,
|
GLenum renderbuffertarget,
|
||||||
WebGLRenderbuffer? renderbuffer);
|
WebGLRenderbuffer? renderbuffer);
|
||||||
void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget,
|
undefined framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget,
|
||||||
WebGLTexture? texture, GLint level);
|
WebGLTexture? texture, GLint level);
|
||||||
void frontFace(GLenum mode);
|
undefined frontFace(GLenum mode);
|
||||||
|
|
||||||
void generateMipmap(GLenum target);
|
undefined generateMipmap(GLenum target);
|
||||||
|
|
||||||
WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index);
|
WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index);
|
||||||
WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index);
|
WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index);
|
||||||
|
@ -621,7 +621,7 @@ interface mixin WebGLRenderingContextBase
|
||||||
|
|
||||||
[WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
|
[WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
|
||||||
|
|
||||||
void hint(GLenum target, GLenum mode);
|
undefined hint(GLenum target, GLenum mode);
|
||||||
[WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer);
|
[WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer);
|
||||||
[WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap);
|
[WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap);
|
||||||
[WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer);
|
[WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer);
|
||||||
|
@ -629,99 +629,99 @@ interface mixin WebGLRenderingContextBase
|
||||||
[WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
[WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer);
|
||||||
[WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader);
|
[WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader);
|
||||||
[WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture);
|
[WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture);
|
||||||
void lineWidth(GLfloat width);
|
undefined lineWidth(GLfloat width);
|
||||||
void linkProgram(WebGLProgram program);
|
undefined linkProgram(WebGLProgram program);
|
||||||
void pixelStorei(GLenum pname, GLint param);
|
undefined pixelStorei(GLenum pname, GLint param);
|
||||||
void polygonOffset(GLfloat factor, GLfloat units);
|
undefined polygonOffset(GLfloat factor, GLfloat units);
|
||||||
|
|
||||||
void renderbufferStorage(GLenum target, GLenum internalformat,
|
undefined renderbufferStorage(GLenum target, GLenum internalformat,
|
||||||
GLsizei width, GLsizei height);
|
GLsizei width, GLsizei height);
|
||||||
void sampleCoverage(GLclampf value, GLboolean invert);
|
undefined sampleCoverage(GLclampf value, GLboolean invert);
|
||||||
void scissor(GLint x, GLint y, GLsizei width, GLsizei height);
|
undefined scissor(GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
|
|
||||||
void shaderSource(WebGLShader shader, DOMString source);
|
undefined shaderSource(WebGLShader shader, DOMString source);
|
||||||
|
|
||||||
void stencilFunc(GLenum func, GLint ref, GLuint mask);
|
undefined stencilFunc(GLenum func, GLint ref, GLuint mask);
|
||||||
void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
|
undefined stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||||
void stencilMask(GLuint mask);
|
undefined stencilMask(GLuint mask);
|
||||||
void stencilMaskSeparate(GLenum face, GLuint mask);
|
undefined stencilMaskSeparate(GLenum face, GLuint mask);
|
||||||
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
|
undefined stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
|
||||||
void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
undefined stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
||||||
|
|
||||||
void texParameterf(GLenum target, GLenum pname, GLfloat param);
|
undefined texParameterf(GLenum target, GLenum pname, GLfloat param);
|
||||||
void texParameteri(GLenum target, GLenum pname, GLint param);
|
undefined texParameteri(GLenum target, GLenum pname, GLint param);
|
||||||
|
|
||||||
void uniform1f(WebGLUniformLocation? location, GLfloat x);
|
undefined uniform1f(WebGLUniformLocation? location, GLfloat x);
|
||||||
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
|
undefined uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
|
||||||
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
|
undefined uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
|
||||||
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
undefined uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||||
|
|
||||||
void uniform1i(WebGLUniformLocation? location, GLint x);
|
undefined uniform1i(WebGLUniformLocation? location, GLint x);
|
||||||
void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
|
undefined uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
|
||||||
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
|
undefined uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
|
||||||
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
|
undefined uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
|
||||||
|
|
||||||
void useProgram(WebGLProgram? program);
|
undefined useProgram(WebGLProgram? program);
|
||||||
void validateProgram(WebGLProgram program);
|
undefined validateProgram(WebGLProgram program);
|
||||||
|
|
||||||
void vertexAttrib1f(GLuint index, GLfloat x);
|
undefined vertexAttrib1f(GLuint index, GLfloat x);
|
||||||
void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
|
undefined vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
|
||||||
void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
undefined vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||||
void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
undefined vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||||
|
|
||||||
void vertexAttrib1fv(GLuint index, Float32List values);
|
undefined vertexAttrib1fv(GLuint index, Float32List values);
|
||||||
void vertexAttrib2fv(GLuint index, Float32List values);
|
undefined vertexAttrib2fv(GLuint index, Float32List values);
|
||||||
void vertexAttrib3fv(GLuint index, Float32List values);
|
undefined vertexAttrib3fv(GLuint index, Float32List values);
|
||||||
void vertexAttrib4fv(GLuint index, Float32List values);
|
undefined vertexAttrib4fv(GLuint index, Float32List values);
|
||||||
|
|
||||||
void vertexAttribPointer(GLuint index, GLint size, GLenum type,
|
undefined vertexAttribPointer(GLuint index, GLint size, GLenum type,
|
||||||
GLboolean normalized, GLsizei stride, GLintptr offset);
|
GLboolean normalized, GLsizei stride, GLintptr offset);
|
||||||
|
|
||||||
void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
undefined viewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
};
|
};
|
||||||
|
|
||||||
interface mixin WebGLRenderingContextOverloads
|
interface mixin WebGLRenderingContextOverloads
|
||||||
{
|
{
|
||||||
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
||||||
void bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
|
undefined bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
|
||||||
void bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
|
undefined bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
|
||||||
|
|
||||||
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
|
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
|
||||||
GLsizei width, GLsizei height, GLint border,
|
GLsizei width, GLsizei height, GLint border,
|
||||||
[AllowShared] ArrayBufferView data);
|
[AllowShared] ArrayBufferView data);
|
||||||
void compressedTexSubImage2D(GLenum target, GLint level,
|
undefined compressedTexSubImage2D(GLenum target, GLint level,
|
||||||
GLint xoffset, GLint yoffset,
|
GLint xoffset, GLint yoffset,
|
||||||
GLsizei width, GLsizei height, GLenum format,
|
GLsizei width, GLsizei height, GLenum format,
|
||||||
[AllowShared] ArrayBufferView data);
|
[AllowShared] ArrayBufferView data);
|
||||||
|
|
||||||
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
||||||
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||||
|
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
|
||||||
GLsizei width, GLsizei height, GLint border, GLenum format,
|
GLsizei width, GLsizei height, GLint border, GLenum format,
|
||||||
GLenum type, [AllowShared] ArrayBufferView? pixels);
|
GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
|
||||||
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
||||||
|
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLsizei width, GLsizei height,
|
GLsizei width, GLsizei height,
|
||||||
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
||||||
|
|
||||||
void uniform1fv(WebGLUniformLocation? location, Float32List v);
|
undefined uniform1fv(WebGLUniformLocation? location, Float32List v);
|
||||||
void uniform2fv(WebGLUniformLocation? location, Float32List v);
|
undefined uniform2fv(WebGLUniformLocation? location, Float32List v);
|
||||||
void uniform3fv(WebGLUniformLocation? location, Float32List v);
|
undefined uniform3fv(WebGLUniformLocation? location, Float32List v);
|
||||||
void uniform4fv(WebGLUniformLocation? location, Float32List v);
|
undefined uniform4fv(WebGLUniformLocation? location, Float32List v);
|
||||||
|
|
||||||
void uniform1iv(WebGLUniformLocation? location, Int32List v);
|
undefined uniform1iv(WebGLUniformLocation? location, Int32List v);
|
||||||
void uniform2iv(WebGLUniformLocation? location, Int32List v);
|
undefined uniform2iv(WebGLUniformLocation? location, Int32List v);
|
||||||
void uniform3iv(WebGLUniformLocation? location, Int32List v);
|
undefined uniform3iv(WebGLUniformLocation? location, Int32List v);
|
||||||
void uniform4iv(WebGLUniformLocation? location, Int32List v);
|
undefined uniform4iv(WebGLUniformLocation? location, Int32List v);
|
||||||
|
|
||||||
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||||
void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||||
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=(Window,Worker)]
|
[Exposed=(Window,Worker)]
|
||||||
|
|
|
@ -298,69 +298,69 @@ interface mixin WebGL2RenderingContextBase
|
||||||
const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
|
const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
|
||||||
|
|
||||||
/* Buffer objects */
|
/* Buffer objects */
|
||||||
void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
|
undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
|
||||||
GLintptr writeOffset, GLsizeiptr size);
|
GLintptr writeOffset, GLsizeiptr size);
|
||||||
// MapBufferRange, in particular its read-only and write-only modes,
|
// MapBufferRange, in particular its read-only and write-only modes,
|
||||||
// can not be exposed safely to JavaScript. GetBufferSubData
|
// can not be exposed safely to JavaScript. GetBufferSubData
|
||||||
// replaces it for the purpose of fetching data back from the GPU.
|
// replaces it for the purpose of fetching data back from the GPU.
|
||||||
void getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer,
|
undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer,
|
||||||
optional GLuint dstOffset = 0, optional GLuint length = 0);
|
optional GLuint dstOffset = 0, optional GLuint length = 0);
|
||||||
|
|
||||||
/* Framebuffer objects */
|
/* Framebuffer objects */
|
||||||
void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
|
undefined blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
|
||||||
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||||
void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level,
|
undefined framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level,
|
||||||
GLint layer);
|
GLint layer);
|
||||||
void invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
|
undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
|
||||||
void invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments,
|
undefined invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments,
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
void readBuffer(GLenum src);
|
undefined readBuffer(GLenum src);
|
||||||
|
|
||||||
/* Renderbuffer objects */
|
/* Renderbuffer objects */
|
||||||
any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
|
any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
|
||||||
void renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
|
undefined renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
|
||||||
GLsizei width, GLsizei height);
|
GLsizei width, GLsizei height);
|
||||||
|
|
||||||
/* Texture objects */
|
/* Texture objects */
|
||||||
void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
|
undefined texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height);
|
GLsizei height);
|
||||||
void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
|
undefined texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height, GLsizei depth);
|
GLsizei height, GLsizei depth);
|
||||||
|
|
||||||
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
|
GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
|
||||||
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLsizei depth, GLint border, GLenum format, GLenum type,
|
GLsizei depth, GLint border, GLenum format, GLenum type,
|
||||||
TexImageSource source); // May throw DOMException
|
TexImageSource source); // May throw DOMException
|
||||||
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
|
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
|
||||||
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
||||||
GLuint srcOffset);
|
GLuint srcOffset);
|
||||||
|
|
||||||
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
||||||
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
||||||
GLintptr pboOffset);
|
GLintptr pboOffset);
|
||||||
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
||||||
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
||||||
TexImageSource source); // May throw DOMException
|
TexImageSource source); // May throw DOMException
|
||||||
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
||||||
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
|
||||||
[AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0);
|
[AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0);
|
||||||
|
|
||||||
void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
|
|
||||||
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
|
GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
|
||||||
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
|
GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
|
||||||
|
|
||||||
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
|
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
|
||||||
GLenum format, GLsizei imageSize, GLintptr offset);
|
GLenum format, GLsizei imageSize, GLintptr offset);
|
||||||
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
|
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
|
||||||
GLenum format, [AllowShared] ArrayBufferView srcData,
|
GLenum format, [AllowShared] ArrayBufferView srcData,
|
||||||
optional GLuint srcOffset = 0,
|
optional GLuint srcOffset = 0,
|
||||||
|
@ -370,206 +370,206 @@ interface mixin WebGL2RenderingContextBase
|
||||||
[WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name);
|
[WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name);
|
||||||
|
|
||||||
/* Uniforms */
|
/* Uniforms */
|
||||||
void uniform1ui(WebGLUniformLocation? location, GLuint v0);
|
undefined uniform1ui(WebGLUniformLocation? location, GLuint v0);
|
||||||
void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
|
undefined uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
|
||||||
void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
|
undefined uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
|
||||||
void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
undefined uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
||||||
|
|
||||||
void uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
undefined uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
|
|
||||||
void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
|
|
||||||
void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
|
|
||||||
/* Vertex attribs */
|
/* Vertex attribs */
|
||||||
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
|
undefined vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
|
||||||
void vertexAttribI4iv(GLuint index, Int32List values);
|
undefined vertexAttribI4iv(GLuint index, Int32List values);
|
||||||
void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
||||||
void vertexAttribI4uiv(GLuint index, Uint32List values);
|
undefined vertexAttribI4uiv(GLuint index, Uint32List values);
|
||||||
void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
|
undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
|
||||||
|
|
||||||
/* Writing to the drawing buffer */
|
/* Writing to the drawing buffer */
|
||||||
void vertexAttribDivisor(GLuint index, GLuint divisor);
|
undefined vertexAttribDivisor(GLuint index, GLuint divisor);
|
||||||
void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
|
undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
|
||||||
void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
|
undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
|
||||||
void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
|
undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
|
||||||
|
|
||||||
/* Multiple Render Targets */
|
/* Multiple Render Targets */
|
||||||
void drawBuffers(sequence<GLenum> buffers);
|
undefined drawBuffers(sequence<GLenum> buffers);
|
||||||
|
|
||||||
void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values,
|
undefined clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values,
|
||||||
optional GLuint srcOffset = 0);
|
optional GLuint srcOffset = 0);
|
||||||
void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
|
undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
|
||||||
optional GLuint srcOffset = 0);
|
optional GLuint srcOffset = 0);
|
||||||
void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
|
undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
|
||||||
optional GLuint srcOffset = 0);
|
optional GLuint srcOffset = 0);
|
||||||
|
|
||||||
void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
|
undefined clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
|
||||||
|
|
||||||
/* Query Objects */
|
/* Query Objects */
|
||||||
WebGLQuery? createQuery();
|
WebGLQuery? createQuery();
|
||||||
void deleteQuery(WebGLQuery? query);
|
undefined deleteQuery(WebGLQuery? query);
|
||||||
[WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query);
|
[WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query);
|
||||||
void beginQuery(GLenum target, WebGLQuery query);
|
undefined beginQuery(GLenum target, WebGLQuery query);
|
||||||
void endQuery(GLenum target);
|
undefined endQuery(GLenum target);
|
||||||
WebGLQuery? getQuery(GLenum target, GLenum pname);
|
WebGLQuery? getQuery(GLenum target, GLenum pname);
|
||||||
any getQueryParameter(WebGLQuery query, GLenum pname);
|
any getQueryParameter(WebGLQuery query, GLenum pname);
|
||||||
|
|
||||||
/* Sampler Objects */
|
/* Sampler Objects */
|
||||||
WebGLSampler? createSampler();
|
WebGLSampler? createSampler();
|
||||||
void deleteSampler(WebGLSampler? sampler);
|
undefined deleteSampler(WebGLSampler? sampler);
|
||||||
[WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler);
|
[WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler);
|
||||||
void bindSampler(GLuint unit, WebGLSampler? sampler);
|
undefined bindSampler(GLuint unit, WebGLSampler? sampler);
|
||||||
void samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
|
undefined samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
|
||||||
void samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
|
undefined samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
|
||||||
any getSamplerParameter(WebGLSampler sampler, GLenum pname);
|
any getSamplerParameter(WebGLSampler sampler, GLenum pname);
|
||||||
|
|
||||||
/* Sync objects */
|
/* Sync objects */
|
||||||
WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
|
WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
|
||||||
[WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync);
|
[WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync);
|
||||||
void deleteSync(WebGLSync? sync);
|
undefined deleteSync(WebGLSync? sync);
|
||||||
GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
|
GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
|
||||||
void waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
|
undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
|
||||||
any getSyncParameter(WebGLSync sync, GLenum pname);
|
any getSyncParameter(WebGLSync sync, GLenum pname);
|
||||||
|
|
||||||
/* Transform Feedback */
|
/* Transform Feedback */
|
||||||
WebGLTransformFeedback? createTransformFeedback();
|
WebGLTransformFeedback? createTransformFeedback();
|
||||||
void deleteTransformFeedback(WebGLTransformFeedback? tf);
|
undefined deleteTransformFeedback(WebGLTransformFeedback? tf);
|
||||||
[WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf);
|
[WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf);
|
||||||
void bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf);
|
undefined bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf);
|
||||||
void beginTransformFeedback(GLenum primitiveMode);
|
undefined beginTransformFeedback(GLenum primitiveMode);
|
||||||
void endTransformFeedback();
|
undefined endTransformFeedback();
|
||||||
void transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
|
undefined transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
|
||||||
WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index);
|
WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index);
|
||||||
void pauseTransformFeedback();
|
undefined pauseTransformFeedback();
|
||||||
void resumeTransformFeedback();
|
undefined resumeTransformFeedback();
|
||||||
|
|
||||||
/* Uniform Buffer Objects and Transform Feedback Buffers */
|
/* Uniform Buffer Objects and Transform Feedback Buffers */
|
||||||
void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
|
undefined bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
|
||||||
void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
|
undefined bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
|
||||||
any getIndexedParameter(GLenum target, GLuint index);
|
any getIndexedParameter(GLenum target, GLuint index);
|
||||||
sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
|
sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
|
||||||
any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
|
any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
|
||||||
GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
|
GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
|
||||||
any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
|
any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
|
||||||
DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
|
DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
|
||||||
void uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
|
undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
|
||||||
|
|
||||||
/* Vertex Array Objects */
|
/* Vertex Array Objects */
|
||||||
WebGLVertexArrayObject? createVertexArray();
|
WebGLVertexArrayObject? createVertexArray();
|
||||||
void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
|
undefined deleteVertexArray(WebGLVertexArrayObject? vertexArray);
|
||||||
[WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
|
[WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
|
||||||
void bindVertexArray(WebGLVertexArrayObject? array);
|
undefined bindVertexArray(WebGLVertexArrayObject? array);
|
||||||
};
|
};
|
||||||
|
|
||||||
interface mixin WebGL2RenderingContextOverloads
|
interface mixin WebGL2RenderingContextOverloads
|
||||||
{
|
{
|
||||||
// WebGL1:
|
// WebGL1:
|
||||||
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
|
||||||
void bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
|
undefined bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
|
||||||
void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
|
undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
|
||||||
// WebGL2:
|
// WebGL2:
|
||||||
void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
|
undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
|
||||||
optional GLuint length = 0);
|
optional GLuint length = 0);
|
||||||
void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
|
undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
|
||||||
GLuint srcOffset, optional GLuint length = 0);
|
GLuint srcOffset, optional GLuint length = 0);
|
||||||
|
|
||||||
// WebGL1 legacy entrypoints:
|
// WebGL1 legacy entrypoints:
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
|
||||||
GLsizei width, GLsizei height, GLint border, GLenum format,
|
GLsizei width, GLsizei height, GLint border, GLenum format,
|
||||||
GLenum type, [AllowShared] ArrayBufferView? pixels);
|
GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
|
||||||
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
||||||
|
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLsizei width, GLsizei height,
|
GLsizei width, GLsizei height,
|
||||||
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|
||||||
|
|
||||||
// WebGL2 entrypoints:
|
// WebGL2 entrypoints:
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLint border, GLenum format, GLenum type, GLintptr pboOffset);
|
GLint border, GLenum format, GLenum type, GLintptr pboOffset);
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLint border, GLenum format, GLenum type,
|
GLint border, GLenum format, GLenum type,
|
||||||
TexImageSource source); // May throw DOMException
|
TexImageSource source); // May throw DOMException
|
||||||
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
|
||||||
GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
||||||
GLuint srcOffset);
|
GLuint srcOffset);
|
||||||
|
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
||||||
GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
|
GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
||||||
GLsizei height, GLenum format, GLenum type,
|
GLsizei height, GLenum format, GLenum type,
|
||||||
TexImageSource source); // May throw DOMException
|
TexImageSource source); // May throw DOMException
|
||||||
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
|
||||||
GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
|
||||||
GLuint srcOffset);
|
GLuint srcOffset);
|
||||||
|
|
||||||
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
|
GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
|
||||||
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
||||||
GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
|
GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
|
||||||
|
|
||||||
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
|
GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
|
||||||
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||||
GLsizei width, GLsizei height, GLenum format,
|
GLsizei width, GLsizei height, GLenum format,
|
||||||
[AllowShared] ArrayBufferView srcData,
|
[AllowShared] ArrayBufferView srcData,
|
||||||
optional GLuint srcOffset = 0,
|
optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLengthOverride = 0);
|
optional GLuint srcLengthOverride = 0);
|
||||||
|
|
||||||
void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
undefined uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
undefined uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
undefined uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
undefined uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
|
|
||||||
void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
undefined uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
undefined uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
undefined uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
undefined uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
|
||||||
optional GLuint srcLength = 0);
|
optional GLuint srcLength = 0);
|
||||||
|
|
||||||
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
|
||||||
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
|
||||||
|
|
||||||
/* Reading back pixels */
|
/* Reading back pixels */
|
||||||
// WebGL1:
|
// WebGL1:
|
||||||
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
||||||
[AllowShared] ArrayBufferView? dstData);
|
[AllowShared] ArrayBufferView? dstData);
|
||||||
// WebGL2:
|
// WebGL2:
|
||||||
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
||||||
GLintptr offset);
|
GLintptr offset);
|
||||||
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
|
||||||
[AllowShared] ArrayBufferView dstData, GLuint dstOffset);
|
[AllowShared] ArrayBufferView dstData, GLuint dstOffset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -120,17 +120,21 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// Inject keyboard scroll inputs.
|
// Inject keyboard scroll inputs.
|
||||||
|
const arrow_down = "\uE015";
|
||||||
|
const arrow_right = "\uE014";
|
||||||
|
|
||||||
actions_promise = new test_driver.Actions()
|
actions_promise = new test_driver.Actions()
|
||||||
.addPointer("mousePointer1", "mouse")
|
.addPointer("mousePointer1", "mouse")
|
||||||
.pointerMove(0, 0, {origin: target0})
|
.pointerMove(0, 0, {origin: target0})
|
||||||
.pointerDown()
|
.pointerDown()
|
||||||
.pointerUp()
|
.pointerUp()
|
||||||
.addTick()
|
.addTick()
|
||||||
.keyDown("\uE015")
|
|
||||||
.keyUp("\uE015")
|
|
||||||
.keyDown("\uE014")
|
|
||||||
.keyUp("\uE014")
|
|
||||||
.send();
|
.send();
|
||||||
|
actions_promise = actions_promise
|
||||||
|
.then(()=>test_driver.send_keys(target0, arrow_down))
|
||||||
|
.then(()=>test_driver.send_keys(target0, arrow_down))
|
||||||
|
.then(()=>test_driver.send_keys(target0, arrow_right))
|
||||||
|
.then(()=>test_driver.send_keys(target0, arrow_right));
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDescriptionNextStepKeyboard() {
|
function updateDescriptionNextStepKeyboard() {
|
||||||
|
|
|
@ -1030,5 +1030,27 @@ promise_test(async t => {
|
||||||
assert_true(loadend, 'loadend');
|
assert_true(loadend, 'loadend');
|
||||||
}, 'XHR upload progress events for network fallback');
|
}, 'XHR upload progress events for network fallback');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
// Set page_url to "?ignore" so the service worker falls back to network
|
||||||
|
// for the main resource request, and add a suffix to avoid colliding
|
||||||
|
// with other tests.
|
||||||
|
const page_url = 'resources/?ignore-for-request-body-fallback-string';
|
||||||
|
|
||||||
|
const frame = await with_iframe(page_url);
|
||||||
|
t.add_cleanup(() => { frame.remove(); });
|
||||||
|
// Add "?clone-and-ignore" so the service worker falls back to
|
||||||
|
// echo-content.py.
|
||||||
|
const echo_url = '/fetch/api/resources/echo-content.py?status=421';
|
||||||
|
const response = await frame.contentWindow.fetch(echo_url, {
|
||||||
|
method: 'POST',
|
||||||
|
body: 'text body'
|
||||||
|
});
|
||||||
|
assert_equals(response.status, 421);
|
||||||
|
const text = await response.text();
|
||||||
|
assert_equals(
|
||||||
|
text,
|
||||||
|
'text body. Request was sent 1 times.',
|
||||||
|
'the network fallback request should include the request body');
|
||||||
|
}, 'Fetch with POST with text on sw 421 response should not be retried.');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -167,6 +167,17 @@ function handleCloneAndIgnore(event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var handle_status_count = 0;
|
||||||
|
function handleStatus(event) {
|
||||||
|
handle_status_count++;
|
||||||
|
event.respondWith(async function() {
|
||||||
|
const res = await fetch(event.request);
|
||||||
|
const text = await res.text();
|
||||||
|
return new Response(`${text}. Request was sent ${handle_status_count} times.`,
|
||||||
|
{"status": new URL(event.request.url).searchParams.get("status")});
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
|
||||||
self.addEventListener('fetch', function(event) {
|
self.addEventListener('fetch', function(event) {
|
||||||
var url = event.request.url;
|
var url = event.request.url;
|
||||||
var handlers = [
|
var handlers = [
|
||||||
|
@ -194,6 +205,7 @@ self.addEventListener('fetch', function(event) {
|
||||||
{ pattern: '?isHistoryNavigation', fn: handleIsHistoryNavigation },
|
{ pattern: '?isHistoryNavigation', fn: handleIsHistoryNavigation },
|
||||||
{ pattern: '?use-and-ignore', fn: handleUseAndIgnore },
|
{ pattern: '?use-and-ignore', fn: handleUseAndIgnore },
|
||||||
{ pattern: '?clone-and-ignore', fn: handleCloneAndIgnore },
|
{ pattern: '?clone-and-ignore', fn: handleCloneAndIgnore },
|
||||||
|
{ pattern: '?status', fn: handleStatus },
|
||||||
];
|
];
|
||||||
|
|
||||||
var handler = null;
|
var handler = null;
|
||||||
|
|
|
@ -985,6 +985,14 @@
|
||||||
"username": { "input": "caf%C3%A9", "groups": {}}
|
"username": { "input": "caf%C3%A9", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "username": "café" },
|
||||||
|
"input": { "username" : "café" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "username" : "café" },
|
||||||
|
"username": { "input": "caf%C3%A9", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "username": "caf%c3%a9" },
|
"pattern": { "username": "caf%c3%a9" },
|
||||||
"input": { "username" : "café" },
|
"input": { "username" : "café" },
|
||||||
|
@ -998,6 +1006,14 @@
|
||||||
"password": { "input": "caf%C3%A9", "groups": {}}
|
"password": { "input": "caf%C3%A9", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "password": "café" },
|
||||||
|
"input": { "password" : "café" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "password" : "café" },
|
||||||
|
"password": { "input": "caf%C3%A9", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "password": "caf%c3%a9" },
|
"pattern": { "password": "caf%c3%a9" },
|
||||||
"input": { "password" : "café" },
|
"input": { "password" : "café" },
|
||||||
|
@ -1011,6 +1027,14 @@
|
||||||
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
|
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "hostname": "café.com" },
|
||||||
|
"input": { "hostname" : "café.com" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "hostname" : "café.com" },
|
||||||
|
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "port": "" },
|
"pattern": { "port": "" },
|
||||||
"input": { "protocol": "http", "port": "80" },
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
@ -1020,6 +1044,35 @@
|
||||||
"port": { "input": "", "groups": {}}
|
"port": { "input": "", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "protocol": "http", "port": "80" },
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"protocol": { "input": "http", "groups": {}},
|
||||||
|
"port": { "input": "", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "protocol": "http", "port": "80{20}?" },
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"expected": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "protocol": "http", "port": "80 " },
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"error": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "port": "80" },
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"expected": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "protocol": "http{s}?", "port": "80" },
|
||||||
|
"input": { "protocol": "http", "port": "80" },
|
||||||
|
"expected": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "port": "80" },
|
"pattern": { "port": "80" },
|
||||||
"input": { "port": "80" },
|
"input": { "port": "80" },
|
||||||
|
@ -1057,6 +1110,14 @@
|
||||||
"pathname": { "input": "/caf%C3%A9", "groups": {}}
|
"pathname": { "input": "/caf%C3%A9", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "pathname": "/café" },
|
||||||
|
"input": { "pathname": "/café" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "pathname": "/café" },
|
||||||
|
"pathname": { "input": "/caf%C3%A9", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "pathname": "/caf%c3%a9" },
|
"pattern": { "pathname": "/caf%c3%a9" },
|
||||||
"input": { "pathname": "/café" },
|
"input": { "pathname": "/café" },
|
||||||
|
@ -1077,6 +1138,25 @@
|
||||||
"pathname": { "input": "/foo/bar", "groups": {}}
|
"pathname": { "input": "/foo/bar", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "pathname": "/foo/../bar" },
|
||||||
|
"input": { "pathname": "/bar" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "pathname": "/bar" },
|
||||||
|
"pathname": { "input": "/bar", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "pathname": "./foo/bar", "baseURL": "https://example.com" },
|
||||||
|
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
|
||||||
|
"exactly_empty_components": [ "username", "password", "port" ],
|
||||||
|
"protocol": { "input": "https", "groups": {}},
|
||||||
|
"hostname": { "input": "example.com", "groups": {}},
|
||||||
|
"pathname": { "input": "/foo/bar", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "pathname": "foo/bar" },
|
"pattern": { "pathname": "foo/bar" },
|
||||||
"input": "https://example.com/foo/bar",
|
"input": "https://example.com/foo/bar",
|
||||||
|
@ -1112,6 +1192,14 @@
|
||||||
"search": { "input": "q=caf%C3%A9", "groups": {}}
|
"search": { "input": "q=caf%C3%A9", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "search": "q=café" },
|
||||||
|
"input": { "search": "q=café" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "search": "q=café" },
|
||||||
|
"search": { "input": "q=caf%C3%A9", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "search": "q=caf%c3%a9" },
|
"pattern": { "search": "q=caf%c3%a9" },
|
||||||
"input": { "search": "q=café" },
|
"input": { "search": "q=café" },
|
||||||
|
@ -1125,6 +1213,14 @@
|
||||||
"hash": { "input": "caf%C3%A9", "groups": {}}
|
"hash": { "input": "caf%C3%A9", "groups": {}}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pattern": { "hash": "café" },
|
||||||
|
"input": { "hash": "café" },
|
||||||
|
"expected": {
|
||||||
|
"input": { "hash": "café" },
|
||||||
|
"hash": { "input": "caf%C3%A9", "groups": {}}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": { "hash": "caf%c3%a9" },
|
"pattern": { "hash": "caf%c3%a9" },
|
||||||
"input": { "hash": "café" },
|
"input": { "hash": "café" },
|
||||||
|
|
|
@ -8,145 +8,10 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/webrtc/RTCPeerConnection-helper.js"></script>
|
<script src="/webrtc/RTCPeerConnection-helper.js"></script>
|
||||||
<script src="/webrtc/RTCStats-helper.js"></script>
|
<script src="/webrtc/RTCStats-helper.js"></script>
|
||||||
|
<script src="/webrtc-extensions/RTCRtpSynchronizationSource-helper.js"></script>
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var kAbsCaptureTime =
|
|
||||||
'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time';
|
|
||||||
|
|
||||||
function addHeaderExtensionToSdp(sdp, uri) {
|
|
||||||
const extmap = new RegExp('a=extmap:(\\d+)');
|
|
||||||
let sdpLines = sdp.split('\r\n');
|
|
||||||
|
|
||||||
// This assumes at most one audio m= section and one video m= section.
|
|
||||||
// If more are present, only the first section of each kind is munged.
|
|
||||||
for (const section of ['audio', 'video']) {
|
|
||||||
let found_section = false;
|
|
||||||
let maxId = undefined;
|
|
||||||
let maxIdLine = undefined;
|
|
||||||
let extmapAllowMixed = false;
|
|
||||||
|
|
||||||
// find the largest header extension id for section.
|
|
||||||
for (let i = 0; i < sdpLines.length; ++i) {
|
|
||||||
if (!found_section) {
|
|
||||||
if (sdpLines[i].startsWith('m=' + section)) {
|
|
||||||
found_section = true;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
if (sdpLines[i].startsWith('m=')) {
|
|
||||||
// end of section
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sdpLines[i] === 'a=extmap-allow-mixed') {
|
|
||||||
extmapAllowMixed = true;
|
|
||||||
}
|
|
||||||
let result = sdpLines[i].match(extmap);
|
|
||||||
if (result && result.length === 2) {
|
|
||||||
if (maxId == undefined || result[1] > maxId) {
|
|
||||||
maxId = parseInt(result[1]);
|
|
||||||
maxIdLine = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (maxId == 14 && !extmapAllowMixed) {
|
|
||||||
// Reaching the limit of one byte header extension. Adding two byte header
|
|
||||||
// extension support.
|
|
||||||
sdpLines.splice(maxIdLine + 1, 0, 'a=extmap-allow-mixed');
|
|
||||||
}
|
|
||||||
if (maxIdLine !== undefined) {
|
|
||||||
sdpLines.splice(maxIdLine + 1, 0,
|
|
||||||
'a=extmap:' + (maxId + 1).toString() + ' ' + uri);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sdpLines.join('\r\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
|
|
||||||
// when the RTP header extension API is implemented.
|
|
||||||
async function addAbsCaptureTimeAndExchangeOffer(caller, callee) {
|
|
||||||
let offer = await caller.createOffer();
|
|
||||||
|
|
||||||
// Absolute capture time header extension may not be offered by default,
|
|
||||||
// in such case, munge the SDP.
|
|
||||||
offer.sdp = addHeaderExtensionToSdp(offer.sdp, kAbsCaptureTime);
|
|
||||||
|
|
||||||
await caller.setLocalDescription(offer);
|
|
||||||
return callee.setRemoteDescription(offer);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
|
|
||||||
// when the RTP header extension API is implemented.
|
|
||||||
async function checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
|
|
||||||
absCaptureTimeAnswered) {
|
|
||||||
let answer = await callee.createAnswer();
|
|
||||||
|
|
||||||
const extmap = new RegExp('a=extmap:\\d+ ' + kAbsCaptureTime + '\r\n', 'g');
|
|
||||||
if (answer.sdp.match(extmap) == null) {
|
|
||||||
// We expect that absolute capture time RTP header extension is answered.
|
|
||||||
// But if not, there is no need to proceed with the test.
|
|
||||||
assert_false(absCaptureTimeAnswered, 'Absolute capture time RTP ' +
|
|
||||||
'header extension is not answered');
|
|
||||||
} else {
|
|
||||||
if (!absCaptureTimeAnswered) {
|
|
||||||
// We expect that absolute capture time RTP header extension is not
|
|
||||||
// answered, but it is, then we munge the answer to remove it.
|
|
||||||
answer.sdp = answer.sdp.replace(extmap, '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await callee.setLocalDescription(answer);
|
|
||||||
return caller.setRemoteDescription(answer);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function exchangeOfferAndListenToOntrack(t, caller, callee,
|
|
||||||
absCaptureTimeOffered) {
|
|
||||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track');
|
|
||||||
// Absolute capture time header extension is expected not offered by default,
|
|
||||||
// and thus munging is needed to enable it.
|
|
||||||
await absCaptureTimeOffered
|
|
||||||
? addAbsCaptureTimeAndExchangeOffer(caller, callee)
|
|
||||||
: exchangeOffer(caller, callee);
|
|
||||||
return ontrackPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function initiateSingleTrackCall(t, cap, absCaptureTimeOffered,
|
|
||||||
absCaptureTimeAnswered) {
|
|
||||||
const caller = new RTCPeerConnection();
|
|
||||||
t.add_cleanup(() => caller.close());
|
|
||||||
const callee = new RTCPeerConnection();
|
|
||||||
t.add_cleanup(() => callee.close());
|
|
||||||
|
|
||||||
const stream = await getNoiseStream(cap);
|
|
||||||
stream.getTracks().forEach(track => {
|
|
||||||
caller.addTrack(track, stream);
|
|
||||||
t.add_cleanup(() => track.stop());
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO(crbug.com/988432): `getSynchronizationSources() on the audio side
|
|
||||||
// needs a hardware sink for the returned dictionary entries to get updated.
|
|
||||||
const remoteVideo = document.getElementById('remote');
|
|
||||||
|
|
||||||
callee.ontrack = e => {
|
|
||||||
remoteVideo.srcObject = e.streams[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
exchangeIceCandidates(caller, callee);
|
|
||||||
|
|
||||||
await exchangeOfferAndListenToOntrack(t, caller, callee,
|
|
||||||
absCaptureTimeOffered);
|
|
||||||
|
|
||||||
// Exchange answer and check whether the absolute capture time RTP header
|
|
||||||
// extension is answered.
|
|
||||||
await checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
|
|
||||||
absCaptureTimeAnswered);
|
|
||||||
|
|
||||||
return [caller, callee];
|
|
||||||
}
|
|
||||||
|
|
||||||
function listenForCaptureTimestamp(t, receiver) {
|
function listenForCaptureTimestamp(t, receiver) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
function listen() {
|
function listen() {
|
||||||
|
@ -165,8 +30,8 @@ function listenForCaptureTimestamp(t, receiver) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test only passes if the implementation is sending the absolute capture
|
// Passes if `getSynchronizationSources()` contains `captureTimestamp` if and
|
||||||
// timestamp header extension.
|
// only if expected.
|
||||||
for (const kind of ['audio', 'video']) {
|
for (const kind of ['audio', 'video']) {
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
const [caller, callee] = await initiateSingleTrackCall(
|
const [caller, callee] = await initiateSingleTrackCall(
|
||||||
|
@ -202,6 +67,9 @@ for (const kind of ['audio', 'video']) {
|
||||||
'negotiated');
|
'negotiated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Passes if `captureTimestamp` for audio and video are comparable, which is
|
||||||
|
// expected since the test creates a local peer connection between `caller` and
|
||||||
|
// `callee`.
|
||||||
promise_test(async t => {
|
promise_test(async t => {
|
||||||
const [caller, callee] = await initiateSingleTrackCall(
|
const [caller, callee] = await initiateSingleTrackCall(
|
||||||
t, {audio: true, video: true}, true, true);
|
t, {audio: true, video: true}, true, true);
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// This file depends on `webrtc/RTCPeerConnection-helper.js`
|
||||||
|
// which should be loaded from the main HTML file.
|
||||||
|
|
||||||
|
var kAbsCaptureTime =
|
||||||
|
'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time';
|
||||||
|
|
||||||
|
function addHeaderExtensionToSdp(sdp, uri) {
|
||||||
|
const extmap = new RegExp('a=extmap:(\\d+)');
|
||||||
|
let sdpLines = sdp.split('\r\n');
|
||||||
|
|
||||||
|
// This assumes at most one audio m= section and one video m= section.
|
||||||
|
// If more are present, only the first section of each kind is munged.
|
||||||
|
for (const section of ['audio', 'video']) {
|
||||||
|
let found_section = false;
|
||||||
|
let maxId = undefined;
|
||||||
|
let maxIdLine = undefined;
|
||||||
|
let extmapAllowMixed = false;
|
||||||
|
|
||||||
|
// find the largest header extension id for section.
|
||||||
|
for (let i = 0; i < sdpLines.length; ++i) {
|
||||||
|
if (!found_section) {
|
||||||
|
if (sdpLines[i].startsWith('m=' + section)) {
|
||||||
|
found_section = true;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
if (sdpLines[i].startsWith('m=')) {
|
||||||
|
// end of section
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sdpLines[i] === 'a=extmap-allow-mixed') {
|
||||||
|
extmapAllowMixed = true;
|
||||||
|
}
|
||||||
|
let result = sdpLines[i].match(extmap);
|
||||||
|
if (result && result.length === 2) {
|
||||||
|
if (maxId == undefined || result[1] > maxId) {
|
||||||
|
maxId = parseInt(result[1]);
|
||||||
|
maxIdLine = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maxId == 14 && !extmapAllowMixed) {
|
||||||
|
// Reaching the limit of one byte header extension. Adding two byte header
|
||||||
|
// extension support.
|
||||||
|
sdpLines.splice(maxIdLine + 1, 0, 'a=extmap-allow-mixed');
|
||||||
|
}
|
||||||
|
if (maxIdLine !== undefined) {
|
||||||
|
sdpLines.splice(maxIdLine + 1, 0,
|
||||||
|
'a=extmap:' + (maxId + 1).toString() + ' ' + uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sdpLines.join('\r\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
|
||||||
|
// when the RTP header extension API is implemented.
|
||||||
|
async function addAbsCaptureTimeAndExchangeOffer(caller, callee) {
|
||||||
|
let offer = await caller.createOffer();
|
||||||
|
|
||||||
|
// Absolute capture time header extension may not be offered by default,
|
||||||
|
// in such case, munge the SDP.
|
||||||
|
offer.sdp = addHeaderExtensionToSdp(offer.sdp, kAbsCaptureTime);
|
||||||
|
|
||||||
|
await caller.setLocalDescription(offer);
|
||||||
|
return callee.setRemoteDescription(offer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
|
||||||
|
// when the RTP header extension API is implemented.
|
||||||
|
async function checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
|
||||||
|
absCaptureTimeAnswered) {
|
||||||
|
let answer = await callee.createAnswer();
|
||||||
|
|
||||||
|
const extmap = new RegExp('a=extmap:\\d+ ' + kAbsCaptureTime + '\r\n', 'g');
|
||||||
|
if (answer.sdp.match(extmap) == null) {
|
||||||
|
// We expect that absolute capture time RTP header extension is answered.
|
||||||
|
// But if not, there is no need to proceed with the test.
|
||||||
|
assert_false(absCaptureTimeAnswered, 'Absolute capture time RTP ' +
|
||||||
|
'header extension is not answered');
|
||||||
|
} else {
|
||||||
|
if (!absCaptureTimeAnswered) {
|
||||||
|
// We expect that absolute capture time RTP header extension is not
|
||||||
|
// answered, but it is, then we munge the answer to remove it.
|
||||||
|
answer.sdp = answer.sdp.replace(extmap, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await callee.setLocalDescription(answer);
|
||||||
|
return caller.setRemoteDescription(answer);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function exchangeOfferAndListenToOntrack(t, caller, callee,
|
||||||
|
absCaptureTimeOffered) {
|
||||||
|
const ontrackPromise = addEventListenerPromise(t, callee, 'track');
|
||||||
|
// Absolute capture time header extension is expected not offered by default,
|
||||||
|
// and thus munging is needed to enable it.
|
||||||
|
await absCaptureTimeOffered
|
||||||
|
? addAbsCaptureTimeAndExchangeOffer(caller, callee)
|
||||||
|
: exchangeOffer(caller, callee);
|
||||||
|
return ontrackPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function initiateSingleTrackCall(t, cap, absCaptureTimeOffered,
|
||||||
|
absCaptureTimeAnswered) {
|
||||||
|
const caller = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => caller.close());
|
||||||
|
const callee = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => callee.close());
|
||||||
|
|
||||||
|
const stream = await getNoiseStream(cap);
|
||||||
|
stream.getTracks().forEach(track => {
|
||||||
|
caller.addTrack(track, stream);
|
||||||
|
t.add_cleanup(() => track.stop());
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO(crbug.com/988432): `getSynchronizationSources() on the audio side
|
||||||
|
// needs a hardware sink for the returned dictionary entries to get updated.
|
||||||
|
const remoteVideo = document.getElementById('remote');
|
||||||
|
|
||||||
|
callee.ontrack = e => {
|
||||||
|
remoteVideo.srcObject = e.streams[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
exchangeIceCandidates(caller, callee);
|
||||||
|
|
||||||
|
await exchangeOfferAndListenToOntrack(t, caller, callee,
|
||||||
|
absCaptureTimeOffered);
|
||||||
|
|
||||||
|
// Exchange answer and check whether the absolute capture time RTP header
|
||||||
|
// extension is answered.
|
||||||
|
await checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
|
||||||
|
absCaptureTimeAnswered);
|
||||||
|
|
||||||
|
return [caller, callee];
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue