mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
Auto merge of #29321 - servo:wpt_update_02-02-2023, r=servo-wpt-sync
Sync WPT with upstream (02-02-2023) Automated downstream sync of changes from upstream as of 02-02-2023 [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
eb5c79243f
233 changed files with 5065 additions and 1252 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
|
@ -8,5 +8,8 @@
|
|||
[[data-expected-height\] 3]
|
||||
expected: FAIL
|
||||
|
||||
[[data-expected-height\] 4]
|
||||
[[data-expected-height\] 1]
|
||||
expected: FAIL
|
||||
|
||||
[[data-expected-height\] 2]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[block-in-inline-hittest-002.html]
|
||||
[elementsFromPoint]
|
||||
expected: FAIL
|
||||
|
||||
[elementFromPoint]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
[block-in-inline-hittest-relpos-zindex.html]
|
||||
[position: relative; z-index: -1;]
|
||||
expected: FAIL
|
||||
|
||||
[block-in-inline-hittest-relpos-zindex]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[line-height.html]
|
||||
[line-height responds to inherited changes]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[opacity-animation-ending-correctly-001.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[color-invalid-color-function.html]
|
||||
expected: ERROR
|
|
@ -155,9 +155,6 @@
|
|||
[Matching font-weight: '400' should prefer '400' over '450 460']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'italic' should prefer 'normal' over 'oblique 0deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique -20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
|
||||
expected: FAIL
|
||||
|
||||
|
@ -319,3 +316,18 @@
|
|||
|
||||
[Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique 10deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
|
||||
expected: FAIL
|
||||
|
||||
[Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[trailing-other-space-separators-break-spaces-005.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[trailing-other-space-separators-break-spaces-007.html]
|
||||
expected: FAIL
|
|
@ -1,3 +1,6 @@
|
|||
[transform-scale-hittest.html]
|
||||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
|
|
@ -53,152 +53,152 @@
|
|||
[background-position length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[color color(rgba) / values]
|
||||
[padding-bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-shadow shadow(shadow) / values]
|
||||
[padding-bottom length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pt) / values]
|
||||
[padding-bottom length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(pc) / values]
|
||||
[padding-bottom length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(px) / values]
|
||||
[padding-left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(em) / values]
|
||||
[padding-left length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(ex) / values]
|
||||
[padding-left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(mm) / values]
|
||||
[padding-left length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(cm) / values]
|
||||
[padding-left length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size length(in) / values]
|
||||
[padding-left length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-size percentage(%) / values]
|
||||
[padding-left length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(keyword) / values]
|
||||
[padding-left length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-weight font-weight(numeric) / values]
|
||||
[padding-right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(integer) / values]
|
||||
[padding-right length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height number(decimal) / values]
|
||||
[padding-right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pt) / values]
|
||||
[padding-right length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(pc) / values]
|
||||
[padding-right length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(px) / values]
|
||||
[padding-right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(em) / values]
|
||||
[padding-right length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(ex) / values]
|
||||
[padding-right length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(mm) / values]
|
||||
[padding-top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(cm) / values]
|
||||
[padding-top length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length(in) / values]
|
||||
[padding-top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[line-height percentage(%) / values]
|
||||
[padding-top length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pt) / values]
|
||||
[padding-top length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(pc) / values]
|
||||
[padding-top length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(px) / values]
|
||||
[padding-top length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(em) / values]
|
||||
[padding-top length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(ex) / values]
|
||||
[margin-bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(mm) / values]
|
||||
[margin-bottom length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(cm) / values]
|
||||
[margin-bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length(in) / values]
|
||||
[margin-bottom length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pt) / values]
|
||||
[margin-bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(pc) / values]
|
||||
[margin-bottom length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(px) / values]
|
||||
[margin-bottom length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(em) / values]
|
||||
[margin-bottom length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(ex) / values]
|
||||
[margin-left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(mm) / values]
|
||||
[margin-left length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(cm) / values]
|
||||
[margin-left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length(in) / values]
|
||||
[margin-left length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing percentage(%) / values]
|
||||
[margin-left length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pt) / values]
|
||||
[margin-left length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(pc) / values]
|
||||
[margin-left length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(px) / values]
|
||||
[margin-left length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(em) / values]
|
||||
[margin-right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(ex) / values]
|
||||
[margin-right length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(mm) / values]
|
||||
[margin-right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(cm) / values]
|
||||
[margin-right length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length(in) / values]
|
||||
[margin-right length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent percentage(%) / values]
|
||||
[margin-right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -490,3 +490,33 @@
|
|||
|
||||
[object-view-box object-view-box(xywh) / events]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-left-radius border-radius(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-left-radius border-radius(px-px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-right-radius border-radius(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-right-radius border-radius(px-px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-left-radius border-radius(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-left-radius border-radius(px-px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-right-radius border-radius(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-right-radius border-radius(px-px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[box-shadow box-shadow(shadow) / values]
|
||||
expected: FAIL
|
||||
|
||||
[font-stretch font-stretch(keyword) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -505,3 +505,153 @@
|
|||
|
||||
[text-shadow shadow(shadow) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pt) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pc) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(px) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(ex) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(mm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(cm) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length(in) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left percentage(%) / events]
|
||||
expected: FAIL
|
||||
|
|
|
@ -52,3 +52,162 @@
|
|||
|
||||
[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-left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[padding-top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length(px) / values]
|
||||
expected: FAIL
|
||||
|
|
|
@ -4,3 +4,90 @@
|
|||
|
||||
[background-position length-em(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[border-right-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[border-bottom-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[border-left-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[padding-bottom length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[padding-left length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[padding-right length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[padding-top length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-bottom length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-left length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-right length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[margin-top length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[height length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-height length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[min-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-height length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[max-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[top length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[right length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[left length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[line-height length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[letter-spacing length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[word-spacing length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[outline-offset length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[outline-width length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
||||
[vertical-align length-em(em) / events]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[MediaQueryListEvent.html]
|
||||
[argument of onchange]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-dynamic-anon-box.html]
|
||||
[Link should be clickable after hiding a scrollbox with an anonymous table inside]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-ellipsis-in-inline-box.html]
|
||||
[elementFromPoint-ellipsis-in-inline-box]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-float-in-table.html]
|
||||
[float-in-div]
|
||||
expected: FAIL
|
|
@ -13,9 +13,3 @@
|
|||
|
||||
[<li>Outside 3</li>]
|
||||
expected: FAIL
|
||||
|
||||
[<li>Image Inside 2</li>]
|
||||
expected: FAIL
|
||||
|
||||
[<li>Image Inside 1</li>]
|
||||
expected: FAIL
|
||||
|
|
|
@ -17,3 +17,6 @@
|
|||
|
||||
[test some point of the element: bottom right corner]
|
||||
expected: FAIL
|
||||
|
||||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
|
@ -77,5 +77,5 @@
|
|||
[Input: "Content-Length: ". Expected: 42.]
|
||||
expected: FAIL
|
||||
|
||||
[Input: "Content-Length: 42,42". Expected: 42.]
|
||||
[Input: "Content-Length: 30". Expected: 30.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -52,6 +52,3 @@
|
|||
|
||||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
|
|
@ -146,3 +146,6 @@
|
|||
|
||||
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
|
||||
expected: FAIL
|
||||
|
||||
[border-image sec-fetch-site - HTTPS downgrade (header not sent)]
|
||||
expected: FAIL
|
||||
|
|
|
@ -7,6 +7,3 @@
|
|||
|
||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
|
|
@ -10,6 +10,3 @@
|
|||
|
||||
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
|
||||
expected: FAIL
|
||||
|
||||
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
|
||||
expected: FAIL
|
||||
|
|
|
@ -10,6 +10,3 @@
|
|||
|
||||
[load event does not fire on window.open('about:blank?foo')]
|
||||
expected: FAIL
|
||||
|
||||
[load event does not fire on window.open('about:blank')]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[javascript-url-load-as-html.xhtml]
|
||||
expected: TIMEOUT
|
||||
[javascript: URL navigation to a string must create a HTML document using the correct properties]
|
||||
expected: TIMEOUT
|
|
@ -13,3 +13,6 @@
|
|||
|
||||
[0080 00FF 0100 set in href="" targeting a frame and clicked]
|
||||
expected: FAIL
|
||||
|
||||
[D83D DE0D set in href="" targeting a frame and clicked]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[navigate-to-unparseable-url.html]
|
||||
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
|
||||
expected: FAIL
|
||||
|
||||
[<a> tag navigate fails for unparseable URLs]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[navigation-unload-cross-origin.sub.window.html]
|
||||
[Cross-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[navigation-unload-same-origin.window.html]
|
||||
[Same-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
|||
[pageload-image-in-popup.html]
|
||||
expected: TIMEOUT
|
||||
[The document for a standalone media file should have one child in the body.]
|
||||
expected: NOTRUN
|
|
@ -0,0 +1,3 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
|
@ -1,2 +1,2 @@
|
|||
[canvas.2d.disconnected.html]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
|
|
@ -122,9 +122,6 @@
|
|||
[multipart/form-data: single quote in value (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
[multipart/form-data: single quote in value (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[multipart/form-data: single quote in filename (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -175,3 +175,6 @@
|
|||
|
||||
[text/plain: 0x00 in name (formdata event)]
|
||||
expected: FAIL
|
||||
|
||||
[text/plain: Basic File test (formdata event)]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[pattern_attribute.html]
|
||||
[pattern attribute support on input element]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[selectmenu-marker-part.tentative.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[selectmenu-marker-slot.tentative.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,15 @@
|
|||
[child-sequential-focus.html]
|
||||
[dialog element with autofocus should get initial focus.]
|
||||
expected: FAIL
|
||||
|
||||
[Only keyboard-focusable elements should get dialog initial focus.]
|
||||
expected: FAIL
|
||||
|
||||
[Autofocus takes precedence over keyboard-focusable requirement.]
|
||||
expected: FAIL
|
||||
|
||||
[Only keyboard-focusable elements should get dialog initial focus including in subtrees.]
|
||||
expected: FAIL
|
||||
|
||||
[Only keyboard-focusable elements should get dialog initial focus including in nested buttons.]
|
||||
expected: FAIL
|
|
@ -1,5 +1,6 @@
|
|||
[htmlanchorelement_noopener.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that targeting of rel=noopener with a given name ignores an existing window with that name]
|
||||
expected: NOTRUN
|
||||
|
||||
|
@ -13,4 +14,4 @@
|
|||
expected: FAIL
|
||||
|
||||
[Check that rel=noopener with target=_self does a normal load]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -301,3 +301,27 @@
|
|||
|
||||
[PopoverToggleEvent interface: attribute newState]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: attribute oldState]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEvent interface: attribute newState]
|
||||
expected: FAIL
|
||||
|
|
|
@ -40,3 +40,6 @@
|
|||
|
||||
[The "beforetoggle" event is not fired for element removal]
|
||||
expected: FAIL
|
||||
|
||||
[The "toggle" event is coalesced]
|
||||
expected: FAIL
|
||||
|
|
|
@ -133,3 +133,63 @@
|
|||
|
||||
[PopoverToggleEventInit properties set value 4]
|
||||
expected: FAIL
|
||||
|
||||
[the event is an instance of ToggleEvent]
|
||||
expected: FAIL
|
||||
|
||||
[oldState has default value of empty string]
|
||||
expected: FAIL
|
||||
|
||||
[oldState is readonly]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit argument is null]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit argument is undefined]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit argument is empty dictionary]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to 'sample']
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to undefined]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to null]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to false]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to true]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to a number]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to [\]]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to [1, 2, 3\]]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to an object]
|
||||
expected: FAIL
|
||||
|
||||
[oldState set to an object with a valueOf function]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit properties set value]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit properties set value 2]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit properties set value 3]
|
||||
expected: FAIL
|
||||
|
||||
[ToggleEventInit properties set value 4]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[module-tla-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
|
@ -5,4 +5,4 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,4 +15,4 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[include-frames-originA-B.html]
|
||||
[GetEntries of a parent Frame of origin A and its child frame of origin B]
|
||||
expected: FAIL
|
|
@ -19,28 +19,28 @@
|
|||
expected: FAIL
|
||||
|
||||
[content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[content-type 7 : text/html;charset=gbk,text/html;x=",text/plain]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 8 : text/plain;charset=gbk;x=foo,text/plain]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 9 : text/html;charset=gbk,text/plain,text/html]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 10 : text/plain,*/*]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 11 : text/html,*/*]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 12 : */*,text/html]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 13 : text/plain,*/*;charset=gbk]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[content-type 14 : text/html,*/*;charset=gbk]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -265,10 +265,10 @@
|
|||
expected: FAIL
|
||||
|
||||
[This test validates the response status of resources. 88]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[This test validates the response status of resources. 89]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[This test validates the response status of resources. 90]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[audiocontextoptions.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[X context = new AudioContext({sampleRate: 1}) did not throw an exception.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[cross-partition.https.tentative.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[BroadcastChannel messages aren't received from a cross-partition iframe]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
|
@ -1,3 +0,0 @@
|
|||
[scrollBy.html]
|
||||
[Ensure that the window.scrollBy function affects scroll position as expected]
|
||||
expected: FAIL
|
|
@ -15,7 +15,7 @@ promise_test(async t => {
|
|||
/*config=*/ null, /*options=*/ {features: 'noopener'});
|
||||
|
||||
await createIndexedDBForTesting(rc1, 'test_idb', 1);
|
||||
await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
|
||||
await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
|
||||
|
||||
// The page is ensured to be eligible for BFCache even with open connection,
|
||||
// otherwise the previous assertion will fail with PRECONDITION_FAILED.
|
||||
|
@ -26,6 +26,9 @@ promise_test(async t => {
|
|||
// Create an IndexedDB database with higher version.
|
||||
await createIndexedDBForTesting(rc2, 'test_idb_2', 2);
|
||||
await rc2.historyBack();
|
||||
// The previous page receiving versionchange event should be evicted.
|
||||
await assert_not_bfcached(rc1);
|
||||
// The previous page receiving versionchange event should be evicted with the
|
||||
// correct reason.
|
||||
// `kIgnoreEventAndEvict` will be reported as "Internal error".
|
||||
// See `NotRestoredReasonToReportString()`.
|
||||
await assertNotRestoredFromBFCache(rc1, ['Internal error']);
|
||||
});
|
||||
|
|
|
@ -37,5 +37,5 @@ promise_test(async t => {
|
|||
});
|
||||
});
|
||||
|
||||
await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
|
||||
await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
|
||||
});
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
height: 100px;
|
||||
background: lime;
|
||||
anchor-scroll: --a;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
height: 100px;
|
||||
background: lime;
|
||||
anchor-scroll: --a;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
height: 100px;
|
||||
background: lime;
|
||||
anchor-scroll: --a;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
height: 100px;
|
||||
background: lime;
|
||||
anchor-scroll: --a;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
|
@ -35,6 +35,7 @@ dialog {
|
|||
border: 0;
|
||||
padding: 0;
|
||||
inset: auto;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
dialog::backdrop {
|
||||
|
|
|
@ -34,6 +34,7 @@ dialog {
|
|||
margin: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
dialog::backdrop {
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: line-height animations respond to style changes</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-inline/#line-height-property">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
#target {
|
||||
animation-name: line-height-animation;
|
||||
animation-duration: 4s;
|
||||
animation-timing-function: linear;
|
||||
animation-delay: -2s;
|
||||
animation-play-state: paused;
|
||||
}
|
||||
@keyframes line-height-animation {
|
||||
from { line-height: inherit; }
|
||||
to { line-height: 20px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<script>
|
||||
'use strict';
|
||||
const container = document.getElementById('container');
|
||||
const target = document.getElementById('target');
|
||||
|
||||
test(() => {
|
||||
container.style.lineHeight = '100px';
|
||||
assert_equals(getComputedStyle(target).lineHeight, '60px');
|
||||
|
||||
container.style.lineHeight = '50px';
|
||||
assert_equals(getComputedStyle(target).lineHeight, '35px');
|
||||
|
||||
container.style.lineHeight = '100px';
|
||||
assert_equals(getComputedStyle(target).lineHeight, '60px');
|
||||
}, 'line-height responds to inherited changes');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
|
||||
<div style="height:400px; overflow:clip;">
|
||||
<div style="display:table; width:100%;">
|
||||
<div style="display:table-header-group; break-inside:avoid;">
|
||||
<div style="height:25px; background:green;"></div>
|
||||
</div>
|
||||
<div style="height:500px; background:green;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
|
||||
<div style="height:400px; overflow:clip;">
|
||||
<div style="display:table; width:100%;">
|
||||
<div style="height:500px; background:green;"></div>
|
||||
<div style="display:table-footer-group; break-inside:avoid;">
|
||||
<div style="height:25px; background:green;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
|
||||
<div style="height:400px; overflow:clip;">
|
||||
<div style="display:table; width:100%;">
|
||||
<div style="display:table-header-group; break-inside:avoid;">
|
||||
<div style="height:25px; background:green;"></div>
|
||||
</div>
|
||||
<div style="height:500px; background:green;"></div>
|
||||
<div style="display:table-footer-group; break-inside:avoid;">
|
||||
<div style="height:25px; background:green;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -50,6 +50,10 @@ test_invalid_value("color", "color()"); // Empty
|
|||
test_invalid_value("color", "color(banana 1 1 1)"); // Bad color space
|
||||
test_invalid_value("color", "color(displayp3 1 1 1)"); // Bad Display P3 color space
|
||||
test_invalid_value("color", "color(1 1 1)"); // No color space
|
||||
test_invalid_value("color", "color(srgb 1 1)", "color(srgb 1 1 0)"); // One missing component
|
||||
test_invalid_value("color", "color(srgb 1)", "color(srgb 1 0 0)"); // Two missing components
|
||||
test_invalid_value("color", "color(srgb)", "color(srgb 0 0 0)"); // All components missing
|
||||
|
||||
test_invalid_value("color", "color(srgb 1 1 1 1)"); // Too many parameters
|
||||
test_invalid_value("color", "color(srgb 1 1 1 1 1)"); // Way too many parameters
|
||||
test_invalid_value("color", "color(srgb 1 eggs 1)"); // Bad parameters
|
||||
|
|
|
@ -281,6 +281,9 @@
|
|||
@container style(--reg-length: 10px) {
|
||||
#reg-px { color: green; }
|
||||
}
|
||||
@container style(--reg-length: initial) {
|
||||
#reg-px-initial { color: green; }
|
||||
}
|
||||
|
||||
#reg-container-font-relative {
|
||||
--reg-length: 10px;
|
||||
|
@ -303,10 +306,21 @@
|
|||
@container style(--reg-length: 50cqi) {
|
||||
#reg-container-relative { color: green; }
|
||||
}
|
||||
|
||||
#reg-container-initial {
|
||||
--reg-length: 10px;
|
||||
}
|
||||
@container style(--reg-length: 10px) {
|
||||
#reg-initial-value { color: green; }
|
||||
}
|
||||
@container style(--reg-length: initial) {
|
||||
#reg-initial-keyword { color: green; }
|
||||
}
|
||||
</style>
|
||||
<div id="registered">
|
||||
<div id="reg-container-px">
|
||||
<div id="reg-px"></div>
|
||||
<div id="reg-px-initial"></div>
|
||||
</div>
|
||||
<div id="reg-container-font-relative">
|
||||
<div id="reg-font-relative"></div>
|
||||
|
@ -317,12 +331,20 @@
|
|||
<div id="reg-container-container-relative">
|
||||
<div id="reg-container-relative"></div>
|
||||
</div>
|
||||
<div id="reg-container-initial">
|
||||
<div id="reg-initial-value"></div>
|
||||
<div id="reg-initial-keyword"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-px")).color, green);
|
||||
}, "Match registered <length> custom property with px.");
|
||||
|
||||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-px-initial")).color, green);
|
||||
}, "Match registered <length> custom property with px via initial keyword.");
|
||||
|
||||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-font-relative")).color, green);
|
||||
}, "Match registered <length> custom property with em in query.");
|
||||
|
@ -334,4 +356,12 @@
|
|||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-container-relative")).color, green);
|
||||
}, "Match registered <length> custom property with cqi unit.");
|
||||
|
||||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-initial-value")).color, green);
|
||||
}, "Match registered <length> custom property with initial value.");
|
||||
|
||||
test(() => {
|
||||
assert_equals(getComputedStyle(document.querySelector("#reg-initial-keyword")).color, green);
|
||||
}, "Match registered <length> custom property with initial value via initial keyword.");
|
||||
</script>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<style>
|
||||
.box { width: 100px; height: 100px; border: 1px solid black; }
|
||||
.hidden { content-visibility: hidden }
|
||||
#dialog { outline: none; }
|
||||
</style>
|
||||
|
||||
<div id=container class=box>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
<style>
|
||||
.box { width: 100px; height: 100px; border: 1px solid black; }
|
||||
dialog { outline: none; }
|
||||
</style>
|
||||
|
||||
<div id=container class=box>
|
||||
|
|
|
@ -142,4 +142,16 @@
|
|||
.c div.b &, div & { color: blue; }
|
||||
}`, 'one rule is kept unchanged, the other is changed');
|
||||
});
|
||||
|
||||
// Rules that are dropped in forgiving parsing but that contain &,
|
||||
// must still be serialized out as they were.
|
||||
test(() => {
|
||||
const text = '.a { :is(!& .foo, .b) { color: green; } }';
|
||||
document.getElementById('ss').innerHTML = text;
|
||||
let [ss] = document.styleSheets;
|
||||
assert_equals(ss.cssRules[0].cssText,
|
||||
`.a {
|
||||
:is(!& .foo, .b) { color: green; }
|
||||
}`, 'invalid rule containing ampersand is kept in serialization');
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html class=test-wait>
|
||||
<style type="text/css">
|
||||
</style>
|
||||
<div id="container">
|
||||
<div id="div" style="transform:translateX(100px);"></div>
|
||||
</div>
|
||||
<script>
|
||||
function runTest() {
|
||||
document.getElementById('div').style = 'transform:translateX(200px)';
|
||||
var forceLayout = document.body.offsetWidth;
|
||||
document.getElementById('container').style = 'content-visibility: hidden;';
|
||||
requestAnimationFrame(function() {
|
||||
requestAnimationFrame(function() {
|
||||
document.documentElement.classList.remove('test-wait');
|
||||
});
|
||||
});
|
||||
}
|
||||
onload = runTest;
|
||||
</script>
|
||||
</html>
|
|
@ -66,4 +66,9 @@ test(t => {
|
|||
assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1)));
|
||||
}, 'Appending to a list containing a variable reference should throw');
|
||||
|
||||
test(t => {
|
||||
let styleMap = createDeclaredStyleMap(t, 'transition: var(--a)');
|
||||
assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1)));
|
||||
}, 'Appending to a longhand list containing a variable reference should throw');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
view-transition-name: dialog;
|
||||
contain: layout;
|
||||
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#target::backdrop {
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
view-transition-name: dialog;
|
||||
contain: layout;
|
||||
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#target::backdrop {
|
||||
|
|
|
@ -44,7 +44,7 @@ div:nth-of-type(2) {
|
|||
width: 5ch;
|
||||
}
|
||||
div:nth-of-type(1) {
|
||||
background: orange;
|
||||
background: blue;
|
||||
height: 5ch;
|
||||
display: inline-block; /* shrinkwrap */
|
||||
}
|
||||
|
|
|
@ -1,15 +1,41 @@
|
|||
async function waitForScrollendEvent(test, target, timeoutMs = 500) {
|
||||
async function waitForEvent(eventName, test, target, timeoutMs = 500) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const timeoutCallback = test.step_timeout(() => {
|
||||
reject(`No Scrollend event received for target ${target}`);
|
||||
reject(`No ${eventName} event received for target ${target}`);
|
||||
}, timeoutMs);
|
||||
target.addEventListener('scrollend', (evt) => {
|
||||
target.addEventListener(eventName, (evt) => {
|
||||
clearTimeout(timeoutCallback);
|
||||
resolve(evt);
|
||||
}, { once: true });
|
||||
});
|
||||
}
|
||||
|
||||
async function waitForScrollendEvent(test, target, timeoutMs = 500) {
|
||||
return waitForEvent("scrollend", test, target, timeoutMs);
|
||||
}
|
||||
|
||||
async function waitForPointercancelEvent(test, target, timeoutMs = 500) {
|
||||
return waitForEvent("pointercancel", test, target, timeoutMs);
|
||||
}
|
||||
|
||||
async function createScrollendPromiseForTarget(test,
|
||||
target_div,
|
||||
timeoutMs = 500) {
|
||||
return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
|
||||
assert_false(evt.cancelable, 'Event is not cancelable');
|
||||
assert_false(evt.bubbles, 'Event targeting element does not bubble');
|
||||
});
|
||||
}
|
||||
|
||||
function verifyNoScrollendOnDocument(test) {
|
||||
const callback =
|
||||
test.unreached_func("window got unexpected scrollend event.");
|
||||
window.addEventListener('scrollend', callback);
|
||||
test.add_cleanup(() => {
|
||||
window.removeEventListener('scrollend', callback);
|
||||
});
|
||||
}
|
||||
|
||||
async function verifyScrollStopped(test, target_div) {
|
||||
const unscaled_pause_time_in_ms = 100;
|
||||
const x = target_div.scrollLeft;
|
||||
|
@ -107,6 +133,10 @@ function waitForAnimationEnd(getValue) {
|
|||
}
|
||||
|
||||
// Scrolls in target according to move_path with pauses in between
|
||||
// The move_path should contains coordinates that are within target boundaries.
|
||||
// Keep in mind that 0,0 is the center of the target element and is also
|
||||
// the pointerDown position.
|
||||
// pointerUp() is fired after sequence of moves.
|
||||
function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_in_ms = 100) {
|
||||
const test_driver_actions = new test_driver.Actions()
|
||||
.addPointer("pointer1", "touch")
|
||||
|
@ -125,7 +155,7 @@ function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_
|
|||
y += step_y;
|
||||
test_driver_actions.pointerMove(x, y, {origin: target});
|
||||
}
|
||||
test_driver_actions.pause(pause_time_in_ms);
|
||||
test_driver_actions.pause(pause_time_in_ms); // To prevent inertial scroll
|
||||
}
|
||||
|
||||
return test_driver_actions.pointerUp().send();
|
||||
|
|
|
@ -28,36 +28,47 @@
|
|||
|
||||
<script>
|
||||
const target_div = document.getElementById('targetDiv');
|
||||
let scrollend_arrived = false;
|
||||
let scrollend_event_count = 0;
|
||||
|
||||
function onScrollEnd(event) {
|
||||
assert_false(event.cancelable);
|
||||
assert_false(event.bubbles);
|
||||
scrollend_arrived = true;
|
||||
scrollend_event_count += 1;
|
||||
}
|
||||
|
||||
function runTest() {
|
||||
promise_test (async (t) => {
|
||||
// Make sure that no scrollend event is sent to document.
|
||||
document.addEventListener("scrollend",
|
||||
t.unreached_func("document got unexpected scrollend event."));
|
||||
await waitForCompositorCommit();
|
||||
// Skip the test on a Mac as they do not support touch screens.
|
||||
const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
|
||||
if (isMac)
|
||||
return;
|
||||
|
||||
verifyNoScrollendOnDocument(t);
|
||||
await waitForCompositorReady();
|
||||
|
||||
let scrollend_count = 0;
|
||||
const scrollend_listener = () => { scrollend_count += 1; };
|
||||
target_div.addEventListener("scrollend", scrollend_listener);
|
||||
t.add_cleanup(() => { target_div.removeEventListener('scrollend', scrollend_listener); });
|
||||
|
||||
const pointercancel_listener = () => {
|
||||
assert_equals(scrollend_count, 0, 'scrollend should happen after pointercancel.');
|
||||
};
|
||||
target_div.addEventListener("pointercancel", pointercancel_listener);
|
||||
t.add_cleanup(() => { target_div.removeEventListener('pointercancel', pointercancel_listener); });
|
||||
|
||||
// Because we have several pointer moves, we choose bigger timeout.
|
||||
const timeoutMs = 1000;
|
||||
const targetPointercancelPromise = waitForPointercancelEvent(t, target_div, timeoutMs);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeoutMs);
|
||||
|
||||
// Scroll down & up & down on target div and wait for the target_div to get scrollend event.
|
||||
target_div.addEventListener("scrollend", onScrollEnd);
|
||||
const move_path = [
|
||||
{ x: 0, y: -300}, // down
|
||||
{ x: 0, y: -100}, // up
|
||||
{ x: 0, y: -400}, // down
|
||||
{ x: 0, y: -200}, // up
|
||||
{ x: 0, y: -80 }, // Scroll down
|
||||
{ x: 0, y: -40 }, // Scroll up
|
||||
{ x: 0, y: -80 }, // Scroll down
|
||||
];
|
||||
await touchScrollInTargetSequentiallyWithPause(target_div, move_path, 150);
|
||||
await touchScrollInTargetSequentiallyWithPause(target_div, move_path);
|
||||
|
||||
await waitFor(() => {return scrollend_arrived;},
|
||||
'target_div did not receive scrollend event after sequence of scrolls on target.');
|
||||
assert_equals(scrollend_event_count, 1);
|
||||
// Because we start scrolling after pointerdown, there is no pointerup, instead the target
|
||||
// will receive a pointercancel, so we wait for pointercancel, and then continue.
|
||||
await targetPointercancelPromise;
|
||||
await targetScrollendPromise;
|
||||
await verifyScrollStopped(t, target_div);
|
||||
assert_equals(scrollend_count, 1, 'Only one scrollend event should be fired');
|
||||
}, "Move down, up and down again, receive scrollend event only once");
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -70,15 +70,8 @@
|
|||
function runTests() {
|
||||
const root_div = document.getElementById("root");
|
||||
|
||||
async function createScrollendPromise(test) {
|
||||
return waitForScrollendEvent(test, root_div).then(evt => {
|
||||
assert_false(evt.cancelable, 'Event is not cancelable');
|
||||
assert_false(evt.bubbles, 'Event targeting element does not bubble');
|
||||
});
|
||||
}
|
||||
|
||||
promise_test(async (t) => {
|
||||
const targetScrollendPromise = createScrollendPromise(t);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, root_div);
|
||||
|
||||
await waitForNextFrame();
|
||||
root_div.classList.remove("hidden");
|
||||
|
|
|
@ -39,19 +39,6 @@ async function resetTargetScrollState(test) {
|
|||
}
|
||||
}
|
||||
|
||||
async function verifyNoScrollendOnDocument(test) {
|
||||
const callback =
|
||||
test.unreached_func("window got unexpected scrollend event.");
|
||||
window.addEventListener('scrollend', callback);
|
||||
}
|
||||
|
||||
async function createScrollendPromise(test, timeoutMs = 500) {
|
||||
return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
|
||||
assert_false(evt.cancelable, 'Event is not cancelable');
|
||||
assert_false(evt.bubbles, 'Event targeting element does not bubble');
|
||||
});
|
||||
}
|
||||
|
||||
function runTest() {
|
||||
promise_test(async (t) => {
|
||||
// Skip the test on a Mac as they do not support touch screens.
|
||||
|
@ -63,7 +50,7 @@ function runTest() {
|
|||
await waitForCompositorReady();
|
||||
|
||||
const timeout = 1000; // Because we have two pauses we need longer timeout
|
||||
const targetScrollendPromise = createScrollendPromise(t, timeout);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeout);
|
||||
verifyNoScrollendOnDocument(t);
|
||||
|
||||
let scrollend_count = 0;
|
||||
|
@ -108,7 +95,7 @@ function runTest() {
|
|||
await resetTargetScrollState(t);
|
||||
await waitForCompositorReady();
|
||||
|
||||
const targetScrollendPromise = createScrollendPromise(t);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
|
||||
verifyNoScrollendOnDocument(t);
|
||||
|
||||
const bounds = target_div.getBoundingClientRect();
|
||||
|
@ -139,7 +126,7 @@ function runTest() {
|
|||
await resetTargetScrollState(t);
|
||||
await waitForCompositorReady();
|
||||
|
||||
const targetScrollendPromise = createScrollendPromise(t);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
|
||||
verifyNoScrollendOnDocument(t);
|
||||
|
||||
const bounds = target_div.getBoundingClientRect();
|
||||
|
@ -165,7 +152,7 @@ function runTest() {
|
|||
await resetTargetScrollState(t);
|
||||
await waitForCompositorReady();
|
||||
|
||||
const targetScrollendPromise = createScrollendPromise(t);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
|
||||
verifyNoScrollendOnDocument(t);
|
||||
|
||||
const x = 0;
|
||||
|
@ -188,7 +175,7 @@ function runTest() {
|
|||
await waitForCompositorReady();
|
||||
|
||||
verifyNoScrollendOnDocument(t);
|
||||
const targetScrollendPromise = createScrollendPromise(t);
|
||||
const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
|
||||
|
||||
target_div.focus();
|
||||
window.test_driver.send_keys(target_div, '\ue015');
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="timeout" content="long">
|
||||
<meta name="variant" content="?action=Backspace">
|
||||
<meta name="variant" content="?action=Delete">
|
||||
<title>Delete in last list item should not delete parent list if it's editing host</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="../include/editor-test-utils.js"></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
const params = new URLSearchParams(location.search.substring(1));
|
||||
const backspace = params.get("action") == "Backspace";
|
||||
|
||||
addEventListener("load", () => {
|
||||
document.body.innerHTML ="<dl contenteditable></dl>";
|
||||
const editingHost = document.querySelector("dl[contenteditable]");
|
||||
const utils = new EditorTestUtils(editingHost);
|
||||
|
||||
function addPromiseTest(aTest) {
|
||||
promise_test(async () => {
|
||||
editingHost.focus();
|
||||
utils.setupEditingHost(aTest.innerHTML);
|
||||
await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey());
|
||||
utils.normalizeStyleAttributeValues();
|
||||
if (Array.isArray(aTest.expectedResult)) {
|
||||
assert_in_array(editingHost.innerHTML, aTest.expectedResult);
|
||||
} else {
|
||||
assert_equals(editingHost.innerHTML, aTest.expectedResult);
|
||||
}
|
||||
assert_equals(
|
||||
document.body.childNodes.length,
|
||||
1,
|
||||
`The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
|
||||
);
|
||||
assert_equals(
|
||||
document.body.firstChild,
|
||||
editingHost,
|
||||
`The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
|
||||
);
|
||||
}, `${backspace ? "Backspace" : "Delete"} in "<dl contenteditable>${aTest.innerHTML}</dl>"`);
|
||||
}
|
||||
|
||||
addPromiseTest({
|
||||
innerHTML: "<dt>{}</dt>",
|
||||
expectedResult: ["<dt></dt>", "<dt><br></dt>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dd>{}</dd>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dd><ul><li>{}</li></ul></dd>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dd><ol><li>{}</li></ol></dd>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
// If only sub-list in the editing host list element, the sub-list should be
|
||||
// replaced with a list item.
|
||||
addPromiseTest({
|
||||
innerHTML: "<ul><li>{}</li></ul>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<ol><li>{}</li></ol>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dl><dt>{}</dt></dl>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dl><dd>{}</dd></dl>",
|
||||
expectedResult: ["<dd></dd>", "<dd><br></dd>"],
|
||||
});
|
||||
}, {once:true});
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
|
@ -0,0 +1,87 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="timeout" content="long">
|
||||
<meta name="variant" content="?list=ul&action=Backspace">
|
||||
<meta name="variant" content="?list=ul&action=Delete">
|
||||
<meta name="variant" content="?list=ol&action=Backspace">
|
||||
<meta name="variant" content="?list=ol&action=Delete">
|
||||
<title>Delete in last list item should not delete parent list if it's editing host</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="../include/editor-test-utils.js"></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
const params = new URLSearchParams(location.search.substring(1));
|
||||
const backspace = params.get("action") == "Backspace";
|
||||
const list = params.get("list");
|
||||
|
||||
addEventListener("load", () => {
|
||||
document.body.innerHTML =`<${list} contenteditable></${list}>`;
|
||||
const editingHost = document.querySelector("[contenteditable]");
|
||||
const utils = new EditorTestUtils(editingHost);
|
||||
|
||||
function addPromiseTest(aTest) {
|
||||
promise_test(async () => {
|
||||
editingHost.focus();
|
||||
utils.setupEditingHost(aTest.innerHTML);
|
||||
await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey());
|
||||
utils.normalizeStyleAttributeValues();
|
||||
if (Array.isArray(aTest.expectedResult)) {
|
||||
assert_in_array(editingHost.innerHTML, aTest.expectedResult);
|
||||
} else {
|
||||
assert_equals(editingHost.innerHTML, aTest.expectedResult);
|
||||
}
|
||||
assert_equals(
|
||||
document.body.childNodes.length,
|
||||
1,
|
||||
`The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
|
||||
);
|
||||
assert_equals(
|
||||
document.body.firstChild,
|
||||
editingHost,
|
||||
`The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
|
||||
);
|
||||
}, `${backspace ? "Backspace" : "Delete"} in "<${list} contenteditable>${aTest.innerHTML}</${list}>"`);
|
||||
}
|
||||
|
||||
addPromiseTest({
|
||||
innerHTML: "<li>{}</li>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<li><ul><li>{}</li></ul></li>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<li><ol><li>{}</li></ol></li>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
// If only sub-list in the editing host list element, the sub-list should be
|
||||
// replaced with a list item.
|
||||
addPromiseTest({
|
||||
innerHTML: "<ul><li>{}</li></ul>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<ol><li>{}</li></ol>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dl><dt>{}</dt></dl>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
addPromiseTest({
|
||||
innerHTML: "<dl><dd>{}</dd></dl>",
|
||||
expectedResult: ["<li></li>", "<li><br></li>"],
|
||||
});
|
||||
}, {once:true});
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
|
@ -4,8 +4,6 @@
|
|||
<link rel=stylesheet href=../include/reset.css>
|
||||
<title>backcolor - HTML editing conformance tests</title>
|
||||
|
||||
<p id=timing></p>
|
||||
|
||||
<div id=log></div>
|
||||
|
||||
<div id=test-container></div>
|
||||
|
@ -21,8 +19,6 @@
|
|||
"use strict";
|
||||
|
||||
(function() {
|
||||
var startTime = Date.now();
|
||||
|
||||
// Make document.body.innerHTML more tidy by removing unnecessary things.
|
||||
[].forEach.call(document.querySelectorAll("script"), function(node) {
|
||||
node.parentNode.removeChild(node);
|
||||
|
@ -43,11 +39,5 @@
|
|||
|
||||
document.getElementById("test-container").parentNode
|
||||
.removeChild(document.getElementById("test-container"));
|
||||
|
||||
var elapsed = Math.round(Date.now() - startTime)/1000;
|
||||
document.getElementById("timing").textContent =
|
||||
"Time elapsed: " + Math.floor(elapsed/60) + ":"
|
||||
+ ((elapsed % 60) < 10 ? "0" : "")
|
||||
+ (elapsed % 60).toFixed(3) + " min.";
|
||||
})();
|
||||
</script>
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
<link rel=stylesheet href=../include/reset.css>
|
||||
<title>bold - HTML editing conformance tests</title>
|
||||
|
||||
<p id=timing></p>
|
||||
|
||||
<div id=log></div>
|
||||
|
||||
<div id=test-container></div>
|
||||
|
@ -25,8 +23,6 @@
|
|||
"use strict";
|
||||
|
||||
(function() {
|
||||
var startTime = Date.now();
|
||||
|
||||
// Make document.body.innerHTML more tidy by removing unnecessary things.
|
||||
[].forEach.call(document.querySelectorAll("script"), function(node) {
|
||||
node.parentNode.removeChild(node);
|
||||
|
@ -48,10 +44,5 @@
|
|||
document.getElementById("test-container").parentNode
|
||||
.removeChild(document.getElementById("test-container"));
|
||||
|
||||
var elapsed = Math.round(Date.now() - startTime)/1000;
|
||||
document.getElementById("timing").textContent =
|
||||
"Time elapsed: " + Math.floor(elapsed/60) + ":"
|
||||
+ ((elapsed % 60) < 10 ? "0" : "")
|
||||
+ (elapsed % 60).toFixed(3) + " min.";
|
||||
})();
|
||||
</script>
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
<link rel=stylesheet href=../include/reset.css>
|
||||
<title>createlink - HTML editing conformance tests</title>
|
||||
|
||||
<p id=timing></p>
|
||||
|
||||
<div id=log></div>
|
||||
|
||||
<div id=test-container></div>
|
||||
|
@ -21,8 +19,6 @@
|
|||
"use strict";
|
||||
|
||||
(function() {
|
||||
var startTime = Date.now();
|
||||
|
||||
// Make document.body.innerHTML more tidy by removing unnecessary things.
|
||||
[].forEach.call(document.querySelectorAll("script"), function(node) {
|
||||
node.parentNode.removeChild(node);
|
||||
|
@ -44,10 +40,5 @@
|
|||
document.getElementById("test-container").parentNode
|
||||
.removeChild(document.getElementById("test-container"));
|
||||
|
||||
var elapsed = Math.round(Date.now() - startTime)/1000;
|
||||
document.getElementById("timing").textContent =
|
||||
"Time elapsed: " + Math.floor(elapsed/60) + ":"
|
||||
+ ((elapsed % 60) < 10 ? "0" : "")
|
||||
+ (elapsed % 60).toFixed(3) + " min.";
|
||||
})();
|
||||
</script>
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
<link rel=stylesheet href=../include/reset.css>
|
||||
<title>delete list items in table cells - HTML editing conformance tests</title>
|
||||
|
||||
<p id=timing></p>
|
||||
|
||||
<div id=log></div>
|
||||
|
||||
<div id=test-container></div>
|
||||
|
@ -21,8 +19,6 @@
|
|||
"use strict";
|
||||
|
||||
(function() {
|
||||
var startTime = Date.now();
|
||||
|
||||
// Make document.body.innerHTML more tidy by removing unnecessary things.
|
||||
[].forEach.call(document.querySelectorAll("script"), function(node) {
|
||||
node.parentNode.removeChild(node);
|
||||
|
@ -44,10 +40,5 @@
|
|||
document.getElementById("test-container").parentNode
|
||||
.removeChild(document.getElementById("test-container"));
|
||||
|
||||
var elapsed = Math.round(Date.now() - startTime)/1000;
|
||||
document.getElementById("timing").textContent =
|
||||
"Time elapsed: " + Math.floor(elapsed/60) + ":"
|
||||
+ ((elapsed % 60) < 10 ? "0" : "")
|
||||
+ (elapsed % 60).toFixed(3) + " min.";
|
||||
})();
|
||||
</script>
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
<link rel=stylesheet href=../include/reset.css>
|
||||
<title>delete - HTML editing conformance tests</title>
|
||||
|
||||
<p id=timing></p>
|
||||
|
||||
<div id=log></div>
|
||||
|
||||
<div id=test-container></div>
|
||||
|
@ -29,8 +27,6 @@
|
|||
"use strict";
|
||||
|
||||
(function() {
|
||||
var startTime = Date.now();
|
||||
|
||||
// Make document.body.innerHTML more tidy by removing unnecessary things.
|
||||
[].forEach.call(document.querySelectorAll("script"), function(node) {
|
||||
node.parentNode.removeChild(node);
|
||||
|
@ -51,11 +47,5 @@
|
|||
|
||||
document.getElementById("test-container").parentNode
|
||||
.removeChild(document.getElementById("test-container"));
|
||||
|
||||
var elapsed = Math.round(Date.now() - startTime)/1000;
|
||||
document.getElementById("timing").textContent =
|
||||
"Time elapsed: " + Math.floor(elapsed/60) + ":"
|
||||
+ ((elapsed % 60) < 10 ? "0" : "")
|
||||
+ (elapsed % 60).toFixed(3) + " min.";
|
||||
})();
|
||||
</script>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue