mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Update web-platform-tests to revision b'0339b7e9ebef65f3288f07167a17c123a782c66f'
This commit is contained in:
parent
550d80ad4f
commit
6c98c32c8a
92 changed files with 1650 additions and 2114 deletions
|
@ -245,3 +245,39 @@
|
|||
[Web Animations: property <border-left-width> from [0px\] to [10px\] at (1) should be [10px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (-0.3) should be [0px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0) should be [3px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0.3) should be [9px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0.6) should be [15px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (1) should be [23px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (1.5) should be [33px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (-0.3) should be [0px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0) should be [3px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0.3) should be [9px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0.6) should be [15px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (1) should be [23px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (1.5) should be [33px\]]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,129 +53,6 @@
|
|||
[background-position length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -326,303 +203,3 @@
|
|||
[margin-right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(em) / values]
|
||||
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
|
||||
|
||||
|
|
|
@ -5,15 +5,9 @@
|
|||
[background-position length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-position length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-shadow shadow(shadow) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-position length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -23,30 +17,9 @@
|
|||
[background-position length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-position length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[visibility visibility(keyword) / values]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -56,9 +29,6 @@
|
|||
[background-position length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-position length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -236,126 +206,6 @@
|
|||
[margin-right length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[color color(rgba) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(keyword) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(numeric) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(integer) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(decimal) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-color color(rgba) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -629,153 +479,3 @@
|
|||
[left percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -14,6 +14,3 @@
|
|||
[test some point of the element: bottom right corner]
|
||||
expected: FAIL
|
||||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -309,15 +309,21 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,15 +5,3 @@
|
|||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 9]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 5]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 6]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 7]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 8]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -10,7 +9,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
[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: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -26,39 +23,12 @@
|
|||
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
||||
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: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionStart 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: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -68,9 +38,39 @@
|
|||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange out of range 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
|
||||
|
||||
[input type text: selectionEnd 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: selectionEnd out of range 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: setRangeText() 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 tel: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setRangeText() 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: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -650,3 +650,15 @@
|
|||
[X SNR (40.857403325561265 dB) is not greater than or equal to 65.737. Got 40.857403325561265.]
|
||||
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\]\t3.2010779250413179e-5\t3.3531737327575684e-1\t3.3528536249650642e-1\t9.9990453587615313e-1\t9.0957000000000003e-5\n\t[15241\]\t4.5781822127956099e-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 15241.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (49.16246869313734 dB) is not greater than or equal to 85.58. Got 49.16246869313734.]
|
||||
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\]\t3.3559179428266361e-5\t-9.8956179618835449e-1\t9.8959535536778276e-1\t1.0000339131720297e+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.8959535536778276e-1 at index of 7189.\n\tMax RelError of 1.0000339131720297e+0 at index of 7189.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (40.857243958094884 dB) is not greater than or equal to 65.737. Got 40.857243958094884.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
[test_no_browsing_context]
|
||||
expected: ERROR
|
||||
|
||||
[test_null_response_value]
|
||||
expected: ERROR
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[test_element_in_object]
|
||||
expected: FAIL
|
||||
|
||||
[test_element_in_collection]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[json_serialize_windowproxy.py]
|
||||
[test_window_open]
|
||||
expected: ERROR
|
||||
|
||||
[test_frame]
|
||||
expected: ERROR
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -316,6 +316,15 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"css-lists": {
|
||||
"list-marker-position-crash.html": [
|
||||
"06ae5fa45bd06f5df306d96a665d6c7653c4dff0",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-multicol": {
|
||||
"abspos-in-multicol-with-spanner-crash.html": [
|
||||
"c30a19d001b530c304def61e1e6d55dc0f6b0318",
|
||||
|
@ -128863,6 +128872,32 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"transform-006.html": [
|
||||
"eb0500318bfb9a75bdbab1b4d64d0c4770590850",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-break/transform-006-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"transform-007.html": [
|
||||
"22b8276f28b4bebb7d4a7279b4187eb3f3f439e2",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-break/transform-007-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"widows-001.html": [
|
||||
"eb453ee64d8cfa1bcee456d614b64a3d67be122e",
|
||||
[
|
||||
|
@ -190792,6 +190827,71 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"background-image-column.html": [
|
||||
"c795aac5ea79db26b449bfcf8bce2b56b00d380e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/background-image-column-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"background-image-row-collapsed.html": [
|
||||
"c70c6abd9227f32ff56aaf141e484f4ca73e30c1",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/background-image-row-collapsed-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"background-image-row.html": [
|
||||
"69105e6937a766e8d05518936f9dfbc527dbd60c",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/background-image-row-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"collapsed-border-large-cell.html": [
|
||||
"60e1390b7b807cb94954b6fc39a89c946f03a686",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/collapsed-border-large-cell-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"overflow-hidden-table.html": [
|
||||
"dc252b1652d57bd4bdfdc0d7edea7f0b1d8b1c93",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/overflow-hidden-table-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -286008,6 +286108,14 @@
|
|||
"prefetch-header-allowed.html.headers": [
|
||||
"2b1d42a8d16c04cf339366b05262c27516e4196c",
|
||||
[]
|
||||
],
|
||||
"prefetch-header-blocked-by-default.html.headers": [
|
||||
"6d19ed181eeb513622eab41dcd8f94967338b387",
|
||||
[]
|
||||
],
|
||||
"prefetch-header-blocked.html.headers": [
|
||||
"732f62d58a5989786ec98d1c14eb4d54574a8d93",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"reporting": {
|
||||
|
@ -286608,7 +286716,7 @@
|
|||
[]
|
||||
],
|
||||
"prefetch-helper.js": [
|
||||
"db6d87593df17e93c3672a65141d46b0ec89bdb7",
|
||||
"4beae888593395c4cfdc4d1d1fcbc920f1233edd",
|
||||
[]
|
||||
],
|
||||
"prefetch-subresource.css": [
|
||||
|
@ -307256,6 +307364,14 @@
|
|||
"relpos-inline-ref.html": [
|
||||
"8c19f1cf4c6c0173b45face28d624368d365ec70",
|
||||
[]
|
||||
],
|
||||
"transform-006-ref.html": [
|
||||
"ffb859017da98baed10da8099979a069b34710cb",
|
||||
[]
|
||||
],
|
||||
"transform-007-ref.html": [
|
||||
"50599b119a7f0ab5246389de57c439e086b8797d",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"css-cascade": {
|
||||
|
@ -324381,7 +324497,7 @@
|
|||
[]
|
||||
],
|
||||
"common.js": [
|
||||
"038ef07a6d92af585101c864cdd048cffb68f3bc",
|
||||
"7b91100b7719a15cdf430117525a7fd1ae984d13",
|
||||
[]
|
||||
],
|
||||
"scroll-target-align-001-iframe.html": [
|
||||
|
@ -326112,6 +326228,26 @@
|
|||
"background-image-column-collapsed-ref.html": [
|
||||
"b3b1ce9ff37d19c2d43851399d22f299cb1608cf",
|
||||
[]
|
||||
],
|
||||
"background-image-column-ref.html": [
|
||||
"5b04f0074c39159f34718a1850fd527f6a18243d",
|
||||
[]
|
||||
],
|
||||
"background-image-row-collapsed-ref.html": [
|
||||
"8ab0992e0896fdd92575fff328376e1ac6ae7d1c",
|
||||
[]
|
||||
],
|
||||
"background-image-row-ref.html": [
|
||||
"1150a63e17995cf5094cb577892b3ef7f8653971",
|
||||
[]
|
||||
],
|
||||
"collapsed-border-large-cell-ref.html": [
|
||||
"40d80cac48568e922b84106360409f9f2a8c7f87",
|
||||
[]
|
||||
],
|
||||
"overflow-hidden-table-ref.html": [
|
||||
"fca7b4196cbc9a38ca01fc116e0c758c1a8e041f",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"support": {
|
||||
|
@ -330993,7 +331129,7 @@
|
|||
[]
|
||||
],
|
||||
"properties.js": [
|
||||
"9ca23450c8d574a20475e4aa737bcaab9335f76d",
|
||||
"3255261f6c604ee2bdfc3b07f6acd917408cd677",
|
||||
[]
|
||||
],
|
||||
"ruler-h-50%.png": [
|
||||
|
@ -337299,10 +337435,6 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"check-for-references.sh": [
|
||||
"adcc7dd2e7dca8a2c820dcf8e1844667a7333b0b",
|
||||
[]
|
||||
],
|
||||
"counter-styles-3": {
|
||||
"dependent-builtin-ref.html": [
|
||||
"a558ce29e6c2b0a2fd13238e9887b0e9bd169938",
|
||||
|
@ -337847,14 +337979,6 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"sync-tests-filter": [
|
||||
"1d487fe3a9826c76846f13f8f574c45c66d5f819",
|
||||
[]
|
||||
],
|
||||
"sync-tests.sh": [
|
||||
"7e3f087681e99002f3532950716b7ef414e6ddfb",
|
||||
[]
|
||||
],
|
||||
"text-decor-3": {
|
||||
"ruby-text-decoration-01-ref.html": [
|
||||
"c1b08d05c3e29b02fc69625fd6884e2edf8fb61b",
|
||||
|
@ -357031,7 +357155,7 @@
|
|||
[]
|
||||
],
|
||||
"background-sync.idl": [
|
||||
"12707e9289a9d785997c87ea64fa145e5bed5d95",
|
||||
"79a13a617af8aeac14038bd49acfd01bf0bb52d1",
|
||||
[]
|
||||
],
|
||||
"badging.idl": [
|
||||
|
@ -357299,7 +357423,7 @@
|
|||
[]
|
||||
],
|
||||
"keyboard-map.idl": [
|
||||
"8d95d8850582674bf8083b8aef420a46fbc478a7",
|
||||
"ea7fd5c76a3bfbaed621209f4973e7f7f30dca39",
|
||||
[]
|
||||
],
|
||||
"largest-contentful-paint.idl": [
|
||||
|
@ -357932,7 +358056,7 @@
|
|||
]
|
||||
},
|
||||
"lint.ignore": [
|
||||
"bcf58ea5cfe0f668aef0087a398677f56e05f210",
|
||||
"5d8db43125e75236420bcb0ce97ee73f6a0033ff",
|
||||
[]
|
||||
],
|
||||
"loading": {
|
||||
|
@ -366364,6 +366488,10 @@
|
|||
"5a3f2eb23590a37b415cfe8c2d647ad57878064c",
|
||||
[]
|
||||
],
|
||||
"type-check-worker.js": [
|
||||
"1779e2323d92c4c1cf2b5b789932f8e57d860560",
|
||||
[]
|
||||
],
|
||||
"unregister-controller-page.html": [
|
||||
"18a95ee892b1c9ee7ca597cb2655e6c4504a7912",
|
||||
[]
|
||||
|
@ -376920,7 +377048,7 @@
|
|||
]
|
||||
},
|
||||
"requirements.txt": [
|
||||
"059f211eae0b77945630fc038292ce854958ee58",
|
||||
"3f1f243a9a770526f3f97723b1829569233b0d3f",
|
||||
[]
|
||||
],
|
||||
"requirements_android_webview.txt": [
|
||||
|
@ -377870,7 +377998,7 @@
|
|||
[]
|
||||
],
|
||||
"test_pipes.py": [
|
||||
"8b40e1c84ff2a74ac12c7062489eac03ec486fd6",
|
||||
"904bfb4ee4cc6cae4fb6d350e2da35e8202b1bb5",
|
||||
[]
|
||||
],
|
||||
"test_request.py": [
|
||||
|
@ -377933,7 +378061,7 @@
|
|||
[]
|
||||
],
|
||||
"pipes.py": [
|
||||
"2aa0aaaee8d57889c6b860396853325d5b2406c1",
|
||||
"6845c33e9855ebda8d277ab05098a5f119a104e3",
|
||||
[]
|
||||
],
|
||||
"ranges.py": [
|
||||
|
@ -406885,7 +407013,7 @@
|
|||
]
|
||||
],
|
||||
"document-write-iframe.html": [
|
||||
"a84e3a37031280ec33ccb98307f422e3ca468744",
|
||||
"d6ad88ddc93df40894ee27d9a141219d9f1725e8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -407515,6 +407643,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"prefetch-blocked-by-default.html": [
|
||||
"0e54de66de541426eb55b1719f9db81bdc3dbabf",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"prefetch-blocked.html": [
|
||||
"890a65f82cf58b045bffc91fd10f6f7aa91ae185",
|
||||
[
|
||||
|
@ -407529,8 +407664,15 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"prefetch-header-blocked-by-default.html": [
|
||||
"e43dca76599dd1471634c000a179f7a84dd40760",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"prefetch-header-blocked.html": [
|
||||
"382c99a80d34ab25b8acc2cfbff2a0d85ac8b9e2",
|
||||
"a2abef3c17b899ec13973ebd438e2528be31bda7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -410577,7 +410719,7 @@
|
|||
]
|
||||
],
|
||||
"fetch.https.html": [
|
||||
"89050e03afd7f5aab3288be468f2dbf9712cc71d",
|
||||
"934fc06765c48434e560128f116af013914901c6",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -410603,7 +410745,7 @@
|
|||
]
|
||||
],
|
||||
"form-get-blank.https.html": [
|
||||
"6fe28c21cc0c3a5912ef3f69e751ba7e936a15c0",
|
||||
"3b059174d0b9e75c1560bd6775565aa2a17574b9",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -410629,7 +410771,7 @@
|
|||
]
|
||||
],
|
||||
"form-post-blank.https.html": [
|
||||
"d3cd369ca67a86bcd25c4f5a901e669beb77446c",
|
||||
"cc37f08dd1fa5396c6303c102c6b1ec6205d168c",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -410683,7 +410825,7 @@
|
|||
]
|
||||
],
|
||||
"img.https.html": [
|
||||
"bf76216e804a36a063308f691e6e48093ae3186f",
|
||||
"68603fd39d9c80d1c4033f0bdb6532e65dbf78b6",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -410698,7 +410840,7 @@
|
|||
]
|
||||
],
|
||||
"multiple-samesite-attributes.https.html": [
|
||||
"312fa2a2cc9adeb251a9dbc061cbf150ae3e2c45",
|
||||
"f1e52a3aea3b8f48dd215a7a3ab2ad94a60dc933",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -413119,7 +413261,7 @@
|
|||
]
|
||||
],
|
||||
"border-width-interpolation.html": [
|
||||
"11f92f41652a9f1b167c5a399849d1e1e61c4df7",
|
||||
"69f117b03ebc872485d299ad815290f48454c4c6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -424466,7 +424608,7 @@
|
|||
],
|
||||
"input": {
|
||||
"keyboard.html": [
|
||||
"2d39e0dd22ccbb24afe67c2b7871b3a1c9c2af78",
|
||||
"ffb6ef6f308bc75ea0104dbf76d90a82145549a7",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -430596,13 +430738,6 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"properties-value-auto-001.html": [
|
||||
"6c932aa7cd6c9156e943027551a7cbbce3786365",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"properties-value-implicit-001.html": [
|
||||
"8500436c529707f43349354ee87ef460e2d7d63b",
|
||||
[
|
||||
|
@ -490267,6 +490402,24 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"navigate-to-aboutblank.https.html": [
|
||||
"8e3da11e04d3acac1b2f36e3ee97813373723856",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"navigate-top-to-aboutblank.https.html": [
|
||||
"34a75cee57a1f63beeafcd5dd1475d7fda739137",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"no-https.html": [
|
||||
"db15d5c676efb6f5761dec52ad56580fdfc1acbf",
|
||||
[
|
||||
|
@ -541084,7 +541237,7 @@
|
|||
]
|
||||
],
|
||||
"registration-schedule-job.https.html": [
|
||||
"8ac5d49e8c3d352f204f35695bb467fa62eef326",
|
||||
"25d758ee8f0e26459218c7359faf7d3866b313cf",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -564483,7 +564636,7 @@
|
|||
]
|
||||
],
|
||||
"RTCPeerConnection-iceGatheringState.html": [
|
||||
"870e6ad72ec356ecefbca68878da731e347ed17c",
|
||||
"58b1489d9ff9a63ebf28c1e69296a3bc251fc780",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -248,3 +248,39 @@
|
|||
[Web Animations: property <border-left-width> from [0px\] to [10px\] at (1) should be [10px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (-0.3) should be [0px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0) should be [3px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0.3) should be [9px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (0.6) should be [15px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (1) should be [23px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [initial\] to [23px\] at (1.5) should be [33px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (-0.3) should be [0px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0) should be [3px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0.3) should be [9px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (0.6) should be [15px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (1) should be [23px\]]
|
||||
expected: FAIL
|
||||
|
||||
[Web Animations: property <border-left-width> from [unset\] to [23px\] at (1.5) should be [33px\]]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,129 +53,6 @@
|
|||
[background-position length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-color color(rgba) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -326,303 +203,3 @@
|
|||
[margin-right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-height percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[min-width percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(em) / values]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
[properties-value-auto-001.html]
|
||||
[top auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[z-index auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[marker-offset auto(to) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[marker-offset auto(from) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[clip auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[marker-offset auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[marker-offset auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[z-index auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[width auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[height auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom auto(from) / values]
|
||||
expected: FAIL
|
||||
|
||||
[clip auto(to) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left auto(from) / values]
|
||||
expected: FAIL
|
||||
|
|
@ -206,156 +206,6 @@
|
|||
[margin-right length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[color color(rgba) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-size percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(keyword) / events]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(numeric) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(integer) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(decimal) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-shadow shadow(shadow) / events]
|
||||
expected: FAIL
|
||||
|
||||
[background-color color(rgba) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -629,153 +479,3 @@
|
|||
[left percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -18,6 +18,3 @@
|
|||
[test some point of the element: bottom right corner]
|
||||
expected: FAIL
|
||||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -309,15 +309,21 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,15 +5,3 @@
|
|||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 9]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 5]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 6]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 7]
|
||||
expected: FAIL
|
||||
|
||||
[Test javascript URL string return values in direct and indirect (target) frame contexts. 8]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -10,7 +9,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
[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: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -26,39 +23,12 @@
|
|||
[input type url: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: setSelectionRange() a second time (must not fire select)]
|
||||
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: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionStart 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: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -68,9 +38,39 @@
|
|||
[input type url: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange out of range 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
|
||||
|
||||
[input type text: selectionEnd 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: selectionEnd out of range 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: setRangeText() 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 tel: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setRangeText() 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: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -878,3 +878,15 @@
|
|||
[X SNR (40.857403325561265 dB) is not greater than or equal to 65.737. Got 40.857403325561265.]
|
||||
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\]\t3.2010779250413179e-5\t3.3531737327575684e-1\t3.3528536249650642e-1\t9.9990453587615313e-1\t9.0957000000000003e-5\n\t[15241\]\t4.5781822127956099e-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 15241.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (49.16246869313734 dB) is not greater than or equal to 85.58. Got 49.16246869313734.]
|
||||
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\]\t3.3559179428266361e-5\t-9.8956179618835449e-1\t9.8959535536778276e-1\t1.0000339131720297e+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.8959535536778276e-1 at index of 7189.\n\tMax RelError of 1.0000339131720297e+0 at index of 7189.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (40.857243958094884 dB) is not greater than or equal to 65.737. Got 40.857243958094884.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
[test_no_top_browsing_context]
|
||||
expected: ERROR
|
||||
|
||||
[test_null_response_value]
|
||||
expected: ERROR
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[test_element_in_object]
|
||||
expected: FAIL
|
||||
|
||||
[test_element_in_collection]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
[json_serialize_windowproxy.py]
|
||||
[test_frame]
|
||||
expected: FAIL
|
||||
expected: ERROR
|
||||
|
||||
[test_window_open]
|
||||
expected: FAIL
|
||||
expected: ERROR
|
||||
|
||||
[test_initial_window]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -3,67 +3,63 @@
|
|||
<meta http-equiv="Content-Security-Policy" content="img-src 'none'">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<title>document.open() does not change Content Security Policies</title>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
var t0 = async_test("Image loaded in srcdoc iframe using document.write is blocked");
|
||||
var t1 = async_test("Image loaded in normal iframe using document.write is blocked");
|
||||
var t2 = async_test("Image loaded directly in simple srcdoc iframe is blocked");
|
||||
|
||||
window.onmessage = function(e) {
|
||||
var current_test;
|
||||
if (e.data.type == "spv0") {
|
||||
current_test = t0;
|
||||
} else if (e.data.type == "spv1") {
|
||||
current_test = t1;
|
||||
} else if (e.data.type == "spv2") {
|
||||
current_test = t2;
|
||||
} else {
|
||||
t0.step(function() {assert_true(false, "Unexpected message received from child frames")});
|
||||
t1.step(function() {assert_true(false, "Unexpected message received from child frames")});
|
||||
t2.step(function() {assert_true(false, "Unexpected message received from child frames")});
|
||||
}
|
||||
|
||||
current_test.step(function() {
|
||||
assert_equals(e.data.violatedDirective, 'img-src');
|
||||
current_test.done();
|
||||
let message_from = (w) => {
|
||||
return new Promise(resolve => {
|
||||
let listener = msg => {
|
||||
if (msg.source != w)
|
||||
return;
|
||||
window.removeEventListener('message', listener);
|
||||
resolve(msg.data);
|
||||
};
|
||||
window.addEventListener('message', listener);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
};
|
||||
|
||||
<!--As discovered thanks to crbug.com/920531, there is a bug in CSP where the
|
||||
CSP is not inherited when using document.open/document.write to edit a
|
||||
document's contents. -->
|
||||
<iframe id="frame1" srcdoc=""></iframe>
|
||||
|
||||
<!-- This is speculatively correct https://github.com/whatwg/html/issues/4510 -->
|
||||
<iframe id="frame2" src="/content-security-policy/common/blank.html"></iframe>
|
||||
|
||||
<!--<script>
|
||||
var documentBody = function(should_load) {
|
||||
let image = should_load ? "pass.png" : "fail.png";
|
||||
return `
|
||||
<script>
|
||||
function loaded() {
|
||||
window.top.postMessage("loaded", '*');
|
||||
};
|
||||
window.addEventListener('securitypolicyviolation', function(e) {
|
||||
window.top.postMessage({type: 'spv2', violatedDirective: e.violatedDirective}, '*');
|
||||
window.top.postMessage("blocked", '*');
|
||||
});
|
||||
</script>
|
||||
<img src='/content-security-policy/support/fail.png'>
|
||||
-->
|
||||
<iframe srcdoc="<script>window.addEventListener('securitypolicyviolation', function(e) {window.top.postMessage({type: 'spv2', violatedDirective: e.violatedDirective}, '*');});</script><img src='/content-security-policy/support/fail.png'>"></iframe>
|
||||
<script>
|
||||
var frames = ['frame1', 'frame2'];
|
||||
for (var i = 0; i < frames.length; i++) {
|
||||
var body_text = ['<script>',
|
||||
' window.addEventListener("securitypolicyviolation", function(e) {',
|
||||
' window.top.postMessage({type: "spv'+ i + '", violatedDirective: e.violatedDirective}, "*");',
|
||||
' });',
|
||||
'</scr' + 'ipt>',
|
||||
'<img src="/content-security-policy/support/fail.png">'].join('\n');
|
||||
</scr`+`ipt>
|
||||
<img src='/content-security-policy/support/${image}' onload='loaded()'>`;
|
||||
};
|
||||
|
||||
promise_test(async () => {
|
||||
let iframe = document.createElement('iframe');
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
let msg = message_from(iframe.contentWindow);
|
||||
let doc = iframe.contentWindow.document;
|
||||
doc.open();
|
||||
doc.write("<html><body>" + documentBody(false) + "</body></html>");
|
||||
doc.close();
|
||||
assert_equals(await msg, "blocked");
|
||||
}, "document.open() keeps inherited CSPs on empty iframe.");
|
||||
|
||||
promise_test(async () => {
|
||||
let iframe = document.createElement('iframe');
|
||||
let loaded = new Promise(resolve => iframe.onload = resolve);
|
||||
iframe.src = "/common/blank.html";
|
||||
document.body.appendChild(iframe);
|
||||
await loaded;
|
||||
|
||||
let msg = message_from(iframe.contentWindow);
|
||||
let doc = iframe.contentWindow.document;
|
||||
doc.open();
|
||||
doc.write("<html><body>" + documentBody(true) + "</body></html>");
|
||||
doc.close();
|
||||
assert_equals(await msg, "loaded");
|
||||
}, "document.open() does not change delivered CSPs.");
|
||||
|
||||
var e = document.getElementById(frames[i]);
|
||||
var n = e.contentWindow.document;
|
||||
n.open();
|
||||
n.write("<html><body>" + body_text + "</body></html>");
|
||||
n.close();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- Block everything by default, but allow the page's scripts to execute. -->
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' 'self'">
|
||||
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src='/content-security-policy/support/testharness-helper.js'></script>
|
||||
<script src='/content-security-policy/support/prefetch-helper.js'></script>
|
||||
<script>
|
||||
async_test(t => {
|
||||
let url = window.origin + '/content-security-policy/support/fail.png';
|
||||
|
||||
let link = document.createElement('link');
|
||||
link.rel = 'prefetch';
|
||||
link.href = url;
|
||||
|
||||
assert_link_does_not_prefetch(t, link);
|
||||
}, "`default-src`-blocked prefetch generates report.");
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- Headers:
|
||||
Content-Security-Policy: default-src 'none'; script-src 'unsafe-inline' 'self'; img-src 'self'; style-src 'self'
|
||||
Link: </content-security-policy/support/fail.png>;rel=prefetch
|
||||
-->
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src='/content-security-policy/support/testharness-helper.js'></script>
|
||||
<script src='/content-security-policy/support/prefetch-helper.js'></script>
|
||||
<script>
|
||||
async_test(t => {
|
||||
let url = window.origin + '/content-security-policy/support/fail.png';
|
||||
waitUntilCSPEventForURL(t, url)
|
||||
.then(t.step_func_done(e => {
|
||||
assert_equals(e.violatedDirective, 'prefetch-src');
|
||||
|
||||
// This assert verifies both that the resource wasn't downloaded
|
||||
// when prefetched via `Link` on both this document itself, and
|
||||
// on the stylesheet subresource below.
|
||||
assert_resource_not_downloaded(t, url);
|
||||
}));
|
||||
|
||||
// Load a stylesheet that tries to trigger a prefetch:
|
||||
let link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.href = '/content-security-policy/support/prefetch-subresource.css';
|
||||
document.head.appendChild(link);
|
||||
}, 'Prefetch via `Link` header blocked when allowed by default-src');
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Content-Security-Policy: default-src 'none'; script-src 'unsafe-inline' 'self'; img-src 'self'; style-src 'self'
|
||||
Link: </content-security-policy/support/fail.png>;rel=prefetch
|
|
@ -1,7 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Security-Policy" content="prefetch-src 'none'">
|
||||
<!-- Headers:
|
||||
Content-Security-Policy: prefetch-src 'none'
|
||||
Link: </content-security-policy/support/fail.png>;rel=prefetch
|
||||
-->
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src='/content-security-policy/support/testharness-helper.js'></script>
|
||||
|
@ -12,15 +15,19 @@
|
|||
waitUntilCSPEventForURL(t, url)
|
||||
.then(t.step_func_done(e => {
|
||||
assert_equals(e.violatedDirective, 'prefetch-src');
|
||||
|
||||
// This assert verifies both that the resource wasn't downloaded
|
||||
// when prefetched via `Link` on both this document itself, and
|
||||
// on the stylesheet subresource below.
|
||||
assert_resource_not_downloaded(t, url);
|
||||
}));
|
||||
|
||||
// Load a stylesheet that tries to trigger a prefetch:
|
||||
let link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.href = '/content-security-policy/support/prefetch-subresource.css';
|
||||
document.head.appendChild(link);
|
||||
}, 'Prefetch via `Link` header succeeds when allowed by prefetch-src');
|
||||
// Load a stylesheet that tries to trigger a prefetch:
|
||||
let link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.href = '/content-security-policy/support/prefetch-subresource.css';
|
||||
document.head.appendChild(link);
|
||||
}, 'Prefetch via `Link` header blocked when allowed by prefetch-src');
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Content-Security-Policy: prefetch-src 'none'
|
||||
Link: </content-security-policy/support/fail.png>;rel=prefetch
|
|
@ -1,10 +1,11 @@
|
|||
test(t => {
|
||||
assert_true(document.createElement('link').relList.supports('prefetch'));
|
||||
}, "Browser supports prefetch.");
|
||||
|
||||
test(t => {
|
||||
assert_true(!!window.PerformanceResourceTiming);
|
||||
}, "Browser supports performance APIs.");
|
||||
setup(_ => {
|
||||
assert_implements_optional(
|
||||
document.createElement('link').relList.supports('prefetch'),
|
||||
"Browser supports prefetch.");
|
||||
assert_implements_optional(
|
||||
"PerformanceResourceTiming" in window,
|
||||
"Browser supports performance APIs.");
|
||||
});
|
||||
|
||||
async function waitUntilResourceDownloaded(url) {
|
||||
await new Promise((resolve, reject) => {
|
||||
|
|
|
@ -28,12 +28,12 @@
|
|||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host fetches are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host fetches are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host fetches are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to same-host fetches are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain fetches are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain fetches are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain fetches are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to subdomain fetches are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to cross-site:
|
||||
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Same-host redirecting to cross-site fetches are cross-site");
|
||||
|
|
|
@ -55,12 +55,12 @@
|
|||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.LAX, "Cross-site redirecting to same-host top-level form GETs are laxly same-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain top-level form GETs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.LAX, "Cross-site redirecting to subdomain top-level form GETs are laxly same-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to cross-site:
|
||||
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.LAX, "Same-host redirecting to cross-site top-level form GETs are laxly same-site");
|
||||
|
|
|
@ -44,12 +44,12 @@
|
|||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to same-host top-level form POSTs are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain top-level form POSTs are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to subdomain top-level form POSTs are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to cross-site:
|
||||
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Same-host redirecting to cross-site top-level form POSTs are cross-site");
|
||||
|
|
|
@ -68,12 +68,12 @@
|
|||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to same-host images are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to subdomain images are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to cross-site:
|
||||
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Same-host redirecting to cross-site images are cross-site");
|
||||
|
|
|
@ -89,12 +89,12 @@
|
|||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host images are strictly same-site");
|
||||
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to same-host images are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to same-host:
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain images are strictly same-site");
|
||||
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to subdomain images are cross-site");
|
||||
|
||||
// Redirect from {same-host,subdomain,cross-site} to cross-site:
|
||||
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Same-host redirecting to cross-site images are cross-site");
|
||||
|
|
|
@ -68,14 +68,14 @@ test_interpolation({
|
|||
test_interpolation({
|
||||
property: 'border-left-width',
|
||||
from: 'initial',
|
||||
to: '20px',
|
||||
to: '23px',
|
||||
}, [
|
||||
{at: -0.3, expect: '0px'},
|
||||
{at: 0, expect: '3px'},
|
||||
{at: 0.3, expect: '8.1px'},
|
||||
{at: 0.6, expect: '13.2px'},
|
||||
{at: 1, expect: '20px'},
|
||||
{at: 1.5, expect: '28.5px'},
|
||||
{at: 0.3, expect: '9px'},
|
||||
{at: 0.6, expect: '15px'},
|
||||
{at: 1, expect: '23px'},
|
||||
{at: 1.5, expect: '33px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
|
@ -94,14 +94,14 @@ test_interpolation({
|
|||
test_interpolation({
|
||||
property: 'border-left-width',
|
||||
from: 'unset',
|
||||
to: '20px',
|
||||
to: '23px',
|
||||
}, [
|
||||
{at: -0.3, expect: '0px'},
|
||||
{at: 0, expect: '3px'},
|
||||
{at: 0.3, expect: '8.1px'},
|
||||
{at: 0.6, expect: '13.2px'},
|
||||
{at: 1, expect: '20px'},
|
||||
{at: 1.5, expect: '28.5px'},
|
||||
{at: 0.3, expect: '9px'},
|
||||
{at: 0.6, expect: '15px'},
|
||||
{at: 1, expect: '23px'},
|
||||
{at: 1.5, expect: '33px'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<style>
|
||||
.transformed {
|
||||
transform: rotate(25deg);
|
||||
transform-origin: bottom right;
|
||||
background: hotpink;
|
||||
}
|
||||
.child {
|
||||
margin-left: auto;
|
||||
width: 50px;
|
||||
background: lime;
|
||||
}
|
||||
.fake-column {
|
||||
float: left;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.fake-column:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
</style>
|
||||
<div style="width:460px; column-gap:20px; margin-top:50px; height:100px; background:yellow;">
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="margin-top:50px; height:50px;">
|
||||
<div class="child" style="height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:100px;">
|
||||
<div class="child" style="height:100px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:25px;">
|
||||
<div class="child" style="height:100px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:0;">
|
||||
<div class="child" style="height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
|
||||
<meta name="assert" content="Test that transform-origin is calculated correctly and individually for each fragment, also when the transform-establishing element is overflowed.">
|
||||
<link rel="match" href="transform-006-ref.html">
|
||||
<style>
|
||||
.transformed {
|
||||
transform: rotate(25deg);
|
||||
transform-origin: bottom right;
|
||||
background: hotpink;
|
||||
}
|
||||
.child {
|
||||
margin-left: auto;
|
||||
width: 50px;
|
||||
background: lime;
|
||||
}
|
||||
</style>
|
||||
<div style="columns:4; column-fill:auto; width:460px; column-gap:20px; margin-top:50px; height:100px; background:yellow;">
|
||||
<div class="transformed" style="margin-top:50px; height:175px;">
|
||||
<div class="child" style="height:300px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<style>
|
||||
.transformed {
|
||||
will-change: transform;
|
||||
transform: rotate(25deg);
|
||||
transform-origin: bottom right;
|
||||
background: hotpink;
|
||||
}
|
||||
.child {
|
||||
margin-left: auto;
|
||||
width: 50px;
|
||||
background: lime;
|
||||
}
|
||||
.fake-column {
|
||||
float: left;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.fake-column:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
</style>
|
||||
<div style="width:460px; column-gap:20px; margin-top:50px; height:100px; background:yellow;">
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="margin-top:50px; height:50px;">
|
||||
<div class="child" style="height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:100px;">
|
||||
<div class="child" style="height:100px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:25px;">
|
||||
<div class="child" style="height:100px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fake-column">
|
||||
<div class="transformed" style="height:0;">
|
||||
<div class="child" style="height:50px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
|
||||
<meta name="assert" content="Test that transform-origin is calculated correctly and individually for each fragment, also when the transform-establishing element is overflowed.">
|
||||
<link rel="match" href="transform-007-ref.html">
|
||||
<style>
|
||||
.transformed {
|
||||
will-change: transform;
|
||||
transform: rotate(25deg);
|
||||
transform-origin: bottom right;
|
||||
background: hotpink;
|
||||
}
|
||||
.child {
|
||||
margin-left: auto;
|
||||
width: 50px;
|
||||
background: lime;
|
||||
}
|
||||
</style>
|
||||
<div style="columns:4; column-fill:auto; width:460px; column-gap:20px; margin-top:50px; height:100px; background:yellow;">
|
||||
<div class="transformed" style="margin-top:50px; height:175px;">
|
||||
<div class="child" style="height:300px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1183869">
|
||||
<div>
|
||||
<div style="width: 1000px; display: list-item; float: right;"></div>
|
||||
<table style="max-height: 0; display: list-item;">
|
||||
<caption style="display: list-item;">
|
||||
<button style="padding-top: 6%; display: list-item;">
|
||||
<big style="float: right;">
|
||||
<button style="display; list-item;"></button>
|
||||
</big>
|
||||
</button>
|
||||
</caption>
|
||||
</table>
|
||||
<h2 style="padding:0 2147483652%; max-height: 0; display: list-item;"></h2>
|
||||
</div>
|
|
@ -35,32 +35,28 @@ promise_test(async t => {
|
|||
scroller.scrollTo(0, 0);
|
||||
assert_equals(scroller.scrollTop, 0, "verify test pre-condition");
|
||||
await keyPress(scroller, "ArrowDown");
|
||||
await waitForAnimationEnd(scrollTop);
|
||||
assert_equals(scroller.scrollTop, 400);
|
||||
await waitForScrollEnd(scroller, scrollTop, 400);
|
||||
}, "Snaps to bottom-left after pressing ArrowDown");
|
||||
|
||||
promise_test(async t => {
|
||||
scroller.scrollTo(0, 400);
|
||||
assert_equals(scroller.scrollTop, 400, "verify test pre-condition");
|
||||
await keyPress(scroller, "ArrowUp");
|
||||
await waitForAnimationEnd(scrollTop);
|
||||
assert_equals(scroller.scrollTop, 0);
|
||||
await waitForScrollEnd(scroller, scrollTop, 0);
|
||||
}, "Snaps to top-left after pressing ArrowUp");
|
||||
|
||||
promise_test(async t => {
|
||||
scroller.scrollTo(0, 0);
|
||||
assert_equals(scroller.scrollTop, 0, "verify test pre-condition");
|
||||
await keyPress(scroller, "ArrowRight");
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_equals(scroller.scrollLeft, 400);
|
||||
await waitForScrollEnd(scroller, scrollLeft, 400);
|
||||
}, "Snaps to top-right after pressing ArrowRight");
|
||||
|
||||
promise_test(async t => {
|
||||
scroller.scrollTo(400, 0);
|
||||
assert_equals(scroller.scrollLeft, 400, "verify test pre-condition");
|
||||
await keyPress(scroller, "ArrowLeft");
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_equals(scroller.scrollLeft, 0);
|
||||
await waitForScrollEnd(scroller, scrollLeft, 0);
|
||||
}, "Snaps to top-left after pressing ArrowLeft");
|
||||
|
||||
promise_test(async t => {
|
||||
|
@ -76,7 +72,9 @@ promise_test(async t => {
|
|||
topRight.style.left = "500px";
|
||||
scroller.scrollTo(0, 0);
|
||||
assert_equals(scroller.scrollLeft, 0, "verify test pre-condition");
|
||||
const scrollPromise = waitForScrollEvent(scroller);
|
||||
await keyPress(scroller, "ArrowRight");
|
||||
await scrollPromise;
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_between_exclusive(scroller.scrollLeft, 0, 500);
|
||||
}, "If the original intended offset is valid as making a snap area cover the"
|
||||
|
@ -96,8 +94,7 @@ promise_test(async t => {
|
|||
scroller.scrollTo(0, 0);
|
||||
assert_equals(scroller.scrollLeft, 0, "verify test pre-condition");
|
||||
await keyPress(scroller, "ArrowRight");
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_equals(scroller.scrollLeft, 20);
|
||||
await waitForScrollEnd(scroller, scrollLeft, 20);
|
||||
}, "If the original intended offset is valid as making a snap area cover the "
|
||||
+ "snapport, but there's a defined snap offset in between, use the defined snap"
|
||||
+ " offset.");
|
||||
|
@ -105,8 +102,7 @@ promise_test(async t => {
|
|||
promise_test(async t => {
|
||||
scroller.scrollTo(400, 0);
|
||||
await keyPress(scroller, "ArrowRight");
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_equals(scroller.scrollLeft, 400);
|
||||
await waitForScrollEnd(scroller, scrollLeft, 400);
|
||||
}, "If there is no valid snap offset on the arrow key's direction other than "
|
||||
+ "the current offset, and the scroll-snap-type is mandatory, stay at the "
|
||||
+ "current offset.");
|
||||
|
@ -119,10 +115,12 @@ promise_test(async t => {
|
|||
scroller.style.scrollSnapType = "both proximity";
|
||||
scroller.scrollTo(400, 0);
|
||||
assert_equals(scroller.scrollLeft, 400, "verify test pre-condition");
|
||||
const scrollPromise = waitForScrollEvent(scroller);
|
||||
await keyPress(scroller, "ArrowRight");
|
||||
await scrollPromise;
|
||||
await waitForAnimationEnd(scrollLeft);
|
||||
assert_greater_than(scroller.scrollLeft, 400);
|
||||
}, "If there is no valid snap offset on the arrow key's direction other than "
|
||||
+ "the current offset, and the scroll-snap-type is proximity, go to the "
|
||||
+ "original intended offset");
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -55,3 +55,28 @@ function waitForAnimationEnd(getValue) {
|
|||
});
|
||||
}
|
||||
|
||||
function waitForScrollEvent(eventTarget) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const scrollListener = () => {
|
||||
eventTarget.removeEventListener('scroll', scrollListener);
|
||||
resolve();
|
||||
};
|
||||
eventTarget.addEventListener('scroll', scrollListener);
|
||||
});
|
||||
}
|
||||
|
||||
function waitForScrollEnd(eventTarget, getValue, targetValue) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const scrollListener = () => {
|
||||
if (getValue() == targetValue) {
|
||||
eventTarget.removeEventListener('scroll', scrollListener);
|
||||
resolve();
|
||||
}
|
||||
};
|
||||
if (getValue() == targetValue)
|
||||
resolve();
|
||||
else
|
||||
eventTarget.addEventListener('scroll', scrollListener);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!doctype html>
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 10px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 220px, blue 220px);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 50px 230px;
|
||||
}
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position:absolute;
|
||||
border: 4px solid black;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main>
|
||||
<div style="position: relative;border: 10px solid yellow; width:290px; height: 290px">
|
||||
<!-- row 1 -->
|
||||
<div class="td bg" style="top:20px;left:20px;height:230px"></div>
|
||||
<div class="td bg" style="top:20px;left:80px;"></div>
|
||||
<div class="td" style="top:20px; left: 140px;"></div>
|
||||
<div class="td" style="top:20px; left: 200px;"></div>
|
||||
<!-- row 2
|
||||
additional -4 offsets on background-position are for borders.
|
||||
columns do not have borders.
|
||||
-->
|
||||
<div class="td bg" style="top:80px;left:80px;width:110px;height:110px;background-position-y:-64px;background-position-x:-4px"></div>
|
||||
<div class="td" style="top:80px; left: 200px;"></div>
|
||||
<!-- row 3 -->
|
||||
<div class="td" style="top:140px; left: 200px;"></div>
|
||||
<!-- row 4 -->
|
||||
<div class="td bg" style="top:200px;left:80px;background-position-y:-180px"></div>
|
||||
<div class="td" style="top:200px; left: 140px;"></div>
|
||||
<div class="td" style="top:200px; left: 200px;"></div>
|
||||
</div>
|
||||
|
||||
</main>
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Table column background image geometry</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#drawing-backgrounds-and-borders" />
|
||||
<link rel="match" href="background-image-column-ref.html" />
|
||||
<meta name="assert" content="Column backgrounds get painted into cells with correct geometry.">
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 10px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 220px, blue 220px);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
border-spacing: 10px;
|
||||
border: 10px solid yellow;
|
||||
padding: 10px;
|
||||
}
|
||||
main td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 0px;
|
||||
border: 4px solid black;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<main>
|
||||
<table>
|
||||
<col class="bg">
|
||||
<col class="bg">
|
||||
<tr>
|
||||
<td rowspan=4></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2 colspan=2></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
|
@ -0,0 +1,60 @@
|
|||
<!doctype html>
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
--border: transparent;
|
||||
margin:0;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 5px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 99%, blue 99%);
|
||||
background-size: 200px 50px;
|
||||
background-repeat: no-repeat; /* FF defaults to no-repeat, Chrome to repeat */
|
||||
}
|
||||
main > * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.table {
|
||||
width: 200px;
|
||||
position: relative;
|
||||
margin-top: 5px;
|
||||
margin-left:5px;
|
||||
}
|
||||
.row {
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
}
|
||||
.cell {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.bigsquarecell {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
background-position-x: -50px;
|
||||
}
|
||||
.c2 {
|
||||
background-position-x: -50px
|
||||
}
|
||||
.c3 {
|
||||
background-position-x: -100px;
|
||||
}
|
||||
.c4 {
|
||||
background-position-x: -150px;
|
||||
}
|
||||
.bottomrow > .cell {
|
||||
margin-top: 5px;
|
||||
}
|
||||
</style>
|
||||
<main>
|
||||
<div class="table">
|
||||
<div class="row bg"></div>
|
||||
<div><div class="cell firstcell bg"></div><div class="bigsquarecell bg"></div><div class="cell c4 bg"></div></div>
|
||||
<div class="row bg"></div>
|
||||
<div style="position:absolute;top:-5px;left:-5px;bottom:-5px;right:-5px;border: 10px solid var(--border)"></div>
|
||||
</div>
|
||||
</main>
|
|
@ -0,0 +1,53 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Collapsed table row background image geometry</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#drawing-backgrounds-and-borders" />
|
||||
<link rel="match" href="background-image-row-collapsed-ref.html" />
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
--border: transparent;
|
||||
margin:0;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 5px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 99%, blue 99%);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
border: 10px solid var(--border);
|
||||
border-collapse: collapse;
|
||||
}
|
||||
main td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 0px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<main>
|
||||
<table>
|
||||
<tr class="bg">
|
||||
<td colspan=4></td>
|
||||
</tr>
|
||||
<tr class="bg">
|
||||
<td></td>
|
||||
<td rowspan=2 colspan=2></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="bg">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
|
@ -0,0 +1,68 @@
|
|||
<!doctype html>
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 5px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 99%, blue 99%);
|
||||
background-size: 230px 50px;
|
||||
background-repeat: no-repeat; /* FF defaults to no-repeat, Chrome to repeat */
|
||||
}
|
||||
main > * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.table {
|
||||
border: 10px solid yellow;
|
||||
padding: 10px;
|
||||
width: 290px;
|
||||
}
|
||||
.row {
|
||||
margin-left: 10px;
|
||||
margin-top: 10px;
|
||||
width: 230px;
|
||||
height: 50px;
|
||||
}
|
||||
.cell {
|
||||
margin: 10px;
|
||||
margin-right: 5px;
|
||||
margin-left: 5px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.firstcell {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.bigsquarecell {
|
||||
margin:10px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 5px;
|
||||
width: 110px;
|
||||
height: 110px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
background-position-x: -60px;
|
||||
}
|
||||
.c2 {
|
||||
background-position-x: -60px
|
||||
}
|
||||
.c3 {
|
||||
background-position-x: -120px;
|
||||
}
|
||||
.c4 {
|
||||
background-position-x: -180px;
|
||||
}
|
||||
.bottomrow > .cell {
|
||||
margin-top: 5px;
|
||||
}
|
||||
</style>
|
||||
<main>
|
||||
<div class="table">
|
||||
<div class="row bg"></div>
|
||||
<div><div class="cell firstcell bg"></div><div class="bigsquarecell bg"></div><div class="cell c4 bg"></div></div>
|
||||
<div class="bottomrow"><div class="cell firstcell bg"></div><div class="cell c2 bg"></div><div class="cell c3 bg"></div><div class="cell c4 bg"></div>
|
||||
</div>
|
||||
</main>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Table row background image geometry</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#drawing-backgrounds-and-borders" />
|
||||
<link rel="match" href="background-image-row-ref.html" />
|
||||
<meta name="assert" content="Row backgrounds get painted into cells with correct geometry.">
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(45deg, orange 0px, orange 5px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 99%, blue 99%);
|
||||
background-size: 230px 50px;
|
||||
background-repeat: no-repeat;
|
||||
/* FF sometimes defaults to no-repeat for background images */
|
||||
}
|
||||
main > * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
border-spacing: 10px;
|
||||
border: 10px solid yellow;
|
||||
padding: 10px;
|
||||
}
|
||||
main td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 0px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<main>
|
||||
<table>
|
||||
<tr class="bg">
|
||||
<td colspan=4></td>
|
||||
</tr>
|
||||
<tr class="bg">
|
||||
<td></td>
|
||||
<td rowspan=2 colspan=2></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="bg">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
body {
|
||||
--bluetrans: rgba(0,0,255,0.5);
|
||||
--yellowtrans: rgba(255,255, 0, 0.5);
|
||||
--orangetrans: rgba(255,165,0,0.5);
|
||||
--greentrans: rgba(0,255,0, 0.5);
|
||||
}
|
||||
body * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#container > * {
|
||||
position:absolute;
|
||||
}
|
||||
</style>
|
||||
<div id="container" style="position:relative;width:200px;height:200px">
|
||||
<!-- blues -->
|
||||
<div style="width:56px;height:150px;background:var(--bluetrans);border: 6px solid blue;border-bottom:none;"></div>
|
||||
<div style="width:56px;height:56px;top:150px;background:var(--bluetrans);border-left: 6px solid blue;border-bottom:6px solid blue;"></div>
|
||||
<!-- green -->
|
||||
<div style="width:94px;height:55px;top:51px;left:56px;background:var(--greentrans);border-top:4px solid green;"></div>
|
||||
<div style="width:99px;height:44px;top:106px;left:56px;
|
||||
background:var(--greentrans);border-right:4px solid green;"></div>
|
||||
<!-- yellow -->
|
||||
<div style="width:56px;height:56px;top:50px;left:150px;background:var(--yellowtrans);border:6px solid yellow"></div>
|
||||
<!-- orange -->
|
||||
<div style="width:156px;height:56px;top:150px;left:50px;background:var(--orangetrans);border: 6px solid orange"></div>
|
||||
<!-- transparent -->
|
||||
<div style="width:48px;height:49px;top:2px;left:56px;border-top: 2px solid black;border-right:2px solid black"></div>
|
||||
<div style="width:50px;height:48px;top:2px;left:104px;border-top: 2px solid black;border-right:2px solid black"></div>
|
||||
<div style="width:50px;height:48px;top:2px;left:154px;border-top: 2px solid black;border-right:2px solid black"></div>
|
||||
<div style="width:50px;height:44px;top:106px;left:154px;border-right:2px solid black"></div>
|
||||
</div>
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Collapsed borders of large cells</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#drawing-backgrounds-and-borders" />
|
||||
<link rel="match" href="collapsed-border-large-cell-ref.html" />
|
||||
<meta name="assert" content="Collapsed borders of large cells can collapse a single edge.">
|
||||
<style>
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
main td {
|
||||
padding:0px;
|
||||
width: 50px;
|
||||
height:50px;
|
||||
border: 2px solid black;
|
||||
}
|
||||
</style>
|
||||
<main>
|
||||
<table>
|
||||
<colgroup style="border:6px solid blue;background:rgba(0,0,255,0.5);"></colgroup>
|
||||
<tr>
|
||||
<td rowspan=4></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2 colspan=2 style="border:4px solid green; background: rgba(0,255,0, 0.5);"></td>
|
||||
<td style="border: 6px solid yellow;background:rgba(255,255, 0, 0.5)"></td>
|
||||
</tr>
|
||||
<td></td>
|
||||
<tr>
|
||||
<td colspan=3 style="border:6px solid orange;background:rgba(255,165,0,0.5)"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main .table {
|
||||
overflow: hidden;
|
||||
border: 20px solid green;
|
||||
width:90px;
|
||||
}
|
||||
main .caption {
|
||||
height: 30px;
|
||||
background: lightblue;
|
||||
width:90px;
|
||||
text-align: center;
|
||||
}
|
||||
main .cell {
|
||||
padding:0px;
|
||||
width: 50px;
|
||||
height:50px;
|
||||
}
|
||||
</style>
|
||||
<main>
|
||||
<div class="table">
|
||||
<div class="cell">
|
||||
<div style="width:50px;height:50px">
|
||||
<div style="width:500px;height:500px;background:pink"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="caption" style="caption-side:bottom">caption</caption>
|
||||
</main>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Overflow hidden and captions</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#global-style-overrides" />
|
||||
<link rel="match" href="overflow-hidden-table-ref.html" />
|
||||
<meta name="assert" content="Overflow hidden clips table grid, but not captions.">
|
||||
<style>
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
overflow: hidden;
|
||||
border: 20px solid green;
|
||||
border-spacing: 0px;
|
||||
}
|
||||
main caption {
|
||||
height: 30px;
|
||||
background: lightblue;
|
||||
}
|
||||
main td {
|
||||
padding:0px;
|
||||
width: 50px;
|
||||
height:50px;
|
||||
}
|
||||
</style>
|
||||
<main>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="width:50px;height:50px">
|
||||
<div style="width:500px;height:500px;background:pink"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<caption style="caption-side:bottom">caption</caption>
|
||||
</table>
|
||||
</main>
|
|
@ -1,135 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions Test: transitioning property value "auto"</title>
|
||||
<meta name="assert" content="Test checks that properties are transitioned from an to auto-value">
|
||||
<link rel="help" title="2. Transitions" href="http://www.w3.org/TR/css3-transitions/#transitions">
|
||||
<link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">
|
||||
<meta name="flags" content="dom ">
|
||||
|
||||
<script src="/resources/testharness.js" type="text/javascript"></script>
|
||||
<script src="/resources/testharnessreport.js" type="text/javascript"></script>
|
||||
|
||||
<script src="./support/vendorPrefix.js" type="text/javascript"></script>
|
||||
<script src="./support/helper.js" type="text/javascript"></script>
|
||||
<script src="./support/runParallelAsyncHarness.js" type="text/javascript"></script>
|
||||
<script src="./support/generalParallelTest.js" type="text/javascript"></script>
|
||||
<script src="./support/properties.js" type="text/javascript"></script>
|
||||
|
||||
<style type="text/css">
|
||||
#offscreen {
|
||||
position: absolute;
|
||||
top: -100000px;
|
||||
left: -100000px;
|
||||
width: 100000px;
|
||||
height: 100000px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- required by testharnessreport.js -->
|
||||
<div id="log"></div>
|
||||
<!-- elements used for testing -->
|
||||
<div id="fixture" class="fixture">
|
||||
<div class="container">
|
||||
<div class="transition">Text sample</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="offscreen"></div>
|
||||
|
||||
<!--
|
||||
SEE ./support/README.md for an abstract explanation of the test procedure
|
||||
http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
|
||||
-->
|
||||
|
||||
<script>
|
||||
// see README.md for an explanation of how this test suite works
|
||||
// this suite tests properties that haven't been specified at all
|
||||
// (like background-image and column-rule-width)
|
||||
|
||||
// this test takes its time, give it a minute to run
|
||||
var timeout = 60000;
|
||||
setup({timeout: timeout});
|
||||
|
||||
var tests = getAutoPropertyTests();
|
||||
// for testing, limit to a couple of iterations
|
||||
// tests = tests.slice(10, 30);
|
||||
// or filter using one of:
|
||||
// tests = filterPropertyTests(tests, "background-color color(rgba)");
|
||||
// tests = filterPropertyTests(tests, ["background-color color(rgba)", ...]);
|
||||
// tests = filterPropertyTests(tests, /^background-color/);
|
||||
|
||||
// general transition-duration
|
||||
var duration = '2s';
|
||||
|
||||
runParallelAsyncHarness({
|
||||
// array of test data
|
||||
tests: tests,
|
||||
// the number of tests to run in parallel
|
||||
testsPerSlice: 50,
|
||||
// milliseconds to wait before calling teardown and ending test
|
||||
duration: parseFloat(duration) * 1200,
|
||||
// prepare individual test
|
||||
setup: function(data, options) {
|
||||
var styles = {
|
||||
'.fixture': {},
|
||||
|
||||
'.container': data.parentStyle,
|
||||
'.container.to': {},
|
||||
'.container.how': {},
|
||||
|
||||
'.transition': data.from,
|
||||
'.transition.to' : data.to,
|
||||
'.transition.how' : {transition: 'all ' + duration + ' linear 0s'}
|
||||
};
|
||||
|
||||
generalParallelTest.setup(data, options);
|
||||
generalParallelTest.addStyles(data, options, styles);
|
||||
},
|
||||
// cleanup after individual test
|
||||
teardown: generalParallelTest.teardown,
|
||||
// invoked prior to running a slice of tests
|
||||
sliceStart: generalParallelTest.sliceStart,
|
||||
// invoked after running a slice of tests
|
||||
sliceDone: generalParallelTest.sliceDone,
|
||||
// test cases, make them as granular as possible
|
||||
cases: {
|
||||
// test property values while transitioning
|
||||
// values.start kicks off a transition
|
||||
'values': {
|
||||
// run actual test, assertions can be used here!
|
||||
start: function(test, data, options) {
|
||||
// identify initial and target values
|
||||
generalParallelTest.getStyle(data);
|
||||
// make sure values differ, if they don't, the property could most likely not be parsed
|
||||
assert_not_equals(data.transition.from, data.transition.to, "initial and target values may not match");
|
||||
// kick off the transition
|
||||
generalParallelTest.startTransition(data);
|
||||
|
||||
// make sure we didn't get the target value immediately.
|
||||
// If we did, there wouldn't be a transition!
|
||||
var current = data.transition.computedStyle(data.property);
|
||||
assert_not_equals(current, data.transition.to, "must not be target value after start");
|
||||
},
|
||||
done: function(test, data, options) {
|
||||
// make sure the property's value were neither initial nor target while transitioning
|
||||
test.step(generalParallelTest.assertIntermediateValuesFunc(data, 'transition'));
|
||||
}
|
||||
},
|
||||
// test TransitionEnd events
|
||||
'events': {
|
||||
done: function(test, data, options) {
|
||||
// make sure there were no events on parent
|
||||
test.step(generalParallelTest.assertExpectedEventsFunc(data, 'container', ""));
|
||||
// make sure we got the event for the tested property only
|
||||
test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', addVendorPrefix(data.property) + ":" + duration));
|
||||
}
|
||||
}
|
||||
},
|
||||
// called once all tests are done
|
||||
done: generalParallelTest.done
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -90,15 +90,6 @@ var values = {
|
|||
keyword: ['visible', 'hidden', {discrete: true}]
|
||||
};
|
||||
},
|
||||
'auto': function(property) {
|
||||
var types = properties[property] || unspecified_properties[property];
|
||||
var val = values[types[0]](property);
|
||||
var key = Object.keys(val).shift();
|
||||
return {
|
||||
to: [val[key][1], 'auto'],
|
||||
from: ['auto', val[key][1]]
|
||||
};
|
||||
},
|
||||
// types reqired for non-specified properties
|
||||
'border-radius': function() {
|
||||
return {
|
||||
|
@ -228,26 +219,6 @@ var properties = {
|
|||
'z-index': ['integer']
|
||||
};
|
||||
|
||||
/*
|
||||
* Property to auto-value mapping
|
||||
* (lazily taken from http://www.siliconbaytraining.com/pages/csspv.html)
|
||||
*/
|
||||
var properties_auto = [
|
||||
'margin-top',
|
||||
'margin-right',
|
||||
'margin-bottom',
|
||||
'margin-left',
|
||||
'height',
|
||||
'width',
|
||||
'clip',
|
||||
'marker-offset',
|
||||
'top',
|
||||
'right',
|
||||
'left',
|
||||
'bottom',
|
||||
'z-index'
|
||||
];
|
||||
|
||||
/*
|
||||
* Property to Type table
|
||||
* (missing value-types of specified properties)
|
||||
|
@ -405,16 +376,6 @@ root.getFontSizeRelativePropertyTests = function() {
|
|||
return assemble(accepted);
|
||||
};
|
||||
|
||||
root.getAutoPropertyTests = function() {
|
||||
var accepted = {};
|
||||
|
||||
for (var i = 0, key; key = properties_auto[i]; i++) {
|
||||
accepted[key] = ['auto'];
|
||||
}
|
||||
|
||||
return assemble(accepted);
|
||||
};
|
||||
|
||||
root.filterPropertyTests = function(tests, names) {
|
||||
var allowed = {};
|
||||
var accepted = [];
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
find . -name reftest.list | sed 's,/reftest.list$,,' | while read DIRNAME
|
||||
do
|
||||
cat "$DIRNAME/reftest.list" | grep -v -e "^defaults" -e "include " | sed 's/ #.*//;s/^#.*//;s/.* == /== /;s/.* != /!= /' | grep -v "^ *$" | while read TYPE TEST REF
|
||||
do
|
||||
REFTYPE=""
|
||||
if [ "$TYPE" == "==" ]
|
||||
then
|
||||
REFTYPE="match"
|
||||
elif [ "$TYPE" == "!=" ]
|
||||
then
|
||||
REFTYPE="mismatch"
|
||||
else
|
||||
echo "Unexpected type $TYPE for $DIRNAME/$TEST"
|
||||
fi
|
||||
if grep "rel=\(\"$REFTYPE\"\|'$REFTYPE'\)" "$DIRNAME/$TEST" | head -1 | grep -q "href=\(\"$REF\"\|'$REF'\)"
|
||||
then
|
||||
#echo "Good link for $DIRNAME/$TEST"
|
||||
echo -n
|
||||
else
|
||||
echo "Missing link for $DIRNAME/$TEST"
|
||||
#echo "<link rel=\"$REFTYPE\" href=\"$REF\">" >> "$DIRNAME/$TEST"
|
||||
fi
|
||||
done
|
||||
done
|
|
@ -1,22 +0,0 @@
|
|||
# This file is an rsync filter. See the "FILTER RULES" section of
|
||||
# 'man rsync'.
|
||||
|
||||
##### Files not to touch at either end.
|
||||
- /README
|
||||
|
||||
##### Files not to write or delete at the destination end
|
||||
P /sync-tests.sh
|
||||
P /sync-tests-filter
|
||||
|
||||
##### Files not to read at the source end (and thus to delete from the
|
||||
##### destination end if present).
|
||||
H /test-template-001.xht
|
||||
H /references/test-template-001.xht
|
||||
|
||||
# css-supports-027 uses @-moz-document, so we don't submit it.
|
||||
# css-supports-046 tests the equivalent with @media.
|
||||
H /conditional3/css-supports-027.xht
|
||||
|
||||
# css-supports-028 uses @-moz-document, so we don't submit it.
|
||||
# css-supports-026 tests the equivalent with @media.
|
||||
H /conditional3/css-supports-028.xht
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ "x$1" != "x" ]; then
|
||||
MOZTREE="$1"
|
||||
else
|
||||
MOZTREE="$HOME/builds/clean-mozilla-central/mozilla/"
|
||||
fi
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
if [ "$(git status -s . | wc -l)" != "0" ]
|
||||
then
|
||||
echo "Directory not clean" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -e "$MOZTREE/.git" ]
|
||||
then
|
||||
MOZREV="$(cd "$MOZTREE" && git cinnabar git2hg HEAD)"
|
||||
else
|
||||
MOZREV="$(cd "$MOZTREE" && hg par --temp='{node}')"
|
||||
fi
|
||||
|
||||
rsync -avz --delete --filter=". ./sync-tests-filter" "$MOZTREE"/layout/reftests/w3c-css/submitted/ ./
|
||||
sed -i -e 's/^\(\(fails\|needs-focus\|random\|skip\|asserts\|slow\|require-or\|silentfail\|pref\|test-pref\|ref-pref\|fuzzy\)[^ ]* *\?\)\+//;/^defaults /d;s/ \?# \?\(TC: \)\?[bB]ug.*//' $(find . -name reftest.list)
|
||||
sed -i -e 's/-moz-crisp-edges/pixelated/g' $(find . -regex ".*\.\(xht\|xhtml\|html\|css\)")
|
||||
git add -A .
|
||||
git commit -m"Sync Mozilla CSS tests as of https://hg.mozilla.org/mozilla-central/rev/$MOZREV ." -e .
|
|
@ -0,0 +1,176 @@
|
|||
<title>
|
||||
This tests the inheritance of COOP for navigations to about:blank.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="reporting/resources/dispatcher.js"></script>
|
||||
<script src="reporting/resources/try-access.js"></script>
|
||||
|
||||
|
||||
<p>Non-initial empty documents (about:blank) should inherit their
|
||||
cross-origin-opener-policy from the navigation's initiator top level document,
|
||||
if the initiator and its top level document are same-origin, or default
|
||||
(unsafe-none) otherwise.
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>Create the opener popup with a given COOP <code>openerCOOP</code>.</li>
|
||||
<li>Add iframe to the opener popup that is either same-origin or
|
||||
cross-origin.
|
||||
</li>
|
||||
<li>Opener's iframe opens a new window, to a network document with <code>openeeCOOP</code>.</li>
|
||||
<li>Opener's iframe navigates the openee popup to about:blank.</li>
|
||||
</ol>
|
||||
|
||||
<script>
|
||||
const directory = "/html/cross-origin-opener-policy";
|
||||
const executor_path = directory + "/reporting/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coop_same_origin_header =
|
||||
'|header(Cross-Origin-Opener-Policy,same-origin)';
|
||||
const coop_same_origin_allow_popups_header =
|
||||
'|header(Cross-Origin-Opener-Policy,same-origin-allow-popups)';
|
||||
const coop_unsafe_none_header =
|
||||
'|header(Cross-Origin-Opener-Policy,unsafe-none)';
|
||||
|
||||
function navigateToAboutBlankTest(
|
||||
opener_COOP_header,
|
||||
iframe_origin,
|
||||
openee_COOP_header,
|
||||
openee_origin,
|
||||
expect_openee_closed
|
||||
){
|
||||
return promise_test(async t => {
|
||||
const this_window_token = token();
|
||||
const opener_token = token();
|
||||
const openee_token = token();
|
||||
const iframe_token = token();
|
||||
|
||||
const opener_url = same_origin + executor_path + opener_COOP_header +
|
||||
`&uuid=${opener_token}`;
|
||||
const openee_url = openee_origin + executor_path + openee_COOP_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const iframe_url = iframe_origin + executor_path + `&uuid=${iframe_token}`;
|
||||
|
||||
t.add_cleanup(() => {
|
||||
send(openee_token, "window.close()");
|
||||
send(opener_token, "window.close()");
|
||||
});
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url, opener_token);
|
||||
|
||||
// 2. Create the iframe.
|
||||
send(opener_token, `
|
||||
iframe = document.createElement('iframe');
|
||||
iframe.src = "${iframe_url}";
|
||||
document.body.appendChild(iframe);
|
||||
`);
|
||||
|
||||
// 3. The iframe opens its openee window.
|
||||
send(iframe_token, `
|
||||
window.openee = window.open(
|
||||
'${openee_url.replace(/,/g, '\\,')}',
|
||||
"${openee_token}"
|
||||
);
|
||||
`);
|
||||
|
||||
// 4. Ensure the popup is fully loaded.
|
||||
send(openee_token, `send("${this_window_token}", "Ack");`);
|
||||
assert_equals(await receive(this_window_token), "Ack");
|
||||
|
||||
// 5. The iframe navigates openee to about:blank.
|
||||
send(iframe_token, `
|
||||
window.openee_blank = window.open('about:blank', "${openee_token}");
|
||||
(async function() {
|
||||
const timeout = 2000;
|
||||
const retry_delay = 100;
|
||||
for(let i = 0; i * retry_delay < timeout; ++i) {
|
||||
// A try-catch block is used, because of same-origin policy,
|
||||
// preventing access to the document before committing about:blank.
|
||||
try {
|
||||
if (window.openee_blank.closed ||
|
||||
window.openee_blank.document.location.href == "about:blank") {
|
||||
send("${this_window_token}", "about:blank loaded");
|
||||
return;
|
||||
}
|
||||
} catch(e) {}
|
||||
await new Promise(resolve => setTimeout(resolve, retry_delay));
|
||||
}
|
||||
send("${this_window_token}", "about:blank not loaded");
|
||||
})()
|
||||
`);
|
||||
assert_equals(await receive(this_window_token), "about:blank loaded");
|
||||
|
||||
|
||||
// 6. Retrieve and check the results.
|
||||
send(iframe_token, `
|
||||
send("${this_window_token}", window.openee.closed);
|
||||
`);
|
||||
assert_equals(await receive(this_window_token), `${expect_openee_closed}`);
|
||||
}, `Navigate to about:blank from iframe with opener.top \
|
||||
COOP: ${opener_COOP_header}, iframe origin: ${iframe_origin}, \
|
||||
openee COOP: ${openee_COOP_header}, openee origin: ${openee_origin}.`);
|
||||
};
|
||||
|
||||
// iframe same-origin with its top-level embedder:
|
||||
// initial empty document and about:blank navigations initiated from the
|
||||
// same-origin iframe will inherit the COOP from the iframe's top-level embedder.
|
||||
|
||||
// Since all navigations of openee are within same-origin pages with the
|
||||
// same COOP value, there are no browsing context group switches.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_header,
|
||||
same_origin,
|
||||
coop_same_origin_header,
|
||||
same_origin,
|
||||
false
|
||||
);
|
||||
|
||||
// Since all navigations of openee are within same-origin pages with the
|
||||
// same COOP value, there are no browsing context group switches.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_allow_popups_header,
|
||||
same_origin,
|
||||
coop_same_origin_allow_popups_header,
|
||||
same_origin,
|
||||
false
|
||||
);
|
||||
|
||||
// The first openee navigation, from initial empty document to
|
||||
// cross-origin will not switch the browsing context group, thanks to the
|
||||
// same-origin-allow-popups behavior.
|
||||
// The second openee navigation, to about:blank, will inherit from the
|
||||
// iniatiator's, the iframe, top. Navigating from a COOP: unsafe-none page to
|
||||
// a COOP: same-origin-allow-popups page causes a browsing context group
|
||||
// switch.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_allow_popups_header,
|
||||
same_origin,
|
||||
coop_unsafe_none_header,
|
||||
cross_origin,
|
||||
true
|
||||
);
|
||||
|
||||
// iframe cross-origin with its top-level embedder:
|
||||
// initial empty document and about:blank navigations initiated from the
|
||||
// cross-origin iframe will default COOP to unsafe-none.
|
||||
|
||||
// The navigation from the initial empty document and the cross_origin url
|
||||
// does not cause a browsing context group switch
|
||||
// (both have COOP: unsafe-none).
|
||||
// The navigation from the cross-origin url to about:blank does not cause a
|
||||
// browsing context group swich, about:blank defaulted its COOP value to
|
||||
// unsafe-none.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_allow_popups_header,
|
||||
cross_origin,
|
||||
coop_unsafe_none_header,
|
||||
cross_origin,
|
||||
false
|
||||
);
|
||||
</script>
|
|
@ -0,0 +1,166 @@
|
|||
<title>
|
||||
This tests the inheritance of COOP for navigations of the top document to about:blank.
|
||||
</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="reporting/resources/dispatcher.js"></script>
|
||||
<script src="reporting/resources/try-access.js"></script>
|
||||
|
||||
|
||||
<p>Non-initial empty documents (about:blank) should inherit their
|
||||
cross-origin-opener-policy from the navigation's initiator top level document,
|
||||
if the initiator and its top level document are same-origin, or default (to
|
||||
unsafe-none) otherwise.
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>Create the opener popup with a given COOP <code>openerCOOP</code>.</li>
|
||||
<li>Add iframe to the opener popup that is either same-origin or
|
||||
cross-origin.
|
||||
</li>
|
||||
<li>Opener opens a new window, to a network document with the same origin and
|
||||
COOP value as opener.</li>
|
||||
<li>Opener's iframe navigates its parent frame (opener) to about:blank.</li>
|
||||
<li>Verify the openee still has access to its opener.</li>
|
||||
</ol>
|
||||
|
||||
<script>
|
||||
const directory = "/html/cross-origin-opener-policy";
|
||||
const executor_path = directory + "/reporting/resources/executor.html?pipe=";
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN;
|
||||
const coop_same_origin_header =
|
||||
'|header(Cross-Origin-Opener-Policy,same-origin)';
|
||||
const coop_same_origin_allow_popups_header =
|
||||
'|header(Cross-Origin-Opener-Policy,same-origin-allow-popups)';
|
||||
const coop_unsafe_none_header =
|
||||
'|header(Cross-Origin-Opener-Policy,unsafe-none)';
|
||||
|
||||
function navigateToAboutBlankTest(
|
||||
COOP_header,
|
||||
iframe_origin,
|
||||
expect_opener_closed
|
||||
){
|
||||
return promise_test(async t => {
|
||||
const this_window_token = token();
|
||||
const opener_token = token();
|
||||
const openee_token = token();
|
||||
const iframe_token = token();
|
||||
|
||||
const opener_url = same_origin + executor_path + COOP_header +
|
||||
`&uuid=${opener_token}`;
|
||||
const openee_url = same_origin + executor_path + COOP_header +
|
||||
`&uuid=${openee_token}`;
|
||||
const iframe_url = iframe_origin + executor_path + `&uuid=${iframe_token}`;
|
||||
|
||||
t.add_cleanup(() => {
|
||||
send(opener_token, "window.close()");
|
||||
send(openee_token, "window.close()");
|
||||
});
|
||||
|
||||
// 1. Create the opener window.
|
||||
let opener_window_proxy = window.open(opener_url, opener_token);
|
||||
|
||||
// 2. Create the iframe.
|
||||
// The allow-top-navigation sandbox flags disables the intervention
|
||||
// requiring a user gesture to navigate top.
|
||||
send(opener_token, `
|
||||
iframe = document.createElement('iframe');
|
||||
iframe.src = "${iframe_url}";
|
||||
iframe.sandbox = "allow-top-navigation allow-scripts";
|
||||
document.body.appendChild(iframe);
|
||||
`);
|
||||
|
||||
// 3. The opener opens openee window.
|
||||
send(opener_token, `
|
||||
window.openee = window.open(
|
||||
'${openee_url.replace(/,/g, '\\,')}'
|
||||
);
|
||||
`);
|
||||
|
||||
// 4. Ensure the popup is fully loaded.
|
||||
send(openee_token, `send("${this_window_token}", "Ack");`);
|
||||
assert_equals(await receive(this_window_token), "Ack");
|
||||
|
||||
// 5. The iframe navigates its top-level document to about:blank.
|
||||
send(iframe_token, `
|
||||
top.location.href = "about:blank";
|
||||
`);
|
||||
|
||||
// 6. Ensure opener is fully loaded and then retrieve the results.
|
||||
send(openee_token, `
|
||||
(async function() {
|
||||
const timeout = 2000;
|
||||
const retry_delay = 100;
|
||||
for(let i = 0; i * retry_delay < timeout; ++i) {
|
||||
// A try-catch block is used, because of same-origin policy,
|
||||
// which may prevent the access to the opener if its origin changed,
|
||||
// after a navigation to about:blank from the cross origin iframe.
|
||||
try {
|
||||
if (
|
||||
window.opener === null ||
|
||||
window.opener.closed ||
|
||||
window.opener.document.location.href == "about:blank") {
|
||||
send("${this_window_token}", "about:blank loaded");
|
||||
return;
|
||||
}
|
||||
} catch(e) {
|
||||
// The exception is thrown when about:blank is loaded and is
|
||||
// cross-origin with openee.
|
||||
send("${this_window_token}", "about:blank loaded");
|
||||
return;
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, retry_delay));
|
||||
}
|
||||
send("${this_window_token}", "about:blank NOT loaded");
|
||||
})()
|
||||
`);
|
||||
assert_equals(await receive(this_window_token), "about:blank loaded");
|
||||
|
||||
// 7. Retrieve and check the results.
|
||||
send(openee_token, `
|
||||
send(
|
||||
"${this_window_token}",
|
||||
window.opener === null || window.opener.closed);
|
||||
`);
|
||||
|
||||
assert_equals(await receive(this_window_token), `${expect_opener_closed}`);
|
||||
}, `Navigate top to about:blank from iframe with \
|
||||
opener COOP: ${COOP_header}, iframe origin: ${iframe_origin}`);
|
||||
};
|
||||
|
||||
// iframe same-origin with its top-level embedder:
|
||||
// initial empty document and about:blank navigations initiated from the
|
||||
// same-origin iframe will inherit COOP from the iframe's top-level embedder.
|
||||
|
||||
// Opener's navigation to about:blank stays in the same browsing context group.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_header,
|
||||
same_origin,
|
||||
false
|
||||
);
|
||||
|
||||
// iframe cross-origin with its top-level embedder:
|
||||
// initial empty document and about:blank navigations initiated from the
|
||||
// cross-origin iframe will default COOP to unsafe-none.
|
||||
|
||||
// Opener's navigation to about:blank doesn't inherit COOP, leading to a
|
||||
// browsing context group switch.
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_header,
|
||||
cross_origin,
|
||||
true
|
||||
);
|
||||
|
||||
// Same origin allow popups allows the navigation of top to the cross-origin
|
||||
// about:blank (origin inherited from the iframe) page, which does not have COOP
|
||||
// (initiator is a cross origin iframe).
|
||||
navigateToAboutBlankTest(
|
||||
coop_same_origin_allow_popups_header,
|
||||
cross_origin,
|
||||
false
|
||||
);
|
||||
</script>
|
|
@ -9,7 +9,7 @@ partial interface ServiceWorkerRegistration {
|
|||
|
||||
[Exposed=(Window,Worker)]
|
||||
interface SyncManager {
|
||||
Promise<void> register(DOMString tag);
|
||||
Promise<undefined> register(DOMString tag);
|
||||
Promise<sequence<DOMString>> getTags();
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ partial interface Navigator {
|
|||
[SecureContext, SameObject] readonly attribute Keyboard keyboard;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
interface KeyboardLayoutMap {
|
||||
readonly maplike<DOMString, DOMString>;
|
||||
};
|
||||
|
|
|
@ -309,6 +309,8 @@ SET TIMEOUT: feature-policy/experimental-features/resources/focus-without-user-a
|
|||
SET TIMEOUT: permissions-policy/experimental-features/resources/focus-without-user-activation-iframe-tentative.html
|
||||
SET TIMEOUT: html/browsers/windows/auxiliary-browsing-contexts/resources/close-opener.html
|
||||
SET TIMEOUT: html/cross-origin-embedder-policy/resources/reporting-worker.js
|
||||
SET TIMEOUT: html/cross-origin-opener-policy/navigate-to-aboutblank.https.html
|
||||
SET TIMEOUT: html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html
|
||||
SET TIMEOUT: html/cross-origin-opener-policy/reporting/resources/dispatcher.js
|
||||
SET TIMEOUT: html/dom/documents/dom-tree-accessors/Document.currentScript.html
|
||||
SET TIMEOUT: html/webappapis/timers/*
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="resources/testharness-helpers.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-helpers.sub.js"></script>
|
||||
<script>
|
||||
// Tests for https://w3c.github.io/ServiceWorker/#schedule-job-algorithm
|
||||
// Non-equivalent register jobs should not be coalesced.
|
||||
|
@ -22,14 +23,6 @@ function absolute_url(url) {
|
|||
return new URL(url, self.location).toString();
|
||||
}
|
||||
|
||||
// A helper that returns the newest worker of the registration. This helps the
|
||||
// test fail with stable output on browers that incorrectly coalesce
|
||||
// register jobs, since then sometimes registration.installing is not
|
||||
// a new worker as expected.
|
||||
function get_newest_worker(registration) {
|
||||
return registration.installing || registration.waiting || registration.active;
|
||||
}
|
||||
|
||||
// Test that a change to `script` starts a new register job.
|
||||
promise_test(async t => {
|
||||
await cleanup();
|
||||
|
@ -72,17 +65,43 @@ promise_test(async t => {
|
|||
await cleanup();
|
||||
t.add_cleanup(cleanup);
|
||||
|
||||
const scriptForTypeCheck = 'resources/type-check-worker.js';
|
||||
// Check defaults.
|
||||
const registration = await
|
||||
navigator.serviceWorker.register(script1, {scope});
|
||||
assert_equals(registration.installing.type, 'classic');
|
||||
navigator.serviceWorker.register(scriptForTypeCheck, {scope});
|
||||
|
||||
let worker_type = await new Promise((resolve) => {
|
||||
navigator.serviceWorker.onmessage = (event) => {
|
||||
resolve(event.data);
|
||||
};
|
||||
// The jobs should not have been coalesced. get_newest_worker() helps the
|
||||
// test fail with stable output on browers that incorrectly coalesce
|
||||
// register jobs, since then sometimes registration is not a new worker as
|
||||
// expected.
|
||||
const worker = get_newest_worker(registration);
|
||||
// The argument of postMessage doesn't matter for this case.
|
||||
worker.postMessage('');
|
||||
});
|
||||
|
||||
assert_equals(worker_type, 'classic');
|
||||
|
||||
// Schedule two more register jobs.
|
||||
navigator.serviceWorker.register(script1, {scope});
|
||||
await navigator.serviceWorker.register(script1, {scope, type: 'module'});
|
||||
navigator.serviceWorker.register(scriptForTypeCheck, {scope});
|
||||
await navigator.serviceWorker.register(scriptForTypeCheck, {scope, type: 'module'});
|
||||
|
||||
// The jobs should not have been coalesced.
|
||||
const worker = get_newest_worker(registration.installing);
|
||||
assert_equals(worker.type, 'module');
|
||||
worker_type = await new Promise((resolve) => {
|
||||
navigator.serviceWorker.onmessage = (event) => {
|
||||
resolve(event.data);
|
||||
};
|
||||
// The jobs should not have been coalesced. get_newest_worker() helps the
|
||||
// test fail with stable output on browers that incorrectly coalesce
|
||||
// register jobs, since then sometimes registration is not a new worker as
|
||||
// expected.
|
||||
const worker = get_newest_worker(registration);
|
||||
// The argument of postMessage doesn't matter for this case.
|
||||
worker.postMessage('');
|
||||
});
|
||||
|
||||
assert_equals(worker_type, 'module');
|
||||
}, 'different type');
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
let type = '';
|
||||
try {
|
||||
importScripts('empty.js');
|
||||
type = 'classic';
|
||||
} catch (e) {
|
||||
type = 'module';
|
||||
}
|
||||
onmessage = e => {
|
||||
e.source.postMessage(type);
|
||||
};
|
|
@ -4,7 +4,7 @@ mozlog==7.1.0
|
|||
mozdebug==0.2
|
||||
# Pillow 7 requires Python 3
|
||||
pillow==6.2.2; python_version <= '2.7' # pyup: <7.0
|
||||
pillow==8.1.1; python_version >= '3.0'
|
||||
pillow==8.1.2; python_version >= '3.0'
|
||||
urllib3[secure]==1.26.2
|
||||
requests==2.25.1
|
||||
six==1.15.0
|
||||
|
|
|
@ -224,5 +224,10 @@ class TestPipesWithVariousHandlers(TestUsingServer):
|
|||
self.assertTrue(b'Content' in resp.read())
|
||||
self.assertGreater(6, t1-t0)
|
||||
|
||||
def test_gzip_handler(self):
|
||||
resp = self.request("/document.txt", query="pipe=gzip")
|
||||
self.assertEqual(resp.getcode(), 200)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -7,7 +7,7 @@ import re
|
|||
import time
|
||||
import uuid
|
||||
|
||||
from io import StringIO
|
||||
from io import BytesIO
|
||||
|
||||
try:
|
||||
from html import escape
|
||||
|
@ -548,7 +548,7 @@ def gzip(request, response):
|
|||
content = resolve_content(response)
|
||||
response.headers.set("Content-Encoding", "gzip")
|
||||
|
||||
out = StringIO()
|
||||
out = BytesIO()
|
||||
with gzip_module.GzipFile(fileobj=out, mode="w") as f:
|
||||
f.write(content)
|
||||
response.content = out.getvalue()
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
||||
|
||||
// The following helper functions are called from RTCPeerConnection-helper.js:
|
||||
// exchangeOfferAnswer
|
||||
// exchangeAnswer
|
||||
// exchangeIceCandidates
|
||||
// generateAudioReceiveOnlyOffer
|
||||
|
||||
|
@ -52,6 +52,8 @@
|
|||
*/
|
||||
test(t => {
|
||||
const pc = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc.close());
|
||||
|
||||
assert_equals(pc.iceGatheringState, 'new');
|
||||
}, 'Initial iceGatheringState should be new');
|
||||
|
||||
|
@ -162,7 +164,12 @@
|
|||
}, 'renegotiation that closes all transports should result in ICE gathering state "new"');
|
||||
|
||||
/*
|
||||
4.4.2. RTCIceGatheringState Enum
|
||||
4.3.2. RTCIceGatheringState Enum
|
||||
new
|
||||
Any of the RTCIceTransports are in the "new" gathering state and none
|
||||
of the transports are in the "gathering" state, or there are no
|
||||
transports.
|
||||
|
||||
gathering
|
||||
Any of the RTCIceTransport s are in the gathering state.
|
||||
|
||||
|
@ -179,7 +186,7 @@
|
|||
indication for this transport has been sent. It will not gather candidates
|
||||
again until an ICE restart causes it to restart.
|
||||
*/
|
||||
async_test(t => {
|
||||
promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc1.close());
|
||||
const pc2 = new RTCPeerConnection();
|
||||
|
@ -193,7 +200,7 @@
|
|||
const iceTransport = pc2.sctp.transport.iceTransport;
|
||||
|
||||
assert_equals(iceTransport.gatheringState, 'gathering',
|
||||
'Expect ICE transport to be in checking gatheringState when iceGatheringState is checking');
|
||||
'Expect ICE transport to be in gathering gatheringState when iceGatheringState is gathering');
|
||||
|
||||
} else if(iceGatheringState === 'complete') {
|
||||
const iceTransport = pc2.sctp.transport.iceTransport;
|
||||
|
@ -207,17 +214,20 @@
|
|||
|
||||
pc1.createDataChannel('test');
|
||||
|
||||
assert_equals(pc2.onicegatheringstatechange, null,
|
||||
'Expect connection to have icegatheringstatechange event');
|
||||
|
||||
// Spec bug w3c/webrtc-pc#1382
|
||||
// Because sctp is only defined when answer is set, we listen
|
||||
// to pc2 so that we can be confident that sctp is defined
|
||||
// when icegatheringstatechange event is fired.
|
||||
pc2.addEventListener('icegatheringstatechange', onIceGatheringStateChange);
|
||||
|
||||
|
||||
exchangeIceCandidates(pc1, pc2);
|
||||
exchangeOfferAnswer(pc1, pc2);
|
||||
|
||||
await pc1.setLocalDescription();
|
||||
assert_equals(pc1.sctp.transport.iceTransport.gatheringState, 'new');
|
||||
await pc2.setRemoteDescription(pc1.localDescription);
|
||||
|
||||
await exchangeAnswer(pc1, pc2);
|
||||
}, 'connection with one data channel should eventually have connected connection state');
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue