Update web-platform-tests to revision b'544363de4568baf9ae90d71e4822661edc546650'

This commit is contained in:
WPT Sync Bot 2023-01-28 01:49:33 +00:00
parent 4d5a804d03
commit 32cc2e03c4
197 changed files with 3539 additions and 2824 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
[hit-test-floats-001.html]
[hit-test-floats-001]
expected: FAIL

View file

@ -0,0 +1,3 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,3 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,3 @@
[block-in-inline-hittest-001.html]
[block-in-inline-hittest-001]
expected: FAIL

View file

@ -1,3 +1,6 @@
[block-in-inline-hittest-002.html] [block-in-inline-hittest-002.html]
[elementsFromPoint] [elementsFromPoint]
expected: FAIL expected: FAIL
[elementFromPoint]
expected: FAIL

View file

@ -0,0 +1,3 @@
[hit-test-anonymous-block.html]
[Hit test beside line of text inside anonymous block]
expected: FAIL

View file

@ -1,2 +0,0 @@
[opacity-animation-ending-correctly-002.html]
expected: TIMEOUT

View file

@ -149,9 +149,6 @@
[Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic'] [Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic']
expected: FAIL expected: FAIL
[Matching font-stretch: '90%' should prefer '60% 70%' over '110% 140%']
expected: FAIL
[Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg'] [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg']
expected: FAIL expected: FAIL
@ -245,9 +242,6 @@
[Matching font-weight: '501' should prefer '500' over '450 460'] [Matching font-weight: '501' should prefer '500' over '450 460']
expected: FAIL expected: FAIL
[Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
expected: FAIL
[Matching font-weight: '400' should prefer '351 398' over '501 550'] [Matching font-weight: '400' should prefer '351 398' over '501 550']
expected: FAIL expected: FAIL

View file

@ -175,303 +175,3 @@
[padding-bottom length(em) / values] [padding-bottom length(em) / values]
expected: FAIL expected: FAIL
[padding-bottom length(ex) / values]
expected: FAIL
[padding-bottom length(mm) / values]
expected: FAIL
[padding-bottom length(cm) / values]
expected: FAIL
[padding-bottom length(in) / values]
expected: FAIL
[padding-left length(pt) / values]
expected: FAIL
[padding-left length(pc) / values]
expected: FAIL
[padding-left length(px) / values]
expected: FAIL
[padding-left length(em) / values]
expected: FAIL
[padding-left length(ex) / values]
expected: FAIL
[padding-left length(mm) / values]
expected: FAIL
[padding-left length(cm) / values]
expected: FAIL
[padding-left length(in) / values]
expected: FAIL
[padding-right length(pt) / values]
expected: FAIL
[padding-right length(pc) / values]
expected: FAIL
[padding-right length(px) / values]
expected: FAIL
[padding-right length(em) / values]
expected: FAIL
[padding-right length(ex) / values]
expected: FAIL
[padding-right length(mm) / values]
expected: FAIL
[padding-right length(cm) / values]
expected: FAIL
[padding-right length(in) / values]
expected: FAIL
[padding-top length(pt) / values]
expected: FAIL
[padding-top length(pc) / values]
expected: FAIL
[padding-top length(px) / values]
expected: FAIL
[padding-top length(em) / values]
expected: FAIL
[padding-top length(ex) / values]
expected: FAIL
[padding-top length(mm) / values]
expected: FAIL
[padding-top length(cm) / values]
expected: FAIL
[padding-top length(in) / values]
expected: FAIL
[margin-bottom length(pt) / values]
expected: FAIL
[margin-bottom length(pc) / values]
expected: FAIL
[margin-bottom length(px) / values]
expected: FAIL
[margin-bottom length(em) / values]
expected: FAIL
[margin-bottom length(ex) / values]
expected: FAIL
[margin-bottom length(mm) / values]
expected: FAIL
[margin-bottom length(cm) / values]
expected: FAIL
[margin-bottom length(in) / values]
expected: FAIL
[margin-left length(pt) / values]
expected: FAIL
[margin-left length(pc) / values]
expected: FAIL
[margin-left length(px) / values]
expected: FAIL
[margin-left length(em) / values]
expected: FAIL
[margin-left length(ex) / values]
expected: FAIL
[margin-left length(mm) / values]
expected: FAIL
[margin-left length(cm) / values]
expected: FAIL
[margin-left length(in) / values]
expected: FAIL
[margin-right length(pt) / values]
expected: FAIL
[margin-right length(pc) / values]
expected: FAIL
[margin-right length(px) / values]
expected: FAIL
[margin-right length(em) / values]
expected: FAIL
[margin-right length(ex) / values]
expected: FAIL
[margin-right length(mm) / values]
expected: FAIL
[color color(rgba) / values]
expected: FAIL
[font-size length(pt) / values]
expected: FAIL
[font-size length(pc) / values]
expected: FAIL
[font-size length(px) / values]
expected: FAIL
[font-size length(em) / values]
expected: FAIL
[font-size length(ex) / values]
expected: FAIL
[font-size length(mm) / values]
expected: FAIL
[font-size length(cm) / values]
expected: FAIL
[font-size length(in) / values]
expected: FAIL
[font-size percentage(%) / values]
expected: FAIL
[font-weight font-weight(keyword) / values]
expected: FAIL
[font-weight font-weight(numeric) / values]
expected: FAIL
[line-height number(integer) / values]
expected: FAIL
[line-height number(decimal) / values]
expected: FAIL
[line-height length(pt) / values]
expected: FAIL
[line-height length(pc) / values]
expected: FAIL
[line-height length(px) / values]
expected: FAIL
[line-height length(em) / values]
expected: FAIL
[line-height length(ex) / values]
expected: FAIL
[line-height length(mm) / values]
expected: FAIL
[line-height length(cm) / values]
expected: FAIL
[line-height length(in) / values]
expected: FAIL
[line-height percentage(%) / values]
expected: FAIL
[letter-spacing length(pt) / values]
expected: FAIL
[letter-spacing length(pc) / values]
expected: FAIL
[letter-spacing length(px) / values]
expected: FAIL
[letter-spacing length(em) / values]
expected: FAIL
[letter-spacing length(ex) / values]
expected: FAIL
[letter-spacing length(mm) / values]
expected: FAIL
[letter-spacing length(cm) / values]
expected: FAIL
[letter-spacing length(in) / values]
expected: FAIL
[word-spacing length(pt) / values]
expected: FAIL
[word-spacing length(pc) / values]
expected: FAIL
[word-spacing length(px) / values]
expected: FAIL
[word-spacing length(em) / values]
expected: FAIL
[word-spacing length(ex) / values]
expected: FAIL
[word-spacing length(mm) / values]
expected: FAIL
[word-spacing length(cm) / values]
expected: FAIL
[word-spacing length(in) / values]
expected: FAIL
[word-spacing percentage(%) / values]
expected: FAIL
[text-indent length(pt) / values]
expected: FAIL
[text-indent length(pc) / values]
expected: FAIL
[text-indent length(px) / values]
expected: FAIL
[text-indent length(em) / values]
expected: FAIL
[text-indent length(ex) / values]
expected: FAIL
[text-indent length(mm) / values]
expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(in) / values]
expected: FAIL
[text-indent percentage(%) / values]
expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL

View file

@ -490,3 +490,33 @@
[object-view-box object-view-box(xywh) / events] [object-view-box object-view-box(xywh) / events]
expected: FAIL 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

View file

@ -56,279 +56,6 @@
[background-position length(px) / events] [background-position length(px) / events]
expected: FAIL expected: FAIL
[background-color color(rgba) / events]
expected: FAIL
[border-top-width length(pt) / events]
expected: FAIL
[border-top-width length(pc) / events]
expected: FAIL
[border-top-width length(px) / events]
expected: FAIL
[border-top-width length(em) / events]
expected: FAIL
[border-top-width length(ex) / events]
expected: FAIL
[border-top-width length(mm) / events]
expected: FAIL
[border-top-width length(cm) / events]
expected: FAIL
[border-top-width length(in) / events]
expected: FAIL
[border-right-width length(pt) / events]
expected: FAIL
[border-right-width length(pc) / events]
expected: FAIL
[border-right-width length(px) / events]
expected: FAIL
[border-right-width length(em) / events]
expected: FAIL
[border-right-width length(ex) / events]
expected: FAIL
[border-right-width length(mm) / events]
expected: FAIL
[border-right-width length(cm) / events]
expected: FAIL
[border-right-width length(in) / events]
expected: FAIL
[border-bottom-width length(pt) / events]
expected: FAIL
[border-bottom-width length(pc) / events]
expected: FAIL
[border-bottom-width length(px) / events]
expected: FAIL
[border-bottom-width length(em) / events]
expected: FAIL
[border-bottom-width length(ex) / events]
expected: FAIL
[border-bottom-width length(mm) / events]
expected: FAIL
[border-bottom-width length(cm) / events]
expected: FAIL
[border-bottom-width length(in) / events]
expected: FAIL
[border-left-width length(pt) / events]
expected: FAIL
[border-left-width length(pc) / events]
expected: FAIL
[border-left-width length(px) / events]
expected: FAIL
[border-left-width length(em) / events]
expected: FAIL
[border-left-width length(ex) / events]
expected: FAIL
[border-left-width length(mm) / events]
expected: FAIL
[border-left-width length(cm) / events]
expected: FAIL
[border-left-width length(in) / events]
expected: FAIL
[border-top-color color(rgba) / events]
expected: FAIL
[border-right-color color(rgba) / events]
expected: FAIL
[border-bottom-color color(rgba) / events]
expected: FAIL
[border-left-color color(rgba) / events]
expected: FAIL
[padding-bottom length(pt) / events]
expected: FAIL
[padding-bottom length(pc) / events]
expected: FAIL
[padding-bottom length(px) / events]
expected: FAIL
[padding-bottom length(em) / events]
expected: FAIL
[padding-bottom length(ex) / events]
expected: FAIL
[padding-bottom length(mm) / events]
expected: FAIL
[padding-bottom length(cm) / events]
expected: FAIL
[padding-bottom length(in) / events]
expected: FAIL
[padding-left length(pt) / events]
expected: FAIL
[padding-left length(pc) / events]
expected: FAIL
[padding-left length(px) / events]
expected: FAIL
[padding-left length(em) / events]
expected: FAIL
[padding-left length(ex) / events]
expected: FAIL
[padding-left length(mm) / events]
expected: FAIL
[padding-left length(cm) / events]
expected: FAIL
[padding-left length(in) / events]
expected: FAIL
[padding-right length(pt) / events]
expected: FAIL
[padding-right length(pc) / events]
expected: FAIL
[padding-right length(px) / events]
expected: FAIL
[padding-right length(em) / events]
expected: FAIL
[padding-right length(ex) / events]
expected: FAIL
[padding-right length(mm) / events]
expected: FAIL
[padding-right length(cm) / events]
expected: FAIL
[padding-right length(in) / events]
expected: FAIL
[padding-top length(pt) / events]
expected: FAIL
[padding-top length(pc) / events]
expected: FAIL
[padding-top length(px) / events]
expected: FAIL
[padding-top length(em) / events]
expected: FAIL
[padding-top length(ex) / events]
expected: FAIL
[padding-top length(mm) / events]
expected: FAIL
[padding-top length(cm) / events]
expected: FAIL
[padding-top length(in) / events]
expected: FAIL
[margin-bottom length(pt) / events]
expected: FAIL
[margin-bottom length(pc) / events]
expected: FAIL
[margin-bottom length(px) / events]
expected: FAIL
[margin-bottom length(em) / events]
expected: FAIL
[margin-bottom length(ex) / events]
expected: FAIL
[margin-bottom length(mm) / events]
expected: FAIL
[margin-bottom length(cm) / events]
expected: FAIL
[margin-bottom length(in) / events]
expected: FAIL
[margin-left length(pt) / events]
expected: FAIL
[margin-left length(pc) / events]
expected: FAIL
[margin-left length(px) / events]
expected: FAIL
[margin-left length(em) / events]
expected: FAIL
[margin-left length(ex) / events]
expected: FAIL
[margin-left length(mm) / events]
expected: FAIL
[margin-left length(cm) / events]
expected: FAIL
[margin-left length(in) / events]
expected: FAIL
[margin-right length(pt) / events]
expected: FAIL
[margin-right length(pc) / events]
expected: FAIL
[margin-right length(px) / events]
expected: FAIL
[margin-right length(em) / events]
expected: FAIL
[margin-right length(ex) / events]
expected: FAIL
[margin-right length(mm) / events]
expected: FAIL
[margin-right length(cm) / events] [margin-right length(cm) / events]
expected: FAIL expected: FAIL
@ -628,153 +355,3 @@
[left percentage(%) / events] [left percentage(%) / events]
expected: FAIL 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

View file

@ -52,3 +52,276 @@
[background-position length(px) / events] [background-position length(px) / events]
expected: FAIL 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
[padding-bottom length(mm) / values]
expected: FAIL
[padding-bottom length(cm) / values]
expected: FAIL
[padding-bottom length(in) / values]
expected: FAIL
[padding-left length(pt) / values]
expected: FAIL
[padding-left length(pc) / values]
expected: FAIL
[padding-left length(px) / values]
expected: FAIL
[padding-left length(em) / values]
expected: FAIL
[padding-left length(ex) / values]
expected: FAIL
[padding-left length(mm) / values]
expected: FAIL
[padding-left length(cm) / values]
expected: FAIL
[padding-left length(in) / values]
expected: FAIL
[padding-right length(pt) / values]
expected: FAIL
[padding-right length(pc) / values]
expected: FAIL
[padding-right length(px) / values]
expected: FAIL
[padding-right length(em) / values]
expected: FAIL
[padding-right length(ex) / values]
expected: FAIL
[padding-right length(mm) / values]
expected: FAIL
[padding-right length(cm) / values]
expected: FAIL
[padding-right length(in) / values]
expected: FAIL
[padding-top length(pt) / values]
expected: FAIL
[padding-top length(pc) / values]
expected: FAIL
[padding-top length(px) / values]
expected: FAIL
[padding-top length(em) / values]
expected: FAIL
[padding-top length(ex) / values]
expected: FAIL
[padding-top length(mm) / values]
expected: FAIL
[padding-top length(cm) / values]
expected: FAIL
[padding-top length(in) / values]
expected: FAIL
[margin-bottom length(pt) / values]
expected: FAIL
[margin-bottom length(pc) / values]
expected: FAIL
[margin-bottom length(px) / values]
expected: FAIL
[margin-bottom length(em) / values]
expected: FAIL
[margin-bottom length(ex) / values]
expected: FAIL
[margin-bottom length(mm) / values]
expected: FAIL
[margin-bottom length(cm) / values]
expected: FAIL
[margin-bottom length(in) / values]
expected: FAIL
[margin-left length(pt) / values]
expected: FAIL
[margin-left length(pc) / values]
expected: FAIL
[margin-left length(px) / values]
expected: FAIL
[margin-left length(em) / values]
expected: FAIL
[margin-left length(ex) / values]
expected: FAIL
[margin-left length(mm) / values]
expected: FAIL
[margin-left length(cm) / values]
expected: FAIL
[margin-left length(in) / values]
expected: FAIL
[margin-right length(pt) / values]
expected: FAIL
[margin-right length(pc) / values]
expected: FAIL
[margin-right length(px) / values]
expected: FAIL
[margin-right length(em) / values]
expected: FAIL
[margin-right length(ex) / values]
expected: FAIL
[margin-right length(mm) / values]
expected: FAIL

View file

@ -0,0 +1,3 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -0,0 +1,3 @@
[elementFromPoint-ellipsis-in-inline-box.html]
[elementFromPoint-ellipsis-in-inline-box]
expected: FAIL

View file

@ -0,0 +1,3 @@
[elementFromPoint-float-in-relative.html]
[elementFromPoint-float-in-relative]
expected: FAIL

View file

@ -14,8 +14,5 @@
[<li>Outside 3</li>] [<li>Outside 3</li>]
expected: FAIL expected: FAIL
[<li>Inside 2</li>] [<li>Inside 1</li>]
expected: FAIL
[<li>Image Inside 1</li>]
expected: FAIL expected: FAIL

View file

@ -17,3 +17,6 @@
[test some point of the element: bottom right corner] [test some point of the element: bottom right corner]
expected: FAIL expected: FAIL
[test the top of layer]
expected: FAIL

View file

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

View file

@ -1,8 +1,5 @@
[ElementInternals-setFormValue.html] [ElementInternals-setFormValue.html]
expected: ERROR expected: ERROR
[Single value - name is missing]
expected: FAIL
[Single value - Non-empty name exists] [Single value - Non-empty name exists]
expected: FAIL expected: FAIL

View file

@ -77,5 +77,5 @@
[Input: "Content-Length: ". Expected: 42.] [Input: "Content-Length: ". Expected: 42.]
expected: FAIL expected: FAIL
[Input: "Content-Length: 42\\r\\nContent-Length: 42". Expected: 42.] [Input: "Content-Length: 42,42". Expected: 42.]
expected: FAIL expected: FAIL

View file

