Update web-platform-tests to revision de9a09ab7f605aed6a4b53ed96427412bab76463

This commit is contained in:
WPT Sync Bot 2018-12-01 20:48:01 -05:00
parent f3f9303fc9
commit 73a776843f
225 changed files with 5750 additions and 2858 deletions

View file

@ -14,6 +14,9 @@
[Revoke blob URL after creating Request, will fetch] [Revoke blob URL after creating Request, will fetch]
expected: FAIL expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html] [url-with-fetch.any.html]
[Untitled] [Untitled]

File diff suppressed because it is too large Load diff

View file

@ -296,3 +296,42 @@
[Matching font-style: 'oblique 0deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg'] [Matching font-style: 'oblique 0deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
expected: FAIL expected: FAIL
[Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal']
expected: FAIL
[Matching font-style: 'oblique 20deg' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
expected: FAIL
[Matching font-weight: '399' should prefer '500 501' over '502 510']
expected: FAIL
[Matching font-style: 'oblique -21deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
expected: FAIL
[Matching font-stretch: '110%' should prefer '110% 120%' over '115% 116%']
expected: FAIL
[Matching font-stretch: '110%' should prefer '105%' over '100%']
expected: FAIL
[Matching font-style: 'oblique 20deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
expected: FAIL
[Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic']
expected: FAIL
[Matching font-weight: '500' should prefer '500' over '450 460']
expected: FAIL
[Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg']
expected: FAIL
[Matching font-style: 'oblique 20deg' should prefer 'italic' over 'oblique 0deg']
expected: FAIL
[Matching font-stretch: '90%' should prefer '60% 70%' over '110% 140%']
expected: FAIL
[Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-space-collapse-discard-001.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-space-collapse-preserve-breaks-001.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-space-trim-trim-inner-001.xht]
expected: FAIL

View file

@ -74,3 +74,6 @@
[opacity end] [opacity end]
expected: FAIL expected: FAIL
[border-top-width end]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-overflow-ruby.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[variable-exponential-blowup.html]
expected: TIMEOUT

View file

@ -1,2 +0,0 @@
[backdrop-filter-basic-opacity.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[backdrop-filter-fixed-clip.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[backdrop-filter-isolation-fixed.html]
expected: FAIL

View file

@ -0,0 +1,4 @@
[DOMMatrix-002.html]
[test scaleNonUniform() doesn't mutate]
expected: FAIL

View file

@ -6,3 +6,12 @@
[test rotateAxisAngle() ] [test rotateAxisAngle() ]
expected: FAIL expected: FAIL
[test scaleNonUniform() with sx]
expected: FAIL
[test scaleNonUniform() with sx, sy]
expected: FAIL
[test scaleNonUniform()]
expected: FAIL

View file

@ -1,6 +1,5 @@
[adopted-callback.html] [adopted-callback.html]
type: testharness type: testharness
expected: ERROR
[Inserting a custom element into a shadow tree in the document of the template elements must enqueue and invoke adoptedCallback] [Inserting a custom element into a shadow tree in the document of the template elements must enqueue and invoke adoptedCallback]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,5 @@
[parser-uses-registry-of-owner-document.html] [parser-uses-registry-of-owner-document.html]
type: testharness type: testharness
expected: ERROR
[HTML parser must not instantiate custom elements inside template elements] [HTML parser must not instantiate custom elements inside template elements]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,7 @@
[perform-microtask-checkpoint-before-construction.html]
[HTML parser must perform a microtask checkpoint before constructing a custom element]
expected: FAIL
[HTML parser must perform a microtask checkpoint before constructing a custom element during the adoption agency algorithm]
expected: FAIL

View file

@ -1,7 +0,0 @@
[Attr.html]
[value on Attr must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[value on Attr must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL

View file

@ -24,69 +24,3 @@
[A webkit prefixed dashed property (-webkit-filter) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed] [A webkit prefixed dashed property (-webkit-filter) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed]
expected: FAIL expected: FAIL
[A dashed property (border-width) on CSSStyleDeclaration must enqueue an attributeChanged reaction when it adds the observed style attribute]
expected: FAIL
[cssText on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed]
expected: FAIL
[setProperty on CSSStyleDeclaration must enqueue an attributeChanged reaction when it mutates the observed style attribute]
expected: FAIL
[cssFloat on CSSStyleDeclaration must enqueue an attributeChanged reaction when it adds the observed style attribute]
expected: FAIL
[cssText on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it adds the style attribute but the style attribute is not observed]
expected: FAIL
[A camel case attribute (borderWidth) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed]
expected: FAIL
[cssFloat on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it adds the style attribute but the style attribute is not observed]
expected: FAIL
[setProperty on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it adds the style attribute but the style attribute is not observed]
expected: FAIL
[setProperty on CSSStyleDeclaration must enqueue an attributeChanged reaction when it makes a property important but the style attribute is not observed]
expected: FAIL
[setProperty on CSSStyleDeclaration must enqueue an attributeChanged reaction when it makes a property important and the style attribute is observed]
expected: FAIL
[A dashed property (border-width) on CSSStyleDeclaration must enqueue an attributeChanged reaction when it mutates the observed style attribute]
expected: FAIL
[A camel case attribute (borderWidth) on CSSStyleDeclaration must enqueue an attributeChanged reaction when it adds the observed style attribute]
expected: FAIL
[setProperty on CSSStyleDeclaration must enqueue an attributeChanged reaction when it adds the observed style attribute]
expected: FAIL
[removeProperty on CSSStyleDeclaration must enqueue an attributeChanged reaction when it removes a property from the observed style attribute]
expected: FAIL
[cssText on CSSStyleDeclaration must enqueue an attributeChanged reaction when it mutates the observed style attribute]
expected: FAIL
[A camel case attribute (borderWidth) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it adds the style attribute but the style attribute is not observed]
expected: FAIL
[A dashed property (border-width) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it adds the style attribute but the style attribute is not observed]
expected: FAIL
[setProperty on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed]
expected: FAIL
[cssText on CSSStyleDeclaration must enqueue an attributeChanged reaction when it adds the observed style attribute]
expected: FAIL
[removeProperty on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it removes a property from the style attribute but the style attribute is not observed]
expected: FAIL
[A camel case attribute (borderWidth) on CSSStyleDeclaration must enqueue an attributeChanged reaction when it mutates the observed style attribute]
expected: FAIL
[A dashed property (border-width) on CSSStyleDeclaration must not enqueue an attributeChanged reaction when it mutates the style attribute but the style attribute is not observed]
expected: FAIL

View file

@ -1,22 +0,0 @@
[ChildNode.html]
[before on ChildNode must enqueue a connected reaction]
expected: FAIL
[replaceWith on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[before on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[after on ChildNode must enqueue a connected reaction]
expected: FAIL
[remove on ChildNode must enqueue a disconnected reaction]
expected: FAIL
[replaceWith on ChildNode must enqueue a connected reaction]
expected: FAIL
[after on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL

View file

@ -1,25 +0,0 @@
[DOMStringMap.html]
[deleter on DOMStringMap must enqueue an attributeChanged reaction when removing an observed data attribute]
expected: FAIL
[deleter on DOMStringMap must not enqueue an attributeChanged reaction when removing an unobserved data attribute]
expected: FAIL
[setter on DOMStringMap must not enqueue an attributeChanged reaction when mutating the value of an unobserved data attribute]
expected: FAIL
[setter on DOMStringMap must enqueue an attributeChanged reaction when adding an observed data attribute]
expected: FAIL
[setter on DOMStringMap must not enqueue an attributeChanged reaction when adding an unobserved data attribute]
expected: FAIL
[setter on DOMStringMap must enqueue an attributeChanged reaction when mutating the value of an observed data attribute to the same value]
expected: FAIL
[deleter on DOMStringMap must not enqueue an attributeChanged reaction when it does not remove a data attribute]
expected: FAIL
[setter on DOMStringMap must enqueue an attributeChanged reaction when mutating the value of an observed data attribute]
expected: FAIL

View file

@ -1,58 +0,0 @@
[DOMTokenList.html]
[add on DOMTokenList must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[replace on DOMTokenList must not enqueue an attributeChanged reaction when the token to replace does not exist in the attribute]
expected: FAIL
[replace on DOMTokenList must not enqueue an attributeChanged reaction when replacing a value in an unobserved attribute]
expected: FAIL
[toggle on DOMTokenList must enqueue an attributeChanged reaction when removing a value from an attribute]
expected: FAIL
[add on DOMTokenList must not enqueue an attributeChanged reaction when adding a value to an unobserved attribute]
expected: FAIL
[add on DOMTokenList must enqueue exactly one attributeChanged reaction when adding multiple values to an attribute]
expected: FAIL
[remove on DOMTokenList must enqueue an attributeChanged reaction when removing a value from an attribute]
expected: FAIL
[the stringifier of DOMTokenList must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[the stringifier of DOMTokenList must enqueue an attributeChanged reaction when the setter is called with the original value of the attribute]
expected: FAIL
[toggle on DOMTokenList must enqueue an attributeChanged reaction when adding a value to an attribute]
expected: FAIL
[the stringifier of DOMTokenList must enqueue an attributeChanged reaction when adding an observed attribute]
expected: FAIL
[add on DOMTokenList must enqueue an attributeChanged reaction when adding a value to an existing attribute]
expected: FAIL
[remove on DOMTokenList must enqueue an attributeChanged reaction even when removing a non-existent value from an attribute]
expected: FAIL
[remove on DOMTokenList must not enqueue an attributeChanged reaction when removing a value from an unobserved attribute]
expected: FAIL
[remove on DOMTokenList must enqueue exactly one attributeChanged reaction when removing multiple values to an attribute]
expected: FAIL
[the stringifier of DOMTokenList must enqueue an attributeChanged reaction when mutating the value of an observed attribute]
expected: FAIL
[replace on DOMTokenList must enqueue an attributeChanged reaction when replacing a value in an attribute]
expected: FAIL
[add on DOMTokenList must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[the stringifier of DOMTokenList must not enqueue an attributeChanged reaction when mutating the value of an unobserved attribute]
expected: FAIL

View file

@ -6,120 +6,3 @@
[slot on Element must enqueue an attributeChanged reaction when replacing an existing attribute] [slot on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL expected: FAIL
[className on Element must enqueue an attributeChanged reaction when adding class content attribute]
expected: FAIL
[id on Element must enqueue an attributeChanged reaction when adding id content attribute]
expected: FAIL
[removeAttributeNS on Element must not enqueue an attributeChanged reaction when removing an unobserved attribute]
expected: FAIL
[setAttributeNode on Element must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[insertAdjacentHTML on Element must enqueue a attributeChanged reaction for a newly constructed custom element]
expected: FAIL
[removeAttribute on Element must enqueue an attributeChanged reaction when removing an existing attribute]
expected: FAIL
[setAttributeNodeNS on Element must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[removeAttribute on Element must not enqueue an attributeChanged reaction when removing an existing unobserved attribute]
expected: FAIL
[id on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[insertAdjacentHTML on Element must enqueue a connected reaction for a newly constructed custom element]
expected: FAIL
[removeAttributeNode on Element must not enqueue an attributeChanged reaction when removing an unobserved attribute]
expected: FAIL
[removeAttributeNode on Element must enqueue an attributeChanged reaction when removing an existing attribute]
expected: FAIL
[outerHTML on Element must enqueue a attributeChanged reaction for a newly constructed custom element]
expected: FAIL
[innerHTML on Element must enqueue a disconnected reaction]
expected: FAIL
[setAttributeNS on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[setAttribute on Element must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[outerHTML on Element must enqueue a disconnected reaction]
expected: FAIL
[removeAttributeNode on Element must not enqueue an attributeChanged reaction when removing an existing unobserved attribute]
expected: FAIL
[outerHTML on Element must enqueue a connected reaction for a newly constructed custom element]
expected: FAIL
[innerHTML on Element must enqueue a attributeChanged reaction for a newly constructed custom element]
expected: FAIL
[setAttribute on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[setAttributeNode on Element must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[setAttributeNodeNS on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[insertAdjacentElement on Element must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[removeAttribute on Element must not enqueue an attributeChanged reaction when removing an unobserved attribute]
expected: FAIL
[setAttributeNodeNS on Element must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[className on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[removeAttributeNS on Element must enqueue an attributeChanged reaction when removing an existing attribute]
expected: FAIL
[innerHTML on Element must enqueue a connected reaction for a newly constructed custom element]
expected: FAIL
[setAttributeNodeNS on Element must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[removeAttributeNS on Element must not enqueue an attributeChanged reaction when removing an existing unobserved attribute]
expected: FAIL
[insertAdjacentElement on Element must enqueue a connected reaction]
expected: FAIL
[setAttributeNode on Element must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[setAttribute on Element must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[setAttributeNS on Element must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[setAttribute on Element must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[setAttributeNode on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[setAttributeNS on Element must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[setAttributeNS on Element must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL

View file

@ -1,61 +1,19 @@
[HTMLButtonElement.html] [HTMLButtonElement.html]
[formMethod on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[formMethod on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL
[formEnctype on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL
[formNoValidate on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute] [formNoValidate on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL expected: FAIL
[formAction on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL
[value on HTMLButtonElement must enqueue an attributeChanged reaction when adding value content attribute]
expected: FAIL
[type on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[disabled on HTMLButtonElement must enqueue an attributeChanged reaction when adding disabled content attribute] [disabled on HTMLButtonElement must enqueue an attributeChanged reaction when adding disabled content attribute]
expected: FAIL expected: FAIL
[formTarget on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[disabled on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute] [disabled on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL expected: FAIL
[formTarget on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL
[formAction on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[autofocus on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute] [autofocus on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL expected: FAIL
[formNoValidate on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute] [formNoValidate on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL expected: FAIL
[name on HTMLButtonElement must enqueue an attributeChanged reaction when adding name content attribute]
expected: FAIL
[value on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[formEnctype on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[name on HTMLButtonElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[type on HTMLButtonElement must enqueue an attributeChanged reaction when adding a new attribute]
expected: FAIL
[autofocus on HTMLButtonElement must enqueue an attributeChanged reaction when adding autofocus content attribute] [autofocus on HTMLButtonElement must enqueue an attributeChanged reaction when adding autofocus content attribute]
expected: FAIL expected: FAIL

View file

@ -51,21 +51,3 @@
[innerText on HTMLElement must enqueue a disconnected reaction] [innerText on HTMLElement must enqueue a disconnected reaction]
expected: FAIL expected: FAIL
[hidden on HTMLElement must enqueue an attributeChanged reaction when adding hidden content attribute]
expected: FAIL
[hidden on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[lang on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[title on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[lang on HTMLElement must enqueue an attributeChanged reaction when adding lang content attribute]
expected: FAIL
[title on HTMLElement must enqueue an attributeChanged reaction when adding title content attribute]
expected: FAIL

View file

@ -1,43 +0,0 @@
[NamedNodeMap.html]
[removeNamedItem on NamedNodeMap must not enqueue an attributeChanged reaction when removing an existing unobserved attribute]
expected: FAIL
[removeNamedItemNS on NamedNodeMap must enqueue an attributeChanged reaction when removing an existing attribute]
expected: FAIL
[setNamedItemNS on NamedNodeMap must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[removeNamedItem on NamedNodeMap must enqueue an attributeChanged reaction when removing an existing attribute]
expected: FAIL
[setNamedItemNS on NamedNodeMap must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[removeNamedItemNS on NamedNodeMap must not enqueue an attributeChanged reaction when removing an unobserved attribute]
expected: FAIL
[setNamedItem on NamedNodeMap must enqueue an attributeChanged reaction when adding an attribute]
expected: FAIL
[setNamedItem on NamedNodeMap must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[removeNamedItem on NamedNodeMap must not enqueue an attributeChanged reaction when removing an unobserved attribute]
expected: FAIL
[setNamedItemNS on NamedNodeMap must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[setNamedItem on NamedNodeMap must enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[removeNamedItemNS on NamedNodeMap must not enqueue an attributeChanged reaction when removing an existing unobserved attribute]
expected: FAIL
[setNamedItemNS on NamedNodeMap must not enqueue an attributeChanged reaction when adding an unobserved attribute]
expected: FAIL
[setNamedItem on NamedNodeMap must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL

View file

@ -1,43 +0,0 @@
[Node.html]
[removeChild on ChildNode must enqueue a disconnected reaction]
expected: FAIL
[cloneNode on Node must enqueue an attributeChanged reaction when cloning an element with an observed attribute]
expected: FAIL
[replaceChild on ChildNode must enqueue a connected reaction]
expected: FAIL
[nodeValue on Node must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[cloneNode on Node must not enqueue an attributeChanged reaction when cloning an element with an unobserved attribute]
expected: FAIL
[cloneNode on Node must enqueue an attributeChanged reaction when cloning an element only for observed attributes]
expected: FAIL
[appendChild on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[insertBefore on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[insertBefore on ChildNode must enqueue a connected reaction]
expected: FAIL
[appendChild on ChildNode must enqueue a connected reaction]
expected: FAIL
[textContent on Node must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL
[textContent on Node must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[replaceChild on ChildNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[nodeValue on Node must not enqueue an attributeChanged reaction when replacing an existing unobserved attribute]
expected: FAIL

View file

@ -1,13 +0,0 @@
[ParentNode.html]
[prepend on ParentNode must enqueue a connected reaction]
expected: FAIL
[prepend on ParentNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[append on ParentNode must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[append on ParentNode must enqueue a connected reaction]
expected: FAIL

View file

@ -3,30 +3,3 @@
[createContextualFragment on Range must construct a custom element] [createContextualFragment on Range must construct a custom element]
expected: FAIL expected: FAIL
[cloneContents on Range must enqueue an attributeChanged reaction when cloning an element only for observed attributes]
expected: FAIL
[cloneContents on Range must not enqueue an attributeChanged reaction when cloning an element with an unobserved attribute]
expected: FAIL
[deleteContents on Range must enqueue a disconnected reaction]
expected: FAIL
[extractContents on Range must enqueue a disconnected reaction]
expected: FAIL
[insertNode on Range must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[cloneContents on Range must enqueue an attributeChanged reaction when cloning an element with an observed attribute]
expected: FAIL
[surroundContents on Range must enqueue a disconnected reaction, an adopted reaction, and a connected reaction when the custom element was in another document]
expected: FAIL
[surroundContents on Range must enqueue a connected reaction]
expected: FAIL
[insertNode on Range must enqueue a connected reaction]
expected: FAIL

View file

@ -509,7 +509,7 @@
[single-byte-decoder.html?XMLHttpRequest] [single-byte-decoder.html?XMLHttpRequest]
expected: CRASH expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)] [ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL expected: FAIL
@ -535,7 +535,91 @@
expected: FAIL expected: FAIL
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)] [windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: FAIL expected: TIMEOUT
[windows-1258: cp1258 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1253: x-cp1253 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1256: cp1256 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso_8859-9 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso88599 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso-8859-9 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1258: x-cp1258 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1257: windows-1257 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: windows-1254 (XMLHttpRequest)]
expected: TIMEOUT
[x-mac-cyrillic: x-mac-ukrainian (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: csisolatin5 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1257: cp1257 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: x-cp1255 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1257: x-cp1257 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: cp1254 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso8859-9 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1253: windows-1253 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1253: cp1253 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: l5 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: x-cp1254 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: latin5 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1252: x-cp1252 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: cp1255 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: iso-ir-148 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1258: windows-1258 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1255: windows-1255 (XMLHttpRequest)]
expected: TIMEOUT
[x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
expected: TIMEOUT
[windows-1256: windows-1256 (XMLHttpRequest)]
expected: TIMEOUT
[single-byte-decoder.html?TextDecoder] [single-byte-decoder.html?TextDecoder]

View file

@ -0,0 +1,7 @@
[fetch-destination-prefetch.https.html]
[HTMLLinkElement with rel=prefetch fetches with an empty string Request.destination]
expected: FAIL
[Initialize global state]
expected: FAIL

View file

@ -1,17 +0,0 @@
[request-cache-default-conditional.html]
expected: TIMEOUT
[RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and stale response]
expected: NOTRUN
[RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh response]
expected: NOTRUN
[RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh response]
expected: TIMEOUT
[RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and fresh response]
expected: NOTRUN
[RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and stale response]
expected: NOTRUN

View file

@ -1,7 +1,7 @@
[response.window.html] [response.window.html]
expected: TIMEOUT expected: TIMEOUT
[fetch(): combined response Content-Type: text/plain ] [fetch(): combined response Content-Type: text/plain ]
expected: TIMEOUT expected: FAIL
[Response: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252] [Response: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: NOTRUN expected: NOTRUN
@ -64,7 +64,7 @@
expected: NOTRUN expected: NOTRUN
[fetch(): combined response Content-Type: text/html text/plain] [fetch(): combined response Content-Type: text/html text/plain]
expected: NOTRUN expected: FAIL
[Request: combined response Content-Type: text/html;charset=gbk text/plain text/html] [Request: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: NOTRUN expected: NOTRUN
@ -76,13 +76,13 @@
expected: NOTRUN expected: NOTRUN
[Response: combined response Content-Type: text/plain ] [Response: combined response Content-Type: text/plain ]
expected: NOTRUN expected: FAIL
[fetch(): combined response Content-Type: text/plain;charset=gbk text/plain] [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain]
expected: NOTRUN expected: NOTRUN
[Request: combined response Content-Type: text/html text/plain] [Request: combined response Content-Type: text/html text/plain]
expected: NOTRUN expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*] [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL expected: FAIL
@ -118,7 +118,7 @@
expected: NOTRUN expected: NOTRUN
[Response: combined response Content-Type: text/html text/plain] [Response: combined response Content-Type: text/html text/plain]
expected: NOTRUN expected: TIMEOUT
[fetch(): separate response Content-Type: text/plain ] [fetch(): separate response Content-Type: text/plain ]
expected: FAIL expected: FAIL
@ -241,7 +241,7 @@
expected: FAIL expected: FAIL
[Request: combined response Content-Type: text/plain ] [Request: combined response Content-Type: text/plain ]
expected: NOTRUN expected: FAIL
[Response: combined response Content-Type: text/html */*;charset=gbk] [Response: combined response Content-Type: text/html */*;charset=gbk]
expected: NOTRUN expected: NOTRUN
@ -280,7 +280,7 @@
expected: FAIL expected: FAIL
[fetch(): separate response Content-Type: text/html text/plain] [fetch(): separate response Content-Type: text/html text/plain]
expected: NOTRUN expected: FAIL
[Request: combined response Content-Type: text/html;" text/plain] [Request: combined response Content-Type: text/html;" text/plain]
expected: NOTRUN expected: NOTRUN

View file

@ -1,4 +0,0 @@
[006.html]
[Link with onclick form submit and href navigation ]
expected: FAIL

View file

@ -2,10 +2,10 @@
type: testharness type: testharness
expected: TIMEOUT expected: TIMEOUT
[picture: source (max-width:500px) broken image, img valid image, resize to wide] [picture: source (max-width:500px) broken image, img valid image, resize to wide]
expected: FAIL expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, resize to wide] [picture: source (max-width:500px) valid image, img valid image, resize to wide]
expected: FAIL expected: TIMEOUT
[picture: source (max-width:500px) valid image, img broken image, resize to narrow] [picture: source (max-width:500px) valid image, img broken image, resize to narrow]
expected: TIMEOUT expected: TIMEOUT

View file

@ -1,7 +0,0 @@
[toggleEvent.html]
[Calling open twice on 'details' fires only one toggle event]
expected: FAIL
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
expected: FAIL

View file

@ -1,4 +0,0 @@
[122.html]
[scheduler: altering the type attribute and adding/removing external script ]
expected: FAIL

View file

@ -1,4 +0,0 @@
[iframe_005.html]
[document.write external script into iframe write back into parent]
expected: FAIL

View file

@ -2,3 +2,6 @@
[document.open() after parser is aborted] [document.open() after parser is aborted]
expected: FAIL expected: FAIL
[async document.open() after parser is aborted]
expected: FAIL

View file

@ -12,6 +12,3 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.] [Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT expected: TIMEOUT
[Verifies the resolution of performance.now() is at least 5 microseconds.]
expected: FAIL

View file

@ -53,3 +53,15 @@
['link (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any).] ['link (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any).]
expected: FAIL expected: FAIL
['link 250ms delay in headers does not affect responseStart']
expected: FAIL
['iframe 250ms delay in headers does not affect responseStart']
expected: FAIL
['xmlhttprequest 250ms delay in headers does not affect responseStart']
expected: FAIL
['script 250ms delay in headers does not affect responseStart']
expected: FAIL

View file

@ -1,4 +1,5 @@
[005.html] [005.html]
expected: ERROR
[dedicated worker in shared worker in dedicated worker] [dedicated worker in shared worker in dedicated worker]
expected: FAIL expected: FAIL

View file

@ -61,7 +61,7 @@ tasks:
owner: ${event.pusher.email} owner: ${event.pusher.email}
source: ${event.repository.url} source: ${event.repository.url}
payload: payload:
image: harjgam/web-platform-tests:0.22 image: hexcles/web-platform-tests:0.23
maxRunTime: 7200 maxRunTime: 7200
artifacts: artifacts:
public/results: public/results:
@ -125,7 +125,7 @@ tasks:
owner: ${event.pull_request.user.login}@users.noreply.github.com owner: ${event.pull_request.user.login}@users.noreply.github.com
source: ${event.repository.url} source: ${event.repository.url}
payload: payload:
image: harjgam/web-platform-tests:0.22 image: hexcles/web-platform-tests:0.23
maxRunTime: 7200 maxRunTime: 7200
artifacts: artifacts:
public/results: public/results:

View file

@ -0,0 +1,45 @@
// META: script=support-promises.js
/**
* This file contains a test that was separated out from the rest of the idb
* explict commit tests because it requires the flag 'allow_uncaught_exception',
* which prevents unintentionally thrown errors from failing tests.
*
* @author andreasbutler@google.com
*/
setup({allow_uncaught_exception:true});
promise_test(async testCase => {
// Register an event listener that will prevent the intentionally thrown
// error from bubbling up to the window and failing the testharness. This
// is necessary because currently allow_uncaught_exception does not behave
// as expected for promise_test.
//
// Git issue: https://github.com/web-platform-tests/wpt/issues/14041
self.addEventListener('error', (event) => { event.preventDefault(); });
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
const putRequest = objectStore.put({isbn:'one', title:'title'});
txn.commit();
putRequest.onsuccess = () => {
throw new Error('This error thrown after an explicit commit should not ' +
'prevent the transaction from committing.');
}
await promiseForTransaction(testCase, txn);
// Ensure that despite the uncaught error after the put request, the explicit
// commit still causes the request to be committed.
const txn2 = db.transaction(['books'], 'readwrite');
const objectStore2 = txn2.objectStore('books');
const getRequest = objectStore2.get('one');
await promiseForTransaction(testCase, txn2);
assert_equals(getRequest.result.title, 'title');
}, 'Any errors in callbacks that run after an explicit commit will not stop '
+ 'the commit from being processed.');

View file

@ -0,0 +1,181 @@
// META: script=support-promises.js
/**
* This file contains the webplatform tests for the explicit commit() method
* of the IndexedDB transaction API.
*
* @author andreasbutler@google.com
*/
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
objectStore.put({isbn: 'one', title: 'title1'});
objectStore.put({isbn: 'two', title: 'title2'});
objectStore.put({isbn: 'three', title: 'title3'});
txn.commit();
await promiseForTransaction(testCase, txn);
const txn2 = db.transaction(['books'], 'readonly');
const objectStore2 = txn2.objectStore('books');
const getRequestitle1 = objectStore2.get('one');
const getRequestitle2 = objectStore2.get('two');
const getRequestitle3 = objectStore2.get('three');
txn2.commit();
await promiseForTransaction(testCase, txn2);
assert_array_equals(
[getRequestitle1.result.title,
getRequestitle2.result.title,
getRequestitle3.result.title],
['title1', 'title2', 'title3'],
'All three retrieved titles should match those that were put.');
db.close();
}, 'Explicitly committed data can be read back out.');
promise_test(async testCase => {
let db = await createDatabase(testCase, () => {});
assert_equals(1, db.version, 'A database should be created as version 1');
db.close();
// Upgrade the versionDB database and explicitly commit its versionchange
// transaction.
db = await migrateDatabase(testCase, 2, async (db, txn) => {
txn.commit();
});
assert_equals(2, db.version,
'The database version should have been incremented regardless of '
+ 'whether the versionchange transaction was explicitly or implicitly '
+ 'committed.');
db.close();
}, 'commit() on a version change transaction does not cause errors.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
txn.commit();
assert_throws('TransactionInactiveError',
() => { objectStore.put({isbn: 'one', title: 'title1'}); },
'After commit is called, the transaction should be inactive.');
db.close();
}, 'A committed transaction becomes inactive immediately.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
const putRequest = objectStore.put({isbn: 'one', title: 'title1'});
putRequest.onsuccess = testCase.step_func(() => {
assert_throws('TransactionInactiveError',
() => { objectStore.put({isbn:'two', title:'title2'}); },
'The transaction should not be active in the callback of a request after '
+ 'commit() is called.');
});
txn.commit();
await promiseForTransaction(testCase, txn);
db.close();
}, 'A committed transaction is inactive in future request callbacks.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
txn.commit();
assert_throws('TransactionInactiveError',
() => { objectStore.put({isbn:'one', title:'title1'}); },
'After commit is called, the transaction should be inactive.');
const txn2 = db.transaction(['books'], 'readonly');
const objectStore2 = txn2.objectStore('books');
const getRequest = objectStore2.get('one');
await promiseForTransaction(testCase, txn2);
assert_equals(getRequest.result, undefined);
db.close();
}, 'Puts issued after commit are not fulfilled.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
txn.abort();
assert_throws('InvalidStateError',
() => { txn.commit(); },
'The transaction should have been aborted.');
db.close();
}, 'Calling commit on an aborted transaction throws.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
txn.commit();
assert_throws('InvalidStateError',
() => { txn.commit(); },
'The transaction should have already committed.');
db.close();
}, 'Calling commit on a committed transaction throws.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
const putRequest = objectStore.put({isbn:'one', title:'title1'});
txn.commit();
assert_throws('InvalidStateError',
() => { txn.abort(); },
'The transaction should already have committed.');
const txn2 = db.transaction(['books'], 'readwrite');
const objectStore2 = txn2.objectStore('books');
const getRequest = objectStore2.get('one');
await promiseForTransaction(testCase, txn2);
assert_equals(
getRequest.result.title,
'title1',
'Explicitly committed data should be gettable.');
db.close();
}, 'Calling abort on a committed transaction throws and does not prevent '
+ 'persisting the data.');
promise_test(async testCase => {
const db = await createDatabase(testCase, async db => {
await createBooksStore(testCase, db);
});
const txn = db.transaction(['books'], 'readwrite');
const objectStore = txn.objectStore('books');
const releaseTxnFunction = keepAlive(testCase, txn, 'books');
// Break up the scope of execution to force the transaction into an inactive
// state.
await timeoutPromise(0);
assert_throws('InvalidStateError',
() => { txn.commit(); },
'The transaction should be inactive so calling commit should throw.');
releaseTxnFunction();
db.close();
}, 'Calling txn.commit() when txn is inactive should throw.');

View file

@ -312,3 +312,32 @@ async function deleteAllDatabases(testCase) {
await eventWatcher.wait_for('success'); await eventWatcher.wait_for('success');
} }
} }
// Keeps the passed transaction alive indefinitely (by making requests
// against the named store). Returns a function that asserts that the
// transaction has not already completed and then ends the request loop so that
// the transaction may autocommit and complete.
function keepAlive(testCase, transaction, storeName) {
let completed = false;
transaction.addEventListener('complete', () => { completed = true; });
let keepSpinning = true;
function spin() {
if (!keepSpinning)
return;
transaction.objectStore(storeName).get(0).onsuccess = spin;
}
spin();
return testCase.step_func(() => {
assert_false(completed, 'Transaction completed while kept alive');
keepSpinning = false;
});
}
// Return a promise that resolves after a setTimeout finishes to break up the
// scope of a function's execution.
function timeoutPromise(ms) {
return new Promise(resolve => { setTimeout(resolve, ms); });
}

View file

@ -1,6 +1,3 @@
var databaseName = "database";
var databaseVersion = 1;
/* Delete created databases /* Delete created databases
* *
* Go through each finished test, see if it has an associated database. Close * Go through each finished test, see if it has an associated database. Close
@ -170,18 +167,18 @@ function is_transaction_active(tx, store_name) {
} }
} }
// Keep the passed transaction alive indefinitely (by making requests // Keeps the passed transaction alive indefinitely (by making requests
// against the named store). Returns a function to to let the // against the named store). Returns a function that asserts that the
// transaction finish, and asserts that the transaction is not yet // transaction has not already completed and then ends the request loop so that
// finished. // the transaction may autocommit and complete.
function keep_alive(tx, store_name) { function keep_alive(tx, store_name) {
let completed = false; let completed = false;
tx.addEventListener('complete', () => { completed = true; }); tx.addEventListener('complete', () => { completed = true; });
let pin = true; let keepSpinning = true;
function spin() { function spin() {
if (!pin) if (!keepSpinning)
return; return;
tx.objectStore(store_name).get(0).onsuccess = spin; tx.objectStore(store_name).get(0).onsuccess = spin;
} }
@ -189,6 +186,6 @@ function keep_alive(tx, store_name) {
return () => { return () => {
assert_false(completed, 'Transaction completed while kept alive'); assert_false(completed, 'Transaction completed while kept alive');
pin = false; keepSpinning = false;
}; };
} }

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Security-Policy" content="img-src 'self'">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
var t1 = async_test("First image should be blocked");
var t2 = async_test("Second image should be blocked");
window.onmessage = t1.step_func_done(function(e) {
if (e.data == "img blocked") {
frames[0].frames[0].frameElement.srcdoc =
`<script>
window.addEventListener('securitypolicyviolation', function(e) {
if (e.violatedDirective == 'img-src') {
top.postMessage('img blocked', '*');
}
})
</scr` + `ipt>
<img src='/content-security-policy/support/fail.png'
onload='top.postMessage("img loaded", "*")'/>`;
window.onmessage = t2.step_func_done(function(e) {
if (e.data != "img blocked")
assert_true(false, "The second image should have been blocked");
});
} else {
assert_true(false, "The first image should have been blocked");
}
});
</script>
<iframe src="support/srcdoc-child-frame.html"></iframe>
</body>
</html>

View file

@ -0,0 +1,19 @@
<head>
<meta http-equiv="Content-Security-Policy" content="img-src 'none'">
</head>
<body>
<script>
var i = document.createElement('iframe');
i.srcdoc=`<script>
window.addEventListener('securitypolicyviolation', function(e) {
if (e.violatedDirective == 'img-src') {
top.postMessage('img blocked', '*');
}
})
</scr` + `ipt>
<img src='/content-security-policy/support/fail.png'
onload='top.postMessage("img loaded", "*")'/>`;
i.id = "srcdoc-frame";
document.body.appendChild(i);
</script>
</body>

View file

@ -0,0 +1,2 @@
<meta http-equiv="Content-Security-Policy" content="{{GET[csp]}}">
CHILD FRAME

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<iframe src="support/frame-with-csp.sub.html?csp=script-src%20%27self%27"></iframe>
<div onclick="frames[0].location.href = 'javascript:parent.postMessage(\'executed\', \'*\')'" id="special_div"></div>
<script>
var t = async_test("Should have executed the javascript url");
window.onmessage = t.step_func(function(e) {
if (e.data == "executed")
t.done();
});
window.addEventListener('securitypolicyviolation', t.unreached_func("Should not have raised a violation event"));
document.getElementById('special_div').click();
</script>
</body>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<head>
<meta http-equiv="content-security-policy" content="script-src 'self' 'nonce-abc'">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<iframe src="support/frame-with-csp.sub.html"></iframe>
<div onclick="frames[0].location.href = 'javascript:parent.postMessage(\'executed\', \'*\')'" id="special_div"></div>
<script nonce='abc'>
var t = async_test("Should not have executed the javascript url");
window.onmessage = t.step_func(function(e) {
if (e.data == "executed")
assert_true(false, "Javascript url executed");
});
window.addEventListener('securitypolicyviolation', t.step_func_done(function(e) {
assert_equals(e.blockedURI, 'inline');
assert_equals(e.violatedDirective, 'script-src-attr');
}));
document.getElementById('special_div').click();
</script>
</body>

View file

@ -0,0 +1,75 @@
<!doctype html>
<meta charset="utf-8">
<title>Test for the page-break-* legacy shorthands.</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-cascade-4/#legacy-shorthand">
<link rel="help" href="https://drafts.csswg.org/css-break/#page-break-properties">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div></div>
<script>
const NEW_VALUES = ["page", "column"].filter(v => CSS.supports("break-before", v));
const LEGACY_VALUES = ["always", "auto", "left", "right", "avoid"];
const LEGACY_MAPPING = { "always": "page" };
const REVERSE_LEGACY_MAPPING = { "page": "always" };
const div = document.querySelector("div");
const cs = getComputedStyle(div);
test(function() {
for (const property of ["break-before", "break-after"]) {
for (const val of LEGACY_VALUES) {
const mapped_value = LEGACY_MAPPING[val] || val;
div.style["page-" + property] = val;
assert_equals(div.style["page-" + property], val);
assert_equals(div.style[property], mapped_value);
assert_equals(cs.getPropertyValue("page-" + property), val);
assert_equals(cs.getPropertyValue(property), mapped_value);
assert_not_equals(div.style.cssText.indexOf(property + ": " + mapped_value + ";"), -1);
assert_equals(div.style.cssText.indexOf("page-" + property), -1,
"Legacy shorthands don't appear in cssText");
}
}
}, "Legacy values of the shorthands work as expected")
test(function() {
for (const property of ["break-before", "break-after"]) {
for (const val of NEW_VALUES) {
const mapped_value = REVERSE_LEGACY_MAPPING[val] || "";
div.style[property] = val;
assert_equals(div.style[property], val);
assert_equals(div.style["page-" + property], mapped_value);
assert_equals(cs.getPropertyValue("page-" + property), mapped_value);
assert_equals(cs.getPropertyValue(property), val);
}
}
}, "New values work on the new longhands, but serialize to the empty string in the legacy shorthands");
test(function() {
for (const property of ["break-before", "break-after"]) {
for (const val of NEW_VALUES) {
div.style["page-" + property] = "";
div.style["page-" + property] = val;
assert_equals(div.style["page-" + property], "");
assert_equals(div.style[property], "");
assert_equals(cs.getPropertyValue("page-" + property), "auto");
assert_equals(cs.getPropertyValue(property), "auto");
}
}
}, "New values of the break longhands don't work on legacy shorthands");
// See https://github.com/w3c/csswg-drafts/issues/3332
test(function() {
for (const property of ["break-before", "break-after"]) {
div.style["page-" + property] = "var(--a)";
assert_equals(div.style["page-" + property], "var(--a)");
assert_equals(div.style[property], "");
assert_equals(div.style.cssText.indexOf("page-" + property), -1);
}
}, "Legacy shorthands really never appear on cssText, even when there are variable references");
</script>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Multi-column Layout Test Reference: column-span:all should act like column-span:none in different block formatting context</title>
<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<style>
#column {
column-count: 3;
column-rule: 6px solid;
width: 600px;
outline: 1px solid black;
}
h3 {
column-span: none;
outline: 1px solid blue;
}
</style>
<body onload="runTest();">
<article id="column">
<div>block1</div>
<div style="display: inline-block;">
<h3>non-spanner</h3>
</div>
<div style="overflow: hidden;">
<h3>non-spanner</h3>
</div>
<div style="column-span: all; outline: 1px solid green;">
Spanner
<h3>non-spanner in a spanner</h3>
</div>
<div>block2</div>
</article>
</body>
</html>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Multi-column Layout Test: column-span:all should act like column-span:none in different block formatting context</title>
<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#column-span">
<link rel="match" href="multicol-span-all-004-ref.html">
<meta name="assert" content="This test checks a column-span:all element should act like column-span: none if it's under different block formatting context.">
<style>
#column {
column-count: 3;
column-rule: 6px solid;
width: 600px;
outline: 1px solid black;
}
h3 {
column-span: all;
outline: 1px solid blue;
}
</style>
<body onload="runTest();">
<article id="column">
<div>block1</div>
<div style="display: inline-block;">
<h3>non-spanner</h3>
</div>
<div style="overflow: hidden;">
<h3>non-spanner</h3>
</div>
<div style="column-span: all; outline: 1px solid green;">
Spanner
<h3>non-spanner in a spanner</h3>
</div>
<div>block2</div>
</article>
</body>
</html>

View file

@ -42,7 +42,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {

View file

@ -43,7 +43,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield outside region");
test1.step( function() { test1.step( function() {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {

View file

@ -44,7 +44,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeypress event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeypress event fired in textfield inside region");
test1.step( function() { test1.step( function() {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeypress = test1.step_func(function (evt) { testTarget.onkeypress = test1.step_func(function (evt) {
@ -59,7 +59,7 @@
keyDown("textfield-inside"); keyDown("textfield-inside");
}); });
var test2 = async_test("onkeypress event fired in textfield outside region", {timeout: testTimeout}); var test2 = async_test("onkeypress event fired in textfield outside region");
test2.step( function() { test2.step( function() {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeypress = test2.step_func(function (evt) { testTarget.onkeypress = test2.step_func(function (evt) {

View file

@ -45,7 +45,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -59,7 +59,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textfield inside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textfield inside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -74,7 +74,7 @@
keyDown("textfield-inside"); keyDown("textfield-inside");
}); });
var test3 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textfield outside region");
test3.step( function() { test3.step( function() {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeydown = test3.step_func(function (evt) { testTarget.onkeydown = test3.step_func(function (evt) {
@ -88,7 +88,7 @@
}); });
}); });
var test4 = async_test("onkeyup event fired in textfield outside region", {timeout: testTimeout}); var test4 = async_test("onkeyup event fired in textfield outside region");
test4.step( function() { test4.step( function() {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeyup = test4.step_func(function (evt) { testTarget.onkeyup = test4.step_func(function (evt) {

View file

@ -47,7 +47,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield outside region");
test1.step( function() { test1.step( function() {
var testTarget = document.getElementById("textfield-outside"); var testTarget = document.getElementById("textfield-outside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -66,7 +66,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textarea outside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textarea outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textarea-outside"); var testTarget = document.getElementById("textarea-outside");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -80,7 +80,7 @@
}); });
}); });
var test3 = async_test("onkeydown event fired in textarea outside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textarea outside region");
test3.step( function() { test3.step( function() {
var testTarget = document.getElementById("textarea-outside"); var testTarget = document.getElementById("textarea-outside");
testTarget.onkeydown = test3.step_func( function(evt) { testTarget.onkeydown = test3.step_func( function(evt) {

View file

@ -49,7 +49,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -63,7 +63,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textfield inside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textfield inside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -78,7 +78,7 @@
pressDeleteKey("textfield-inside"); pressDeleteKey("textfield-inside");
}); });
var test3 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textfield outside region");
test3.step(function () { test3.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeydown = test3.step_func(function (evt) { testTarget.onkeydown = test3.step_func(function (evt) {
@ -92,7 +92,7 @@
}); });
}); });
var test4 = async_test("onkeyup event fired in textfield outside region", {timeout: testTimeout}); var test4 = async_test("onkeyup event fired in textfield outside region");
test4.step( function() { test4.step( function() {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onkeyup = test4.step_func(function (evt) { testTarget.onkeyup = test4.step_func(function (evt) {

View file

@ -47,7 +47,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield1 inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield1 inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside1"); var testTarget = document.getElementById("textfield-inside1");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -66,7 +66,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textfield2 inside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textfield2 inside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textfield-inside2"); var testTarget = document.getElementById("textfield-inside2");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -77,7 +77,7 @@
}); });
}); });
var test3 = async_test("onkeydown event fired in textfield2 inside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textfield2 inside region");
test3.step( function() { test3.step( function() {
var testTarget = document.getElementById("textfield-inside2"); var testTarget = document.getElementById("textfield-inside2");
testTarget.onkeydown = test3.step_func(function (evt) { testTarget.onkeydown = test3.step_func(function (evt) {
@ -96,7 +96,7 @@
}); });
}); });
var test4 = async_test("onkeyup event fired in textarea inside region", {timeout: testTimeout}); var test4 = async_test("onkeyup event fired in textarea inside region");
test4.step( function() { test4.step( function() {
var testTarget = document.getElementById("textarea-inside"); var testTarget = document.getElementById("textarea-inside");
testTarget.onkeyup = test4.step_func(function (evt) { testTarget.onkeyup = test4.step_func(function (evt) {
@ -110,7 +110,7 @@
}); });
}); });
var test5 = async_test("onkeydown event fired in textarea inside region", {timeout: testTimeout}); var test5 = async_test("onkeydown event fired in textarea inside region");
test5.step( function() { test5.step( function() {
var testTarget = document.getElementById("textarea-inside"); var testTarget = document.getElementById("textarea-inside");
testTarget.onkeydown = test5.step_func(function (evt) { testTarget.onkeydown = test5.step_func(function (evt) {

View file

@ -44,7 +44,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -63,7 +63,7 @@
}); });
}); });
var test2 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test2 = async_test("onkeydown event fired in textfield outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textfield-outside"); var testTarget = document.getElementById("textfield-outside");
testTarget.onkeydown = test2.step_func(function (evt) { testTarget.onkeydown = test2.step_func(function (evt) {
@ -77,7 +77,7 @@
}); });
}); });
var test3 = async_test("onkeyup event fired in textfield outside region", {timeout: testTimeout}); var test3 = async_test("onkeyup event fired in textfield outside region");
test3.step(function () { test3.step(function () {
var testTarget = document.getElementById("textfield-outside"); var testTarget = document.getElementById("textfield-outside");
testTarget.onkeyup = test3.step_func(function (evt) { testTarget.onkeyup = test3.step_func(function (evt) {

View file

@ -44,7 +44,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield outside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield outside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-outside"); var testTarget = document.getElementById("textfield-outside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -63,7 +63,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textfield outside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textfield outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textfield-outside"); var testTarget = document.getElementById("textfield-outside");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -75,7 +75,7 @@
}); });
}); });
var test3 = async_test("onkeydown event fired in textarea outside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textarea outside region");
test3.step(function () { test3.step(function () {
var testTarget = document.getElementById("textarea-outside"); var testTarget = document.getElementById("textarea-outside");
testTarget.onkeydown = test3.step_func(function (evt) { testTarget.onkeydown = test3.step_func(function (evt) {
@ -89,7 +89,7 @@
}); });
}); });
var test4 = async_test("onkeyup event fired in textarea outside region", {timeout: testTimeout}); var test4 = async_test("onkeyup event fired in textarea outside region");
test4.step( function() { test4.step( function() {
var testTarget = document.getElementById("textarea-outside"); var testTarget = document.getElementById("textarea-outside");
testTarget.onkeyup = test4.step_func(function (evt) { testTarget.onkeyup = test4.step_func(function (evt) {

View file

@ -44,7 +44,7 @@
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onkeydown event fired in textfield inside region", {timeout: testTimeout}); var test1 = async_test("onkeydown event fired in textfield inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("textfield-inside"); var testTarget = document.getElementById("textfield-inside");
testTarget.onkeydown = test1.step_func(function (evt) { testTarget.onkeydown = test1.step_func(function (evt) {
@ -63,7 +63,7 @@
}); });
}); });
var test2 = async_test("onkeyup event fired in textarea inside region", {timeout: testTimeout}); var test2 = async_test("onkeyup event fired in textarea inside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("textarea-inside"); var testTarget = document.getElementById("textarea-inside");
testTarget.onkeyup = test2.step_func(function (evt) { testTarget.onkeyup = test2.step_func(function (evt) {
@ -77,7 +77,7 @@
}); });
}); });
var test3 = async_test("onkeydown event fired in textarea inside region", {timeout: testTimeout}); var test3 = async_test("onkeydown event fired in textarea inside region");
test3.step( function() { test3.step( function() {
var testTarget = document.getElementById("textarea-inside"); var testTarget = document.getElementById("textarea-inside");
testTarget.onkeydown = test3.step_func(function (evt) { testTarget.onkeydown = test3.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onclick event fired inside region", {timeout: testTimeout}); var test1 = async_test("onclick event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onclick = test1.step_func(function (evt) { testTarget.onclick = test1.step_func(function (evt) {
@ -46,7 +46,7 @@
mouseClick("target-block"); mouseClick("target-block");
}); });
var test2 = async_test("onclick event fired outside region", {timeout: testTimeout}); var test2 = async_test("onclick event fired outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onclick = test2.step_func(function (evt) { testTarget.onclick = test2.step_func(function (evt) {

View file

@ -30,7 +30,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmousedown event fired inside region", {timeout: testTimeout}); var test1 = async_test("onmousedown event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onmousedown = test1.step_func(function (evt) { testTarget.onmousedown = test1.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmousedown event fired outside region", {timeout: testTimeout}); var test1 = async_test("onmousedown event fired outside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onmousedown = test1.step_func(function (evt) { testTarget.onmousedown = test1.step_func(function (evt) {

View file

@ -30,7 +30,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmouseup event fired inside region", {timeout: testTimeout}); var test1 = async_test("onmouseup event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onmouseup = test1.step_func(function (evt) { testTarget.onmouseup = test1.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmouseup event fired outside region", {timeout: testTimeout}); var test1 = async_test("onmouseup event fired outside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onmouseup = test1.step_func(function (evt) { testTarget.onmouseup = test1.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("ondblclick event fired inside region", {timeout: testTimeout}); var test1 = async_test("ondblclick event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.ondblclick = test1.step_func(function (evt) { testTarget.ondblclick = test1.step_func(function (evt) {
@ -46,7 +46,7 @@
mouseDblClick("target-block"); mouseDblClick("target-block");
}); });
var test2 = async_test("ondblclick event fired outside region", {timeout: testTimeout}); var test2 = async_test("ondblclick event fired outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.ondblclick = test2.step_func( function(evt) { testTarget.ondblclick = test2.step_func( function(evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmousemove event fired inside region", {timeout: testTimeout}); var test1 = async_test("onmousemove event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onmousemove = test1.step_func(function (evt) { testTarget.onmousemove = test1.step_func(function (evt) {
@ -46,7 +46,7 @@
mouseMove("target-block"); mouseMove("target-block");
}); });
var test2 = async_test("onmousemove event fired outside region", {timeout: testTimeout}); var test2 = async_test("onmousemove event fired outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onmousemove = test2.step_func(function (evt) { testTarget.onmousemove = test2.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmouseover event fired inside region", {timeout: testTimeout}); var test1 = async_test("onmouseover event fired inside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onmouseover = test1.step_func(function (evt) { testTarget.onmouseover = test1.step_func(function (evt) {
@ -46,7 +46,7 @@
mouseOver("target-block"); mouseOver("target-block");
}); });
var test2 = async_test("onmouseout event fired inside region", {timeout: testTimeout}); var test2 = async_test("onmouseout event fired inside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("target-block"); var testTarget = document.getElementById("target-block");
testTarget.onmouseout = test2.step_func(function (evt) { testTarget.onmouseout = test2.step_func(function (evt) {

View file

@ -31,7 +31,7 @@
<script type="text/javascript"> <script type="text/javascript">
if(getLeftPosition("target-block") !== 0) { if(getLeftPosition("target-block") !== 0) {
var test1 = async_test("onmouseover event fired outside region", {timeout: testTimeout}); var test1 = async_test("onmouseover event fired outside region");
test1.step(function () { test1.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onmouseover = test1.step_func(function (evt) { testTarget.onmouseover = test1.step_func(function (evt) {
@ -46,7 +46,7 @@
mouseOver("outside-region"); mouseOver("outside-region");
}); });
var test2 = async_test("onmouseout event fired outside region", {timeout: testTimeout}); var test2 = async_test("onmouseout event fired outside region");
test2.step(function () { test2.step(function () {
var testTarget = document.getElementById("outside-region"); var testTarget = document.getElementById("outside-region");
testTarget.onmouseout = test2.step_func(function (evt) { testTarget.onmouseout = test2.step_func(function (evt) {

View file

@ -21,7 +21,7 @@ function runSelectionTest(inSelectionTests, useMouse)
if( isRegionsEnabled() ) if( isRegionsEnabled() )
{ {
var selectionTest = async_test("Text was selected", {timeout: testTimeout}); var selectionTest = async_test("Text was selected");
selectionTest.step( function() selectionTest.step( function()
{ {
var endSelect = document.getElementById("end-select"); var endSelect = document.getElementById("end-select");

View file

@ -0,0 +1,179 @@
<!DOCTYPE HTML>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
<meta charset="utf-8">
<title>CSS Ruby Reference: ruby content w. layout-internal 'display' values</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<style>
html,body {
color:black; background-color:white; font:14px/1 monospace; padding:0; margin:0;
}
input {
width: 20px;
-webkit-appearance: none;
border: 1px solid black;
background: white;
}
.thg { display: table-header-group; }
.trg { display: table-row-group; }
.tfg { display: table-footer-group; }
.tr { display: table-row; }
.tc { display: table-cell; }
.tcg { display: table-column-group; }
.tco { display: table-column; }
.tca { display: table-caption; }
.t { display: table; }
.rb { display: ruby-base; }
.rt { display: ruby-text; }
.rbc { display: ruby-base-container; }
.rtc { display: ruby-text-container; }
.x { background: red}
</style>
</head>
<body>
<ruby><rb><span>a<span><input class="thg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="thg"><input class="thg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="thg">b</div><input class="thg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="thg">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="trg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="trg"><input class="trg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="trg">b</div><input class="trg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="trg">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tfg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tfg"><input class="tfg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tfg">b</div><input class="tfg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tfg">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tr"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tr"><input class="tr"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tr">b</div><input class="tr"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tr">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tc"><input class="tc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tc">b</div><input class="tc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tc">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tcg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tcg"><input class="tcg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tcg">b</div><input class="tcg"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tcg">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tco"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tco"><input class="tco"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tco">b</div><input class="tco"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tco">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="tca"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="tca"><input class="tca"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tca">b</div><input class="tca"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="tca">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="t"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="t"><input class="t"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="t">b</div><input class="t"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="t">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="rb"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="rb"><input class="rb"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rb">b</div><input class="rb"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rb">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="rt"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="rt"><input class="rt"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rt">b</div><input class="rt"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rt">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="rbc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="rbc"><input class="rbc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rbc">b</div><input class="rbc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rbc">b</div></span>c</span></rb></ruby>
<ruby><rb><span>a<span><input class="rtc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><input class="rtc"><input class="rtc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rtc">b</div><input class="rtc"></span>b</span></rb></ruby>
<ruby><rb><span>a<span><div class="rtc">b</div></span>c</span></rb></ruby>
<br><hr>
<!-- -->
<ruby><rb><span><input class="thg"></span>b</rb></ruby>
<ruby><rb><span><input class="thg"><input class="thg"></span>b</rb></ruby>
<ruby><rb><span><div class="thg">b</div><input class="thg"></span>b</rb></ruby>
<ruby><rb><span><div class="thg">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="trg"></span>b</rb></ruby>
<ruby><rb><span><input class="trg"><input class="trg"></span>b</rb></ruby>
<ruby><rb><span><div class="trg">b</div><input class="trg"></span>b</rb></ruby>
<ruby><rb><span><div class="trg">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="tfg"></span>b</rb></ruby>
<ruby><rb><span><input class="tfg"><input class="tfg"></span>b</rb></ruby>
<ruby><rb><span><div class="tfg">b</div><input class="tfg"></span>b</rb></ruby>
<ruby><rb><span><div class="tfg">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="tr"></span>b</rb></ruby>
<ruby><rb><span><input class="tr"><input class="tr"></span>b</rb></ruby>
<ruby><rb><span><div class="tr">b</div><input class="tr"></span>b</rb></ruby>
<ruby><rb><span><div class="tr">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="tc"></span>b</rb></ruby>
<ruby><rb><span><input class="tc"><input class="tc"></span>b</rb></ruby>
<ruby><rb><span><div class="tc">b</div><input class="tc"></span>b</rb></ruby>
<ruby><rb><span><div class="tc">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="tcg"></span>b</rb></ruby>
<ruby><rb><span><input class="tcg"><input class="tcg"></span>b</rb></ruby>
<ruby><rb><span><div class="tcg">b</div><input class="tcg"></span>b</rb></ruby>
<ruby><rb><span><div class="tcg">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="tco"></span>b</rb></ruby>
<ruby><rb><span><input class="tco"><input class="tco"></span>b</rb></ruby>
<ruby><rb><span><div class="tco">b</div><input class="tco"></span>b</rb></ruby>
<ruby><rb><span><div class="tco">b</div></span>c</rb></ruby>
<!-- bug NNNNNN
<ruby><rb><span><input class="tca"></span>b</rb></ruby>
<ruby><rb><span><input class="tca"><input class="tca"></span>b</rb></ruby>
<ruby><rb><span><div class="tca">b</div><input class="tca"></span>b</rb></ruby>
<ruby><rb><span><div class="tca">b</div></span>c</rb></ruby>
-->
<ruby><rb><span><input class="t"></span>b</rb></ruby>
<ruby><rb><span><input class="t"><input class="t"></span>b</rb></ruby>
<ruby><rb><span><div class="t">b</div><input class="t"></span>b</rb></ruby>
<ruby><rb><span><div class="t">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="rb"></span>b</rb></ruby>
<ruby><rb><span><input class="rb"><input class="rb"></span>b</rb></ruby>
<ruby><rb><span><div class="rb">b</div><input class="rb"></span>b</rb></ruby>
<ruby><rb><span><div class="rb">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="rt"></span>b</rb></ruby>
<ruby><rb><span><input class="rt"><input class="rt"></span>b</rb></ruby>
<ruby><rb><span><div class="rt">b</div><input class="rt"></span>b</rb></ruby>
<ruby><rb><span><div class="rt">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="rbc"></span>b</rb></ruby>
<ruby><rb><span><input class="rbc"><input class="rbc"></span>b</rb></ruby>
<ruby><rb><span><div class="rbc">b</div><input class="rbc"></span>b</rb></ruby>
<ruby><rb><span><div class="rbc">b</div></span>c</rb></ruby>
<ruby><rb><span><input class="rtc"></span>b</rb></ruby>
<ruby><rb><span><input class="rtc"><input class="rtc"></span>b</rb></ruby>
<ruby><rb><span><div class="rtc">b</div><input class="rtc"></span>b</rb></ruby>
<ruby><rb><span><div class="rtc">b</div></span>c</rb></ruby>
</body>
</html>

View file

@ -0,0 +1,181 @@
<!DOCTYPE HTML>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
<meta charset="utf-8">
<title>CSS Ruby Test: ruby content w. layout-internal 'display' values</title>
<link rel="help" href="https://drafts.csswg.org/css-ruby-1/#box-fixup">
<link rel="help" href="https://drafts.csswg.org/css-display-3/#inlinify">
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<link rel="match" href="ruby-layout-internal-boxes-ref.html">
<style>
html,body {
color:black; background-color:white; font:14px/1 monospace; padding:0; margin:0;
}
input {
width: 20px;
-webkit-appearance: none;
border: 1px solid black;
background: white;
}
.thg { display: table-header-group; }
.trg { display: table-row-group; }
.tfg { display: table-footer-group; }
.tr { display: table-row; }
.tc { display: table-cell; }
.tcg { display: table-column-group; }
.tco { display: table-column; }
.tca { display: table-caption; }
.t { display: table; }
.rb { display: ruby-base; }
.rt { display: ruby-text; }
.rbc { display: ruby-base-container; }
.rtc { display: ruby-text-container; }
</style>
</head>
<body>
<ruby><rb><span>a<input class="thg">b</span></rb></ruby>
<ruby><rb><span>a<input class="thg"><input class="thg">b</span></rb></ruby>
<ruby><rb><span>a<div class="thg">b</div><input class="thg">b</span></rb></ruby>
<ruby><rb><span>a<div class="thg">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="trg">b</span></rb></ruby>
<ruby><rb><span>a<input class="trg"><input class="trg">b</span></rb></ruby>
<ruby><rb><span>a<div class="trg">b</div><input class="trg">b</span></rb></ruby>
<ruby><rb><span>a<div class="trg">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tfg">b</span></rb></ruby>
<ruby><rb><span>a<input class="tfg"><input class="tfg">b</span></rb></ruby>
<ruby><rb><span>a<div class="tfg">b</div><input class="tfg">b</span></rb></ruby>
<ruby><rb><span>a<div class="tfg">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tr">b</span></rb></ruby>
<ruby><rb><span>a<input class="tr"><input class="tr">b</span></rb></ruby>
<ruby><rb><span>a<div class="tr">b</div><input class="tr">b</span></rb></ruby>
<ruby><rb><span>a<div class="tr">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tc">b</span></rb></ruby>
<ruby><rb><span>a<input class="tc"><input class="tc">b</span></rb></ruby>
<ruby><rb><span>a<div class="tc">b</div><input class="tc">b</span></rb></ruby>
<ruby><rb><span>a<div class="tc">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tcg">b</span></rb></ruby>
<ruby><rb><span>a<input class="tcg"><input class="tcg">b</span></rb></ruby>
<ruby><rb><span>a<div class="tcg">b</div><input class="tcg">b</span></rb></ruby>
<ruby><rb><span>a<div class="tcg">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tco">b</span></rb></ruby>
<ruby><rb><span>a<input class="tco"><input class="tco">b</span></rb></ruby>
<ruby><rb><span>a<div class="tco">b</div><input class="tco">b</span></rb></ruby>
<ruby><rb><span>a<div class="tco">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="tca">b</span></rb></ruby>
<ruby><rb><span>a<input class="tca"><input class="tca">b</span></rb></ruby>
<ruby><rb><span>a<div class="tca">b</div><input class="tca">b</span></rb></ruby>
<ruby><rb><span>a<div class="tca">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="t">b</span></rb></ruby>
<ruby><rb><span>a<input class="t"><input class="t">b</span></rb></ruby>
<ruby><rb><span>a<div class="t">b</div><input class="t">b</span></rb></ruby>
<ruby><rb><span>a<div class="t">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="rb">b</span></rb></ruby>
<ruby><rb><span>a<input class="rb"><input class="rb">b</span></rb></ruby>
<ruby><rb><span>a<div class="rb">b</div><input class="rb">b</span></rb></ruby>
<ruby><rb><span>a<div class="rb">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="rt">b</span></rb></ruby>
<ruby><rb><span>a<input class="rt"><input class="rt">b</span></rb></ruby>
<ruby><rb><span>a<div class="rt">b</div><input class="rt">b</span></rb></ruby>
<ruby><rb><span>a<div class="rt">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="rbc">b</span></rb></ruby>
<ruby><rb><span>a<input class="rbc"><input class="rbc">b</span></rb></ruby>
<ruby><rb><span>a<div class="rbc">b</div><input class="rbc">b</span></rb></ruby>
<ruby><rb><span>a<div class="rbc">b</div>c</span></rb></ruby>
<ruby><rb><span>a<input class="rtc">b</span></rb></ruby>
<ruby><rb><span>a<input class="rtc"><input class="rtc">b</span></rb></ruby>
<ruby><rb><span>a<div class="rtc">b</div><input class="rtc">b</span></rb></ruby>
<ruby><rb><span>a<div class="rtc">b</div>c</span></rb></ruby>
<br><hr>
<!-- same as above but without the SPAN wrapper -->
<ruby><rb><input class="thg">b</rb></ruby>
<ruby><rb><input class="thg"><input class="thg">b</rb></ruby>
<ruby><rb><div class="thg">b</div><input class="thg">b</rb></ruby>
<ruby><rb><div class="thg">b</div>c</rb></ruby>
<ruby><rb><input class="trg">b</rb></ruby>
<ruby><rb><input class="trg"><input class="trg">b</rb></ruby>
<ruby><rb><div class="trg">b</div><input class="trg">b</rb></ruby>
<ruby><rb><div class="trg">b</div>c</rb></ruby>
<ruby><rb><input class="tfg">b</rb></ruby>
<ruby><rb><input class="tfg"><input class="tfg">b</rb></ruby>
<ruby><rb><div class="tfg">b</div><input class="tfg">b</rb></ruby>
<ruby><rb><div class="tfg">b</div>c</rb></ruby>
<ruby><rb><input class="tr">b</rb></ruby>
<ruby><rb><input class="tr"><input class="tr">b</rb></ruby>
<ruby><rb><div class="tr">b</div><input class="tr">b</rb></ruby>
<ruby><rb><div class="tr">b</div>c</rb></ruby>
<ruby><rb><input class="tc">b</rb></ruby>
<ruby><rb><input class="tc"><input class="tc">b</rb></ruby>
<ruby><rb><div class="tc">b</div><input class="tc">b</rb></ruby>
<ruby><rb><div class="tc">b</div>c</rb></ruby>
<ruby><rb><input class="tcg">b</rb></ruby>
<ruby><rb><input class="tcg"><input class="tcg">b</rb></ruby>
<ruby><rb><div class="tcg">b</div><input class="tcg">b</rb></ruby>
<ruby><rb><div class="tcg">b</div>c</rb></ruby>
<ruby><rb><input class="tco">b</rb></ruby>
<ruby><rb><input class="tco"><input class="tco">b</rb></ruby>
<ruby><rb><div class="tco">b</div><input class="tco">b</rb></ruby>
<ruby><rb><div class="tco">b</div>c</rb></ruby>
<!-- FIXME after https://bugzilla.mozilla.org/show_bug.cgi?id=1510299
<ruby><rb><input class="tca">b</rb></ruby>
<ruby><rb><input class="tca"><input class="tca">b</rb></ruby>
<ruby><rb><div class="tca">b</div><input class="tca">b</rb></ruby>
<ruby><rb><div class="tca">b</div>c</rb></ruby>
-->
<ruby><rb><input class="t">b</rb></ruby>
<ruby><rb><input class="t"><input class="t">b</rb></ruby>
<ruby><rb><div class="t">b</div><input class="t">b</rb></ruby>
<ruby><rb><div class="t">b</div>c</rb></ruby>
<ruby><rb><input class="rb">b</rb></ruby>
<ruby><rb><input class="rb"><input class="rb">b</rb></ruby>
<ruby><rb><div class="rb">b</div><input class="rb">b</rb></ruby>
<ruby><rb><div class="rb">b</div>c</rb></ruby>
<ruby><rb><input class="rt">b</rb></ruby>
<ruby><rb><input class="rt"><input class="rt">b</rb></ruby>
<ruby><rb><div class="rt">b</div><input class="rt">b</rb></ruby>
<ruby><rb><div class="rt">b</div>c</rb></ruby>
<ruby><rb><input class="rbc">b</rb></ruby>
<ruby><rb><input class="rbc"><input class="rbc">b</rb></ruby>
<ruby><rb><div class="rbc">b</div><input class="rbc">b</rb></ruby>
<ruby><rb><div class="rbc">b</div>c</rb></ruby>
<ruby><rb><input class="rtc">b</rb></ruby>
<ruby><rb><input class="rtc"><input class="rtc">b</rb></ruby>
<ruby><rb><div class="rtc">b</div><input class="rtc">b</rb></ruby>
<ruby><rb><div class="rtc">b</div>c</rb></ruby>
</body>
</html>

View file

@ -20,15 +20,15 @@
<custom-element id="c-e-1"></custom-element> <custom-element id="c-e-1"></custom-element>
The following text should be green: The following text should be green:
<custom-element id="c-e-2"></custom-element> <custom-element id="c-e-2"></custom-element>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e-1", "part"]); const el = getElementByShadowIds(document, ["c-e-1", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "::part with host selector styles in first host"); }, "::part with host selector styles in first host");
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e-2", "part"]); const el = getElementByShadowIds(document, ["c-e-2", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "::part with host selector styles in second host"); }, "::part with host selector styles in second host");
</script> </script>

View file

@ -26,11 +26,11 @@
<custom-element-inner id="c-e-inner" part="c-e-part"></custom-element-inner> <custom-element-inner id="c-e-inner" part="c-e-part"></custom-element-inner>
</template> </template>
<custom-element-outer id="c-e-outer"></custom-element-outer> <custom-element-outer id="c-e-outer"></custom-element-outer>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]); const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "::part cannot be chained to reach elements in the inner host"); }, "::part cannot be chained to reach elements in the inner host");
test(function() { test(function() {

View file

@ -18,11 +18,11 @@
</template> </template>
The following text should be green: The following text should be green:
<div><custom-element id="c-e"></custom-element></div> <div><custom-element id="c-e"></custom-element></div>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e", "part"]); const el = getElementByShadowIds(document, ["c-e", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Complex selector for host works"); }, "Complex selector for host works");
</script> </script>

View file

@ -18,11 +18,11 @@
</template> </template>
The following text should be green: The following text should be green:
<pre><custom-element id="c-e"></custom-element></pre> <pre><custom-element id="c-e"></custom-element></pre>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e", "part"]); const el = getElementByShadowIds(document, ["c-e", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Non-matching complex selector for host does not style"); }, "Non-matching complex selector for host does not style");
</script> </script>

View file

@ -18,11 +18,11 @@
</template> </template>
The following text should be green: The following text should be green:
<custom-element id="c-e"></custom-element> <custom-element id="c-e"></custom-element>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e", "part"]); const el = getElementByShadowIds(document, ["c-e", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part is not styled when host is not selected"); }, "Part is not styled when host is not selected");
</script> </script>

View file

@ -20,11 +20,11 @@
</template> </template>
The following text should be green: The following text should be green:
<custom-element id="c-e"></custom-element> <custom-element id="c-e"></custom-element>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e", "part"]); const el = getElementByShadowIds(document, ["c-e", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part in selected host is not styled by ::part in a stylesheet inside the host"); }, "Part in selected host is not styled by ::part in a stylesheet inside the host");
</script> </script>

View file

@ -25,16 +25,16 @@
</template> </template>
The following text should be green: The following text should be green:
<custom-element-outer id="c-e-outer"></custom-element-outer> <custom-element-outer id="c-e-outer"></custom-element-outer>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorBlue = "rgb(0, 0, 255)"; const colorBlue = "rgb(0, 0, 255)";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e-outer", "green_part"]); const el = getElementByShadowIds(document, ["c-e-outer", "green_part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part in outer host is styled by document style sheet"); }, "Part in outer host is styled by document style sheet");
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "blue_part"]); const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "blue_part"]);
assert_equals(window.getComputedStyle(el).color, colorBlue); assert_equals(window.getComputedStyle(el).color, colorBlue);
}, "Part in inner host is not styled by document style sheet"); }, "Part in inner host is not styled by document style sheet");
</script> </script>

View file

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Shadow Parts - Invalidation Change Part Name IDL DOMTokenList</title>
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
<link href="http://www.google.com/" rel="author" title="Google">
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/shadow-helper.js"></script>
</head>
<body>
<style>#c-e::part(partp) { color: red; }</style>
<style>#c-e::part(new-partp) { color: green; }</style>
<script>installCustomElement("custom-element", "custom-element-template");</script>
<template id="custom-element-template">
<style>span { color: blue; }</style>
<span id="part" part="partp">This text</span>
</template>
The following text should be green:
<div><custom-element id="c-e"></custom-element></div>
<script>
"use strict";
const colorGreen = "rgb(0, 128, 0)";
test(function() {
const el = getElementByShadowIds(document, ["c-e", "part"]);
el.part.remove("partp");
el.part.add("new-partp");
assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part in selected host changed color via part IDL DOMTokenList attribute.");
</script>
</body>
</html>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Shadow Parts - Invalidation Change Part Name IDL Setter</title>
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
<link href="http://www.google.com/" rel="author" title="Google">
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/shadow-helper.js"></script>
</head>
<body>
<style>#c-e::part(partp) { color: red; }</style>
<script>installCustomElement("custom-element", "custom-element-template");</script>
<template id="custom-element-template">
<style>span { color: green; }</style>
<span id="part" part="partp">This text</span>
</template>
The following text should be green:
<div><custom-element id="c-e"></custom-element></div>
<script>
"use strict";
const colorGreen = "rgb(0, 128, 0)";
test(function() {
const el = getElementByShadowIds(document, ["c-e", "part"]);
el.part = "new-partp"
assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part in selected host changed color via part IDL attribute setter.");
</script>
</body>
</html>

View file

@ -18,13 +18,13 @@
</template> </template>
The following text should be green: The following text should be green:
<div><custom-element id="c-e"></custom-element></div> <div><custom-element id="c-e"></custom-element></div>
<script type="text/javascript"> <script>
"use strict"; "use strict";
test(function() { test(function() {
var part = getElementByShadowIds(document, ["c-e", "part"]); const part = getElementByShadowIds(document, ["c-e", "part"]);
var before = window.getComputedStyle(part).color; const before = window.getComputedStyle(part).color;
part.setAttribute("part", "new-partp"); part.setAttribute("part", "new-partp");
var after = window.getComputedStyle(part).color; const after = window.getComputedStyle(part).color;
assert_not_equals(before, after); assert_not_equals(before, after);
}, "Part in selected host changed color"); }, "Part in selected host changed color");
</script> </script>

View file

@ -18,13 +18,13 @@
</template> </template>
The following text should be green: The following text should be green:
<div id="elem"><custom-element id="c-e"></custom-element></div> <div id="elem"><custom-element id="c-e"></custom-element></div>
<script type="text/javascript"> <script>
"use strict"; "use strict";
test(function() { test(function() {
var part = getElementByShadowIds(document, ["c-e", "part"]); const part = getElementByShadowIds(document, ["c-e", "part"]);
var before = window.getComputedStyle(part).color; const before = window.getComputedStyle(part).color;
document.getElementById("elem").setAttribute("id", "new-elem"); document.getElementById("elem").setAttribute("id", "new-elem");
var after = window.getComputedStyle(part).color; const after = window.getComputedStyle(part).color;
assert_not_equals(before, after); assert_not_equals(before, after);
}, "Part in selected host changed color"); }, "Part in selected host changed color");
</script> </script>

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Shadow Parts - Part Name IDL</title>
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
<link href="http://www.google.com/" rel="author" title="Google">
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/shadow-helper.js"></script>
</head>
<body>
<span id="s_no_part"></span>
<span id="s_part" part="part1"></span>
<span id="s_2_parts" part="part1 part2"></span>
<script>
"use strict";
test(function() {
const parts = s_no_part.part;
assert_equals(parts.length, 0);
assert_equals(parts.value, "");
}, "Access to .part returns an empty DOMTokenList.");
test(function() {
const parts = s_2_parts.part;
assert_equals(parts.length, 2);
assert_equals(parts[0], "part1");
assert_equals(parts[1], "part2");
assert_equals(parts.value, "part1 part2");
}, "Multiple names give a DOMTokenList with multiple entries.");
test(function() {
const parts = s_no_part.part;
assert_equals(parts.length, 0);
assert_equals(parts.value, "");
parts.add("part1");
assert_equals(parts.length, 1);
assert_equals(parts.value, "part1");
}, "DOMTokenList created by access is persisted.");
test(function() {
const parts = s_part.part;
assert_equals(parts.length, 1);
assert_equals(parts.value, "part1");
parts.add("part2");
assert_equals(parts.length, 2);
assert_equals(parts.value, "part1 part2");
assert_equals(s_part.getAttribute("part"), parts.value);
parts.remove("part1");
assert_equals(parts.length, 1);
assert_equals(parts.value, "part2");
assert_equals(s_part.getAttribute("part"), parts.value);
}, "Changes in DOMTokenList are refected in attribute.");
</script>
</body>
</html>

View file

@ -18,11 +18,11 @@
</template> </template>
The following text should be green: The following text should be green:
<custom-element id="c-e"></custom-element> <custom-element id="c-e"></custom-element>
<script type="text/javascript"> <script>
"use strict"; "use strict";
const colorGreen = "rgb(0, 128, 0)"; const colorGreen = "rgb(0, 128, 0)";
test(function() { test(function() {
var el = getElementByShadowIds(document, ["c-e", "part"]); const el = getElementByShadowIds(document, ["c-e", "part"]);
assert_equals(window.getComputedStyle(el).color, colorGreen); assert_equals(window.getComputedStyle(el).color, colorGreen);
}, "Part in selected host is styled"); }, "Part in selected host is styled");
</script> </script>

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - discard - basic cases Reftest Reference</title> <title>CSS Test: text-space-collapse - discard - basic cases Reftest Reference</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - preserve-breaks - basic cases Reftest Reference</title> <title>CSS Test: text-space-collapse - preserve-breaks - basic cases Reftest Reference</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[

View file

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - trim-inner - basic cases Reftest Reference</title> <title>CSS Test: text-space-trim - trim-inner - basic cases Reftest Reference</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
@ -17,20 +17,20 @@
Test passes if each text positions in the first line match the corresponding positions in the second line. Test passes if each text positions in the first line match the corresponding positions in the second line.
</p> </p>
<div> <div>
<span>1 2</span> [<span>1 2</span>]
<span>  3  4  </span> [<span>  3  4  </span>]
<span>5 6</span> [<span>5 6</span>]
<span>7 [<span>7
8</span> 8</span>]
</div> </div>
<div> <div>
<span>1 2</span> [<span>1 2</span>]
<span>  3  4  </span> [<span>  3  4  </span>]
<span>5 6</span> [<span>5 6</span>]
<span>7 [<span>7
8</span> 8</span>]
</div> </div>
</body> </body>
</html> </html>

View file

@ -2,16 +2,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - discard - basic cases</title> <title>CSS Test: text-space-collapse - discard - basic cases</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<link rel="help" title="CSS Text Level 3: 4.1. White Space Collapsing: the white-space-collapsing property" href="http://www.w3.org/TR/css-text-3/#white-space-collapsing" /> <link rel="help" title="CSS Text Level 4: 3.1. White Space Collapsing: the text-space-collapse property" href="https://drafts.csswg.org/css-text-4/#white-space-collapsing" />
<link rel="match" href="reference/white-space-collapsing-discard-001-ref.xht"/> <link rel="match" href="reference/text-space-collapse-discard-001-ref.xht"/>
<meta name="flags" content="" /> <meta name="flags" content="" />
<meta name="assert" content="The UA should discard all white space in the element when white-space-collapsing is set to discard." /> <meta name="assert" content="The UA should discard all white space in the element when text-space-collapse is set to discard." />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
.test span { .test span {
white-space-collapsing: discard; text-space-collapse: discard;
} }
/* the CSS below is not part of the test */ /* the CSS below is not part of the test */
span { span {

View file

@ -2,16 +2,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - preserve-breaks - basic cases</title> <title>CSS Test: text-space-collapse - preserve-breaks - basic cases</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<link rel="help" title="CSS Text Level 3: 4.1. White Space Collapsing: the white-space-collapsing property" href="http://www.w3.org/TR/css-text-3/#white-space-collapsing" /> <link rel="help" title="CSS Text Level 4: 3.1. White Space Collapsing: the text-space-collapse property" href="https://drafts.csswg.org/css-text-4/#white-space-collapsing" />
<link rel="match" href="reference/white-space-collapsing-preserve-breaks-001-ref.xht"/> <link rel="match" href="reference/text-space-collapse-preserve-breaks-001-ref.xht"/>
<meta name="flags" content="" /> <meta name="flags" content="" />
<meta name="assert" content="The UA should collapse sequences of white space into a single character when white-space-collapsing is set to preserve." /> <meta name="assert" content="The UA should collapse sequences of white space into a single character but preserve segment breaks as forced line breaks when text-space-collapse is set to preserve-breaks." />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
.test span { .test span {
white-space-collapsing: preserve-breaks; text-space-collapse: preserve-breaks;
} }
/* the CSS below is not part of the test */ /* the CSS below is not part of the test */
span { span {

View file

@ -2,16 +2,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>CSS Test: white-space-collapsing - trim-inner - basic cases</title> <title>CSS Test: text-space-trim - trim-inner - basic cases</title>
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<link rel="help" title="CSS Text Level 3: 4.1. White Space Collapsing: the white-space-collapsing property" href="http://www.w3.org/TR/css-text-3/#white-space-collapsing" /> <link rel="help" title="CSS Text Level 4: 3.2. White Space Trimming: the text-space-trim property" href="https://drafts.csswg.org/css-text-4/#white-space-trim" />
<link rel="match" href="reference/white-space-collapsing-trim-inner-001-ref.xht"/> <link rel="match" href="reference/text-space-trim-trim-inner-001-ref.xht"/>
<meta name="flags" content="" /> <meta name="flags" content="" />
<meta name="assert" content="The UA should discard all white space at the beginning of a block and all white space at the end of a block when white-space-collapsing is set to trim-inner." /> <meta name="assert" content="The UA should discard all white space at the beginning of a block and all white space at the end of a block when text-space-trim is set to trim-inner." />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
.test span { .test span {
white-space-collapsing: trim-inner; text-space-trim: trim-inner;
} }
/* the CSS below is not part of the test */ /* the CSS below is not part of the test */
div { div {
@ -26,24 +26,24 @@
</p> </p>
<div> <div>
<div class="test"> <div class="test">
<span> 1 2 </span> [<span> 1 2 </span>]
<span>  3  4  </span> [<span>  3  4  </span>]
<span> 5 6 </span> [<span> 5 6 </span>]
<span> [<span>
7 7
8 8
</span> </span>]
</div> </div>
<div> <div>
<span>1 2</span> [<span>1 2</span>]
<span>  3  4  </span> [<span>  3  4  </span>]
<span>5 6</span> [<span>5 6</span>]
<span>7 [<span>7
8</span> 8</span>]
</div> </div>
</div> </div>
</body> </body>

View file

@ -75,8 +75,6 @@
testsPerSlice: 1, testsPerSlice: 1,
// milliseconds to wait before calling teardown and ending test // milliseconds to wait before calling teardown and ending test
duration: parseFloat(duration) * 1000, duration: parseFloat(duration) * 1000,
// the global suite timeout
timeout: timeout,
// prepare individual test // prepare individual test
setup: function(data, options) { setup: function(data, options) {
var styles = { var styles = {

View file

@ -76,8 +76,6 @@
testsPerSlice: 1, testsPerSlice: 1,
// milliseconds to wait before calling teardown and ending test // milliseconds to wait before calling teardown and ending test
duration: parseFloat(duration) * 1000, duration: parseFloat(duration) * 1000,
// the global suite timeout
timeout: timeout,
// prepare individual test // prepare individual test
setup: function(data, options) { setup: function(data, options) {
var styles = { var styles = {

View file

@ -86,8 +86,6 @@
testsPerSlice: 50, testsPerSlice: 50,
// milliseconds to wait before calling teardown and ending test // milliseconds to wait before calling teardown and ending test
duration: parseFloat(duration) * 1000, duration: parseFloat(duration) * 1000,
// the global suite timeout
timeout: timeout,
// prepare individual test // prepare individual test
setup: function(data, options) { setup: function(data, options) {
var styles = { var styles = {

View file

@ -69,8 +69,6 @@
testsPerSlice: 1, testsPerSlice: 1,
// milliseconds to wait before calling teardown and ending test // milliseconds to wait before calling teardown and ending test
duration: parseFloat(duration) * 1000, duration: parseFloat(duration) * 1000,
// the global suite timeout
timeout: timeout,
// prepare individual test // prepare individual test
setup: function(data, options) { setup: function(data, options) {
var styles = { var styles = {

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