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]
[elementsFromPoint]
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']
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']
expected: FAIL
@ -245,9 +242,6 @@
[Matching font-weight: '501' should prefer '500' over '450 460']
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']
expected: FAIL

View file

@ -175,303 +175,3 @@
[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
[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]
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]
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]
expected: FAIL
@ -628,153 +355,3 @@
[left percentage(%) / events]
expected: FAIL
[color color(rgba) / events]
expected: FAIL
[font-size length(pt) / events]
expected: FAIL
[font-size length(pc) / events]
expected: FAIL
[font-size length(px) / events]
expected: FAIL
[font-size length(em) / events]
expected: FAIL
[font-size length(ex) / events]
expected: FAIL
[font-size length(mm) / events]
expected: FAIL
[font-size length(cm) / events]
expected: FAIL
[font-size length(in) / events]
expected: FAIL
[font-size percentage(%) / events]
expected: FAIL
[font-weight font-weight(keyword) / events]
expected: FAIL
[font-weight font-weight(numeric) / events]
expected: FAIL
[line-height number(integer) / events]
expected: FAIL
[line-height number(decimal) / events]
expected: FAIL
[line-height length(pt) / events]
expected: FAIL
[line-height length(pc) / events]
expected: FAIL
[line-height length(px) / events]
expected: FAIL
[line-height length(em) / events]
expected: FAIL
[line-height length(ex) / events]
expected: FAIL
[line-height length(mm) / events]
expected: FAIL
[line-height length(cm) / events]
expected: FAIL
[line-height length(in) / events]
expected: FAIL
[line-height percentage(%) / events]
expected: FAIL
[letter-spacing length(pt) / events]
expected: FAIL
[letter-spacing length(pc) / events]
expected: FAIL
[letter-spacing length(px) / events]
expected: FAIL
[letter-spacing length(em) / events]
expected: FAIL
[letter-spacing length(ex) / events]
expected: FAIL
[letter-spacing length(mm) / events]
expected: FAIL
[letter-spacing length(cm) / events]
expected: FAIL
[letter-spacing length(in) / events]
expected: FAIL
[word-spacing length(pt) / events]
expected: FAIL
[word-spacing length(pc) / events]
expected: FAIL
[word-spacing length(px) / events]
expected: FAIL
[word-spacing length(em) / events]
expected: FAIL
[word-spacing length(ex) / events]
expected: FAIL
[word-spacing length(mm) / events]
expected: FAIL
[word-spacing length(cm) / events]
expected: FAIL
[word-spacing length(in) / events]
expected: FAIL
[word-spacing percentage(%) / events]
expected: FAIL
[text-indent length(pt) / events]
expected: FAIL
[text-indent length(pc) / events]
expected: FAIL
[text-indent length(px) / events]
expected: FAIL
[text-indent length(em) / events]
expected: FAIL
[text-indent length(ex) / events]
expected: FAIL
[text-indent length(mm) / events]
expected: FAIL
[text-indent length(cm) / events]
expected: FAIL
[text-indent length(in) / events]
expected: FAIL
[text-indent percentage(%) / events]
expected: FAIL
[text-shadow shadow(shadow) / events]
expected: FAIL

View file

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

View file

@ -17,3 +17,6 @@
[test some point of the element: bottom right corner]
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]
expected: ERROR
[Single value - name is missing]
expected: FAIL
[Single value - Non-empty name exists]
expected: FAIL

View file

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

View file

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

View file

@ -13,3 +13,6 @@
[X-Content-Type-Options%3A%20%22nosniFF%22]
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]
expected: TIMEOUT
[Navigating to a different document with link click]
expected: FAIL

View file

@ -1,6 +1,10 @@
[javascript-url-referrer.window.html]
expected: TIMEOUT
[unsafe-url referrer policy used to create the starting page]
expected: FAIL
[origin referrer policy used to create the starting page]
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]
expected: TIMEOUT
[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]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Element with tabindex should support autofocus]
expected: FAIL
expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL
expected: NOTRUN
[Area element should support autofocus]
expected: FAIL
expected: NOTRUN
[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]
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
expected: TIMEOUT

View file

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

View file

@ -175,3 +175,6 @@
[multipart/form-data: Basic test (formdata event)]
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)]
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]
expected: TIMEOUT
[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]
expected: FAIL

View file

@ -13,34 +13,34 @@
expected: FAIL
[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]
expected: NOTRUN
expected: FAIL
[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]
expected: NOTRUN
expected: FAIL
[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]
expected: NOTRUN
expected: FAIL
[content-type 10 : text/plain,*/*]
expected: NOTRUN
expected: FAIL
[content-type 11 : text/html,*/*]
expected: NOTRUN
expected: FAIL
[content-type 12 : */*,text/html]
expected: NOTRUN
expected: FAIL
[content-type 13 : text/plain,*/*;charset=gbk]
expected: NOTRUN
expected: TIMEOUT
[content-type 14 : text/html,*/*;charset=gbk]
expected: NOTRUN

View file

@ -1318,9 +1318,6 @@
[<area>: Setting <http://test/>.protocol = 'https\x0c']
expected: FAIL
[<a>: Setting <http://test/>.protocol = 'https\r']
expected: FAIL
[<area>: Setting <http://test/>.protocol = 'https\r']
expected: FAIL
@ -1330,6 +1327,15 @@
[<area>: Setting <http://test/>.protocol = 'https ']
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]
[<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']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\r']
[URL: Setting <http://test/>.protocol = 'https ']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https ']
[URL: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL
@ -200,8 +200,8 @@
[URL: Setting <http://test/>.protocol = 'https\x0c']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\r']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https ']
expected: FAIL
[URL: Setting <http://test/>.protocol = 'https\x0e']
expected: FAIL

View file

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

View file

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

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]
expected: TIMEOUT
[error while reading body should report zeros for loaded and total]
expected: FAIL
[onerror should be called]
expected: TIMEOUT
[event-error.sub.any.worker.html]
[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>
<script>
checkLayout('.target');
checkLayout('.target', false);
container.classList.add('after');
for (const element of document.getElementsByClassName('target')) {
if (element.dataset.offsetX === '5')
@ -49,6 +49,6 @@ for (const element of document.getElementsByClassName('target')) {
if (element.dataset.expectedWidth === '5')
element.dataset.expectedWidth = '10';
}
checkLayout('.after .target');
checkLayout('.after .target', true);
</script>
</body>

View file

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

View file

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

View file

@ -34,7 +34,8 @@
}
</style>
<body id="container" onload="checkLayout('.target')">
<body onload="checkLayout('.target')">
<div id="container">
<div class="flex-item" id="a1"></div>
<div class="flex-item"></div>
<div class="flex-item"></div>
@ -59,9 +60,10 @@
<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="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, 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, 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>

View file

@ -10,7 +10,7 @@
-->
<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">
<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.">
<style>
div

View file

@ -10,7 +10,7 @@
-->
<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">
<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.">
<style>
div

View file

@ -10,6 +10,7 @@
-->
<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">
<meta name="fuzzy" content="maxDifference=0-58;totalPixels=0-412">
<style>
div {
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('oR');
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>

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; }
}`, '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>

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
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(100grad) ))', '90deg', {type:'angle', approx:0.1});
test_math_used('calc(acos(cos(0 / 2 + 1 - 1) ))', '0deg', {type:'angle', approx:0.1});

View file

@ -19,10 +19,10 @@ test_math_used('calc(e - exp(1))', '0', {type:'number', approx:0.1});
//General calculations
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(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)*20, 10))', '1.3'), {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(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(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((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>
// Identity tests
test_math_used('pow(1,1)', '1', {type:'number'});
test_math_used('sqrt(1)', '1', {type:'number'});
test_math_used('hypot(1)', '1', {type:'number'});
test_math_used('pow(1,1)', '1', {type:'integer'});
test_math_used('sqrt(1)', '1', {type:'integer'});
test_math_used('hypot(1)', '1', {type:'integer'});
// Nestings
test_math_used('sqrt(pow(1,1))', '1');
test_math_used('hypot(pow(1, sqrt(1)))', '1');
test_math_used('calc(hypot(pow((1 + sqrt(1)) / 2, sqrt(1))))', '1');
test_math_used('sqrt(pow(1,1))', '1', {type:'integer'});
test_math_used('hypot(pow(1, sqrt(1)))', '1', {type:'integer'});
test_math_used('calc(hypot(pow((1 + sqrt(1)) / 2, sqrt(1))))', '1', {type:'integer'});
// General calculations
test_math_used('calc(100px * pow(2, pow(2, 2)))','1600px');

View file

@ -27,7 +27,6 @@ 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('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 2)');
test_invalid_number('pow(1, , 2)');
test_invalid_number('pow(1, 2)');
// General tests
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, 3)');
test_invalid_length('hypot(3, ,4)');
test_invalid_length('hypot(1, 2)');
test_invalid_length('calc(1px * pow(2 3))');
test_invalid_length('hypot()');
test_invalid_length('calc(pow(2))');
test_invalid_length('pow())');
test_invalid_length('pow(1, 2)');
test_invalid_length('calc(sqrt())');
test_invalid_length('calc(sqrt(100, 200))');
</script>

View file

@ -9,15 +9,15 @@
<div id="target"></div>
<script>
// Identity tests
test_math_used('abs(1)', '1', {type:'number'});
test_math_used('sign(1)', '1', {type:'number'});
test_math_used('abs(-1)', '1', {type:'number'});
test_math_used('sign(-1)', '-1', {type:'number'});
test_math_used('abs(1)', '1', {type:'integer'});
test_math_used('sign(1)', '1', {type:'integer'});
test_math_used('abs(-1)', '1', {type:'integer'});
test_math_used('sign(-1)', '-1', {type:'integer'});
// Nestings
test_math_used('abs(sign(1))', '1');
test_math_used('abs(sign(sign(1)))', '1');
test_math_used('sign(sign(sign(1) + sign(1)))', '1');
test_math_used('abs(sign(1))', '1', {type:'integer'});
test_math_used('abs(sign(sign(1)))', '1', {type:'integer'});
test_math_used('sign(sign(sign(1) + sign(1)))', '1', {type:'integer'});
// General calculations
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 sign for zero
test_math_used('calc(sign(-0))', '-0', {type:'number'});
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:'integer'});
//Type checking sign
test_math_used('sign(1px)', '1');
test_math_used('sign(1cm)', '1');
test_math_used('sign(1mm)', '1');
test_math_used('sign(1Q)', '1');
test_math_used('sign(1in)', '1');
test_math_used('sign(1pc)', '1');
test_math_used('sign(1pt)', '1');
test_math_used('sign(1em)', '1');
test_math_used('sign(1ex)', '1');
test_math_used('sign(1ch)', '1');
test_math_used('sign(1rem)', '1');
test_math_used('sign(1vh)', '1');
test_math_used('sign(1vw)', '1');
test_math_used('sign(1vmin)', '1');
test_math_used('sign(1vmax)', '1');
test_math_used('sign(-1px)', '-1');
test_math_used('sign(-1cm)', '-1');
test_math_used('sign(-1mm)', '-1');
test_math_used('sign(-1Q)', '-1');
test_math_used('sign(-1in)', '-1');
test_math_used('sign(-1pc)', '-1');
test_math_used('sign(-1pt)', '-1');
test_math_used('sign(-1em)', '-1');
test_math_used('sign(-1ex)', '-1');
test_math_used('sign(-1ch)', '-1');
test_math_used('sign(-1rem)', '-1');
test_math_used('sign(-1vh)', '-1');
test_math_used('sign(-1vw)', '-1');
test_math_used('sign(-1vmin)', '-1');
test_math_used('sign(-1vmax)', '-1');
test_math_used('sign(1s)', '1');
test_math_used('sign(1ms)', '1');
test_math_used('sign(-1s)', '-1');
test_math_used('sign(-1ms)', '-1');
test_math_used('sign(1deg)', '1');
test_math_used('sign(1grad)', '1');
test_math_used('sign(1rad)', '1');
test_math_used('sign(1turn)', '1');
test_math_used('sign(-1deg)', '-1');
test_math_used('sign(-1grad)', '-1');
test_math_used('sign(-1rad)', '-1');
test_math_used('sign(-1turn)', '-1');
test_math_used('sign(0px)', '0');
test_math_used('sign(0cm)', '0');
test_math_used('sign(0mm)', '0');
test_math_used('sign(0Q)', '0');
test_math_used('sign(0in)', '0');
test_math_used('sign(0pc)', '0');
test_math_used('sign(0pt)', '0');
test_math_used('sign(0em)', '0');
test_math_used('sign(0ex)', '0');
test_math_used('sign(0ch)', '0');
test_math_used('sign(0rem)', '0');
test_math_used('sign(0vh)', '0');
test_math_used('sign(0vw)', '0');
test_math_used('sign(0vmin)', '0');
test_math_used('sign(0vmax)', '0');
test_math_used('sign(-0px)', '-0');
test_math_used('sign(-0cm)', '-0');
test_math_used('sign(-0mm)', '-0');
test_math_used('sign(-0Q)', '-0');
test_math_used('sign(-0in)', '-0');
test_math_used('sign(-0pc)', '-0');
test_math_used('sign(-0pt)', '-0');
test_math_used('sign(-0em)', '-0');
test_math_used('sign(-0ex)', '-0');
test_math_used('sign(-0ch)', '-0');
test_math_used('sign(-0rem)', '-0');
test_math_used('sign(-0vh)', '-0');
test_math_used('sign(-0vw)', '-0');
test_math_used('sign(-0vmin)', '-0');
test_math_used('sign(-0vmax)', '-0');
test_math_used('sign(0s)', '0');
test_math_used('sign(0ms)', '0');
test_math_used('sign(-0s)', '0');
test_math_used('sign(-0ms)', '0');
test_math_used('sign(0deg)', '0');
test_math_used('sign(0grad)', '0');
test_math_used('sign(0rad)', '0');
test_math_used('sign(0turn)', '0');
test_math_used('sign(-0deg)', '-0');
test_math_used('sign(-0grad)', '-0');
test_math_used('sign(-0rad)', '-0');
test_math_used('sign(-0turn)', '-0');
test_math_used('sign(1px)', '1', {type:'integer'});
test_math_used('sign(1cm)', '1', {type:'integer'});
test_math_used('sign(1mm)', '1', {type:'integer'});
test_math_used('sign(1Q)', '1', {type:'integer'});
test_math_used('sign(1in)', '1', {type:'integer'});
test_math_used('sign(1pc)', '1', {type:'integer'});
test_math_used('sign(1pt)', '1', {type:'integer'});
test_math_used('sign(1em)', '1', {type:'integer'});
test_math_used('sign(1ex)', '1', {type:'integer'});
test_math_used('sign(1ch)', '1', {type:'integer'});
test_math_used('sign(1rem)', '1', {type:'integer'});
test_math_used('sign(1vh)', '1', {type:'integer'});
test_math_used('sign(1vw)', '1', {type:'integer'});
test_math_used('sign(1vmin)', '1', {type:'integer'});
test_math_used('sign(1vmax)', '1', {type:'integer'});
test_math_used('sign(-1px)', '-1', {type:'integer'});
test_math_used('sign(-1cm)', '-1', {type:'integer'});
test_math_used('sign(-1mm)', '-1', {type:'integer'});
test_math_used('sign(-1Q)', '-1', {type:'integer'});
test_math_used('sign(-1in)', '-1', {type:'integer'});
test_math_used('sign(-1pc)', '-1', {type:'integer'});
test_math_used('sign(-1pt)', '-1', {type:'integer'});
test_math_used('sign(-1em)', '-1', {type:'integer'});
test_math_used('sign(-1ex)', '-1', {type:'integer'});
test_math_used('sign(-1ch)', '-1', {type:'integer'});
test_math_used('sign(-1rem)', '-1', {type:'integer'});
test_math_used('sign(-1vh)', '-1', {type:'integer'});
test_math_used('sign(-1vw)', '-1', {type:'integer'});
test_math_used('sign(-1vmin)', '-1', {type:'integer'});
test_math_used('sign(-1vmax)', '-1', {type:'integer'});
test_math_used('sign(1s)', '1', {type:'integer'});
test_math_used('sign(1ms)', '1', {type:'integer'});
test_math_used('sign(-1s)', '-1', {type:'integer'});
test_math_used('sign(-1ms)', '-1', {type:'integer'});
test_math_used('sign(1deg)', '1', {type:'integer'});
test_math_used('sign(1grad)', '1', {type:'integer'});
test_math_used('sign(1rad)', '1', {type:'integer'});
test_math_used('sign(1turn)', '1', {type:'integer'});
test_math_used('sign(-1deg)', '-1', {type:'integer'});
test_math_used('sign(-1grad)', '-1', {type:'integer'});
test_math_used('sign(-1rad)', '-1', {type:'integer'});
test_math_used('sign(-1turn)', '-1', {type:'integer'});
test_math_used('sign(0px)', '0', {type:'integer'});
test_math_used('sign(0cm)', '0', {type:'integer'});
test_math_used('sign(0mm)', '0', {type:'integer'});
test_math_used('sign(0Q)', '0', {type:'integer'});
test_math_used('sign(0in)', '0', {type:'integer'});
test_math_used('sign(0pc)', '0', {type:'integer'});
test_math_used('sign(0pt)', '0', {type:'integer'});
test_math_used('sign(0em)', '0', {type:'integer'});
test_math_used('sign(0ex)', '0', {type:'integer'});
test_math_used('sign(0ch)', '0', {type:'integer'});
test_math_used('sign(0rem)', '0', {type:'integer'});
test_math_used('sign(0vh)', '0', {type:'integer'});
test_math_used('sign(0vw)', '0', {type:'integer'});
test_math_used('sign(0vmin)', '0', {type:'integer'});
test_math_used('sign(0vmax)', '0', {type:'integer'});
test_math_used('sign(-0px)', '-0', {type:'integer'});
test_math_used('sign(-0cm)', '-0', {type:'integer'});
test_math_used('sign(-0mm)', '-0', {type:'integer'});
test_math_used('sign(-0Q)', '-0', {type:'integer'});
test_math_used('sign(-0in)', '-0', {type:'integer'});
test_math_used('sign(-0pc)', '-0', {type:'integer'});
test_math_used('sign(-0pt)', '-0', {type:'integer'});
test_math_used('sign(-0em)', '-0', {type:'integer'});
test_math_used('sign(-0ex)', '-0', {type:'integer'});
test_math_used('sign(-0ch)', '-0', {type:'integer'});
test_math_used('sign(-0rem)', '-0', {type:'integer'});
test_math_used('sign(-0vh)', '-0', {type:'integer'});
test_math_used('sign(-0vw)', '-0', {type:'integer'});
test_math_used('sign(-0vmin)', '-0', {type:'integer'});
test_math_used('sign(-0vmax)', '-0', {type:'integer'});
test_math_used('sign(0s)', '0', {type:'integer'});
test_math_used('sign(0ms)', '0', {type:'integer'});
test_math_used('sign(-0s)', '0', {type:'integer'});
test_math_used('sign(-0ms)', '0', {type:'integer'});
test_math_used('sign(0deg)', '0', {type:'integer'});
test_math_used('sign(0grad)', '0', {type:'integer'});
test_math_used('sign(0rad)', '0', {type:'integer'});
test_math_used('sign(0turn)', '0', {type:'integer'});
test_math_used('sign(-0deg)', '-0', {type:'integer'});
test_math_used('sign(-0grad)', '-0', {type:'integer'});
test_math_used('sign(-0rad)', '-0', {type:'integer'});
test_math_used('sign(-0turn)', '-0', {type:'integer'});
//Type checking abs
test_math_used('abs(1px)', '1px');

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);
} else {
if (property == "color")
colorValuesAlmostEqual(readValue, computed, 0.0001);
colorValuesAlmostEqual(readValue, computed, 0.0001, 1);
else
assert_equals(readValue, computed);
}
@ -39,7 +39,9 @@ function test_computed_value(property, specified, computed, 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.
const colorElementDividers = /( |\(|,)/;
// 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() {
const startTime = performance.now();
return new Promise(resolve => {
@ -71,7 +82,6 @@ function waitForNextFrame() {
});
}
// TODO(crbug.com/1400399): Deprecate as frame rates may vary greatly in
// different test environments.
function waitForAnimationEnd(getValue) {

View file

@ -45,8 +45,8 @@ async function verifyNoScrollendOnDocument(test) {
window.addEventListener('scrollend', callback);
}
async function createScrollendPromise(test) {
return waitForScrollendEvent(test, target_div).then(evt => {
async function createScrollendPromise(test, timeoutMs = 500) {
return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
assert_false(evt.cancelable, 'Event is not cancelable');
assert_false(evt.bubbles, 'Event targeting element does not bubble');
});
@ -60,11 +60,21 @@ function runTest() {
return;
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);
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
// a scrollend event.
await new test_driver.Actions()
@ -75,6 +85,9 @@ function runTest() {
.pointerMove(0, -40, {origin: target_div}) // Drag up to move down.
.addTick()
.pause(200) // Prevent inertial scroll.
.pointerMove(0, -60, {origin: target_div})
.addTick()
.pause(200) // Prevent inertial scroll.
.pointerUp()
.send();
@ -82,6 +95,7 @@ function runTest() {
assert_true(target_div.scrollTop > 0);
await verifyScrollStopped(t, target_div);
assert_equals(scrollend_count, 1);
}, 'Tests that the target_div gets scrollend event when touch dragging.');
promise_test(async (t) => {
@ -92,7 +106,7 @@ function runTest() {
return;
await resetTargetScrollState(t);
await waitForCompositorCommit();
await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t);
@ -122,7 +136,9 @@ function runTest() {
if (scrollbar_width == 0)
return;
resetTargetScrollState(t);
await resetTargetScrollState(t);
await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t);
@ -146,7 +162,9 @@ function runTest() {
'scrollbar thumb.');
promise_test(async (t) => {
resetTargetScrollState(t);
await resetTargetScrollState(t);
await waitForCompositorReady();
const targetScrollendPromise = createScrollendPromise(t);
verifyNoScrollendOnDocument(t);
@ -167,7 +185,7 @@ function runTest() {
promise_test(async (t) => {
await resetTargetScrollState(t);
await waitForCompositorCommit();
await waitForCompositorReady();
verifyNoScrollendOnDocument(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>"],
[true],
{"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",
[true,true],
{"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>",
[["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],
{"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>",
@ -410,9 +414,12 @@ var browserTests = [
"<span style=\"color:rgb(0, 0, 255)\">foo[bar]baz</span>",
[true,true],
{"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>",
[["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],
{"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>",

View file

@ -2686,4 +2686,66 @@ var browserTests = [
"<ul><li>abcghi<br></li></ul>"],
[true],
{"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.fillRect(0, 0, 100, 50);
ctx.lineCap = 'butt';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 15, 20, 20);
@ -31,6 +33,7 @@ ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
@ -38,12 +41,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.fillRect(65, 15, 20, 20);
_assertPixel(canvas, 25,14, 0,255,0,255);
_assertPixel(canvas, 25,15, 0,255,0,255);
_assertPixel(canvas, 25,16, 0,255,0,255);
_assertPixel(canvas, 25,34, 0,255,0,255);
_assertPixel(canvas, 25,35, 0,255,0,255);
_assertPixel(canvas, 25,36, 0,255,0,255);
_assertPixel(canvas, 75,14, 0,255,0,255);
_assertPixel(canvas, 75,15, 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.fillRect(0, 0, 100, 50);
ctx.lineCap = 'butt';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 15, 20, 20);
@ -27,6 +29,7 @@ ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
@ -34,12 +37,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.fillRect(65, 15, 20, 20);
_assertPixel(canvas, 25,14, 0,255,0,255);
_assertPixel(canvas, 25,15, 0,255,0,255);
_assertPixel(canvas, 25,16, 0,255,0,255);
_assertPixel(canvas, 25,34, 0,255,0,255);
_assertPixel(canvas, 25,35, 0,255,0,255);
_assertPixel(canvas, 25,36, 0,255,0,255);
_assertPixel(canvas, 75,14, 0,255,0,255);
_assertPixel(canvas, 75,15, 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.strokeStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel';
ctx.lineCap = 'square';
ctx.lineWidth = 400;
ctx.beginPath();
ctx.moveTo(200, 200);
ctx.lineTo(200, 1000);
@ -33,6 +35,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200);
ctx.closePath();
ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 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.strokeStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel';
ctx.lineCap = 'square';
ctx.lineWidth = 400;
ctx.beginPath();
ctx.moveTo(200, 200);
ctx.lineTo(200, 1000);
@ -29,6 +31,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200);
ctx.closePath();
ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 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'
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = 'invalid';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = 'ROUND';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = 'round\0';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = 'round ';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = "";
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'butt';
ctx.lineCap = 'bevel';
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");

View file

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

View file

@ -23,9 +23,11 @@ var ctx = canvas.getContext('2d');
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel';
ctx.lineCap = 'square';
ctx.lineWidth = 400;
ctx.beginPath();
ctx.moveTo(200, 200);
ctx.lineTo(200, 1000);
@ -33,6 +35,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200);
ctx.lineTo(200, 200);
ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 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.strokeStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.lineJoin = 'bevel';
ctx.lineCap = 'square';
ctx.lineWidth = 400;
ctx.beginPath();
ctx.moveTo(200, 200);
ctx.lineTo(200, 1000);
@ -29,6 +31,7 @@ ctx.lineTo(1000, 1000);
ctx.lineTo(1000, 200);
ctx.lineTo(200, 200);
ctx.stroke();
_assertPixel(canvas, 1,1, 0,255,0,255);
_assertPixel(canvas, 48,1, 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.fillRect(0, 0, 100, 50);
var tol = 1; // tolerance to avoid antialiasing artifacts
ctx.lineCap = 'round';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.moveTo(35-tol, 15);
ctx.arc(25, 15, 10-tol, 0, Math.PI, true);
ctx.arc(25, 35, 10-tol, Math.PI, 0, true);
ctx.fill();
ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(85+tol, 15);
ctx.arc(75, 15, 10+tol, 0, Math.PI, true);
ctx.arc(75, 35, 10+tol, Math.PI, 0, true);
ctx.fill();
_assertPixel(canvas, 17,6, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 32,6, 0,255,0,255);
_assertPixel(canvas, 17,43, 0,255,0,255);
_assertPixel(canvas, 25,43, 0,255,0,255);
_assertPixel(canvas, 32,43, 0,255,0,255);
_assertPixel(canvas, 67,6, 0,255,0,255);
_assertPixel(canvas, 75,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.fillRect(0, 0, 100, 50);
var tol = 1; // tolerance to avoid antialiasing artifacts
ctx.lineCap = 'round';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.beginPath();
ctx.moveTo(35-tol, 15);
ctx.arc(25, 15, 10-tol, 0, Math.PI, true);
ctx.arc(25, 35, 10-tol, Math.PI, 0, true);
ctx.fill();
ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(85+tol, 15);
ctx.arc(75, 15, 10+tol, 0, Math.PI, true);
ctx.arc(75, 35, 10+tol, Math.PI, 0, true);
ctx.fill();
_assertPixel(canvas, 17,6, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 32,6, 0,255,0,255);
_assertPixel(canvas, 17,43, 0,255,0,255);
_assertPixel(canvas, 25,43, 0,255,0,255);
_assertPixel(canvas, 32,43, 0,255,0,255);
_assertPixel(canvas, 67,6, 0,255,0,255);
_assertPixel(canvas, 75,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.fillRect(0, 0, 100, 50);
ctx.lineCap = 'square';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 5, 20, 40);
@ -31,6 +33,7 @@ ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
@ -38,12 +41,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.fillRect(65, 5, 20, 40);
_assertPixel(canvas, 25,4, 0,255,0,255);
_assertPixel(canvas, 25,5, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 25,44, 0,255,0,255);
_assertPixel(canvas, 25,45, 0,255,0,255);
_assertPixel(canvas, 25,46, 0,255,0,255);
_assertPixel(canvas, 75,4, 0,255,0,255);
_assertPixel(canvas, 75,5, 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.fillRect(0, 0, 100, 50);
ctx.lineCap = 'square';
ctx.lineWidth = 20;
ctx.fillStyle = '#f00';
ctx.strokeStyle = '#0f0';
ctx.fillRect(15, 5, 20, 40);
@ -27,6 +29,7 @@ ctx.beginPath();
ctx.moveTo(25, 15);
ctx.lineTo(25, 35);
ctx.stroke();
ctx.fillStyle = '#0f0';
ctx.strokeStyle = '#f00';
ctx.beginPath();
@ -34,12 +37,14 @@ ctx.moveTo(75, 15);
ctx.lineTo(75, 35);
ctx.stroke();
ctx.fillRect(65, 5, 20, 40);
_assertPixel(canvas, 25,4, 0,255,0,255);
_assertPixel(canvas, 25,5, 0,255,0,255);
_assertPixel(canvas, 25,6, 0,255,0,255);
_assertPixel(canvas, 25,44, 0,255,0,255);
_assertPixel(canvas, 25,45, 0,255,0,255);
_assertPixel(canvas, 25,46, 0,255,0,255);
_assertPixel(canvas, 75,4, 0,255,0,255);
_assertPixel(canvas, 75,5, 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'
_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'");
ctx.lineCap = 'round';
_assertSame(ctx.lineCap, 'round', "ctx.lineCap", "'round'");
ctx.lineCap = 'square';
_assertSame(ctx.lineCap, 'square', "ctx.lineCap", "'square'");
t.done();

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