@ -147,8 +147,5 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade] [list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL expected: FAIL
[border-image sec-fetch-site - HTTPS downgrade (header not sent)] [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL
[background-image sec-fetch-site - Not sent to non-trustworthy same-site destination]
expected: TIMEOUT expected: TIMEOUT

View file

@ -13,3 +13,6 @@
[X-Content-Type-Options%3A%20%22nosniFF%22] [X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

@ -5,6 +5,3 @@
[Navigating to a different document with form submission] [Navigating to a different document with form submission]
expected: TIMEOUT expected: TIMEOUT
[Navigating to a different document with link click]
expected: FAIL

View file

@ -1,6 +1,10 @@
[javascript-url-referrer.window.html] [javascript-url-referrer.window.html]
expected: TIMEOUT
[unsafe-url referrer policy used to create the starting page] [unsafe-url referrer policy used to create the starting page]
expected: FAIL expected: FAIL
[origin referrer policy used to create the starting page] [origin referrer policy used to create the starting page]
expected: FAIL expected: FAIL
[no-referrer referrer policy used to create the starting page]
expected: TIMEOUT

View file

@ -1,3 +1,4 @@
[nav-cancelation-2.sub.html] [nav-cancelation-2.sub.html]
expected: TIMEOUT
[grandparent cancels a pending navigation in a cross-origin grandchild] [grandparent cancels a pending navigation in a cross-origin grandchild]
expected: FAIL expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[traverse-during-unload.html]
expected: TIMEOUT
[Traversing the history during unload]
expected: TIMEOUT

View file

@ -0,0 +1,3 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -0,0 +1,7 @@
[document-base-url-changes-after-nav-about-srcdoc.https.window.html]
expected: TIMEOUT
[non-sandboxed srcdoc - parent changes baseURI]
expected: TIMEOUT
[sandboxed srcdoc - parent changes baseURI]
expected: NOTRUN

View file

@ -1,15 +1,19 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL expected: NOTRUN
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -0,0 +1,6 @@
[http-equiv-and-name.html]
[<meta> set the color-scheme to dark]
expected: FAIL
[<meta> set the content-language to dark]
expected: FAIL

View file

@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html] [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] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL expected: TIMEOUT

View file

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

View file

@ -175,3 +175,6 @@
[multipart/form-data: Basic test (formdata event)] [multipart/form-data: Basic test (formdata event)]
expected: FAIL expected: FAIL
[multipart/form-data: 0x00 in value (normal form)]
expected: FAIL

View file

@ -172,3 +172,9 @@
[text/plain: backslash in name (formdata event)] [text/plain: backslash in name (formdata event)]
expected: FAIL expected: FAIL
[text/plain: Basic test (formdata event)]
expected: FAIL
[text/plain: 0x00 in name (formdata event)]
expected: FAIL

View file

@ -0,0 +1,6 @@
[valid-invalid-fieldset-disconnected.html]
[<input> element becomes invalid inside disconnected <fieldset>]
expected: FAIL
[<select> element becomes valid inside disconnected <fieldset>]
expected: FAIL

View file

@ -1,3 +0,0 @@
[module-static-import-delayed.html]
[document.write in an imported module]
expected: FAIL

View file

@ -1,7 +1,6 @@
[promise-rejection-events.html] [promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: TIMEOUT expected: FAIL
[unhandledrejection: from createImageBitmap which is UA triggered] [unhandledrejection: from createImageBitmap which is UA triggered]
expected: FAIL expected: FAIL

View file

@ -13,34 +13,34 @@
expected: FAIL expected: FAIL
[content-type 4 : text/plain;charset=gbk,text/html;charset=windows-1254] [content-type 4 : text/plain;charset=gbk,text/html;charset=windows-1254]
expected: TIMEOUT expected: FAIL
[content-type 5 : text/plain;charset=gbk,text/plain] [content-type 5 : text/plain;charset=gbk,text/plain]
expected: NOTRUN expected: FAIL
[content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252] [content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252]
expected: NOTRUN expected: FAIL
[content-type 7 : text/html;charset=gbk,text/html;x=",text/plain] [content-type 7 : text/html;charset=gbk,text/html;x=",text/plain]
expected: NOTRUN expected: FAIL
[content-type 8 : text/plain;charset=gbk;x=foo,text/plain] [content-type 8 : text/plain;charset=gbk;x=foo,text/plain]
expected: NOTRUN expected: FAIL
[content-type 9 : text/html;charset=gbk,text/plain,text/html] [content-type 9 : text/html;charset=gbk,text/plain,text/html]
expected: NOTRUN expected: FAIL
[content-type 10 : text/plain,*/*] [content-type 10 : text/plain,*/*]
expected: NOTRUN expected: FAIL
[content-type 11 : text/html,*/*] [content-type 11 : text/html,*/*]
expected: NOTRUN expected: FAIL
[content-type 12 : */*,text/html] [content-type 12 : */*,text/html]
expected: NOTRUN expected: FAIL
[content-type 13 : text/plain,*/*;charset=gbk] [content-type 13 : text/plain,*/*;charset=gbk]
expected: NOTRUN expected: TIMEOUT
[content-type 14 : text/html,*/*;charset=gbk] [content-type 14 : text/html,*/*;charset=gbk]
expected: NOTRUN expected: NOTRUN

View file

@ -1318,9 +1318,6 @@
[<area>: Setting <http://test/>.protocol = 'https\x0c'] [<area>: Setting <http://test/>.protocol = 'https\x0c']
expected: FAIL expected: FAIL
[<a>: Setting <http://test/>.protocol = 'https\r']
expected: FAIL
[<area>: Setting <http://test/>.protocol = 'https\r'] [<area>: Setting <http://test/>.protocol = 'https\r']
expected: FAIL expected: FAIL
@ -1330,6 +1327,15 @@
[<area>: Setting <http://test/>.protocol = 'https '] [<area>: Setting <http://test/>.protocol = 'https ']
expected: FAIL expected: FAIL
[<area>: Setting <http://test/>.protocol = 'h\r\ntt\tps' Tab and newline are stripped]
expected: FAIL
[<a>: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL
[<area>: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL
[url-setters-a-area.window.html?include=mailto] [url-setters-a-area.window.html?include=mailto]
[<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesnt have a host, but URL in a special scheme must.] [<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesnt have a host, but URL in a special scheme must.]

View file

@ -117,10 +117,10 @@
[URL: Setting <http://test/>.protocol = 'https\x0c'] [URL: Setting <http://test/>.protocol = 'https\x0c']
expected: FAIL expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\r'] [URL: Setting <http://test/>.protocol = 'https ']
expected: FAIL expected: FAIL
[URL: Setting <http://test/>.protocol = 'https '] [URL: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL expected: FAIL
@ -200,8 +200,8 @@
[URL: Setting <http://test/>.protocol = 'https\x0c'] [URL: Setting <http://test/>.protocol = 'https\x0c']
expected: FAIL expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\r']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https '] [URL: Setting <http://test/>.protocol = 'https ']
expected: FAIL expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL

View file

@ -1,4 +1,5 @@
[audiocontext-not-fully-active.html] [audiocontext-not-fully-active.html]
expected: TIMEOUT
[frame in navigated remote-site frame] [frame in navigated remote-site frame]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,5 @@
[cross-partition.https.tentative.html] [cross-partition.https.tentative.html]
expected: TIMEOUT expected: CRASH
[BroadcastChannel messages aren't received from a cross-partition iframe] [BroadcastChannel messages aren't received from a cross-partition iframe]
expected: FAIL expected: FAIL

View file

@ -1,4 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
expected: TIMEOUT
[StorageKey: test 3P about:blank window opened from a 3P iframe]
expected: TIMEOUT

View file

@ -1,7 +1,11 @@
[event-error.sub.any.html] [event-error.sub.any.html]
expected: TIMEOUT
[error while reading body should report zeros for loaded and total] [error while reading body should report zeros for loaded and total]
expected: FAIL expected: FAIL
[onerror should be called]
expected: TIMEOUT
[event-error.sub.any.worker.html] [event-error.sub.any.worker.html]
[error while reading body should report zeros for loaded and total] [error while reading body should report zeros for loaded and total]

View file

@ -0,0 +1,15 @@
[constructor-submitter.html]
[FormData construction should throw a TypeError if a non-null submitter is not a submit button]
expected: FAIL
[FormData construction should throw a 'NotFoundError' DOMException if a non-null submitter is not owned by the form]
expected: FAIL
[The constructed FormData object should contain an in-tree-order entry for a named submit button submitter]
expected: FAIL
[The constructed FormData object should contain in-tree-order entries for an activated Image Button submitter]
expected: FAIL
[The constructed FormData object should contain in-tree-order entries for an unactivated Image Button submitter]
expected: FAIL

View file

@ -0,0 +1,5 @@
[task_queue_throttling.any.worker.html]
[task_queue_throttling.any.html]
[Throttling the performance timeline task queue.]
expected: FAIL

View file

@ -41,7 +41,7 @@
<div class="target" style="width: anchor-size(--a2 width)" data-expected-width=5></div> <div class="target" style="width: anchor-size(--a2 width)" data-expected-width=5></div>
</div> </div>
<script> <script>
checkLayout('.target'); checkLayout('.target', false);
container.classList.add('after'); container.classList.add('after');
for (const element of document.getElementsByClassName('target')) { for (const element of document.getElementsByClassName('target')) {
if (element.dataset.offsetX === '5') if (element.dataset.offsetX === '5')
@ -49,6 +49,6 @@ for (const element of document.getElementsByClassName('target')) {
if (element.dataset.expectedWidth === '5') if (element.dataset.expectedWidth === '5')
element.dataset.expectedWidth = '10'; element.dataset.expectedWidth = '10';
} }
checkLayout('.after .target'); checkLayout('.after .target', true);
</script> </script>
</body> </body>

View file

@ -91,7 +91,7 @@ for (const element of document.getElementsByClassName('target')) {
element.dataset.expectedWidth = '50'; element.dataset.expectedWidth = '50';
element.dataset.expectedHeight = '70'; element.dataset.expectedHeight = '70';
} }
checkLayout('.target'); checkLayout('.target', false);
document.body.classList.add('after'); document.body.classList.add('after');
for (const element of document.getElementsByClassName('target')) { for (const element of document.getElementsByClassName('target')) {
@ -100,6 +100,6 @@ for (const element of document.getElementsByClassName('target')) {
element.dataset.expectedWidth = '70'; element.dataset.expectedWidth = '70';
element.dataset.expectedHeight = '50'; element.dataset.expectedHeight = '50';
} }
checkLayout('.after .target'); checkLayout('.after .target', true);
</script> </script>
</body> </body>

View file

@ -27,7 +27,7 @@
background: lime; background: lime;
} }
</style> </style>
<body onload="run_test()"> <body>
<div class="cb"> <div class="cb">
<div style="contain: strict; height: 50px"> <div style="contain: strict; height: 50px">
<div class="spacer" style="height: 10px"></div> <div class="spacer" style="height: 10px"></div>
@ -39,9 +39,7 @@
data-expected-width=30 data-expected-height=20></div> data-expected-width=30 data-expected-height=20></div>
</div> </div>
<script> <script>
function run_test() { document.body.classList.add('after');
document.body.classList.add('after'); checkLayout('.target');
checkLayout('.target');
}
</script> </script>
</body> </body>

View file

@ -34,34 +34,36 @@
} }
</style> </style>
<body id="container" onload="checkLayout('.target')"> <body onload="checkLayout('.target')">
<div class="flex-item" id="a1"></div> <div id="container">
<div class="flex-item"></div> <div class="flex-item" id="a1"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item"></div> <div class="flex-item"></div>
<div class="flex-item" id="a2"></div> <div class="flex-item"></div>
<div class="flex-item" id="a2"></div>
<!-- Fallback due to no valid anchor --> <!-- Fallback due to no valid anchor -->
<div class="target" style="left: anchor(--inexist-anchor left, 50px)" data-offset-x="50"></div> <div class="target" style="left: anchor(--inexist-anchor left, 50px)" data-offset-x="50"></div>
<div class="target" style="width: anchor-size(--inexist-anchor width, 50px)" data-expected-width="50"></div> <div class="target" style="width: anchor-size(--inexist-anchor width, 50px)" data-expected-width="50"></div>
<!-- Fallback due to wrong axis for anchor() --> <!-- Fallback due to wrong axis for anchor() -->
<div class="target" style="left: anchor(--a1 top, 50px)" data-offset-x="50"></div> <div class="target" style="left: anchor(--a1 top, 50px)" data-offset-x="50"></div>
<div class="target" style="left: anchor(--a1 bottom, 50px)" data-offset-x="50"></div> <div class="target" style="left: anchor(--a1 bottom, 50px)" data-offset-x="50"></div>
<div class="target" style="top: anchor(--a1 left, 50px)" data-offset-y="50"></div> <div class="target" style="top: anchor(--a1 left, 50px)" data-offset-y="50"></div>
<div class="target" style="top: anchor(--a1 right, 50px)" data-offset-y="50"></div> <div class="target" style="top: anchor(--a1 right, 50px)" data-offset-y="50"></div>
<!-- More complicated fallback values --> <!-- More complicated fallback values -->
<div class="target" style="left: anchor(--inexist-anchor left, 50%)" data-offset-x="150"></div> <div class="target" style="left: anchor(--inexist-anchor left, 50%)" data-offset-x="150"></div>
<div class="target" style="left: anchor(--inexist-anchor left, calc(20% + 20px))" data-offset-x="80"></div> <div class="target" style="left: anchor(--inexist-anchor left, calc(20% + 20px))" data-offset-x="80"></div>
<div class="target" style="top: anchor(--a1 left, anchor(--a2 top))" data-offset-y="100"></div> <div class="target" style="top: anchor(--a1 left, anchor(--a2 top))" data-offset-y="100"></div>
<div class="target" style="top: anchor(--a1 left, calc((anchor(--a1 bottom) + anchor(--a2 top)) / 2)" data-offset-y="75"></div> <div class="target" style="top: anchor(--a1 left, calc((anchor(--a1 bottom) + anchor(--a2 top)) / 2))" data-offset-y="75"></div>
<div class="target" style="width: anchor-size(--inexist-anchor width, 50%)" data-expected-width="150"></div> <div class="target" style="width: anchor-size(--inexist-anchor width, 50%)" data-expected-width="150"></div>
<div class="target" style="width: anchor-size(--inexist-anchor width, calc(20% + 20px))" data-expected-width="80"></div> <div class="target" style="width: anchor-size(--inexist-anchor width, calc(20% + 20px))" data-expected-width="80"></div>
<div class="target" style="height: anchor-size(--inexist-anchor height, anchor-size(--a1 width))" data-expected-height="100"></div> <div class="target" style="height: anchor-size(--inexist-anchor height, anchor-size(--a1 width))" data-expected-height="100"></div>
<div class="target" style="height: anchor-size(--inexist-anchor height, calc((anchor-size(--a1 width) + anchor-size(--a2 height)) / 2)" data-expected-height="75"></div> <div class="target" style="height: anchor-size(--inexist-anchor height, calc((anchor-size(--a1 width) + anchor-size(--a2 height)) / 2))" data-expected-height="75"></div>
</div>
</body> </body>

View file

@ -10,7 +10,7 @@
--> -->
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice"> <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice">
<link rel="match" href="reference/border-image-slice-005-ref.html"> <link rel="match" href="reference/border-image-slice-005-ref.html">
<meta name="fuzzy" content="0-35;0-1250"> <meta name="fuzzy" content="maxDifference=0-92;totalPixels=0-5314">
<meta name="assert" content="This test checks that the border image is sliced into nine regions with inward offsets, '40%' from the top, '30%' from the right,'20%' from the bottom, and '10%' from the left edges of the image. Percentages are relative to the size of the image: the width of the image for the horizontal offsets, the height for vertical offsets."> <meta name="assert" content="This test checks that the border image is sliced into nine regions with inward offsets, '40%' from the top, '30%' from the right,'20%' from the bottom, and '10%' from the left edges of the image. Percentages are relative to the size of the image: the width of the image for the horizontal offsets, the height for vertical offsets.">
<style> <style>
div div

View file

@ -10,7 +10,7 @@
--> -->
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice"> <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice">
<link rel="match" href="reference/border-image-slice-007-ref.html"> <link rel="match" href="reference/border-image-slice-007-ref.html">
<meta name="fuzzy" content="0-35;0-1250"> <meta name="fuzzy" content="maxDifference=0-92;totalPixels=0-5314">
<meta name="assert" content="This test checks that the 'fill' keyword, if present, causes the middle part of the border-image to be preserved."> <meta name="assert" content="This test checks that the 'fill' keyword, if present, causes the middle part of the border-image to be preserved.">
<style> <style>
div div

View file

@ -10,6 +10,7 @@
--> -->
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-repeat"> <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-repeat">
<link rel="match" href="reference/css3-border-image-repeat-repeat-ref.html"> <link rel="match" href="reference/css3-border-image-repeat-repeat-ref.html">
<meta name="fuzzy" content="maxDifference=0-58;totalPixels=0-412">
<style> <style>
div { div {
border: red solid 18px; border: red solid 18px;

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination">
<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:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
<div style="height:50px; background:green;"></div>
<div style="display:flex;">
<div style="display:flex;">
<div style="width:50px;">
<div style="height:30px;"></div>
<div style="height:50px; contain:size; background:green;"></div>
</div>
</div>
</div>
<div style="height:50px; margin-left:-100%; width:200%; background:green;"></div>
</div>

View file

@ -191,16 +191,4 @@
test_container_name_invalid('And'); test_container_name_invalid('And');
test_container_name_invalid('oR'); test_container_name_invalid('oR');
test_container_name_invalid('nOt'); test_container_name_invalid('nOt');
test_condition_known('style(--my-prop: foo)');
test_condition_known('style(--my-prop: foo - bar ())');
test_condition_known('style(not ((--foo: calc(10px + 2em)) and ((--foo: url(x)))))');
test_condition_known('style((--foo: bar) or (--bar: 10px))');
test_condition_known('style(--my-prop:)');
test_condition_known('style(--my-prop: )');
test_condition_known('style(--foo: bar !important)');
test_condition_unknown('style(--foo: bar;)');
test_condition_unknown('style(--foo)');
test_condition_unknown('style(style(--foo: bar))');
</script> </script>

View file

@ -0,0 +1,75 @@
<!doctype html>
<title>@container: style queries parsing</title>
<link rel="help" href="https://drafts.csswg.org/css-contain-3/#container-rule">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<div style="container-name:name;container-type:size; width:100px; height:100px">
<main id=main></main>
</div>
<script>
setup(() => assert_implements_container_queries());
function cleanup_main() {
while (main.firstChild)
main.firstChild.remove();
}
function set_style(text) {
let style = document.createElement('style');
style.innerText = text;
main.append(style);
return style;
}
function test_rule_valid(query) {
test(t => {
t.add_cleanup(cleanup_main);
let style = set_style(`@container ${query} {}`);
assert_equals(style.sheet.rules.length, 1);
}, query);
}
function test_condition_invalid(condition) {
test(t => {
t.add_cleanup(cleanup_main);
let style = set_style(`@container name ${condition} {}`);
assert_equals(style.sheet.rules.length, 0);
}, condition);
}
// Tests that 1) the condition parses, and 2) is either "unknown" or not, as
// specified.
function test_condition_valid(condition, unknown) {
test(t => {
t.add_cleanup(cleanup_main);
let style = set_style(`
@container name ${condition} {}
@container name (${condition}) or (not (${condition})) { main { --match:true; } }
`);
assert_equals(style.sheet.rules.length, 2);
const expected = unknown ? '' : 'true';
assert_equals(getComputedStyle(main).getPropertyValue('--match'), expected);
}, condition);
}
function test_condition_known(condition) {
test_condition_valid(condition, false /* unknown */);
}
function test_condition_unknown(condition) {
test_condition_valid(condition, true /* unknown */);
}
test_condition_known('style(--my-prop: foo)');
test_condition_known('style(--my-prop: foo - bar ())');
test_condition_known('style(not ((--foo: calc(10px + 2em)) and ((--foo: url(x)))))');
test_condition_known('style((--foo: bar) or (--bar: 10px))');
test_condition_known('style(--my-prop:)');
test_condition_known('style(--my-prop: )');
test_condition_known('style(--foo: bar !important)');
test_condition_unknown('style(--foo: bar;)');
test_condition_unknown('style(--foo)');
test_condition_unknown('style(style(--foo: bar))');
</script>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-inline-3/#baseline-source">
<style>
#target {
baseline-source: first;
vertical-align: baseline;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="target"></div>
<script>
test(() => {
const target = document.getElementById('target');
assert_equals(getComputedStyle(target).baselineSource, 'auto');
});
</script>

View file

@ -124,4 +124,22 @@
& .c { color: blue; } & .c { color: blue; }
}`, 'color is changed, new rule is ignored'); }`, 'color is changed, new rule is ignored');
}); });
// We cannot insert anything starting with an tag, as that would cause
// the serialized rule not to parse back. Compounds starting with a tag
// that are _not_ the first compound in a complex selector are OK, though,
// as are complex selectors that are not the first in the list.
test(() => {
document.getElementById('ss').innerHTML = sampleSheetText;
let [ss] = document.styleSheets;
ss.cssRules[0].cssRules[0].selectorText = 'div.b .c &'; // Ignored.
ss.cssRules[0].cssRules[1].selectorText = '.c div.b &, div &'; // Allowed.
assert_throws_dom('SyntaxError', () => { ss.cssRules[0].insertRule('div & {}'); });
assert_equals(ss.cssRules[0].cssText,
`.a {
color: red;
& .b { color: green; }
.c div.b &, div & { color: blue; }
}`, 'one rule is kept unchanged, the other is changed');
});
</script> </script>

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<style>
div {
width: 15em;
height: 10em;
overflow: auto;
}
</style>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8063">
<link rel="match" href="overflow-overlay-ref.html">
<style>
div {
width: 15em;
height: 10em;
overflow: overlay;
}
</style>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>

View file

@ -1,42 +0,0 @@
<!DOCTYPE html>
<title>Tests animation with tree-scoped names and references</title>
<meta name="assert" content="Custom counter style references should work in keyframes">
<link rel="help" href="https://drafts.csswg.org/css-scoping/#shadow-names">
<link rel="author" href="mailto:xiaochengh@chromium.org">
<link rel="match" href="scoped-reference-animation-ref.html">
<style>
/* Overrides predefined lower-roman counter-style */
@counter-style lower-roman {
system: cyclic;
symbols: 'X';
}
/* Overrides predefined upper-roman counter-style */
@counter-style upper-roman {
system: cyclic;
symbols: 'O';
}
/* Should resolve to the custom counter styles, not the predefined ones */
@keyframes list-style-type-anim {
from { list-style-type: lower-roman; }
to { list-style-type: upper-roman; }
}
#target1 {
animation: list-style-type-anim 2s -0.9s linear paused;
}
#target2 {
animation: list-style-type-anim 2s -1s linear paused;
}
</style>
<ul id="target1">
<li>List marker should be X
</ul>
<ul id="target2">
<li>List marker should be O
</ul>

View file

@ -1,55 +0,0 @@
<!DOCTYPE html>
<title>Tests animation with tree-scoped names and references</title>
<meta name="assert" content="Custom counter style references should work in shadow DOM keyframes">
<link rel="help" href="https://drafts.csswg.org/css-scoping/#shadow-names">
<link rel="author" href="mailto:xiaochengh@chromium.org">
<link rel="match" href="scoped-reference-animation-ref.html">
<style>
@counter-style lower-roman { system: extends disc; }
@counter-style upper-roman { system: extends disc; }
</style>
<div id="host">
</div>
<script>
host.attachShadow({mode: 'open'}).innerHTML = `
<style>
/* Overrides predefined and outer tree scope's custom lower-roman counter-style */
@counter-style lower-roman {
system: cyclic;
symbols: 'X';
}
/* Overrides predefined and outer tree scope's upper-roman counter-style */
@counter-style upper-roman {
system: cyclic;
symbols: 'O';
}
/* Should resolve to the custom counter styles, not the predefined or the outer
tree scope's ones */
@keyframes list-style-type-anim {
from { list-style-type: lower-roman; }
to { list-style-type: upper-roman; }
}
#target1 {
animation: list-style-type-anim 2s -0.9s linear paused;
}
#target2 {
animation: list-style-type-anim 2s -1s linear paused;
}
</style>
<ul id="target1">
<li>List marker should be X
</ul>
<ul id="target2">
<li>List marker should be O
</ul>
`;
</script>

View file

@ -1,30 +0,0 @@
<!DOCTYPE html>
<title>Tests animation with tree-scoped names and references</title>
<style>
@counter-style from-counter-style {
system: cyclic;
symbols: 'X';
}
@counter-style to-counter-style {
system: cyclic;
symbols: 'O';
}
#target1 {
list-style-type: from-counter-style;
}
#target2 {
list-style-type: to-counter-style;
}
</style>
<ul id="target1">
<li>List marker should be X
</ul>
<ul id="target2">
<li>List marker should be O
</ul>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
<link rel="help" href="https://w3c.github.io/csswg-drafts/css-sizing-4/#valdef-width-fit-content">
<link rel="match" href="fit-content-block-size-fixedpos-ref.html">
<style>
body {
overflow: hidden;
}
#container {
height: fit-content;
position: absolute;
top: 50%;
background-color: gold;
margin: auto;
bottom: 0;
}
</style>
<div id="container">
<div style="height:90vh;width:50px;outline: 2px dotted red;"></div>
</div>

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<style>
#container {
height: 90vh;
position: fixed;
top: 50%;
background-color: gold;
margin: auto;
bottom: 0;
}
</style>
<div id="container">
<div style="height:90vh;width:50px;outline: 2px dotted red;"></div>
</div>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
<link rel="help" href="https://w3c.github.io/csswg-drafts/css-sizing-4/#valdef-width-fit-content">
<link rel="match" href="fit-content-block-size-fixedpos-ref.html">
<style>
#container {
height: fit-content;
position: fixed;
top: 50%;
background-color: gold;
margin: auto;
bottom: 0;
}
</style>
<div id="container">
<div style="height:90vh;width:50px;outline: 2px dotted red;"></div>
</div>

View file

@ -0,0 +1,24 @@
<!doctype html>
<meta charset="utf-8">
<title>CSS Test Reference</title>
<style>
.outer {
display: block;
width: 500px;
background: purple;
border: 1px solid green;
}
.half {
display: inline-block;
width: 50%;
background: blue;
}
.half + .half {
background: yellow;
}
</style>
<div class="outer">
<div class="half">A</div>
<!-- White space here should take up space -->
<div class="half">B</div>
</div>

View file

@ -0,0 +1,32 @@
<!doctype html>
<meta charset="utf-8">
<title>Whitespace inside table isn't incorrectly suppressed</title>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=251178">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410345">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1811353">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8358">
<link rel="help" href="https://drafts.csswg.org/css-tables/#consecutive-boxes">
<link rel="match" href="whitespace-001-ref.html">
<style>
.outer {
display: table;
width: 500px;
background: purple;
border: 1px solid green;
}
.half {
display: inline-block;
width: 50%;
background: blue;
}
.half + .half {
background: yellow;
}
</style>
<div class="outer">
<div class="half">A</div>
<!-- White space here should take up space -->
<div class="half">B</div>
</div>

View file

@ -28,7 +28,7 @@ test_math_used('calc(atan(e - 2.7182818284590452354) )', '0deg', {type:'angle',
// General calculations // General calculations
test_math_used('calc(asin(sin(30deg + 1.0471967rad ) ))', '90deg', {type:'angle', approx:0.1}); test_math_used('calc(asin(sin(30deg + 1.0471967rad ) ))', '90deg', {type:'angle', approx:0.1});
test_math_used('calc(acos(cos(30deg - 0.523599rad ) ))', '0deg'), {type:'angle', approx:0.1}; test_math_used('calc(acos(cos(30deg - 0.523599rad ) ))', '0deg', {type:'angle', approx:0.1});
test_math_used('calc(asin(sin(3.14159 / 2 + 1 - 1) ))', '90deg', {type:'angle', approx:0.1}); test_math_used('calc(asin(sin(3.14159 / 2 + 1 - 1) ))', '90deg', {type:'angle', approx:0.1});
test_math_used('calc(asin(sin(100grad) ))', '90deg', {type:'angle', approx:0.1}); test_math_used('calc(asin(sin(100grad) ))', '90deg', {type:'angle', approx:0.1});
test_math_used('calc(acos(cos(0 / 2 + 1 - 1) ))', '0deg', {type:'angle', approx:0.1}); test_math_used('calc(acos(cos(0 / 2 + 1 - 1) ))', '0deg', {type:'angle', approx:0.1});
@ -66,4 +66,4 @@ test_math_used('atan2(1rad, -1rad)', '135deg', {type:'angle', approx:0.1});
test_math_used('atan2(1s, -1s)', '135deg', {type:'angle', approx:0.1}); test_math_used('atan2(1s, -1s)', '135deg', {type:'angle', approx:0.1});
test_math_used('atan2(1ms, -1ms)', '135deg', {type:'angle', approx:0.1}); test_math_used('atan2(1ms, -1ms)', '135deg', {type:'angle', approx:0.1});
</script> </script>

View file

@ -19,10 +19,10 @@ test_math_used('calc(e - exp(1))', '0', {type:'number', approx:0.1});
//General calculations //General calculations
test_math_used('calc(log( 1 + 1 + 2 /2 - 2) )', '0', {type:'number', approx:0.1}); test_math_used('calc(log( 1 + 1 + 2 /2 - 2) )', '0', {type:'number', approx:0.1});
test_math_used('calc(log(1) + exp(0))', '1'), {type:'number', approx:0.1}; test_math_used('calc(log(1) + exp(0))', '1', {type:'number', approx:0.1});
test_math_used('calc(exp(log(1) + exp(0)*2))', '7.4'), {type:'number', approx:0.1}; test_math_used('calc(exp(log(1) + exp(0)*2))', '7.4', {type:'number', approx:0.1});
test_math_used('calc(log(log(1) + exp(0)*10))', '2.3'), {type:'number', approx:0.1}; test_math_used('calc(log(log(1) + exp(0)*10))', '2.3', {type:'number', approx:0.1});
test_math_used('calc(log(log(1) + exp(0)*20, 10))', '1.3'), {type:'number', approx:0.1}; test_math_used('calc(log(log(1) + exp(0)*20, 10))', '1.3', {type:'number', approx:0.1});
test_math_used('calc(log(e) / log(e) + exp(0)*2 * log(e))', '3', {type:'number', approx:0.1}); test_math_used('calc(log(e) / log(e) + exp(0)*2 * log(e))', '3', {type:'number', approx:0.1});
test_math_used('calc(log((1 + 1) /2) / log(e) + exp(0*1)*2 * log(e))', '2', {type:'number', approx:0.1}); test_math_used('calc(log((1 + 1) /2) / log(e) + exp(0*1)*2 * log(e))', '2', {type:'number', approx:0.1});
test_math_used('calc(log((3 + 1) /2, 2) / log(e) + exp(0*1)*2 * log(e))', '3', {type:'number', approx:0.1}); test_math_used('calc(log((3 + 1) /2, 2) / log(e) + exp(0*1)*2 * log(e))', '3', {type:'number', approx:0.1});

View file

@ -10,14 +10,14 @@
<script> <script>
// Identity tests // Identity tests
test_math_used('pow(1,1)', '1', {type:'number'}); test_math_used('pow(1,1)', '1', {type:'integer'});
test_math_used('sqrt(1)', '1', {type:'number'}); test_math_used('sqrt(1)', '1', {type:'integer'});
test_math_used('hypot(1)', '1', {type:'number'}); test_math_used('hypot(1)', '1', {type:'integer'});
// Nestings // Nestings
test_math_used('sqrt(pow(1,1))', '1'); test_math_used('sqrt(pow(1,1))', '1', {type:'integer'});
test_math_used('hypot(pow(1, sqrt(1)))', '1'); test_math_used('hypot(pow(1, sqrt(1)))', '1', {type:'integer'});
test_math_used('calc(hypot(pow((1 + sqrt(1)) / 2, sqrt(1))))', '1'); test_math_used('calc(hypot(pow((1 + sqrt(1)) / 2, sqrt(1))))', '1', {type:'integer'});
// General calculations // General calculations
test_math_used('calc(100px * pow(2, pow(2, 2)))','1600px'); test_math_used('calc(100px * pow(2, pow(2, 2)))','1600px');
@ -54,4 +54,4 @@ test_math_used('hypot(1deg)', '1deg', {type:'angle', approx:0.001});
test_math_used('hypot(1grad)', '1grad', {type:'angle', approx:0.001}); test_math_used('hypot(1grad)', '1grad', {type:'angle', approx:0.001});
test_math_used('hypot(1rad)', '1rad', {type:'angle', approx:0.001}); test_math_used('hypot(1rad)', '1rad', {type:'angle', approx:0.001});
test_math_used('hypot(1turn)', '1turn', {type:'angle', approx:0.001}); test_math_used('hypot(1turn)', '1turn', {type:'angle', approx:0.001});
</script> </script>

View file

@ -27,7 +27,6 @@ test_invalid_number('hypot(1 * )');
test_invalid_number('hypot(1 / )'); test_invalid_number('hypot(1 / )');
test_invalid_number('hypot(1 2)'); test_invalid_number('hypot(1 2)');
test_invalid_number('hypot(1, , 2)'); test_invalid_number('hypot(1, , 2)');
test_invalid_number('hypot(1, 2)');
test_invalid_number('sqrt()'); test_invalid_number('sqrt()');
test_invalid_number('sqrt( )'); test_invalid_number('sqrt( )');
test_invalid_number('sqrt(,)'); test_invalid_number('sqrt(,)');
@ -50,7 +49,6 @@ test_invalid_number('pow(1 * )');
test_invalid_number('pow(1 / )'); test_invalid_number('pow(1 / )');
test_invalid_number('pow(1 2)'); test_invalid_number('pow(1 2)');
test_invalid_number('pow(1, , 2)'); test_invalid_number('pow(1, , 2)');
test_invalid_number('pow(1, 2)');
// General tests // General tests
test_invalid_length('calc(1px * pow(1))'); test_invalid_length('calc(1px * pow(1))');
@ -59,10 +57,12 @@ test_invalid_length('calc(sqrt(100px)');
test_invalid_length('hypot(2px, 40%)'); test_invalid_length('hypot(2px, 40%)');
test_invalid_length('hypot(2px, 3)'); test_invalid_length('hypot(2px, 3)');
test_invalid_length('hypot(3, ,4)'); test_invalid_length('hypot(3, ,4)');
test_invalid_length('hypot(1, 2)');
test_invalid_length('calc(1px * pow(2 3))'); test_invalid_length('calc(1px * pow(2 3))');
test_invalid_length('hypot()'); test_invalid_length('hypot()');
test_invalid_length('calc(pow(2))'); test_invalid_length('calc(pow(2))');
test_invalid_length('pow())'); test_invalid_length('pow())');
test_invalid_length('pow(1, 2)');
test_invalid_length('calc(sqrt())'); test_invalid_length('calc(sqrt())');
test_invalid_length('calc(sqrt(100, 200))'); test_invalid_length('calc(sqrt(100, 200))');
</script> </script>

View file

@ -9,15 +9,15 @@
<div id="target"></div> <div id="target"></div>
<script> <script>
// Identity tests // Identity tests
test_math_used('abs(1)', '1', {type:'number'}); test_math_used('abs(1)', '1', {type:'integer'});
test_math_used('sign(1)', '1', {type:'number'}); test_math_used('sign(1)', '1', {type:'integer'});
test_math_used('abs(-1)', '1', {type:'number'}); test_math_used('abs(-1)', '1', {type:'integer'});
test_math_used('sign(-1)', '-1', {type:'number'}); test_math_used('sign(-1)', '-1', {type:'integer'});
// Nestings // Nestings
test_math_used('abs(sign(1))', '1'); test_math_used('abs(sign(1))', '1', {type:'integer'});
test_math_used('abs(sign(sign(1)))', '1'); test_math_used('abs(sign(sign(1)))', '1', {type:'integer'});
test_math_used('sign(sign(sign(1) + sign(1)))', '1'); test_math_used('sign(sign(sign(1) + sign(1)))', '1', {type:'integer'});
// General calculations // General calculations
test_math_used('calc(abs(0.1 + 0.2) + 0.05)', '0.35', {type:'number', approx:0.1}); test_math_used('calc(abs(0.1 + 0.2) + 0.05)', '0.35', {type:'number', approx:0.1});
@ -29,94 +29,94 @@ test_math_used('calc(sign(0.1 - 0.2) - 0.05)', '-1.05', {type:'number', approx:0
test_math_used('calc(sign(1) + sign(1) - 0.05)', '1.95', {type:'number', approx:0.1}); test_math_used('calc(sign(1) + sign(1) - 0.05)', '1.95', {type:'number', approx:0.1});
// Test sign for zero // Test sign for zero
test_math_used('calc(sign(-0))', '-0', {type:'number'}); test_math_used('calc(sign(-0))', '-0', {type:'integer'});
test_math_used('calc(sign(0))', '0', {type:'number'}); test_math_used('calc(sign(0))', '0', {type:'integer'});
//Type checking sign //Type checking sign
test_math_used('sign(1px)', '1'); test_math_used('sign(1px)', '1', {type:'integer'});
test_math_used('sign(1cm)', '1'); test_math_used('sign(1cm)', '1', {type:'integer'});
test_math_used('sign(1mm)', '1'); test_math_used('sign(1mm)', '1', {type:'integer'});
test_math_used('sign(1Q)', '1'); test_math_used('sign(1Q)', '1', {type:'integer'});
test_math_used('sign(1in)', '1'); test_math_used('sign(1in)', '1', {type:'integer'});
test_math_used('sign(1pc)', '1'); test_math_used('sign(1pc)', '1', {type:'integer'});
test_math_used('sign(1pt)', '1'); test_math_used('sign(1pt)', '1', {type:'integer'});
test_math_used('sign(1em)', '1'); test_math_used('sign(1em)', '1', {type:'integer'});
test_math_used('sign(1ex)', '1'); test_math_used('sign(1ex)', '1', {type:'integer'});
test_math_used('sign(1ch)', '1'); test_math_used('sign(1ch)', '1', {type:'integer'});
test_math_used('sign(1rem)', '1'); test_math_used('sign(1rem)', '1', {type:'integer'});
test_math_used('sign(1vh)', '1'); test_math_used('sign(1vh)', '1', {type:'integer'});
test_math_used('sign(1vw)', '1'); test_math_used('sign(1vw)', '1', {type:'integer'});
test_math_used('sign(1vmin)', '1'); test_math_used('sign(1vmin)', '1', {type:'integer'});
test_math_used('sign(1vmax)', '1'); test_math_used('sign(1vmax)', '1', {type:'integer'});
test_math_used('sign(-1px)', '-1'); test_math_used('sign(-1px)', '-1', {type:'integer'});
test_math_used('sign(-1cm)', '-1'); test_math_used('sign(-1cm)', '-1', {type:'integer'});
test_math_used('sign(-1mm)', '-1'); test_math_used('sign(-1mm)', '-1', {type:'integer'});
test_math_used('sign(-1Q)', '-1'); test_math_used('sign(-1Q)', '-1', {type:'integer'});
test_math_used('sign(-1in)', '-1'); test_math_used('sign(-1in)', '-1', {type:'integer'});
test_math_used('sign(-1pc)', '-1'); test_math_used('sign(-1pc)', '-1', {type:'integer'});
test_math_used('sign(-1pt)', '-1'); test_math_used('sign(-1pt)', '-1', {type:'integer'});
test_math_used('sign(-1em)', '-1'); test_math_used('sign(-1em)', '-1', {type:'integer'});
test_math_used('sign(-1ex)', '-1'); test_math_used('sign(-1ex)', '-1', {type:'integer'});
test_math_used('sign(-1ch)', '-1'); test_math_used('sign(-1ch)', '-1', {type:'integer'});
test_math_used('sign(-1rem)', '-1'); test_math_used('sign(-1rem)', '-1', {type:'integer'});
test_math_used('sign(-1vh)', '-1'); test_math_used('sign(-1vh)', '-1', {type:'integer'});
test_math_used('sign(-1vw)', '-1'); test_math_used('sign(-1vw)', '-1', {type:'integer'});
test_math_used('sign(-1vmin)', '-1'); test_math_used('sign(-1vmin)', '-1', {type:'integer'});
test_math_used('sign(-1vmax)', '-1'); test_math_used('sign(-1vmax)', '-1', {type:'integer'});
test_math_used('sign(1s)', '1'); test_math_used('sign(1s)', '1', {type:'integer'});
test_math_used('sign(1ms)', '1'); test_math_used('sign(1ms)', '1', {type:'integer'});
test_math_used('sign(-1s)', '-1'); test_math_used('sign(-1s)', '-1', {type:'integer'});
test_math_used('sign(-1ms)', '-1'); test_math_used('sign(-1ms)', '-1', {type:'integer'});
test_math_used('sign(1deg)', '1'); test_math_used('sign(1deg)', '1', {type:'integer'});
test_math_used('sign(1grad)', '1'); test_math_used('sign(1grad)', '1', {type:'integer'});
test_math_used('sign(1rad)', '1'); test_math_used('sign(1rad)', '1', {type:'integer'});
test_math_used('sign(1turn)', '1'); test_math_used('sign(1turn)', '1', {type:'integer'});
test_math_used('sign(-1deg)', '-1'); test_math_used('sign(-1deg)', '-1', {type:'integer'});
test_math_used('sign(-1grad)', '-1'); test_math_used('sign(-1grad)', '-1', {type:'integer'});
test_math_used('sign(-1rad)', '-1'); test_math_used('sign(-1rad)', '-1', {type:'integer'});
test_math_used('sign(-1turn)', '-1'); test_math_used('sign(-1turn)', '-1', {type:'integer'});
test_math_used('sign(0px)', '0'); test_math_used('sign(0px)', '0', {type:'integer'});
test_math_used('sign(0cm)', '0'); test_math_used('sign(0cm)', '0', {type:'integer'});
test_math_used('sign(0mm)', '0'); test_math_used('sign(0mm)', '0', {type:'integer'});
test_math_used('sign(0Q)', '0'); test_math_used('sign(0Q)', '0', {type:'integer'});
test_math_used('sign(0in)', '0'); test_math_used('sign(0in)', '0', {type:'integer'});
test_math_used('sign(0pc)', '0'); test_math_used('sign(0pc)', '0', {type:'integer'});
test_math_used('sign(0pt)', '0'); test_math_used('sign(0pt)', '0', {type:'integer'});
test_math_used('sign(0em)', '0'); test_math_used('sign(0em)', '0', {type:'integer'});
test_math_used('sign(0ex)', '0'); test_math_used('sign(0ex)', '0', {type:'integer'});
test_math_used('sign(0ch)', '0'); test_math_used('sign(0ch)', '0', {type:'integer'});
test_math_used('sign(0rem)', '0'); test_math_used('sign(0rem)', '0', {type:'integer'});
test_math_used('sign(0vh)', '0'); test_math_used('sign(0vh)', '0', {type:'integer'});
test_math_used('sign(0vw)', '0'); test_math_used('sign(0vw)', '0', {type:'integer'});
test_math_used('sign(0vmin)', '0'); test_math_used('sign(0vmin)', '0', {type:'integer'});
test_math_used('sign(0vmax)', '0'); test_math_used('sign(0vmax)', '0', {type:'integer'});
test_math_used('sign(-0px)', '-0'); test_math_used('sign(-0px)', '-0', {type:'integer'});
test_math_used('sign(-0cm)', '-0'); test_math_used('sign(-0cm)', '-0', {type:'integer'});
test_math_used('sign(-0mm)', '-0'); test_math_used('sign(-0mm)', '-0', {type:'integer'});
test_math_used('sign(-0Q)', '-0'); test_math_used('sign(-0Q)', '-0', {type:'integer'});
test_math_used('sign(-0in)', '-0'); test_math_used('sign(-0in)', '-0', {type:'integer'});
test_math_used('sign(-0pc)', '-0'); test_math_used('sign(-0pc)', '-0', {type:'integer'});
test_math_used('sign(-0pt)', '-0'); test_math_used('sign(-0pt)', '-0', {type:'integer'});
test_math_used('sign(-0em)', '-0'); test_math_used('sign(-0em)', '-0', {type:'integer'});
test_math_used('sign(-0ex)', '-0'); test_math_used('sign(-0ex)', '-0', {type:'integer'});
test_math_used('sign(-0ch)', '-0'); test_math_used('sign(-0ch)', '-0', {type:'integer'});
test_math_used('sign(-0rem)', '-0'); test_math_used('sign(-0rem)', '-0', {type:'integer'});
test_math_used('sign(-0vh)', '-0'); test_math_used('sign(-0vh)', '-0', {type:'integer'});
test_math_used('sign(-0vw)', '-0'); test_math_used('sign(-0vw)', '-0', {type:'integer'});
test_math_used('sign(-0vmin)', '-0'); test_math_used('sign(-0vmin)', '-0', {type:'integer'});
test_math_used('sign(-0vmax)', '-0'); test_math_used('sign(-0vmax)', '-0', {type:'integer'});
test_math_used('sign(0s)', '0'); test_math_used('sign(0s)', '0', {type:'integer'});
test_math_used('sign(0ms)', '0'); test_math_used('sign(0ms)', '0', {type:'integer'});
test_math_used('sign(-0s)', '0'); test_math_used('sign(-0s)', '0', {type:'integer'});
test_math_used('sign(-0ms)', '0'); test_math_used('sign(-0ms)', '0', {type:'integer'});
test_math_used('sign(0deg)', '0'); test_math_used('sign(0deg)', '0', {type:'integer'});
test_math_used('sign(0grad)', '0'); test_math_used('sign(0grad)', '0', {type:'integer'});
test_math_used('sign(0rad)', '0'); test_math_used('sign(0rad)', '0', {type:'integer'});
test_math_used('sign(0turn)', '0'); test_math_used('sign(0turn)', '0', {type:'integer'});
test_math_used('sign(-0deg)', '-0'); test_math_used('sign(-0deg)', '-0', {type:'integer'});
test_math_used('sign(-0grad)', '-0'); test_math_used('sign(-0grad)', '-0', {type:'integer'});
test_math_used('sign(-0rad)', '-0'); test_math_used('sign(-0rad)', '-0', {type:'integer'});
test_math_used('sign(-0turn)', '-0'); test_math_used('sign(-0turn)', '-0', {type:'integer'});
//Type checking abs //Type checking abs
test_math_used('abs(1px)', '1px'); test_math_used('abs(1px)', '1px');
@ -161,4 +161,4 @@ test_math_used('abs(-1deg)', '1deg', {type:'angle', approx:0.001});
test_math_used('abs(-1grad)', '1grad', {type:'angle', approx:0.001}); test_math_used('abs(-1grad)', '1grad', {type:'angle', approx:0.001});
test_math_used('abs(-1rad)', '1rad', {type:'angle', approx:0.001}); test_math_used('abs(-1rad)', '1rad', {type:'angle', approx:0.001});
test_math_used('abs(-1turn)', '1turn', {type:'angle', approx:0.001}); test_math_used('abs(-1turn)', '1turn', {type:'angle', approx:0.001});
</script> </script>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html [<?xml-stylesheet href="data:text/css,html{z-index: 1}"?>]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>xml-stylesheet processing instruction in doctype internal subset</title>
<link rel="help" href="https://w3c.github.io/csswg-drafts/cssom/#prolog"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
promise_test(async () => {
await new Promise(resolve => window.onload = resolve);
assert_equals(getComputedStyle(document.documentElement).zIndex, "auto");
});
</script>
</body>
</html>

View file

@ -26,7 +26,7 @@ function test_computed_value(property, specified, computed, titleExtra) {
assert_in_array(readValue, computed); assert_in_array(readValue, computed);
} else { } else {
if (property == "color") if (property == "color")
colorValuesAlmostEqual(readValue, computed, 0.0001); colorValuesAlmostEqual(readValue, computed, 0.0001, 1);
else else
assert_equals(readValue, computed); assert_equals(readValue, computed);
} }
@ -39,7 +39,9 @@ function test_computed_value(property, specified, computed, titleExtra) {
}, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`); }, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`);
} }
function colorValuesAlmostEqual(color1, color2, epsilon) { function colorValuesAlmostEqual(color1, color2, float_epsilon, integer_epsilon) {
// Legacy color formats use integers in [0, 255] and thus will have wider epsilons
const epsilon = getNonNumbers(color1).startsWith("rgb") ? integer_epsilon : float_epsilon;
// Colors can be split by spaces, commas or the '(' character. // Colors can be split by spaces, commas or the '(' character.
const colorElementDividers = /( |\(|,)/; const colorElementDividers = /( |\(|,)/;
// Return the string stripped of numbers. // Return the string stripped of numbers.

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<title>Test that documentPictureInPicture.requestWindow()
fails if width or height is specified without the other</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>
<body>
<script>
promise_test(async t => {
await test_driver.bless('request PiP window');
await promise_rejects_js(t, RangeError,
documentPictureInPicture.requestWindow({width: 500}));
},
"requestWindow should fail when width is specified without height");
promise_test(async t => {
await test_driver.bless('request PiP window');
await promise_rejects_js(t, RangeError,
documentPictureInPicture.requestWindow({height: 300}));
},
"requestWindow should fail when height is specified without width");
</script>
</body>

View file

@ -58,6 +58,17 @@ function waitForCompositorCommit() {
}); });
}); });
} }
// Please don't remove this. This is necessary for chromium-based browsers.
// This shouldn't be necessary if the test harness deferred running the tests
// until after paint holding. This can be a no-op on user-agents that do not
// have a separate compositor thread.
async function waitForCompositorReady() {
const animation =
document.body.animate({ opacity: [ 1, 1 ] }, {duration: 1 });
return animation.finished;
}
function waitForNextFrame() { function waitForNextFrame() {
const startTime = performance.now(); const startTime = performance.now();
return new Promise(resolve => { return new Promise(resolve => {
@ -71,7 +82,6 @@ function waitForNextFrame() {
}); });
} }
// TODO(crbug.com/1400399): Deprecate as frame rates may vary greatly in // TODO(crbug.com/1400399): Deprecate as frame rates may vary greatly in
// different test environments. // different test environments.
function waitForAnimationEnd(getValue) { function waitForAnimationEnd(getValue) {

View file

@ -45,8 +45,8 @@ async function verifyNoScrollendOnDocument(test) {
window.addEventListener('scrollend', callback); window.addEventListener('scrollend', callback);
} }
async function createScrollendPromise(test) { async function createScrollendPromise(test, timeoutMs = 500) {
return waitForScrollendEvent(test, target_div).then(evt => { return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
assert_false(evt.cancelable, 'Event is not cancelable'); assert_false(evt.cancelable, 'Event is not cancelable');
assert_false(evt.bubbles, 'Event targeting element does not bubble'); assert_false(evt.bubbles, 'Event targeting element does not bubble');
}); });
@ -60,11 +60,21 @@ function runTest() {
return; return;
await resetTargetScrollState(t); await resetTargetScrollState(t);
await waitForCompositorCommit(); await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t); const timeout = 1000; // Because we have two pauses we need longer timeout
const targetScrollendPromise = createScrollendPromise(t, timeout);
verifyNoScrollendOnDocument(t); verifyNoScrollendOnDocument(t);
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);
});
// Perform a touch drag on target div and wait for target_div to get // Perform a touch drag on target div and wait for target_div to get
// a scrollend event. // a scrollend event.
await new test_driver.Actions() await new test_driver.Actions()
@ -75,6 +85,9 @@ function runTest() {
.pointerMove(0, -40, {origin: target_div}) // Drag up to move down. .pointerMove(0, -40, {origin: target_div}) // Drag up to move down.
.addTick() .addTick()
.pause(200) // Prevent inertial scroll. .pause(200) // Prevent inertial scroll.
.pointerMove(0, -60, {origin: target_div})
.addTick()
.pause(200) // Prevent inertial scroll.
.pointerUp() .pointerUp()
.send(); .send();
@ -82,6 +95,7 @@ function runTest() {
assert_true(target_div.scrollTop > 0); assert_true(target_div.scrollTop > 0);
await verifyScrollStopped(t, target_div); await verifyScrollStopped(t, target_div);
assert_equals(scrollend_count, 1);
}, 'Tests that the target_div gets scrollend event when touch dragging.'); }, 'Tests that the target_div gets scrollend event when touch dragging.');
promise_test(async (t) => { promise_test(async (t) => {
@ -92,7 +106,7 @@ function runTest() {
return; return;
await resetTargetScrollState(t); await resetTargetScrollState(t);
await waitForCompositorCommit(); await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t); const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t); verifyNoScrollendOnDocument(t);
@ -122,7 +136,9 @@ function runTest() {
if (scrollbar_width == 0) if (scrollbar_width == 0)
return; return;
resetTargetScrollState(t); await resetTargetScrollState(t);
await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t); const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t); verifyNoScrollendOnDocument(t);
@ -146,7 +162,9 @@ function runTest() {
'scrollbar thumb.'); 'scrollbar thumb.');
promise_test(async (t) => { promise_test(async (t) => {
resetTargetScrollState(t); await resetTargetScrollState(t);
await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t); const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t); verifyNoScrollendOnDocument(t);
@ -167,7 +185,7 @@ function runTest() {
promise_test(async (t) => { promise_test(async (t) => {
await resetTargetScrollState(t); await resetTargetScrollState(t);
await waitForCompositorCommit(); await waitForCompositorReady();
verifyNoScrollendOnDocument(t); verifyNoScrollendOnDocument(t);
const targetScrollendPromise = createScrollendPromise(t); const targetScrollendPromise = createScrollendPromise(t);

View file

@ -0,0 +1,15 @@
<!DOCTYPE html [<!--x-->]><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML: Comment in doctype internal subset</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
test(() => {
assert_equals(document.documentElement.previousSibling, document.firstChild);
assert_equals(document.firstChild.nodeType, Node.DOCUMENT_TYPE_NODE);
});
</script>
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html [<?x y?>]><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML: Processing instruction in doctype internal subset</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
test(() => {
assert_equals(document.documentElement.previousSibling, document.firstChild);
assert_equals(document.firstChild.nodeType, Node.DOCUMENT_TYPE_NODE);
});
</script>
</body>
</html>

View file

@ -2806,4 +2806,66 @@ var browserTests = [
"<ul><li>abcghi<br></li></ul>"], "<ul><li>abcghi<br></li></ul>"],
[true], [true],
{"delete":[false,false,"",false,false,""]}], {"delete":[false,false,"",false,false,""]}],
// <font>s shouldn't be joined if they have different attributes.
["<p><font color=blue>foo</font><p><font color=brown>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font color=\"blue\">foo[]</font><font color=\"brown\">bar</font></p>",
[true,true,true],
{"foreColor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}],
["<p><font color=blue>foo</font><p><font color=brown>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font color=\"blue\">foo[]</font><font color=\"brown\">bar</font></p>",
[true,true,true],
{"foreColor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}],
["<p><font size=3>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font size=\"3\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"3"]}],
["<p><font size=3>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font size=\"3\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"3"]}],
["<p><font size=4>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font size=\"4\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"4"]}],
["<p><font size=4>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font size=\"4\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"4"]}],
["<p><font color=blue>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font color=\"blue\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"3"],"foreColor":[false,false,"rgb(0, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
["<p><font color=blue>foo</font><p><font size=5>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font color=\"blue\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"3"],"foreColor":[false,false,"rgb(0, 0, 0)",false,false,"rgb(0, 0, 255)"]}],
["<p><font size=5>foo</font><p><font color=blue>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font size=\"5\">foo[]</font><font color=\"blue\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"5"],"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 0)"]}],
["<p><font size=5>foo</font><p><font color=blue>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font size=\"5\">foo[]</font><font color=\"blue\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"5"],"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 0)"]}],
["<p><font face=monospace>foo</font><p><font face=sans-serif>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["delete",""]],
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"sans-serif",false,false,"monospace"]}],
["<p><font face=monospace>foo</font><p><font face=sans-serif>[]bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["delete",""]],
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"sans-serif",false,false,"monospace"]}],
] ]

View file

@ -370,9 +370,13 @@ var browserTests = [
"foo{<font color=\"#0000ff\">bar}</font>baz", "foo{<font color=\"#0000ff\">bar}</font>baz",
[true,true], [true,true],
{"stylewithcss":[false,true,"",false,false,""],"forecolor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}], {"stylewithcss":[false,true,"",false,false,""],"forecolor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
// Once the inner <span> style is updated, it has same style as the outer one.
// Therefore, it may be okay to use the outer one is the only container of the
// text nodes or it may be okay to split the outer one and keep 3 <span>s.
["<span style=\"color: blue\">foo<span style=\"color: brown\">[bar]</span>baz</span>", ["<span style=\"color: blue\">foo<span style=\"color: brown\">[bar]</span>baz</span>",
[["stylewithcss","true"],["forecolor","#0000FF"]], [["stylewithcss","true"],["forecolor","#0000FF"]],
"<span style=\"color:rgb(0, 0, 255)\">foo</span><span style=\"color:rgb(0, 0, 255)\">bar</span><span style=\"color:rgb(0, 0, 255)\">baz</span>", ["<span style=\"color:rgb(0, 0, 255)\">foo</span><span style=\"color:rgb(0, 0, 255)\">bar</span><span style=\"color:rgb(0, 0, 255)\">baz</span>",
"<span style=\"color:rgb(0, 0, 255)\">foo[bar]baz</span>"],
[true,true], [true,true],
{"stylewithcss":[false,false,"",false,true,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}], {"stylewithcss":[false,false,"",false,true,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}],
["<span style=\"color: blue\">foo<span style=\"color: brown\">[bar]</span>baz</span>", ["<span style=\"color: blue\">foo<span style=\"color: brown\">[bar]</span>baz</span>",
@ -410,9 +414,12 @@ var browserTests = [
"<span style=\"color:rgb(0, 0, 255)\">foo[bar]baz</span>", "<span style=\"color:rgb(0, 0, 255)\">foo[bar]baz</span>",
[true,true], [true,true],
{"stylewithcss":[false,true,"",false,false,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}], {"stylewithcss":[false,true,"",false,false,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}],
// Use the inner <font> for the `style` attribute container. Then, the outer
// <font> should be split and may be serialized.
["<font color=blue>foo<font color=brown>[bar]</font>baz</font>", ["<font color=blue>foo<font color=brown>[bar]</font>baz</font>",
[["stylewithcss","true"],["forecolor","#0000FF"]], [["stylewithcss","true"],["forecolor","#0000FF"]],
"<font color=\"blue\">foo[bar]baz</font>", ["<span style=\"color:rgb(0, 0, 255)\">foo</span><font style=\"color:rgb(0, 0, 255)\">bar</font><span style=\"color:rgb(0, 0, 255)\">baz</span>",
"<font color=\"blue\">foo</font><span style=\"color:rgb(0, 0, 255)\">bar</span><font color=\"blue\">baz</font>"],
[true,true], [true,true],
{"stylewithcss":[false,false,"",false,true,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}], {"stylewithcss":[false,false,"",false,true,""],"forecolor":[false,false,"rgb(165, 42, 42)",false,false,"rgb(0, 0, 255)"]}],
["<font color=blue>foo<font color=brown>[bar]</font>baz</font>", ["<font color=blue>foo<font color=brown>[bar]</font>baz</font>",

View file

@ -2686,4 +2686,66 @@ var browserTests = [
"<ul><li>abcghi<br></li></ul>"], "<ul><li>abcghi<br></li></ul>"],
[true], [true],
{"forwarddelete":[false,false,"",false,false,""]}], {"forwarddelete":[false,false,"",false,false,""]}],
// <font>s shouldn't be joined if they have different attributes.
["<p><font color=blue>foo[]</font><p><font color=brown>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font color=\"blue\">foo[]</font><font color=\"brown\">bar</font></p>",
[true,true,true],
{"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
["<p><font color=blue>foo[]</font><p><font color=brown>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font color=\"blue\">foo[]</font><font color=\"brown\">bar</font></p>",
[true,true,true],
{"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
["<p><font size=3>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font size=\"3\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"3"]}],
["<p><font size=3>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font size=\"3\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"3"]}],
["<p><font size=4>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font size=\"4\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"4",false,false,"4"]}],
["<p><font size=4>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font size=\"4\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"4",false,false,"4"]}],
["<p><font color=blue>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font color=\"blue\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"3"],"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
["<p><font color=blue>foo[]</font><p><font size=5>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font color=\"blue\">foo[]</font><font size=\"5\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"3",false,false,"3"],"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}],
["<p><font size=5>foo[]</font><p><font color=blue>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font size=\"5\">foo[]</font><font color=\"blue\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"5"],"foreColor":[false,false,"rgb(0, 0, 0)",false,false,"rgb(0, 0, 0)"]}],
["<p><font size=5>foo[]</font><p><font color=blue>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font size=\"5\">foo[]</font><font color=\"blue\">bar</font></p>",
[true,true,true],
{"fontSize":[false,false,"5",false,false,"5"],"foreColor":[false,false,"rgb(0, 0, 0)",false,false,"rgb(0, 0, 0)"]}],
["<p><font face=monospace>foo[]</font><p><font face=sans-serif>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","div"],["forwarddelete",""]],
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"monospace",false,false,"monospace"]}],
["<p><font face=monospace>foo[]</font><p><font face=sans-serif>bar</font>",
[["styleWithCSS","false"],["defaultparagraphseparator","p"],["forwarddelete",""]],
"<p><font face=\"monospace\">foo[]</font><font face=\"sans-serif\">bar</font></p>",
[true,true,true],
{"fontName":[false,false,"monospace",false,false,"monospace"]}],
] ]

View file

@ -22,8 +22,10 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 15, 20, 20); ctx.fillRect(15, 15, 20, 20);
@ -31,6 +33,7 @@ ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
@ -38,12 +41,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.fillRect(65, 15, 20, 20); ctx.fillRect(65, 15, 20, 20);
_assertPixel(canvas, 25,14, 0,255,0,255); _assertPixel(canvas, 25,14, 0,255,0,255);
_assertPixel(canvas, 25,15, 0,255,0,255); _assertPixel(canvas, 25,15, 0,255,0,255);
_assertPixel(canvas, 25,16, 0,255,0,255); _assertPixel(canvas, 25,16, 0,255,0,255);
_assertPixel(canvas, 25,34, 0,255,0,255); _assertPixel(canvas, 25,34, 0,255,0,255);
_assertPixel(canvas, 25,35, 0,255,0,255); _assertPixel(canvas, 25,35, 0,255,0,255);
_assertPixel(canvas, 25,36, 0,255,0,255); _assertPixel(canvas, 25,36, 0,255,0,255);
_assertPixel(canvas, 75,14, 0,255,0,255); _assertPixel(canvas, 75,14, 0,255,0,255);
_assertPixel(canvas, 75,15, 0,255,0,255); _assertPixel(canvas, 75,15, 0,255,0,255);
_assertPixel(canvas, 75,16, 0,255,0,255); _assertPixel(canvas, 75,16, 0,255,0,255);

View file

@ -18,8 +18,10 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 15, 20, 20); ctx.fillRect(15, 15, 20, 20);
@ -27,6 +29,7 @@ ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
@ -34,12 +37,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.fillRect(65, 15, 20, 20); ctx.fillRect(65, 15, 20, 20);
_assertPixel(canvas, 25,14, 0,255,0,255); _assertPixel(canvas, 25,14, 0,255,0,255);
_assertPixel(canvas, 25,15, 0,255,0,255); _assertPixel(canvas, 25,15, 0,255,0,255);
_assertPixel(canvas, 25,16, 0,255,0,255); _assertPixel(canvas, 25,16, 0,255,0,255);
_assertPixel(canvas, 25,34, 0,255,0,255); _assertPixel(canvas, 25,34, 0,255,0,255);
_assertPixel(canvas, 25,35, 0,255,0,255); _assertPixel(canvas, 25,35, 0,255,0,255);
_assertPixel(canvas, 25,36, 0,255,0,255); _assertPixel(canvas, 25,36, 0,255,0,255);
_assertPixel(canvas, 75,14, 0,255,0,255); _assertPixel(canvas, 75,14, 0,255,0,255);
_assertPixel(canvas, 75,15, 0,255,0,255); _assertPixel(canvas, 75,15, 0,255,0,255);
_assertPixel(canvas, 75,16, 0,255,0,255); _assertPixel(canvas, 75,16, 0,255,0,255);

View file

@ -23,9 +23,11 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel'; ctx.lineJoin = 'bevel';
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 400; ctx.lineWidth = 400;
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(200, 200); ctx.moveTo(200, 200);
ctx.lineTo(200, 1000); ctx.lineTo(200, 1000);
@ -33,6 +35,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200); ctx.lineTo(1000, 200);
ctx.closePath(); ctx.closePath();
ctx.stroke(); ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255); _assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 0,255,0,255); _assertPixel(canvas, 48,1, 0,255,0,255);
_assertPixel(canvas, 48,48, 0,255,0,255); _assertPixel(canvas, 48,48, 0,255,0,255);

View file

@ -19,9 +19,11 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel'; ctx.lineJoin = 'bevel';
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 400; ctx.lineWidth = 400;
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(200, 200); ctx.moveTo(200, 200);
ctx.lineTo(200, 1000); ctx.lineTo(200, 1000);
@ -29,6 +31,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200); ctx.lineTo(1000, 200);
ctx.closePath(); ctx.closePath();
ctx.stroke(); ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255); _assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 0,255,0,255); _assertPixel(canvas, 48,1, 0,255,0,255);
_assertPixel(canvas, 48,48, 0,255,0,255); _assertPixel(canvas, 48,48, 0,255,0,255);

View file

@ -22,21 +22,27 @@ var ctx = canvas.getContext('2d');
ctx.lineCap = 'butt' ctx.lineCap = 'butt'
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'invalid'; ctx.lineCap = 'invalid';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'ROUND'; ctx.lineCap = 'ROUND';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'round\0'; ctx.lineCap = 'round\0';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'round '; ctx.lineCap = 'round ';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = ""; ctx.lineCap = "";
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'bevel'; ctx.lineCap = 'bevel';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");

View file

@ -18,21 +18,27 @@ var ctx = canvas.getContext('2d');
ctx.lineCap = 'butt' ctx.lineCap = 'butt'
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'invalid'; ctx.lineCap = 'invalid';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'ROUND'; ctx.lineCap = 'ROUND';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'round\0'; ctx.lineCap = 'round\0';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'round '; ctx.lineCap = 'round ';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = ""; ctx.lineCap = "";
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt'; ctx.lineCap = 'butt';
ctx.lineCap = 'bevel'; ctx.lineCap = 'bevel';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");

View file

@ -23,9 +23,11 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel'; ctx.lineJoin = 'bevel';
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 400; ctx.lineWidth = 400;
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(200, 200); ctx.moveTo(200, 200);
ctx.lineTo(200, 1000); ctx.lineTo(200, 1000);
@ -33,6 +35,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200); ctx.lineTo(1000, 200);
ctx.lineTo(200, 200); ctx.lineTo(200, 200);
ctx.stroke(); ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255); _assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 0,255,0,255); _assertPixel(canvas, 48,1, 0,255,0,255);
_assertPixel(canvas, 48,48, 0,255,0,255); _assertPixel(canvas, 48,48, 0,255,0,255);

View file

@ -19,9 +19,11 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel'; ctx.lineJoin = 'bevel';
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 400; ctx.lineWidth = 400;
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(200, 200); ctx.moveTo(200, 200);
ctx.lineTo(200, 1000); ctx.lineTo(200, 1000);
@ -29,6 +31,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200); ctx.lineTo(1000, 200);
ctx.lineTo(200, 200); ctx.lineTo(200, 200);
ctx.stroke(); ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255); _assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 0,255,0,255); _assertPixel(canvas, 48,1, 0,255,0,255);
_assertPixel(canvas, 48,48, 0,255,0,255); _assertPixel(canvas, 48,48, 0,255,0,255);

View file

@ -22,37 +22,49 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
var tol = 1; // tolerance to avoid antialiasing artifacts var tol = 1; // tolerance to avoid antialiasing artifacts
ctx.lineCap = 'round'; ctx.lineCap = 'round';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(35-tol, 15); ctx.moveTo(35-tol, 15);
ctx.arc(25, 15, 10-tol, 0, Math.PI, true); ctx.arc(25, 15, 10-tol, 0, Math.PI, true);
ctx.arc(25, 35, 10-tol, Math.PI, 0, true); ctx.arc(25, 35, 10-tol, Math.PI, 0, true);
ctx.fill(); ctx.fill();
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(75, 15); ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(85+tol, 15); ctx.moveTo(85+tol, 15);
ctx.arc(75, 15, 10+tol, 0, Math.PI, true); ctx.arc(75, 15, 10+tol, 0, Math.PI, true);
ctx.arc(75, 35, 10+tol, Math.PI, 0, true); ctx.arc(75, 35, 10+tol, Math.PI, 0, true);
ctx.fill(); ctx.fill();
_assertPixel(canvas, 17,6, 0,255,0,255); _assertPixel(canvas, 17,6, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255); _assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 32,6, 0,255,0,255); _assertPixel(canvas, 32,6, 0,255,0,255);
_assertPixel(canvas, 17,43, 0,255,0,255); _assertPixel(canvas, 17,43, 0,255,0,255);
_assertPixel(canvas, 25,43, 0,255,0,255); _assertPixel(canvas, 25,43, 0,255,0,255);
_assertPixel(canvas, 32,43, 0,255,0,255); _assertPixel(canvas, 32,43, 0,255,0,255);
_assertPixel(canvas, 67,6, 0,255,0,255); _assertPixel(canvas, 67,6, 0,255,0,255);
_assertPixel(canvas, 75,6, 0,255,0,255); _assertPixel(canvas, 75,6, 0,255,0,255);
_assertPixel(canvas, 82,6, 0,255,0,255); _assertPixel(canvas, 82,6, 0,255,0,255);

View file

@ -18,37 +18,49 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
var tol = 1; // tolerance to avoid antialiasing artifacts var tol = 1; // tolerance to avoid antialiasing artifacts
ctx.lineCap = 'round'; ctx.lineCap = 'round';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(35-tol, 15); ctx.moveTo(35-tol, 15);
ctx.arc(25, 15, 10-tol, 0, Math.PI, true); ctx.arc(25, 15, 10-tol, 0, Math.PI, true);
ctx.arc(25, 35, 10-tol, Math.PI, 0, true); ctx.arc(25, 35, 10-tol, Math.PI, 0, true);
ctx.fill(); ctx.fill();
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(75, 15); ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(85+tol, 15); ctx.moveTo(85+tol, 15);
ctx.arc(75, 15, 10+tol, 0, Math.PI, true); ctx.arc(75, 15, 10+tol, 0, Math.PI, true);
ctx.arc(75, 35, 10+tol, Math.PI, 0, true); ctx.arc(75, 35, 10+tol, Math.PI, 0, true);
ctx.fill(); ctx.fill();
_assertPixel(canvas, 17,6, 0,255,0,255); _assertPixel(canvas, 17,6, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255); _assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 32,6, 0,255,0,255); _assertPixel(canvas, 32,6, 0,255,0,255);
_assertPixel(canvas, 17,43, 0,255,0,255); _assertPixel(canvas, 17,43, 0,255,0,255);
_assertPixel(canvas, 25,43, 0,255,0,255); _assertPixel(canvas, 25,43, 0,255,0,255);
_assertPixel(canvas, 32,43, 0,255,0,255); _assertPixel(canvas, 32,43, 0,255,0,255);
_assertPixel(canvas, 67,6, 0,255,0,255); _assertPixel(canvas, 67,6, 0,255,0,255);
_assertPixel(canvas, 75,6, 0,255,0,255); _assertPixel(canvas, 75,6, 0,255,0,255);
_assertPixel(canvas, 82,6, 0,255,0,255); _assertPixel(canvas, 82,6, 0,255,0,255);

View file

@ -22,8 +22,10 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 5, 20, 40); ctx.fillRect(15, 5, 20, 40);
@ -31,6 +33,7 @@ ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
@ -38,12 +41,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.fillRect(65, 5, 20, 40); ctx.fillRect(65, 5, 20, 40);
_assertPixel(canvas, 25,4, 0,255,0,255); _assertPixel(canvas, 25,4, 0,255,0,255);
_assertPixel(canvas, 25,5, 0,255,0,255); _assertPixel(canvas, 25,5, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255); _assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 25,44, 0,255,0,255); _assertPixel(canvas, 25,44, 0,255,0,255);
_assertPixel(canvas, 25,45, 0,255,0,255); _assertPixel(canvas, 25,45, 0,255,0,255);
_assertPixel(canvas, 25,46, 0,255,0,255); _assertPixel(canvas, 25,46, 0,255,0,255);
_assertPixel(canvas, 75,4, 0,255,0,255); _assertPixel(canvas, 75,4, 0,255,0,255);
_assertPixel(canvas, 75,5, 0,255,0,255); _assertPixel(canvas, 75,5, 0,255,0,255);
_assertPixel(canvas, 75,6, 0,255,0,255); _assertPixel(canvas, 75,6, 0,255,0,255);

View file

@ -18,8 +18,10 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
ctx.lineCap = 'square'; ctx.lineCap = 'square';
ctx.lineWidth = 20; ctx.lineWidth = 20;
ctx.fillStyle = '#f00'; ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0'; ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 5, 20, 40); ctx.fillRect(15, 5, 20, 40);
@ -27,6 +29,7 @@ ctx.beginPath();
ctx.moveTo(25, 15); ctx.moveTo(25, 15);
ctx.lineTo(25, 35); ctx.lineTo(25, 35);
ctx.stroke(); ctx.stroke();
ctx.fillStyle = '#0f0'; ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00'; ctx.strokeStyle = '#f00';
ctx.beginPath(); ctx.beginPath();
@ -34,12 +37,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35); ctx.lineTo(75, 35);
ctx.stroke(); ctx.stroke();
ctx.fillRect(65, 5, 20, 40); ctx.fillRect(65, 5, 20, 40);
_assertPixel(canvas, 25,4, 0,255,0,255); _assertPixel(canvas, 25,4, 0,255,0,255);
_assertPixel(canvas, 25,5, 0,255,0,255); _assertPixel(canvas, 25,5, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255); _assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 25,44, 0,255,0,255); _assertPixel(canvas, 25,44, 0,255,0,255);
_assertPixel(canvas, 25,45, 0,255,0,255); _assertPixel(canvas, 25,45, 0,255,0,255);
_assertPixel(canvas, 25,46, 0,255,0,255); _assertPixel(canvas, 25,46, 0,255,0,255);
_assertPixel(canvas, 75,4, 0,255,0,255); _assertPixel(canvas, 75,4, 0,255,0,255);
_assertPixel(canvas, 75,5, 0,255,0,255); _assertPixel(canvas, 75,5, 0,255,0,255);
_assertPixel(canvas, 75,6, 0,255,0,255); _assertPixel(canvas, 75,6, 0,255,0,255);

View file

@ -22,8 +22,10 @@ var ctx = canvas.getContext('2d');
ctx.lineCap = 'butt' ctx.lineCap = 'butt'
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); _assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'round'; ctx.lineCap = 'round';
_assertSame(ctx.lineCap, 'round', "ctx.lineCap", "'round'"); _assertSame(ctx.lineCap, 'round', "ctx.lineCap", "'round'");
ctx.lineCap = 'square'; ctx.lineCap = 'square';
_assertSame(ctx.lineCap, 'square', "ctx.lineCap", "'square'"); _assertSame(ctx.lineCap, 'square', "ctx.lineCap", "'square'");
t.done(); t.done();

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