mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #6037 - jgraham:wpt_update, r=Ms2ger
<!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6037) <!-- Reviewable:end -->
This commit is contained in:
commit
8979d77e77
99 changed files with 1957 additions and 1685 deletions
|
@ -3,4 +3,4 @@
|
||||||
reftype: ==
|
reftype: ==
|
||||||
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
|
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
disabled: intermittent pass #5803
|
disabled: intermittent pass (issue 5803)
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
type: reftest
|
type: reftest
|
||||||
reftype: ==
|
reftype: ==
|
||||||
refurl: /2dcontext/line-styles/canvas_linestyles_linecap_001-ref.htm
|
refurl: /2dcontext/line-styles/canvas_linestyles_linecap_001-ref.htm
|
||||||
disabled: intermittently passing #5714
|
disabled: intermittently passing (issue 5714)
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[canvas_shadows_002.htm]
|
[canvas_shadows_002.htm]
|
||||||
type: reftest
|
type: reftest
|
||||||
disabled: intermittent failure #5207
|
disabled: intermittent failure (issue 5207)
|
||||||
|
|
|
@ -3,4 +3,4 @@
|
||||||
reftype: ==
|
reftype: ==
|
||||||
refurl: /2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm
|
refurl: /2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
disabled: intermittent pass #5764
|
disabled: intermittent pass (issue 5764)
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[canvas_transformations_reset_001.html]
|
||||||
|
type: reftest
|
||||||
|
expected: FAIL
|
|
@ -117,3 +117,6 @@
|
||||||
[Newlines should not change when endings is 'native'.]
|
[Newlines should not change when endings is 'native'.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Blob interface object]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -30,9 +30,6 @@
|
||||||
[XMLHttpRequest interface: operation send([object Object\],[object Object\])]
|
[XMLHttpRequest interface: operation send([object Object\],[object Object\])]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[XMLHttpRequest interface: calling open(ByteString,USVString,boolean,USVString,USVString) on new XMLHttpRequest() with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[XMLHttpRequest interface: new XMLHttpRequest() must inherit property "overrideMimeType" with the proper type (20)]
|
[XMLHttpRequest interface: new XMLHttpRequest() must inherit property "overrideMimeType" with the proper type (20)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
type: testharness
|
type: testharness
|
||||||
[requestAnimationFrame callback is invoked at least once before the timeout]
|
[requestAnimationFrame callback is invoked at least once before the timeout]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -153,12 +153,6 @@
|
||||||
[Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError]
|
[Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Document interface: calling prepend([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document interface: calling append([object Object\],[object Object\]) on xmlDoc with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document interface: xmlDoc must inherit property "query" with the proper type (34)]
|
[Document interface: xmlDoc must inherit property "query" with the proper type (34)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -201,12 +195,6 @@
|
||||||
[DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError]
|
[DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[DocumentFragment interface: calling prepend([object Object\],[object Object\]) on document.createDocumentFragment() with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DocumentFragment interface: calling append([object Object\],[object Object\]) on document.createDocumentFragment() with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DocumentFragment interface: document.createDocumentFragment() must inherit property "query" with the proper type (7)]
|
[DocumentFragment interface: document.createDocumentFragment() must inherit property "query" with the proper type (7)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -225,15 +213,6 @@
|
||||||
[DocumentType interface object length]
|
[DocumentType interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[DocumentType interface: calling before([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DocumentType interface: calling after([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DocumentType interface: calling replaceWith([object Object\],[object Object\]) on document.doctype with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: existence and properties of interface object]
|
[Element interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -297,12 +276,6 @@
|
||||||
[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
|
[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element interface: calling prepend([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling append([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: element must inherit property "query" with the proper type (33)]
|
[Element interface: element must inherit property "query" with the proper type (33)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -315,15 +288,6 @@
|
||||||
[Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError]
|
[Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element interface: calling before([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling after([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling replaceWith([object Object\],[object Object\]) on element with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[NamedNodeMap interface object length]
|
[NamedNodeMap interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -348,42 +312,18 @@
|
||||||
[Text interface object length]
|
[Text interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CharacterData interface: calling before([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CharacterData interface: calling after([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on document.createTextNode("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[ProcessingInstruction interface: existence and properties of interface object]
|
[ProcessingInstruction interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[ProcessingInstruction interface object length]
|
[ProcessingInstruction interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CharacterData interface: calling before([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CharacterData interface: calling after([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Comment interface: existence and properties of interface object]
|
[Comment interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Comment interface object length]
|
[Comment interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CharacterData interface: calling before([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CharacterData interface: calling after([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Range interface: operation collapse(boolean)]
|
[Range interface: operation collapse(boolean)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -513,12 +453,6 @@
|
||||||
[DOMTokenList interface: operation toggle(DOMString,boolean)]
|
[DOMTokenList interface: operation toggle(DOMString,boolean)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[DOMTokenList interface: calling add(DOMString) on document.body.classList with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DOMTokenList interface: calling remove(DOMString) on document.body.classList with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[DOMSettableTokenList interface: existence and properties of interface object]
|
[DOMSettableTokenList interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -534,12 +468,60 @@
|
||||||
[DOMSettableTokenList interface: attribute value]
|
[DOMSettableTokenList interface: attribute value]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CharacterData interface: calling replaceWith([object Object\],[object Object\]) on document.createComment("abc") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Range interface object length]
|
[Range interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[NodeIterator interface object length]
|
[NodeIterator interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Document interface: operation prepend([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Document interface: operation append([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DocumentFragment interface: operation prepend([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DocumentFragment interface: operation append([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DocumentType interface: operation before([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DocumentType interface: operation after([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DocumentType interface: operation replaceWith([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Element interface: operation prepend([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Element interface: operation append([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Element interface: operation before([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Element interface: operation after([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Element interface: operation replaceWith([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CharacterData interface: operation before([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CharacterData interface: operation after([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CharacterData interface: operation replaceWith([object Object\],[object Object\])]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DOMTokenList interface: operation add(DOMString)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[DOMTokenList interface: operation remove(DOMString)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[CharacterData-deleteData.html]
|
||||||
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
|
@ -6,9 +6,6 @@
|
||||||
[If there are two imgs, a collection should be returned. (name)]
|
[If there are two imgs, a collection should be returned. (name)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[If there are two imgs, nothing should be returned. (id)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[If there are two imgs, the one with a name should be returned. (name and id)]
|
[If there are two imgs, the one with a name should be returned. (name and id)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1179,12 +1179,6 @@
|
||||||
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (81)]
|
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (81)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Document interface: calling prepend([object Object\],[object Object\]) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document interface: calling append([object Object\],[object Object\]) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "query" with the proper type (89)]
|
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "query" with the proper type (89)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -2178,12 +2172,6 @@
|
||||||
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
|
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element interface: calling prepend([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling append([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: document.createElement("noscript") must inherit property "query" with the proper type (33)]
|
[Element interface: document.createElement("noscript") must inherit property "query" with the proper type (33)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -2196,15 +2184,6 @@
|
||||||
[Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
|
[Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element interface: calling before([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling after([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element interface: calling replaceWith([object Object\],[object Object\]) on document.createElement("noscript") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTMLUnknownElement interface: existence and properties of interface object]
|
[HTMLUnknownElement interface: existence and properties of interface object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -5889,9 +5868,6 @@
|
||||||
[HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
|
[HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type (17)]
|
[HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type (17)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6711,9 +6687,6 @@
|
||||||
[HTMLCanvasElement interface object length]
|
[HTMLCanvasElement interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[HTMLCanvasElement interface: operation getContext(DOMString,any)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
|
[HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6729,9 +6702,6 @@
|
||||||
[HTMLCanvasElement interface: operation toBlob(FileCallback,DOMString,any)]
|
[HTMLCanvasElement interface: operation toBlob(FileCallback,DOMString,any)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[HTMLCanvasElement interface: calling getContext(DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[HTMLCanvasElement interface: document.createElement("canvas") must inherit property "probablySupportsContext" with the proper type (3)]
|
[HTMLCanvasElement interface: document.createElement("canvas") must inherit property "probablySupportsContext" with the proper type (3)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6807,9 +6777,6 @@
|
||||||
[CanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
|
[CanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: operation stroke(Path2D)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: operation drawSystemFocusRing(Element)]
|
[CanvasRenderingContext2D interface: operation drawSystemFocusRing(Element)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6894,9 +6861,6 @@
|
||||||
[CanvasRenderingContext2D interface: attribute direction]
|
[CanvasRenderingContext2D interface: attribute direction]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)]
|
[CanvasRenderingContext2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6939,12 +6903,6 @@
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type (24)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type (24)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling fill(Path2D,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling stroke(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawSystemFocusRing" with the proper type (33)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawSystemFocusRing" with the proper type (33)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6978,9 +6936,6 @@
|
||||||
[CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
[CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling clip(Path2D,CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip" with the proper type (41)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip" with the proper type (41)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -7026,12 +6981,6 @@
|
||||||
[CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
[CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "addHitRegion" with the proper type (52)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "addHitRegion" with the proper type (52)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -7068,9 +7017,6 @@
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (69)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (69)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: calling arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse" with the proper type (79)]
|
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse" with the proper type (79)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -9477,3 +9423,21 @@
|
||||||
[Location interface: window.location must have own property "reload"]
|
[Location interface: window.location must have own property "reload"]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[CanvasRenderingContext2D interface: operation fill(Path2D,CanvasFillRule)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CanvasRenderingContext2D interface: operation clip(Path2D,CanvasFillRule)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CanvasRenderingContext2D interface: operation createImageData(double,double)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[CanvasRenderingContext2D interface: operation putImageData(ImageData,double,double,double,double,double,double)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[WorkerGlobalScope interface: operation importScripts(DOMString)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1125,18 +1125,6 @@
|
||||||
[img.lowsrc: IDL set to object "test-valueOf" followed by IDL get]
|
[img.lowsrc: IDL set to object "test-valueOf" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[img.hspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[img.hspace: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[img.vspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[img.vspace: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[img.longDesc: setAttribute() to "" followed by IDL get]
|
[img.longDesc: setAttribute() to "" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -7347,9 +7335,6 @@
|
||||||
[object.hspace: setAttribute() to object "2" followed by IDL get]
|
[object.hspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[object.hspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[object.hspace: setAttribute() to object "3" followed by IDL get]
|
[object.hspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -7662,9 +7647,6 @@
|
||||||
[object.vspace: setAttribute() to object "2" followed by IDL get]
|
[object.vspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[object.vspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[object.vspace: setAttribute() to object "3" followed by IDL get]
|
[object.vspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11310,9 +11292,6 @@
|
||||||
[video.width: setAttribute() to object "2" followed by IDL get]
|
[video.width: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[video.width: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[video.width: setAttribute() to object "3" followed by IDL get]
|
[video.width: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11496,9 +11475,6 @@
|
||||||
[video.height: setAttribute() to object "2" followed by IDL get]
|
[video.height: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[video.height: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[video.height: setAttribute() to object "3" followed by IDL get]
|
[video.height: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -16977,24 +16953,12 @@
|
||||||
[canvas.width: setAttribute() to 4294967295 followed by IDL get]
|
[canvas.width: setAttribute() to 4294967295 followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[canvas.width: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[canvas.width: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[canvas.height: setAttribute() to 2147483648 followed by IDL get]
|
[canvas.height: setAttribute() to 2147483648 followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[canvas.height: setAttribute() to 4294967295 followed by IDL get]
|
[canvas.height: setAttribute() to 4294967295 followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[canvas.height: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[canvas.height: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[canvas.itemScope: typeof IDL attribute]
|
[canvas.itemScope: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5268,9 +5268,6 @@
|
||||||
[input.maxLength: setAttribute() to object "2" followed by IDL get]
|
[input.maxLength: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input.maxLength: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input.maxLength: setAttribute() to object "3" followed by IDL get]
|
[input.maxLength: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -5766,12 +5763,6 @@
|
||||||
[input.required: IDL set to object "test-valueOf" followed by IDL get]
|
[input.required: IDL set to object "test-valueOf" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[input.size: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input.size: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[input.src: typeof IDL attribute]
|
[input.src: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -8226,12 +8217,6 @@
|
||||||
[select.required: IDL set to object "test-valueOf" followed by IDL get]
|
[select.required: IDL set to object "test-valueOf" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[select.size: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[select.size: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[select.itemScope: typeof IDL attribute]
|
[select.itemScope: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11505,12 +11490,6 @@
|
||||||
[textarea.autofocus: IDL set to object "test-valueOf" followed by IDL get]
|
[textarea.autofocus: IDL set to object "test-valueOf" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea.cols: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea.cols: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea.dirName: typeof IDL attribute]
|
[textarea.dirName: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -12396,9 +12375,6 @@
|
||||||
[textarea.maxLength: setAttribute() to object "2" followed by IDL get]
|
[textarea.maxLength: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea.maxLength: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea.maxLength: setAttribute() to object "3" followed by IDL get]
|
[textarea.maxLength: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -12420,12 +12396,6 @@
|
||||||
[textarea.maxLength: IDL set to 2147483647 followed by getAttribute()]
|
[textarea.maxLength: IDL set to 2147483647 followed by getAttribute()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[textarea.rows: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea.rows: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[textarea.itemScope: typeof IDL attribute]
|
[textarea.itemScope: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2835,9 +2835,6 @@
|
||||||
[pre.width: setAttribute() to object "2" followed by IDL get]
|
[pre.width: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[pre.width: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[pre.width: setAttribute() to object "3" followed by IDL get]
|
[pre.width: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -4755,9 +4752,6 @@
|
||||||
[ol.start: setAttribute() to object "2" followed by IDL get]
|
[ol.start: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[ol.start: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[ol.start: setAttribute() to object "3" followed by IDL get]
|
[ol.start: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -6876,9 +6870,6 @@
|
||||||
[li.value: setAttribute() to object "2" followed by IDL get]
|
[li.value: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[li.value: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[li.value: setAttribute() to object "3" followed by IDL get]
|
[li.value: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1431,9 +1431,6 @@
|
||||||
[applet.hspace: setAttribute() to object "2" followed by IDL get]
|
[applet.hspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[applet.hspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[applet.hspace: setAttribute() to object "3" followed by IDL get]
|
[applet.hspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -1911,9 +1908,6 @@
|
||||||
[applet.vspace: setAttribute() to object "2" followed by IDL get]
|
[applet.vspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[applet.vspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[applet.vspace: setAttribute() to object "3" followed by IDL get]
|
[applet.vspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -3474,9 +3468,6 @@
|
||||||
[marquee.hspace: setAttribute() to object "2" followed by IDL get]
|
[marquee.hspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[marquee.hspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[marquee.hspace: setAttribute() to object "3" followed by IDL get]
|
[marquee.hspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -3660,9 +3651,6 @@
|
||||||
[marquee.scrollAmount: setAttribute() to object "2" followed by IDL get]
|
[marquee.scrollAmount: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[marquee.scrollAmount: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[marquee.scrollAmount: setAttribute() to object "3" followed by IDL get]
|
[marquee.scrollAmount: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -3846,9 +3834,6 @@
|
||||||
[marquee.scrollDelay: setAttribute() to object "2" followed by IDL get]
|
[marquee.scrollDelay: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[marquee.scrollDelay: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[marquee.scrollDelay: setAttribute() to object "3" followed by IDL get]
|
[marquee.scrollDelay: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -4140,9 +4125,6 @@
|
||||||
[marquee.vspace: setAttribute() to object "2" followed by IDL get]
|
[marquee.vspace: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[marquee.vspace: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[marquee.vspace: setAttribute() to object "3" followed by IDL get]
|
[marquee.vspace: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -3480,9 +3480,6 @@
|
||||||
[colgroup.span: setAttribute() to object "2" followed by IDL get]
|
[colgroup.span: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[colgroup.span: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[colgroup.span: setAttribute() to object "3" followed by IDL get]
|
[colgroup.span: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -5031,9 +5028,6 @@
|
||||||
[col.span: setAttribute() to object "2" followed by IDL get]
|
[col.span: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[col.span: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[col.span: setAttribute() to object "3" followed by IDL get]
|
[col.span: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11544,12 +11538,6 @@
|
||||||
[td.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
[td.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[td.colSpan: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[td.colSpan: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[td.rowSpan: typeof IDL attribute]
|
[td.rowSpan: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -11712,9 +11700,6 @@
|
||||||
[td.rowSpan: setAttribute() to object "2" followed by IDL get]
|
[td.rowSpan: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[td.rowSpan: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[td.rowSpan: setAttribute() to object "3" followed by IDL get]
|
[td.rowSpan: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -13737,12 +13722,6 @@
|
||||||
[th.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
[th.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[th.colSpan: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[th.colSpan: setAttribute() to object "3" followed by IDL get]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[th.rowSpan: typeof IDL attribute]
|
[th.rowSpan: typeof IDL attribute]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -13905,9 +13884,6 @@
|
||||||
[th.rowSpan: setAttribute() to object "2" followed by IDL get]
|
[th.rowSpan: setAttribute() to object "2" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[th.rowSpan: setAttribute() to object "3" followed by getAttribute()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[th.rowSpan: setAttribute() to object "3" followed by IDL get]
|
[th.rowSpan: setAttribute() to object "3" followed by IDL get]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[table-width-150percent.html]
|
|
||||||
type: reftest
|
|
||||||
reftype: ==
|
|
||||||
refurl: /html/rendering/non-replaced-elements/tables/table-width-150percent-ref.html
|
|
||||||
expected: PASS
|
|
|
@ -1 +1 @@
|
||||||
7ee605db117bfc96ef145a1c77d43b704baeacb2
|
b3b9deafa7ed87bd0649849f3aa729f21c4ff45d
|
|
@ -75,9 +75,6 @@
|
||||||
[WorkerGlobalScope interface: self must inherit property "ononline" with the proper type (6)]
|
[WorkerGlobalScope interface: self must inherit property "ononline" with the proper type (6)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[WorkerGlobalScope interface: calling importScripts(DOMString) on self with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[WorkerNavigator interface object length]
|
[WorkerNavigator interface object length]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -147,3 +144,6 @@
|
||||||
[WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (8)]
|
[WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (8)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[WorkerGlobalScope interface: operation importScripts(DOMString)]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[incoming-message.html]
|
|
||||||
type: testharness
|
|
||||||
[close() and incoming message]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[setInterval.html]
|
|
||||||
type: testharness
|
|
||||||
[close() and setInterval]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[setTimeout.html]
|
|
||||||
type: testharness
|
|
||||||
[close() and setTimeout]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ is ongoing that will affect a number of the following tests.</strong>
|
||||||
<script>
|
<script>
|
||||||
test(function() {
|
test(function() {
|
||||||
assert_true("Blob" in window, "window should have a Blob property.");
|
assert_true("Blob" in window, "window should have a Blob property.");
|
||||||
assert_equals(Blob.length, 2, "Blob.length should be 2.");
|
assert_equals(Blob.length, 0, "Blob.length should be 0.");
|
||||||
assert_true(Blob instanceof Function, "Blob should be a function.");
|
assert_true(Blob instanceof Function, "Blob should be a function.");
|
||||||
}, "Blob interface object");
|
}, "Blob interface object");
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
var open_rq = createdb(t);
|
var open_rq = createdb(t);
|
||||||
open_rq.onupgradeneeded = function(e) {
|
open_rq.onupgradeneeded = function(e) {
|
||||||
db = event.target.result;
|
db = e.target.result;
|
||||||
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
||||||
store.createIndex("idx", "iKey");
|
store.createIndex("idx", "iKey");
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
var open_rq = createdb(t);
|
var open_rq = createdb(t);
|
||||||
open_rq.onupgradeneeded = function(e) {
|
open_rq.onupgradeneeded = function(e) {
|
||||||
db = event.target.result;
|
db = e.target.result;
|
||||||
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
||||||
|
|
||||||
for(var i = 0; i < records.length; i++) {
|
for(var i = 0; i < records.length; i++) {
|
||||||
|
|
|
@ -29,7 +29,7 @@ open_rq.onsuccess = function(e) {
|
||||||
upgradeneeded_fired = counter++;
|
upgradeneeded_fired = counter++;
|
||||||
});
|
});
|
||||||
rq.onsuccess = t.step_func(function (e) {
|
rq.onsuccess = t.step_func(function (e) {
|
||||||
assert_equals(versionchange_fired, 0, 'block event fired #')
|
assert_equals(versionchange_fired, 0, 'versionchange event fired #')
|
||||||
assert_equals(blocked_fired, 1, 'block event fired #')
|
assert_equals(blocked_fired, 1, 'block event fired #')
|
||||||
assert_equals(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')
|
assert_equals(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>IDBDatabase.createObjectStore() - Attampt Create Exsists Object Store With Difference keyPath throw ConstraintError </title>
|
<title>IDBDatabase.createObjectStore() - attempting to create an existing object store with a different keyPath throw ConstraintError </title>
|
||||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||||
<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-IDBObjectStoreParameters-optionalParameters">
|
<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-IDBObjectStoreParameters-optionalParameters">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
|
|
|
@ -47,7 +47,7 @@ should_throw({
|
||||||
|
|
||||||
function should_work(val) {
|
function should_work(val) {
|
||||||
var t = async_test("Calling open() with version argument 1.5 should not throw.")
|
var t = async_test("Calling open() with version argument 1.5 should not throw.")
|
||||||
var rq = createdb(t)
|
var rq = createdb(t, val)
|
||||||
rq.onupgradeneeded = function() {
|
rq.onupgradeneeded = function() {
|
||||||
t.done()
|
t.done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,11 +25,14 @@
|
||||||
txn.objectStore("store")
|
txn.objectStore("store")
|
||||||
.openCursor().onsuccess = this.step_func(function(e)
|
.openCursor().onsuccess = this.step_func(function(e)
|
||||||
{
|
{
|
||||||
if (e.target.result)
|
if (e.target.result) {
|
||||||
|
count += 1;
|
||||||
e.target.result.continue()
|
e.target.result.continue()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
txn.oncomplete = this.step_func(function() {
|
txn.oncomplete = this.step_func(function() {
|
||||||
|
assert_equals(count, 100);
|
||||||
this.done()
|
this.done()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
<script src=support.js></script>
|
<script src=support.js></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// TODO XXX DO THE IDBTransaction abort test here here
|
|
||||||
var db, aborted,
|
var db, aborted,
|
||||||
t = async_test(document.title, {timeout: 10000}),
|
t = async_test(document.title, {timeout: 10000}),
|
||||||
record = { indexedProperty: "bar" };
|
record = { indexedProperty: "bar" };
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
// Errors
|
// Errors
|
||||||
db.onerror = fail(t, "db.error");
|
db.onerror = fail(t, "db.error");
|
||||||
db.abort = fail(t, "db.abort");
|
db.onabort = fail(t, "db.abort");
|
||||||
|
|
||||||
setTimeout(t.step_func(deleteDB), 10);
|
setTimeout(t.step_func(deleteDB), 10);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
<!--
|
|
||||||
Test converted from WebKit:
|
|
||||||
http://trac.webkit.org/browser/trunk/LayoutTests/storage/indexeddb/resources/interfaces.js
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<!-- Submitted from TestTWF Paris -->
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test IndexedDB's interfaces</title>
|
|
||||||
<link rel=author href="mailto:romain.huet@gmail.com" title="Romain Huet">
|
|
||||||
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<script src=support.js></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBCursor' in self);
|
|
||||||
}, "Test IDBCursor");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBCursorWithValue' in self);
|
|
||||||
}, "Test IDBCursorWithValue");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBDatabase' in self);
|
|
||||||
}, "Test IDBDatabase");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBFactory' in self);
|
|
||||||
}, "Test IDBFactory");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBIndex' in self);
|
|
||||||
}, "Test IDBIndex");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBKeyRange' in self);
|
|
||||||
}, "Test IDBKeyRange");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBObjectStore' in self);
|
|
||||||
}, "Test IDBObjectStore");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBOpenDBRequest' in self);
|
|
||||||
}, "Test IDBOpenDBRequest");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBRequest' in self);
|
|
||||||
}, "Test IDBRequest");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBTransaction' in self);
|
|
||||||
}, "Test IDBTransaction");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
assert_true('IDBVersionChangeEvent' in self);
|
|
||||||
}, "Test IDBVersionChangeEvent");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id=log></div>
|
|
|
@ -267,7 +267,7 @@ GitHub UI. Below is one method and others can be found on
|
||||||
|
|
||||||
|
|
||||||
4. Wait for feedback on your pull request and once your pull request is
|
4. Wait for feedback on your pull request and once your pull request is
|
||||||
accepted, detele youre branch (see '
|
accepted, delete your branch (see '
|
||||||
[When Pull Request is Accepted][cleanup]').
|
[When Pull Request is Accepted][cleanup]').
|
||||||
|
|
||||||
That's it! If you're currently at a Test the Web Forward event, find an
|
That's it! If you're currently at a Test the Web Forward event, find an
|
||||||
|
|
|
@ -14,8 +14,18 @@ function testNode(create, type) {
|
||||||
|
|
||||||
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(5, 10) })
|
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(5, 10) })
|
||||||
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(5, 0) })
|
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(5, 0) })
|
||||||
|
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(-1, 10) })
|
||||||
|
assert_throws("INDEX_SIZE_ERR", function() { node.deleteData(-1, 0) })
|
||||||
}, type + ".deleteData() out of bounds")
|
}, type + ".deleteData() out of bounds")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.deleteData(0, 2)
|
||||||
|
assert_equals(node.data, "st")
|
||||||
|
}, type + ".deleteData() at the start")
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
var node = create()
|
var node = create()
|
||||||
assert_equals(node.data, "test")
|
assert_equals(node.data, "test")
|
||||||
|
@ -32,6 +42,33 @@ function testNode(create, type) {
|
||||||
assert_equals(node.data, "tst")
|
assert_equals(node.data, "tst")
|
||||||
}, type + ".deleteData() in the middle")
|
}, type + ".deleteData() in the middle")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.deleteData(2, 0)
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.deleteData(0, 0)
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
}, type + ".deleteData() with zero count")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.deleteData(2, -1)
|
||||||
|
assert_equals(node.data, "te")
|
||||||
|
}, type + ".deleteData() with small negative count")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.deleteData(1, -0x100000000 + 2)
|
||||||
|
assert_equals(node.data, "tt")
|
||||||
|
}, type + ".deleteData() with large negative count")
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
var node = create()
|
var node = create()
|
||||||
node.data = "This is the character data test, append more 資料,更多測試資料";
|
node.data = "This is the character data test, append more 資料,更多測試資料";
|
||||||
|
|
|
@ -16,6 +16,38 @@ function testNode(create, type) {
|
||||||
assert_throws("INDEX_SIZE_ERR", function() { node.insertData(5, "") })
|
assert_throws("INDEX_SIZE_ERR", function() { node.insertData(5, "") })
|
||||||
}, type + ".insertData() out of bounds")
|
}, type + ".insertData() out of bounds")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
assert_throws("INDEX_SIZE_ERR", function() { node.insertData(-1, "x") })
|
||||||
|
assert_throws("INDEX_SIZE_ERR", function() { node.insertData(-0x100000000 + 5, "x") })
|
||||||
|
}, type + ".insertData() negative out of bounds")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.insertData(-0x100000000 + 2, "X")
|
||||||
|
assert_equals(node.data, "teXst")
|
||||||
|
}, type + ".insertData() negative in bounds")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.insertData(0, "")
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
}, type + ".insertData('')")
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var node = create()
|
||||||
|
assert_equals(node.data, "test")
|
||||||
|
|
||||||
|
node.insertData(0, "X")
|
||||||
|
assert_equals(node.data, "Xtest")
|
||||||
|
}, type + ".insertData() at the start")
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
var node = create()
|
var node = create()
|
||||||
assert_equals(node.data, "test")
|
assert_equals(node.data, "test")
|
||||||
|
|
53
tests/wpt/web-platform-tests/dom/nodes/Text-splitText.html
Normal file
53
tests/wpt/web-platform-tests/dom/nodes/Text-splitText.html
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>Text.splitText()</title>
|
||||||
|
<link rel=help href="https://dom.spec.whatwg.org/#dom-text-splittextoffset">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<div id="log"></div>
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
var text = document.createTextNode("camembert");
|
||||||
|
assert_throws("INDEX_SIZE_ERR", function () { text.splitText(10) });
|
||||||
|
}, "Split text after end of data");
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var text = document.createTextNode("");
|
||||||
|
var new_text = text.splitText(0);
|
||||||
|
assert_equals(text.data, "");
|
||||||
|
assert_equals(new_text.data, "");
|
||||||
|
}, "Split empty text");
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var text = document.createTextNode("comté");
|
||||||
|
var new_text = text.splitText(0);
|
||||||
|
assert_equals(text.data, "");
|
||||||
|
assert_equals(new_text.data, "comté");
|
||||||
|
}, "Split text at beginning");
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var text = document.createTextNode("comté");
|
||||||
|
var new_text = text.splitText(5);
|
||||||
|
assert_equals(text.data, "comté");
|
||||||
|
assert_equals(new_text.data, "");
|
||||||
|
}, "Split text at end");
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var text = document.createTextNode("comté");
|
||||||
|
var new_text = text.splitText(3);
|
||||||
|
assert_equals(text.data, "com");
|
||||||
|
assert_equals(new_text.data, "té");
|
||||||
|
assert_equals(new_text.parentNode, null);
|
||||||
|
}, "Split root");
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
var parent = document.createElement('div');
|
||||||
|
var text = document.createTextNode("bleu");
|
||||||
|
parent.appendChild(text);
|
||||||
|
var new_text = text.splitText(2);
|
||||||
|
assert_equals(text.data, "bl");
|
||||||
|
assert_equals(new_text.data, "eu");
|
||||||
|
assert_equals(text.nextSibling, new_text);
|
||||||
|
assert_equals(new_text.parentNode, parent);
|
||||||
|
}, "Split child");
|
||||||
|
</script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
def main(request, response):
|
||||||
|
response.headers.set("Content-Type", "text/plain;charset=" + request.GET.first("label"))
|
||||||
|
response.content = "hello encoding"
|
|
@ -86,7 +86,7 @@
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
var frame = document.createElement("iframe"),
|
var frame = document.createElement("iframe"),
|
||||||
name = compatibility_names[encoding.name] || encoding.name;
|
name = compatibility_names[encoding.name] || encoding.name;
|
||||||
frame.src = "resources/single-byte-raw.py?label=" + label
|
frame.src = "resources/text-plain-charset.py?label=" + label
|
||||||
frame.onload = t.step_func_done(function() {
|
frame.onload = t.step_func_done(function() {
|
||||||
assert_equals(frame.contentDocument.characterSet, name)
|
assert_equals(frame.contentDocument.characterSet, name)
|
||||||
assert_equals(frame.contentDocument.inputEncoding, name)
|
assert_equals(frame.contentDocument.inputEncoding, name)
|
||||||
|
|
|
@ -63,9 +63,7 @@ test(function() {
|
||||||
assert_equals(img2.id, "test4");
|
assert_equals(img2.id, "test4");
|
||||||
|
|
||||||
assert_false("test4" in document, '"test4" in document should be false');
|
assert_false("test4" in document, '"test4" in document should be false');
|
||||||
var collection = document.test4;
|
assert_equals(document.test4, undefined);
|
||||||
assert_class_string(collection, "HTMLCollection", "collection should be an HTMLCollection");
|
|
||||||
assert_array_equals(collection, [img1, img2]);
|
|
||||||
}, "If there are two imgs, nothing should be returned. (id)");
|
}, "If there are two imgs, nothing should be returned. (id)");
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
|
|
|
@ -373,7 +373,7 @@ ReflectionTests.typeMap = {
|
||||||
{toString:function() {return 2;}, valueOf: null},
|
{toString:function() {return 2;}, valueOf: null},
|
||||||
{valueOf:function() {return 3;}}],
|
{valueOf:function() {return 3;}}],
|
||||||
"domExpected": function(val) {
|
"domExpected": function(val) {
|
||||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||||
if (parsed === false || parsed > maxInt || parsed < minInt) {
|
if (parsed === false || parsed > maxInt || parsed < minInt) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -409,7 +409,7 @@ ReflectionTests.typeMap = {
|
||||||
{toString:function() {return 2;}, valueOf: null},
|
{toString:function() {return 2;}, valueOf: null},
|
||||||
{valueOf:function() {return 3;}}],
|
{valueOf:function() {return 3;}}],
|
||||||
"domExpected": function(val) {
|
"domExpected": function(val) {
|
||||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||||
// Note maxInt, not maxUnsigned.
|
// Note maxInt, not maxUnsigned.
|
||||||
if (parsed === false || parsed < 0 || parsed > maxInt) {
|
if (parsed === false || parsed < 0 || parsed > maxInt) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -450,7 +450,7 @@ ReflectionTests.typeMap = {
|
||||||
{toString:function() {return 2;}, valueOf: null},
|
{toString:function() {return 2;}, valueOf: null},
|
||||||
{valueOf:function() {return 3;}}],
|
{valueOf:function() {return 3;}}],
|
||||||
"domExpected": function(val) {
|
"domExpected": function(val) {
|
||||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||||
// Note maxInt, not maxUnsigned.
|
// Note maxInt, not maxUnsigned.
|
||||||
if (parsed === false || parsed < 1 || parsed > maxInt) {
|
if (parsed === false || parsed < 1 || parsed > maxInt) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -696,7 +696,7 @@ ReflectionTests.doReflects = function(data, idlName, idlObj, domName, domObj) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
domObj.setAttribute(domName, domTests[i]);
|
domObj.setAttribute(domName, domTests[i]);
|
||||||
ReflectionHarness.test(domObj.getAttribute(domName), domTests[i] + "", "setAttribute() to " + ReflectionHarness.stringRep(domTests[i]) + " followed by getAttribute()");
|
ReflectionHarness.test(domObj.getAttribute(domName), String(domTests[i]), "setAttribute() to " + ReflectionHarness.stringRep(domTests[i]) + " followed by getAttribute()");
|
||||||
ReflectionHarness.test(idlObj[idlName], domExpected[i], "setAttribute() to " + ReflectionHarness.stringRep(domTests[i]) + " followed by IDL get");
|
ReflectionHarness.test(idlObj[idlName], domExpected[i], "setAttribute() to " + ReflectionHarness.stringRep(domTests[i]) + " followed by IDL get");
|
||||||
if (ReflectionHarness.catchUnexpectedExceptions) {
|
if (ReflectionHarness.catchUnexpectedExceptions) {
|
||||||
ReflectionHarness.success();
|
ReflectionHarness.success();
|
||||||
|
|
|
@ -10,18 +10,18 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<meta name='flags' content='dom'>
|
<meta name='flags' content='dom'>
|
||||||
<style type='text/css'>
|
<style type='text/css'>
|
||||||
#colonlangcontroltest { color: red; font-weight: bold; width: 400px; }
|
#colonlangcontroltest { color: red; font-weight: bold; width: 400px; }
|
||||||
#colonlangcontroltest:lang(xx) { display:none; }
|
#colonlangcontroltest:lang(xx) { display:none; }
|
||||||
.test div { width: 50px; }
|
.test div { width: 50px; }
|
||||||
|
|
||||||
#box:lang(ko) { width: 100px; }
|
#box:lang(ko) { width: 100px; }
|
||||||
#box:lang(zh) { width: 100px; }
|
#box:lang(zh) { width: 100px; }
|
||||||
#box:lang(ja) { width: 100px; }
|
#box:lang(ja) { width: 100px; }
|
||||||
|
|
||||||
/* styling for debugging related notes */
|
/* styling for debugging related notes */
|
||||||
.notes span:lang(ko) { background-color: #0000FF; color: white; padding: 0 5px; }
|
.notes span:lang(ko) { background-color: #0000FF; color: white; padding: 0 5px; }
|
||||||
.notes span:lang(zh) { background-color: #0000FF; color: white; padding: 0 5px; }
|
.notes span:lang(zh) { background-color: #0000FF; color: white; padding: 0 5px; }
|
||||||
.notes span:lang(ja) { background-color: #0000FF; color: white; padding: 0 5px; }
|
.notes span:lang(ja) { background-color: #0000FF; color: white; padding: 0 5px; }
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Pattern Attribute</title>
|
<title>Pattern Attribute</title>
|
||||||
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
||||||
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
||||||
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -14,20 +14,20 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>Pattern Attribute</h1>
|
<h1>Pattern Attribute</h1>
|
||||||
<div style="display: none">
|
<div style="display: none">
|
||||||
<input pattern="[a-z]{3}" value="abcd" title="three letters max"/>
|
<input pattern="[a-z]{3}" value="abcd" title="three letters max"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("pattern"), "[a-z]{3}")}, "pattern attribute support on input element");
|
test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("pattern"), "[a-z]{3}")}, "pattern attribute support on input element");
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Required Attribute</title>
|
<title>Required Attribute</title>
|
||||||
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
||||||
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
||||||
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-required">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-required">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -14,20 +14,20 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>Required Attribute</h1>
|
<h1>Required Attribute</h1>
|
||||||
<div style="display: none">
|
<div style="display: none">
|
||||||
<input type="text" required="required" />
|
<input type="text" required="required" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("required"), "required")}, "required attribute support on input element");
|
test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("required"), "required")}, "required attribute support on input element");
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Search Input</title>
|
<title>Search Input</title>
|
||||||
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
||||||
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
|
||||||
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -14,21 +14,21 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>Search Input</h1>
|
<h1>Search Input</h1>
|
||||||
<input type="search" style="display:none" placeholder="Search..." />
|
<input type="search" style="display:none" placeholder="Search..." />
|
||||||
|
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
test(function() {assert_equals(document.getElementsByTagName("input")[0].type, "search")}, "search type support on input element", {
|
test(function() {assert_equals(document.getElementsByTagName("input")[0].type, "search")}, "search type support on input element", {
|
||||||
"help" : "https://html.spec.whatwg.org/multipage/#dom-input-type" });
|
"help" : "https://html.spec.whatwg.org/multipage/#dom-input-type" });
|
||||||
test(function() {assert_equals(document.getElementsByTagName("input")[0].placeholder, "Search...")}, "placeholder attribute support on input element", {
|
test(function() {assert_equals(document.getElementsByTagName("input")[0].placeholder, "Search...")}, "placeholder attribute support on input element", {
|
||||||
"help" : "https://html.spec.whatwg.org/multipage/#dom-input-placeholder" });
|
"help" : "https://html.spec.whatwg.org/multipage/#dom-input-placeholder" });
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -1,84 +1,84 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Input tel</title>
|
<title>Input tel</title>
|
||||||
<link rel="author" title="Kazuki Kanamori" href="mailto:yogurito@gmail.com">
|
<link rel="author" title="Kazuki Kanamori" href="mailto:yogurito@gmail.com">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#telephone-state-(type=tel)">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#telephone-state-(type=tel)">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Input tel</h1>
|
<h1>Input tel</h1>
|
||||||
<input type="tel" id="novalue" />
|
<input type="tel" id="novalue" />
|
||||||
<input type="tel" id="value_with_LF" value="0
1" />
|
<input type="tel" id="value_with_LF" value="0
1" />
|
||||||
<input type="tel" id="value_with_CR" value="0
1" />
|
<input type="tel" id="value_with_CR" value="0
1" />
|
||||||
<input type="tel" id="value_with_CRLF" value="0

1" />
|
<input type="tel" id="value_with_CRLF" value="0

1" />
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var element = document.getElementById('novalue');
|
var element = document.getElementById('novalue');
|
||||||
test(function(){
|
test(function(){
|
||||||
assert_equals(element.type, 'tel');
|
assert_equals(element.type, 'tel');
|
||||||
}, 'tel type supported on input element');
|
}, 'tel type supported on input element');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '0\u000A1';
|
element.value = '0\u000A1';
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
}, 'User agents must not allow users to insert "LF" (U+000A)');
|
}, 'User agents must not allow users to insert "LF" (U+000A)');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '0\u000D1';
|
element.value = '0\u000D1';
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
}, 'User agents must not allow users to insert "CR" (U+000D)');
|
}, 'User agents must not allow users to insert "CR" (U+000D)');
|
||||||
|
|
||||||
element = document.getElementById('value_with_LF');
|
element = document.getElementById('value_with_LF');
|
||||||
test(function(){
|
test(function(){
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
}, 'The value attribute, if specified, must have a value that contains no "LF" (U+000A)');
|
}, 'The value attribute, if specified, must have a value that contains no "LF" (U+000A)');
|
||||||
|
|
||||||
element = document.getElementById('value_with_CR');
|
element = document.getElementById('value_with_CR');
|
||||||
test(function(){
|
test(function(){
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
}, 'The value attribute, if specified, must have a value that contains no "CR" (U+000D)');
|
}, 'The value attribute, if specified, must have a value that contains no "CR" (U+000D)');
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
element = document.getElementById('novalue');
|
element = document.getElementById('novalue');
|
||||||
element.value = '0\u000D\u000A1';
|
element.value = '0\u000D\u000A1';
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
|
|
||||||
element = document.getElementById('value_with_CRLF');
|
element = document.getElementById('value_with_CRLF');
|
||||||
assert_equals(element.value, '01');
|
assert_equals(element.value, '01');
|
||||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||||
|
|
||||||
element = document.getElementById('novalue');
|
element = document.getElementById('novalue');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '+811234';
|
element.value = '+811234';
|
||||||
assert_equals(element.value, '+811234');
|
assert_equals(element.value, '+811234');
|
||||||
}, 'Element can accept the phone number with plus sign(country code)');
|
}, 'Element can accept the phone number with plus sign(country code)');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '1234#5678';
|
element.value = '1234#5678';
|
||||||
assert_equals(element.value, '1234#5678');
|
assert_equals(element.value, '1234#5678');
|
||||||
}, 'Element can accept the phone number with hash mark(extension number)');
|
}, 'Element can accept the phone number with hash mark(extension number)');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '123-456-789';
|
element.value = '123-456-789';
|
||||||
assert_equals(element.value, '123-456-789');
|
assert_equals(element.value, '123-456-789');
|
||||||
}, 'Element can accept the phone number with hyphen');
|
}, 'Element can accept the phone number with hyphen');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '123.456.789';
|
element.value = '123.456.789';
|
||||||
assert_equals(element.value, '123.456.789');
|
assert_equals(element.value, '123.456.789');
|
||||||
}, 'Element can accept the phone number with dots');
|
}, 'Element can accept the phone number with dots');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '1 23 4';
|
element.value = '1 23 4';
|
||||||
assert_equals(element.value, '1 23 4');
|
assert_equals(element.value, '1 23 4');
|
||||||
}, 'Element can accept the phone number with whitespace');
|
}, 'Element can accept the phone number with whitespace');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = ' 1234 ';
|
element.value = ' 1234 ';
|
||||||
assert_equals(element.value, ' 1234 ');
|
assert_equals(element.value, ' 1234 ');
|
||||||
}, 'Element can accept the phone number with leading & following whitespaces');
|
}, 'Element can accept the phone number with leading & following whitespaces');
|
||||||
test(function(){
|
test(function(){
|
||||||
element.value = '(03)12345678';
|
element.value = '(03)12345678';
|
||||||
assert_equals(element.value, '(03)12345678');
|
assert_equals(element.value, '(03)12345678');
|
||||||
}, 'Element can accept the phone number with parentheses(area code)');
|
}, 'Element can accept the phone number with parentheses(area code)');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -4,43 +4,43 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Input Time</title>
|
<title>Input Time</title>
|
||||||
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
<meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1>Input Time</h1>
|
<h1>Input Time</h1>
|
||||||
<div style="display:none;">
|
<div style="display:none;">
|
||||||
<input type="time "id="chkDefaultValue" />
|
<input type="time "id="chkDefaultValue" />
|
||||||
<input type="time" id="chkStep" />
|
<input type="time" id="chkStep" />
|
||||||
<input type="time" id="chkSetValueTest" />
|
<input type="time" id="chkSetValueTest" />
|
||||||
<input type="time" id="chkSupportAttribute" min="01:01:01.001" max="12:12:12.012" step="600" />
|
<input type="time" id="chkSupportAttribute" min="01:01:01.001" max="12:12:12.012" step="600" />
|
||||||
</div>
|
</div>
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
/* check default value */
|
/* check default value */
|
||||||
test(function(){ assert_equals(document.getElementById("chkDefaultValue").value, "");
|
test(function(){ assert_equals(document.getElementById("chkDefaultValue").value, "");
|
||||||
}, "time element of default time value");
|
}, "time element of default time value");
|
||||||
test(function(){assert_equals(document.getElementById('chkStep').step, "");
|
test(function(){assert_equals(document.getElementById('chkStep').step, "");
|
||||||
} , "step attribute on default value check");
|
}, "step attribute on default value check");
|
||||||
test(function(){assert_equals(document.getElementById('chkDefaultValue').max, "");
|
test(function(){assert_equals(document.getElementById('chkDefaultValue').max, "");
|
||||||
} , "max attribute on default value check")
|
}, "max attribute on default value check")
|
||||||
test(function(){assert_equals(document.getElementById('chkDefaultValue').max, "");
|
test(function(){assert_equals(document.getElementById('chkDefaultValue').max, "");
|
||||||
} , "min attribute on default value check")
|
}, "min attribute on default value check")
|
||||||
|
|
||||||
/* simple attribute test*/
|
/* simple attribute test*/
|
||||||
test(function(){assert_equals(document.getElementById("chkSupportAttribute").type,"time");}
|
test(function(){assert_equals(document.getElementById("chkSupportAttribute").type,"time");}
|
||||||
, "type attribute support on input element");
|
, "type attribute support on input element");
|
||||||
test(function(){assert_equals(document.getElementById('chkSupportAttribute').min, "01:01:01.001")}
|
test(function(){assert_equals(document.getElementById('chkSupportAttribute').min, "01:01:01.001")}
|
||||||
, "max attribute support on input element");
|
, "max attribute support on input element");
|
||||||
test(function(){assert_equals(document.getElementById('chkSupportAttribute').max, "12:12:12.012")}
|
test(function(){assert_equals(document.getElementById('chkSupportAttribute').max, "12:12:12.012")}
|
||||||
, "min attribute support on input element");
|
, "min attribute support on input element");
|
||||||
test(function(){assert_equals(document.getElementById("chkSupportAttribute").step, "600")}
|
test(function(){assert_equals(document.getElementById("chkSupportAttribute").step, "600")}
|
||||||
, "step attribute support on input element");
|
, "step attribute support on input element");
|
||||||
|
|
||||||
/* check step up and down */
|
/* check step up and down */
|
||||||
var _StepTest = document.getElementById("chkStep");
|
var _StepTest = document.getElementById("chkStep");
|
||||||
|
@ -48,160 +48,160 @@ test(function(){ assert_true(typeof(_StepTest.stepUp) ==="function" ) } , "ste
|
||||||
test(function(){ assert_true(typeof(_StepTest.stepDown) ==="function" ) } , "stepDown function support on input Element");
|
test(function(){ assert_true(typeof(_StepTest.stepDown) ==="function" ) } , "stepDown function support on input Element");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "";
|
_StepTest.step = "";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value,"12:01");
|
assert_equals(_StepTest.value,"12:01");
|
||||||
} , "stepUp step value empty on default step value ");
|
} , "stepUp step value empty on default step value ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "";
|
_StepTest.step = "";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value,"11:59");
|
assert_equals(_StepTest.value,"11:59");
|
||||||
}, "stepDown step value empty default step value");
|
}, "stepDown step value empty default step value");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "-600";
|
_StepTest.step = "-600";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "12:01");
|
assert_equals(_StepTest.value, "12:01");
|
||||||
},"stepUp on step value minus");
|
},"stepUp on step value minus");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "-600";
|
_StepTest.step = "-600";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "11:59");
|
assert_equals(_StepTest.value, "11:59");
|
||||||
},"stepDown on step value minus");
|
},"stepDown on step value minus");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "0";
|
_StepTest.step = "0";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "12:01");
|
assert_equals(_StepTest.value, "12:01");
|
||||||
} , "stepUp on step value zero ");
|
} , "stepUp on step value zero ");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "0";
|
_StepTest.step = "0";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "11:59");
|
assert_equals(_StepTest.value, "11:59");
|
||||||
} , "stepDown on step value zero ");
|
} , "stepDown on step value zero ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "00:00";
|
_StepTest.value = "00:00";
|
||||||
_StepTest.step = "86399";
|
_StepTest.step = "86399";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "23:59:59");
|
assert_equals(_StepTest.value, "23:59:59");
|
||||||
} , "stepUp on step value 24 hour");
|
} , "stepUp on step value 24 hour");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "23:59:59";
|
_StepTest.value = "23:59:59";
|
||||||
_StepTest.step = "86399";
|
_StepTest.step = "86399";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "00:00:00");
|
assert_equals(_StepTest.value, "00:00:00");
|
||||||
} , "stepDown on step value 24 hour ");
|
} , "stepDown on step value 24 hour ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "3600";
|
_StepTest.step = "3600";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "13:00");
|
assert_equals(_StepTest.value, "13:00");
|
||||||
} , "stepUp on step value hour ");
|
} , "stepUp on step value hour ");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "3600";
|
_StepTest.step = "3600";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "11:00");
|
assert_equals(_StepTest.value, "11:00");
|
||||||
} , "stepDown on step value hour ");
|
} , "stepDown on step value hour ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "1";
|
_StepTest.step = "1";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "12:00:01");
|
assert_equals(_StepTest.value, "12:00:01");
|
||||||
} , "stepUp on step value second ");
|
} , "stepUp on step value second ");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "1";
|
_StepTest.step = "1";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "11:59:59");
|
assert_equals(_StepTest.value, "11:59:59");
|
||||||
} , "stepDown on step value second ");
|
} , "stepDown on step value second ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "0.001";
|
_StepTest.step = "0.001";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "12:00:00.001");
|
assert_equals(_StepTest.value, "12:00:00.001");
|
||||||
} , "stepUp on step value miri second ");
|
} , "stepUp on step value miri second ");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "12:00";
|
_StepTest.value = "12:00";
|
||||||
_StepTest.step = "0.001";
|
_StepTest.step = "0.001";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "11:59:59.999");
|
assert_equals(_StepTest.value, "11:59:59.999");
|
||||||
} , "stepDown on step value miri second ");
|
} , "stepDown on step value miri second ");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "13:00:00";
|
_StepTest.value = "13:00:00";
|
||||||
_StepTest.step = "1";
|
_StepTest.step = "1";
|
||||||
_StepTest.stepUp(2);
|
_StepTest.stepUp(2);
|
||||||
assert_equals(_StepTest.value, "13:00:02");
|
assert_equals(_StepTest.value, "13:00:02");
|
||||||
}, "stepUp argment 2 times");
|
}, "stepUp argment 2 times");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "13:00:00";
|
_StepTest.value = "13:00:00";
|
||||||
_StepTest.step = "1";
|
_StepTest.step = "1";
|
||||||
_StepTest.stepDown(2);
|
_StepTest.stepDown(2);
|
||||||
assert_equals(_StepTest.value, "12:59:58");
|
assert_equals(_StepTest.value, "12:59:58");
|
||||||
}, "stepDown argment 2 times");
|
}, "stepDown argment 2 times");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.max = "15:00";
|
_StepTest.max = "15:00";
|
||||||
_StepTest.value = "15:00";
|
_StepTest.value = "15:00";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "15:00");
|
assert_equals(_StepTest.value, "15:00");
|
||||||
_StepTest.max = "";
|
_StepTest.max = "";
|
||||||
} , "stepUp stop because it exceeds the maximum value");
|
} , "stepUp stop because it exceeds the maximum value");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.min = "13:00";
|
_StepTest.min = "13:00";
|
||||||
_StepTest.value = "13:00";
|
_StepTest.value = "13:00";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "13:00");
|
assert_equals(_StepTest.value, "13:00");
|
||||||
_StepTest.min="";
|
_StepTest.min="";
|
||||||
} , "stepDown Stop so lower than the minimum value");
|
} , "stepDown Stop so lower than the minimum value");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.max = "15:01";
|
_StepTest.max = "15:01";
|
||||||
_StepTest.value = "15:00";
|
_StepTest.value = "15:00";
|
||||||
_StepTest.step = "120";
|
_StepTest.step = "120";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "15:01");
|
assert_equals(_StepTest.value, "15:01");
|
||||||
_StepTest.max = "";
|
_StepTest.max = "";
|
||||||
} , "stop at border on stepUp");
|
} , "stop at border on stepUp");
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.min = "12:59";
|
_StepTest.min = "12:59";
|
||||||
_StepTest.value = "13:00";
|
_StepTest.value = "13:00";
|
||||||
_StepTest.step = "120";
|
_StepTest.step = "120";
|
||||||
_StepTest.stepDown();
|
_StepTest.stepDown();
|
||||||
assert_equals(_StepTest.value, "12:59");
|
assert_equals(_StepTest.value, "12:59");
|
||||||
_StepTest.min="";
|
_StepTest.min="";
|
||||||
} , "stop at border on stepDown");
|
} , "stop at border on stepDown");
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
_StepTest.value = "";
|
_StepTest.value = "";
|
||||||
_StepTest.step = "60";
|
_StepTest.step = "60";
|
||||||
_StepTest.stepUp();
|
_StepTest.stepUp();
|
||||||
assert_equals(_StepTest.value, "00:01");
|
assert_equals(_StepTest.value, "00:01");
|
||||||
} , " empty value of stepUp");
|
} , " empty value of stepUp");
|
||||||
|
|
||||||
|
|
||||||
/* set value test */
|
/* set value test */
|
||||||
test(function(){
|
test(function(){
|
||||||
var _time = document.getElementById("chkSetValueTest");
|
var _time = document.getElementById("chkSetValueTest");
|
||||||
_time.value = "12:00:00.000";
|
_time.value = "12:00:00.000";
|
||||||
assert_equals(_time.value, "12:00:00.000");
|
assert_equals(_time.value, "12:00:00.000");
|
||||||
_time.value = "hh:mi:ss.sss";
|
_time.value = "hh:mi:ss.sss";
|
||||||
assert_equals(_time.value, "");
|
assert_equals(_time.value, "");
|
||||||
}, "set value on not time format value");
|
}, "set value on not time format value");
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,59 +1,59 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Input url</title>
|
<title>Input url</title>
|
||||||
<link rel="author" title="Hyeonseok Shin" href="mailto:hyeonseok@gmail.com">
|
<link rel="author" title="Hyeonseok Shin" href="mailto:hyeonseok@gmail.com">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#url-state-%28type=url%29">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#url-state-%28type=url%29">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Input url</h1>
|
<h1>Input url</h1>
|
||||||
<div style="display: none">
|
<div style="display: none">
|
||||||
<input type="url" id="type_support" />
|
<input type="url" id="type_support" />
|
||||||
<input type="url" id="set_value_LF" />
|
<input type="url" id="set_value_LF" />
|
||||||
<input type="url" id="set_value_CR" />
|
<input type="url" id="set_value_CR" />
|
||||||
<input type="url" id="set_value_CRLF" />
|
<input type="url" id="set_value_CRLF" />
|
||||||
<input type="url" id="value_with_CRLF" value="a
a" />
|
<input type="url" id="value_with_CRLF" value="a
a" />
|
||||||
<input type="url" id="value_with_leading_trailing_white_space" value=" aa " />
|
<input type="url" id="value_with_leading_trailing_white_space" value=" aa " />
|
||||||
<input type="url" id="value_with_leading_trailing_inner_white_space" value=" a a " />
|
<input type="url" id="value_with_leading_trailing_inner_white_space" value=" a a " />
|
||||||
</div>
|
</div>
|
||||||
<div id="log">
|
<div id="log">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
test(function(){
|
test(function(){
|
||||||
var element = document.getElementById('type_support');
|
var element = document.getElementById('type_support');
|
||||||
assert_equals(element.type, 'url');
|
assert_equals(element.type, 'url');
|
||||||
}, 'url type supported on input element');
|
}, 'url type supported on input element');
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
var element = document.getElementById('set_value_LF');
|
var element = document.getElementById('set_value_LF');
|
||||||
element.value = 'a\u000Aa';
|
element.value = 'a\u000Aa';
|
||||||
assert_equals(element.value, 'aa');
|
assert_equals(element.value, 'aa');
|
||||||
|
|
||||||
element = document.getElementById('set_value_CR');
|
element = document.getElementById('set_value_CR');
|
||||||
element.value = 'a\u000Da';
|
element.value = 'a\u000Da';
|
||||||
assert_equals(element.value, 'aa');
|
assert_equals(element.value, 'aa');
|
||||||
|
|
||||||
element = document.getElementById('set_value_CRLF');
|
element = document.getElementById('set_value_CRLF');
|
||||||
element.value = 'a\u000D\u000Aa';
|
element.value = 'a\u000D\u000Aa';
|
||||||
assert_equals(element.value, 'aa');
|
assert_equals(element.value, 'aa');
|
||||||
}, 'The value must not be set with "LF" (U+000A) or "CR" (U+000D)');
|
}, 'The value must not be set with "LF" (U+000A) or "CR" (U+000D)');
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
var element = document.getElementById('value_with_CRLF');
|
var element = document.getElementById('value_with_CRLF');
|
||||||
assert_equals(element.value, 'aa');
|
assert_equals(element.value, 'aa');
|
||||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||||
|
|
||||||
test(function(){
|
test(function(){
|
||||||
var element = document.getElementById('value_with_leading_trailing_white_space');
|
var element = document.getElementById('value_with_leading_trailing_white_space');
|
||||||
assert_equals(element.value, 'aa');
|
assert_equals(element.value, 'aa');
|
||||||
|
|
||||||
element = document.getElementById('value_with_leading_trailing_inner_white_space');
|
element = document.getElementById('value_with_leading_trailing_inner_white_space');
|
||||||
assert_equals(element.value, 'a a');
|
assert_equals(element.value, 'a a');
|
||||||
}, 'The value sanitization algorithm is as follows: Strip leading and trailing whitespace from the value.');
|
}, 'The value sanitization algorithm is as follows: Strip leading and trailing whitespace from the value.');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<!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>Template tag with children div tags inside</title>
|
<title>Template tag with children div tags inside</title>
|
||||||
<link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"/>
|
<link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>Template tag with div tags inside</p>
|
<p>Template tag with div tags inside</p>
|
||||||
<template>
|
<template>
|
||||||
<div>This is div inside template</div>
|
<div>This is div inside template</div>
|
||||||
<div>This is another div inside template</div>
|
<div>This is another div inside template</div>
|
||||||
</template>
|
</template>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,16 +1,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>Template tag with children div tags inside another template tag</title>
|
<title>Template tag with children div tags inside another template tag</title>
|
||||||
<link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"/>
|
<link rel="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>Template tag with children div tags inside another template tag</p>
|
<p>Template tag with children div tags inside another template tag</p>
|
||||||
<template>
|
<template>
|
||||||
<template>
|
<template>
|
||||||
<div>This is div inside template</div>
|
<div>This is div inside template</div>
|
||||||
<div>This is another div inside template</div>
|
<div>This is another div inside template</div>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,56 +1,56 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE HTML>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Creating and deleting captions</title>
|
<title>Creating and deleting captions</title>
|
||||||
<link rel="author" title="Erika Navara" href="mailto:edoyle@microsoft.com">
|
<link rel="author" title="Erika Navara" href="mailto:edoyle@microsoft.com">
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-table-element" />
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-table-element" />
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-createcaption" />
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-createcaption" />
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-deletecaption" />
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-deletecaption" />
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<table id="table1" style="display:none">
|
<table id="table1" style="display:none">
|
||||||
<caption id="caption1">caption</caption>
|
<caption id="caption1">caption</caption>
|
||||||
<tr>
|
<tr>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="table2" style="display:none">
|
<table id="table2" style="display:none">
|
||||||
<tr>
|
<tr>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table id="table3" style="display:none">
|
<table id="table3" style="display:none">
|
||||||
<caption id="caption3">caption 3</caption>
|
<caption id="caption3">caption 3</caption>
|
||||||
<tr>
|
<tr>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
<td>cell</td>
|
<td>cell</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<script>
|
<script>
|
||||||
test(function () {
|
test(function () {
|
||||||
var table1 = document.getElementById('table1');
|
var table1 = document.getElementById('table1');
|
||||||
var testCaption = table1.createCaption();
|
var testCaption = table1.createCaption();
|
||||||
var table1FirstCaption = table1.caption;
|
var table1FirstCaption = table1.caption;
|
||||||
assert_equals(testCaption, table1FirstCaption);
|
assert_equals(testCaption, table1FirstCaption);
|
||||||
}, "createCaption method returns the first caption element child of the table")
|
}, "createCaption method returns the first caption element child of the table")
|
||||||
test(function () {
|
test(function () {
|
||||||
var table2 = document.getElementById('table2');
|
var table2 = document.getElementById('table2');
|
||||||
var test2Caption = table2.createCaption();
|
var test2Caption = table2.createCaption();
|
||||||
var table2FirstNode = table2.firstChild;
|
var table2FirstNode = table2.firstChild;
|
||||||
assert_true(test2Caption instanceof HTMLTableCaptionElement);
|
assert_true(test2Caption instanceof HTMLTableCaptionElement);
|
||||||
assert_equals(table2FirstNode, test2Caption);
|
assert_equals(table2FirstNode, test2Caption);
|
||||||
}, "createCaption method creates a new caption and inserts it as the first node of the table element")
|
}, "createCaption method creates a new caption and inserts it as the first node of the table element")
|
||||||
test(function () {
|
test(function () {
|
||||||
var table3 = document.getElementById('table3');
|
var table3 = document.getElementById('table3');
|
||||||
assert_equals(table3.caption.textContent, "caption 3");
|
assert_equals(table3.caption.textContent, "caption 3");
|
||||||
table3.deleteCaption();
|
table3.deleteCaption();
|
||||||
assert_equals(table3.caption, null);
|
assert_equals(table3.caption, null);
|
||||||
}, "deleteCaption method removes the first caption element child of the table element")
|
}, "deleteCaption method removes the first caption element child of the table element")
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<title>HTML time element API</title>
|
<title>HTML time element API</title>
|
||||||
<style>
|
<style>
|
||||||
#time { visibility: hidden; }
|
#time { visibility: hidden; }
|
||||||
</style>
|
</style>
|
||||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-time-element">
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-time-element">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<!-- intentionally nested to test parsing rules -->
|
<!-- intentionally nested to test parsing rules -->
|
||||||
<p id="time"><time pubdate datetime="2000-02-01T03:04:05Z">Dummy text <time>2001-06-07T<time>08:09<time></time></time>Z</time></time></p>
|
<p id="time"><time pubdate datetime="2000-02-01T03:04:05Z">Dummy text <time>2001-06-07T<time>08:09<time></time></time>Z</time></time></p>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function makeTime(dateTime,contents,dateTimeProp) {
|
function makeTime(dateTime,contents,dateTimeProp) {
|
||||||
var timeEl = document.createElement('time');
|
var timeEl = document.createElement('time');
|
||||||
if( dateTime ) {
|
if( dateTime ) {
|
||||||
timeEl.setAttribute('datetime',dateTime);
|
timeEl.setAttribute('datetime',dateTime);
|
||||||
}
|
}
|
||||||
if( contents ) {
|
if( contents ) {
|
||||||
timeEl.innerHTML = contents;
|
timeEl.innerHTML = contents;
|
||||||
}
|
}
|
||||||
if( dateTimeProp ) {
|
if( dateTimeProp ) {
|
||||||
timeEl.dateTime = dateTimeProp;
|
timeEl.dateTime = dateTimeProp;
|
||||||
}
|
}
|
||||||
return timeEl;
|
return timeEl;
|
||||||
}
|
}
|
||||||
|
|
||||||
var timep = document.getElementById('time');
|
var timep = document.getElementById('time');
|
||||||
|
@ -34,35 +34,35 @@ var times = timep.getElementsByTagName('time');
|
||||||
|
|
||||||
//TIME elements
|
//TIME elements
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( times.length, 4 );
|
assert_equals( times.length, 4 );
|
||||||
}, 'HTML parsing should locate 4 time elements in this document');
|
}, 'HTML parsing should locate 4 time elements in this document');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_true( !!window.HTMLTimeElement );
|
assert_true( !!window.HTMLTimeElement );
|
||||||
}, 'HTMLTimeElement should be exposed for prototyping');
|
}, 'HTMLTimeElement should be exposed for prototyping');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_true( makeTime() instanceof window.HTMLTimeElement, 'createElement variant' );
|
assert_true( makeTime() instanceof window.HTMLTimeElement, 'createElement variant' );
|
||||||
assert_true( times[0] instanceof window.HTMLTimeElement, 'HTML parsing variant' );
|
assert_true( times[0] instanceof window.HTMLTimeElement, 'HTML parsing variant' );
|
||||||
}, 'the time elements should be instanceof HTMLTimeElement');
|
}, 'the time elements should be instanceof HTMLTimeElement');
|
||||||
|
|
||||||
//dateTime
|
//dateTime
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( makeTime('2000-02-01T03:04:05Z','2001-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
|
assert_equals( makeTime('2000-02-01T03:04:05Z','2001-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
|
||||||
}, 'the datetime attribute should be reflected by the .dateTime property');
|
}, 'the datetime attribute should be reflected by the .dateTime property');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( typeof makeTime().dateTime, 'string', 'typeof test' );
|
assert_equals( typeof makeTime().dateTime, 'string', 'typeof test' );
|
||||||
assert_equals( makeTime().dateTime, '', 'value test' );
|
assert_equals( makeTime().dateTime, '', 'value test' );
|
||||||
}, 'the dateTime IDL property should default to an empty string');
|
}, 'the dateTime IDL property should default to an empty string');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( makeTime(false,false,'2000-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
|
assert_equals( makeTime(false,false,'2000-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
|
||||||
}, 'the dateTime property should be read/write');
|
}, 'the dateTime property should be read/write');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( makeTime('go fish').dateTime, 'go fish' );
|
assert_equals( makeTime('go fish').dateTime, 'go fish' );
|
||||||
}, 'the datetime attribute should be reflected by the .dateTime property even if it is invalid');
|
}, 'the datetime attribute should be reflected by the .dateTime property even if it is invalid');
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_equals( makeTime(false,'2000-02-01T03:04:05Z').dateTime, '' );
|
assert_equals( makeTime(false,'2000-02-01T03:04:05Z').dateTime, '' );
|
||||||
}, 'the datetime attribute should not reflect the textContent');
|
}, 'the datetime attribute should not reflect the textContent');
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -21,77 +21,77 @@ test(function () {
|
||||||
|
|
||||||
/* Happy path */
|
/* Happy path */
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s', 'foo');
|
||||||
}, 'a handler with valid arguments should work');
|
}, 'a handler with valid arguments should work');
|
||||||
|
|
||||||
|
|
||||||
/* URL argument */
|
/* URL argument */
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', '%s', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', '%s', 'foo');
|
||||||
}, 'a relative URL should work');
|
}, 'a relative URL should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '#%s', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '#%s', 'foo');
|
||||||
}, 'a URL with a fragment identifier should work');
|
}, 'a URL with a fragment identifier should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '?foo=%s', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '?foo=%s', 'foo');
|
||||||
}, 'a URL with a query string should work');
|
}, 'a URL with a query string should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '?foo=%s&bar', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '?foo=%s&bar', 'foo');
|
||||||
}, 'a URL with a multi-argument query string should work');
|
}, 'a URL with a multi-argument query string should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/bar/baz/', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/bar/baz/', 'foo');
|
||||||
}, 'a URL with the passed string as a directory name should work');
|
}, 'a URL with the passed string as a directory name should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/bar/baz/?foo=1337&bar#baz', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/bar/baz/?foo=1337&bar#baz', 'foo');
|
||||||
}, 'a URL with the passed string as a directory name followed by a query string and fragment identifier should work');
|
}, 'a URL with the passed string as a directory name followed by a query string and fragment identifier should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/foo/%s/', 'foo');
|
navigator.registerContentHandler('text/x-unknown-type', location.href + '/%s/foo/%s/', 'foo');
|
||||||
}, 'a URL with the passed string included twice should work');
|
}, 'a URL with the passed string included twice should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', '', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', '', 'foo') } );
|
||||||
}, 'an empty url argument should throw SYNTAX_ERR');
|
}, 'an empty url argument should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://%s.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://%s.com', 'foo') } );
|
||||||
}, '%s instead of domain name should throw SYNTAX_ERR');
|
}, '%s instead of domain name should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://%s.example.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://%s.example.com', 'foo') } );
|
||||||
}, '%s instead of subdomain name should throw syntax_err');
|
}, '%s instead of subdomain name should throw syntax_err');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '', 'foo') } );
|
||||||
}, 'a url argument without %s should throw SYNTAX_ERR');
|
}, 'a url argument without %s should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://example.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://example.com', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR');
|
}, 'a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '/%', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '/%', 'foo') } );
|
||||||
}, 'a url argument without %s (but with %) should throw SYNTAX_ERR');
|
}, 'a url argument without %s (but with %) should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', location.href + '/%a', 'foo') } );
|
||||||
}, 'a url argument without %s (but with %a) should throw SYNTAX_ERR');
|
}, 'a url argument without %s (but with %a) should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'https://example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'https://example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (2)');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (2)');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://foobar.example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler('text/x-unknown-type', 'http://foobar.example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (3)');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (3)');
|
||||||
|
|
||||||
/* Content type argument */
|
/* Content type argument */
|
||||||
|
@ -109,9 +109,9 @@ var blacklist = new Array(
|
||||||
|
|
||||||
for (var bi=0, bl=blacklist.length; bi<bl; ++bi){
|
for (var bi=0, bl=blacklist.length; bi<bl; ++bi){
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerContentHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
||||||
}, 'attempting to override the ' + blacklist[bi] + ' MIME type should throw SECURITY_ERR');
|
}, 'attempting to override the ' + blacklist[bi] + ' MIME type should throw SECURITY_ERR');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,9 +124,9 @@ var whitelist = new Array('application/atom+xml', /* For feeds. */
|
||||||
|
|
||||||
for (var wi=0, wl=whitelist.length; wi<wl; ++wi){
|
for (var wi=0, wl=whitelist.length; wi<wl; ++wi){
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerContentHandler(whitelist[wi], location.href + '/%s', 'foo');
|
navigator.registerContentHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||||
}, 'overriding the ' + whitelist[wi] + ' MIME type should work');
|
}, 'overriding the ' + whitelist[wi] + ' MIME type should work');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,163 +20,163 @@ test(function () {
|
||||||
}, 'the registerProtocolHandler method should exist on the navigator object');
|
}, 'the registerProtocolHandler method should exist on the navigator object');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '/%s', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '/%s', 'foo');
|
||||||
}, 'a handler with valid arguments should work');
|
}, 'a handler with valid arguments should work');
|
||||||
|
|
||||||
|
|
||||||
/* URL argument */
|
/* URL argument */
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', '%s', 'foo');
|
navigator.registerProtocolHandler('tel', '%s', 'foo');
|
||||||
}, 'a relative URL should work');
|
}, 'a relative URL should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '#%s', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '#%s', 'foo');
|
||||||
}, 'a URL with a fragment identifier should work');
|
}, 'a URL with a fragment identifier should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '?foo=%s', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '?foo=%s', 'foo');
|
||||||
}, 'a URL with a query string should work');
|
}, 'a URL with a query string should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '?foo=%s&bar', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '?foo=%s&bar', 'foo');
|
||||||
}, 'a URL with a multi-argument query string should work');
|
}, 'a URL with a multi-argument query string should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '/%s/bar/baz/', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '/%s/bar/baz/', 'foo');
|
||||||
}, 'a URL with the passed string as a directory name should work');
|
}, 'a URL with the passed string as a directory name should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '/%s/bar/baz/?foo=1337&bar#baz', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '/%s/bar/baz/?foo=1337&bar#baz', 'foo');
|
||||||
}, 'a URL with the passed string as a directory name followed by a query string and fragment identifier should work');
|
}, 'a URL with the passed string as a directory name followed by a query string and fragment identifier should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('tel', location.href + '/%s/foo/%s/', 'foo');
|
navigator.registerProtocolHandler('tel', location.href + '/%s/foo/%s/', 'foo');
|
||||||
}, 'a URL with the passed string included twice should work');
|
}, 'a URL with the passed string included twice should work');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', '', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', '', 'foo') } );
|
||||||
}, 'an empty url argument should throw SYNTAX_ERR');
|
}, 'an empty url argument should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://%s.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://%s.com', 'foo') } );
|
||||||
}, '%s instead of domain name should throw SYNTAX_ERR');
|
}, '%s instead of domain name should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://%s.example.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://%s.example.com', 'foo') } );
|
||||||
}, '%s instead of subdomain name should throw SYNTAX_ERR');
|
}, '%s instead of subdomain name should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '', 'foo') } );
|
||||||
}, 'a url argument without %s should throw SYNTAX_ERR');
|
}, 'a url argument without %s should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://example.com', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://example.com', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR');
|
}, 'a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '/%', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '/%', 'foo') } );
|
||||||
}, 'a url argument without %s (but with %) should throw SYNTAX_ERR');
|
}, 'a url argument without %s (but with %) should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto', location.href + '/%a', 'foo') } );
|
||||||
}, 'a url argument without %s (but with %a) should throw SYNTAX_ERR');
|
}, 'a url argument without %s (but with %a) should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'https://example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'https://example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (2)');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (2)');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://foobar.example.com/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'http://foobar.example.com/%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (3)');
|
}, 'a url argument pointing to a different domain name should throw SECURITY_ERR (3)');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'mailto:%s@example.com', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('mailto', 'mailto:%s@example.com', 'foo') } );
|
||||||
}, 'looping handlers should throw SECURITY_ERR');
|
}, 'looping handlers should throw SECURITY_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('sms', 'tel:%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler('sms', 'tel:%s', 'foo') } );
|
||||||
}, 'a url argument pointing to a non-http[s] scheme should throw SECURITY_ERR due to not being of the same origin');
|
}, 'a url argument pointing to a non-http[s] scheme should throw SECURITY_ERR due to not being of the same origin');
|
||||||
|
|
||||||
/* Protocol argument */
|
/* Protocol argument */
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('unrecognized', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('unrecognized', location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing an unrecognized scheme should throw SECURITY_ERR'); /* This is a whitelist, not a blacklist. */
|
}, 'a protocol argument containing an unrecognized scheme should throw SECURITY_ERR'); /* This is a whitelist, not a blacklist. */
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto:', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto:', location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing : should throw SYNTAX_ERR');
|
}, 'a protocol argument containing : should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto://', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto://', location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing :// should throw SYNTAX_ERR');
|
}, 'a protocol argument containing :// should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('http://', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('http://', location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing http:// should throw SYNTAX_ERR');
|
}, 'a protocol argument containing http:// should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto' + String.fromCharCode(0), location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto' + String.fromCharCode(0), location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing a null character should throw SYNTAX_ERR');
|
}, 'a protocol argument containing a null character should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailtoo' + String.fromCharCode(8), location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailtoo' + String.fromCharCode(8), location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing a backspace character should throw SYNTAX_ERR');
|
}, 'a protocol argument containing a backspace character should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto' + String.fromCharCode(10), location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mailto' + String.fromCharCode(10), location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing a LF character should throw SYNTAX_ERR');
|
}, 'a protocol argument containing a LF character should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mаilto', location.href + '/%a', 'foo') } );
|
assert_throws('SYNTAX_ERR', function () { navigator.registerProtocolHandler('mаilto', location.href + '/%a', 'foo') } );
|
||||||
}, 'a protocol argument containing non-alphanumeric characters (like a cyrillic “а”) should throw SYNTAX_ERR');
|
}, 'a protocol argument containing non-alphanumeric characters (like a cyrillic “а”) should throw SYNTAX_ERR');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('TEL', location.href + '/%s', 'foo');
|
navigator.registerProtocolHandler('TEL', location.href + '/%s', 'foo');
|
||||||
}, 'a protocol argument of “TEL” should be equivalent to “tel”');
|
}, 'a protocol argument of “TEL” should be equivalent to “tel”');
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler('teL', location.href + '/%s', 'foo');
|
navigator.registerProtocolHandler('teL', location.href + '/%s', 'foo');
|
||||||
}, 'a protocol argument of “teL” should be equivalent to “tel”');
|
}, 'a protocol argument of “teL” should be equivalent to “tel”');
|
||||||
|
|
||||||
|
|
||||||
/* Overriding any of the following protocols must never be allowed. That would
|
/* Overriding any of the following protocols must never be allowed. That would
|
||||||
* break the browser. */
|
* break the browser. */
|
||||||
var blacklist = new Array(
|
var blacklist = new Array(
|
||||||
'about',
|
'about',
|
||||||
'attachment',
|
'attachment',
|
||||||
'blob',
|
'blob',
|
||||||
'chrome',
|
'chrome',
|
||||||
'cid',
|
'cid',
|
||||||
'data',
|
'data',
|
||||||
'file',
|
'file',
|
||||||
'ftp',
|
'ftp',
|
||||||
'http',
|
'http',
|
||||||
'https',
|
'https',
|
||||||
'javascript',
|
'javascript',
|
||||||
'livescript',
|
'livescript',
|
||||||
'mid',
|
'mid',
|
||||||
'mocha',
|
'mocha',
|
||||||
'opera',
|
'opera',
|
||||||
'operamail',
|
'operamail',
|
||||||
'res',
|
'res',
|
||||||
'resource',
|
'resource',
|
||||||
'shttp',
|
'shttp',
|
||||||
'tcl',
|
'tcl',
|
||||||
'vbscript',
|
'vbscript',
|
||||||
'view-source',
|
'view-source',
|
||||||
'ws',
|
'ws',
|
||||||
'wss',
|
'wss',
|
||||||
'wyciwyg');
|
'wyciwyg');
|
||||||
|
|
||||||
for ( var bi=0, bl=blacklist.length; bi<bl; ++bi ){
|
for ( var bi=0, bl=blacklist.length; bi<bl; ++bi ){
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
||||||
}, 'attempting to override the ' + blacklist[bi] + ' protocol should throw SECURITY_ERR');
|
}, 'attempting to override the ' + blacklist[bi] + ' protocol should throw SECURITY_ERR');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,28 +184,28 @@ for ( var bi=0, bl=blacklist.length; bi<bl; ++bi ){
|
||||||
* We're just testing that the call goes through here. Whether or not they
|
* We're just testing that the call goes through here. Whether or not they
|
||||||
* actually work as handlers is covered by the interactive tests. */
|
* actually work as handlers is covered by the interactive tests. */
|
||||||
var whitelist = new Array(
|
var whitelist = new Array(
|
||||||
'geo',
|
'geo',
|
||||||
'im',
|
'im',
|
||||||
'irc',
|
'irc',
|
||||||
'ircs',
|
'ircs',
|
||||||
'mailto',
|
'mailto',
|
||||||
'mms',
|
'mms',
|
||||||
'news',
|
'news',
|
||||||
'nntp',
|
'nntp',
|
||||||
'sms',
|
'sms',
|
||||||
'smsto',
|
'smsto',
|
||||||
'tel',
|
'tel',
|
||||||
'urn',
|
'urn',
|
||||||
'webcal',
|
'webcal',
|
||||||
'wtai',
|
'wtai',
|
||||||
'xmpp');
|
'xmpp');
|
||||||
|
|
||||||
for ( var wi=0, wl=whitelist.length; wi<wl; ++wi ){
|
for ( var wi=0, wl=whitelist.length; wi<wl; ++wi ){
|
||||||
|
|
||||||
test(function () {
|
test(function () {
|
||||||
navigator.registerProtocolHandler(whitelist[wi], location.href + '/%s', 'foo');
|
navigator.registerProtocolHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||||
assert_true(true);
|
assert_true(true);
|
||||||
}, 'overriding the ' + whitelist[wi] + ' protocol should work');
|
}, 'overriding the ' + whitelist[wi] + ' protocol should work');
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -15,9 +15,7 @@ INDENT TABS: custom-elements/*
|
||||||
INDENT TABS: DOMEvents/*
|
INDENT TABS: DOMEvents/*
|
||||||
INDENT TABS: eventsource/*
|
INDENT TABS: eventsource/*
|
||||||
INDENT TABS: html/editing/dnd/*
|
INDENT TABS: html/editing/dnd/*
|
||||||
INDENT TABS: html/semantics/*
|
|
||||||
INDENT TABS: html/syntax/*
|
INDENT TABS: html/syntax/*
|
||||||
INDENT TABS: html/webappapis/*
|
|
||||||
INDENT TABS: media-source/*
|
INDENT TABS: media-source/*
|
||||||
INDENT TABS: old-tests/*
|
INDENT TABS: old-tests/*
|
||||||
INDENT TABS: pointerlock/*
|
INDENT TABS: pointerlock/*
|
||||||
|
@ -89,6 +87,7 @@ PRINT STATEMENT:*/tools/*
|
||||||
CR AT EOL:WebIDL/valid/idl/documentation-dos.widl
|
CR AT EOL:WebIDL/valid/idl/documentation-dos.widl
|
||||||
CR AT EOL:cors/resources/cors-headers.asis
|
CR AT EOL:cors/resources/cors-headers.asis
|
||||||
CR AT EOL:html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
|
CR AT EOL:html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
|
||||||
|
INDENT TABS:html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
|
||||||
CR AT EOL:webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt
|
CR AT EOL:webvtt/webvtt-file-format-parsing/webvtt-file-parsing/support/newlines.vtt
|
||||||
PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.svg
|
PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.svg
|
||||||
PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.xhtml
|
PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.xhtml
|
||||||
|
|
|
@ -97,5 +97,5 @@ function mediaSourceConfigChangeTest(directory, idA, idB, description)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, description, { timeout: 10000 } );
|
}, description);
|
||||||
};
|
};
|
||||||
|
|
|
@ -211,7 +211,7 @@
|
||||||
test.done();
|
test.done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, 'Test setting same duration multiple times does not fire duplicate durationchange', {timeout: 2500});
|
}, 'Test setting same duration multiple times does not fire duplicate durationchange');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
assert_greater_than(timeUpdateCount, 2, "timeUpdateCount");
|
assert_greater_than(timeUpdateCount, 2, "timeUpdateCount");
|
||||||
test.done();
|
test.done();
|
||||||
});
|
});
|
||||||
}, "Test HTMLVideoElement.getVideoPlaybackQuality() with MediaSource API", {timeout: 5000});
|
}, "Test HTMLVideoElement.getVideoPlaybackQuality() with MediaSource API");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
mediaSource.endOfStream();
|
mediaSource.endOfStream();
|
||||||
mediaElement.play();
|
mediaElement.play();
|
||||||
});
|
});
|
||||||
}, "Test normal playback case with MediaSource API", {timeout: 5000});
|
}, "Test normal playback case with MediaSource API");
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
test.done();
|
test.done();
|
||||||
});
|
});
|
||||||
|
|
||||||
}, 'Test seeking to a new location before transitioning beyond HAVE_METADATA.', {timeout: 10000} );
|
}, 'Test seeking to a new location before transitioning beyond HAVE_METADATA.');
|
||||||
|
|
||||||
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
|
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
|
||||||
{
|
{
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
assert_greater_than(mediaElement.readyState, mediaElement.HAVE_CURRENT_DATA, 'Greater than HAVE_CURRENT_DATA');
|
assert_greater_than(mediaElement.readyState, mediaElement.HAVE_CURRENT_DATA, 'Greater than HAVE_CURRENT_DATA');
|
||||||
test.done();
|
test.done();
|
||||||
});
|
});
|
||||||
}, 'Test seeking to a new location during a pending seek.', {timeout: 10000} );
|
}, 'Test seeking to a new location during a pending seek.');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
(function(window) {
|
(function(window) {
|
||||||
setup({ timeout: 12000 });
|
|
||||||
|
|
||||||
var SEGMENT_INFO_LIST = [
|
var SEGMENT_INFO_LIST = [
|
||||||
{
|
{
|
||||||
url: 'mp4/test.mp4',
|
url: 'mp4/test.mp4',
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html><head>
|
<html><head>
|
||||||
<title> scheduler: removing async attribute at runtime</title>
|
<title> scheduler: removing async attribute at runtime</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="testlib/testlib.js"></script>
|
<script src="testlib/testlib.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div id="test"></div>
|
<div id="test"></div>
|
||||||
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
|
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
|
||||||
|
|
||||||
<script id="async-script" async src="scripts/include-2.js?pipe=trickle(d1)"></script>
|
<script id="async-script" async src="scripts/include-2.js?pipe=trickle(d2)"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var t = async_test();
|
var t = async_test();
|
||||||
|
|
||||||
t.step(function() {
|
t.step(function() {
|
||||||
|
@ -27,6 +27,6 @@
|
||||||
assert_array_equals(eventOrder, ["external script #1", "external script #2"]);
|
assert_array_equals(eventOrder, ["external script #1", "external script #2"]);
|
||||||
t.done();
|
t.done();
|
||||||
}), false);
|
}), false);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
|
9
tests/wpt/web-platform-tests/referrer-policy/README.html
Normal file
9
tests/wpt/web-platform-tests/referrer-policy/README.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<head>
|
||||||
|
<title>Referrer-Policy Web Platform Tests - README</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
TODO(burnik): Instructions on how to write tests for Referrer-Policy.
|
||||||
|
</p>
|
||||||
|
</body>
|
|
@ -0,0 +1,28 @@
|
||||||
|
// NOTE: This method only strips the fragment and is not in accordance to the
|
||||||
|
// recommended draft specification:
|
||||||
|
// https://w3c.github.io/webappsec/specs/referrer-policy/#null
|
||||||
|
// TODO(burnik): Implement this helper as defined by spec once added scenarios
|
||||||
|
// for URLs containing username/password/etc.
|
||||||
|
function stripUrlForUseAsReferrer(url) {
|
||||||
|
return url.replace(/#.*$/, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseUrlQueryString(queryString) {
|
||||||
|
var queries = queryString.replace(/^\?/, "").split("&");
|
||||||
|
var params = {};
|
||||||
|
|
||||||
|
for (var i in queries) {
|
||||||
|
var kvp = queries[i].split("=");
|
||||||
|
params[kvp[0]] = kvp[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return params;
|
||||||
|
};
|
||||||
|
|
||||||
|
function appendIframeToBody(url) {
|
||||||
|
var iframe = document.createElement("iframe");
|
||||||
|
iframe.src = url;
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
|
||||||
|
return iframe;
|
||||||
|
}
|
|
@ -0,0 +1,159 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Check that sub-resource gets the referrer URL when no explicit
|
||||||
|
Referrer Policy is set.</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<!-- Common global functions for referrer-policy tests. -->
|
||||||
|
<script src="../generic/common.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Check that sub-resource gets the referrer URL when no explicit Referrer
|
||||||
|
Policy is set.</h1>
|
||||||
|
|
||||||
|
<p>This page loads sub-resources (iframes) and waits for messages containing
|
||||||
|
referrer URLs from children.</p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var documentUrl = document.location.toString();
|
||||||
|
|
||||||
|
// Referrer policy can also be defined via meta tag of parent.
|
||||||
|
// TODO(burnik): For now we use the DOM element itself as we expect it not
|
||||||
|
// to be explicitly defined on the page. We should use the content
|
||||||
|
// attribute value instead.
|
||||||
|
var documentMetaReferrer = document.querySelector("meta[name=referrer]");
|
||||||
|
|
||||||
|
// The referrer URL should be this document's URL adjusted according to
|
||||||
|
// this section:
|
||||||
|
// https://w3c.github.io/webappsec/specs/referrer-policy/#strip-url
|
||||||
|
var expectedReferrerUrl = stripUrlForUseAsReferrer(documentUrl);
|
||||||
|
|
||||||
|
// Path to the sub-resource page which reports back it's own context.
|
||||||
|
var subresourceUrlPath = "/referrer-policy/no-referrer-policy" +
|
||||||
|
"/no-referrer-policy.subresource.py";
|
||||||
|
|
||||||
|
// Define all the test definitions here to create correspoding test
|
||||||
|
// arrangements. Each test arrangement will have it's own iframe and ID
|
||||||
|
// passed by URL. The ID should be unique as it identifies the message
|
||||||
|
// coming back from the iframe and matches the corressponding test to be
|
||||||
|
// run.
|
||||||
|
var scenarios = [
|
||||||
|
{
|
||||||
|
id: "same-origin",
|
||||||
|
url: location.protocol + "//" + location.hostname + ":" +
|
||||||
|
location.port + subresourceUrlPath,
|
||||||
|
metaReferrer: documentMetaReferrer,
|
||||||
|
expectedReferrerUrl: expectedReferrerUrl,
|
||||||
|
description: "Refrerer URL is passed to sub-resource (iframe) of " +
|
||||||
|
"same-origin."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "cross-origin",
|
||||||
|
url: location.protocol + "//www1." + location.hostname + ":" +
|
||||||
|
location.port + subresourceUrlPath,
|
||||||
|
metaReferrer: documentMetaReferrer,
|
||||||
|
expectedReferrerUrl: expectedReferrerUrl,
|
||||||
|
description: "Refrerer URL is passed to sub-resource (iframe) of " +
|
||||||
|
"cross-origin."
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Rest of the script arranges and runs all the tests defined above.
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Creates a test arrangement from a test scenario.
|
||||||
|
function arrangeScenario(scenario) {
|
||||||
|
var test = async_test(scenario.description);
|
||||||
|
var subresourceUrl = scenario.url + "?id=" + scenario.id;
|
||||||
|
var testArrangement = {
|
||||||
|
scenario:scenario,
|
||||||
|
test:test,
|
||||||
|
subresourceUrl:subresourceUrl
|
||||||
|
};
|
||||||
|
|
||||||
|
return testArrangement;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asserts the values for an iframe response message and matched test
|
||||||
|
// arrangement.
|
||||||
|
function assertScenario(message, testArrangement) {
|
||||||
|
// Defense: Making sure the message and test arrangement are up to date.
|
||||||
|
testArrangement.test.step(function() {
|
||||||
|
assert_equals(Object.keys(message).length, 4);
|
||||||
|
assert_own_property(message, "id");
|
||||||
|
assert_own_property(message, "location");
|
||||||
|
assert_own_property(message, "referrer");
|
||||||
|
assert_own_property(message, "headers");
|
||||||
|
assert_own_property(message.headers, "referer");
|
||||||
|
|
||||||
|
assert_equals(Object.keys(testArrangement).length, 3);
|
||||||
|
assert_own_property(testArrangement, "scenario");
|
||||||
|
assert_own_property(testArrangement, "test");
|
||||||
|
assert_own_property(testArrangement, "subresourceUrl");
|
||||||
|
|
||||||
|
assert_equals(Object.keys(testArrangement.scenario).length, 5);
|
||||||
|
assert_own_property(testArrangement.scenario, "id");
|
||||||
|
assert_own_property(testArrangement.scenario, "url");
|
||||||
|
assert_own_property(testArrangement.scenario, "metaReferrer");
|
||||||
|
assert_own_property(testArrangement.scenario, "expectedReferrerUrl");
|
||||||
|
assert_own_property(testArrangement.scenario, "description");
|
||||||
|
}, "Running a valid test scenario.");
|
||||||
|
|
||||||
|
testArrangement.test.step(function() {
|
||||||
|
// TODO(burnik): This check should be specified by the scenario
|
||||||
|
// itself. For now we only expect that there is no CSP so neither is
|
||||||
|
// the referrer policy explicitly defined via HTTP headers.
|
||||||
|
assert_not_exists(message.headers, "content-security-policy",
|
||||||
|
"No referrer policy is set.");
|
||||||
|
|
||||||
|
// The meta defined refferer should also not exist.
|
||||||
|
assert_equals(testArrangement.scenario.metaReferrer, null);
|
||||||
|
}, "No referrer policy is explicity defined via HTTP headers or meta.")
|
||||||
|
|
||||||
|
testArrangement.test.step(function() {
|
||||||
|
// Sanity check - location of iframe matches reported location.
|
||||||
|
assert_equals(message.location, testArrangement.subresourceUrl,
|
||||||
|
"Child reported location.");
|
||||||
|
|
||||||
|
// Child reports the referrer URL available from DOM.
|
||||||
|
assert_equals(message.referrer,
|
||||||
|
testArrangement.scenario.expectedReferrerUrl,
|
||||||
|
"Child reported referrer.");
|
||||||
|
|
||||||
|
// Also check the request headers reported from the server.
|
||||||
|
assert_equals(message.headers.referer,
|
||||||
|
testArrangement.scenario.expectedReferrerUrl,
|
||||||
|
"Child reported referrer (from server).");
|
||||||
|
|
||||||
|
}, "Referrer URL is passed to the sub-resource (iframe).");
|
||||||
|
|
||||||
|
testArrangement.test.done();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Using a map to easily find and run the test corresponding to the
|
||||||
|
// received message ID (iframe).
|
||||||
|
var testArrangementMap = {};
|
||||||
|
|
||||||
|
// With this handler we receive all the messages from the iframes.
|
||||||
|
// We identify the source and appropriate test arrangement to be run via
|
||||||
|
// the provided message ID.
|
||||||
|
window.addEventListener("message", function (event) {
|
||||||
|
var childMessage = event.data;
|
||||||
|
var testArrangement = testArrangementMap[childMessage.id];
|
||||||
|
// Run the test for this sub-resource.
|
||||||
|
assertScenario(childMessage, testArrangement);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Map all test arrangements by ID and append iframes.
|
||||||
|
for (var i in scenarios) {
|
||||||
|
var testArrangement = arrangeScenario(scenarios[i]);
|
||||||
|
testArrangementMap[scenarios[i].id] = testArrangement;
|
||||||
|
appendIframeToBody(testArrangement.subresourceUrl);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="log"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,15 @@
|
||||||
|
import os, json
|
||||||
|
|
||||||
|
def main(request, response):
|
||||||
|
script_directory = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
template_basename = "no-referrer-policy.subresource.template.html"
|
||||||
|
template_filename = os.path.join(script_directory, template_basename);
|
||||||
|
|
||||||
|
with open(template_filename) as f:
|
||||||
|
template = f.read()
|
||||||
|
|
||||||
|
headers_as_json = json.dumps(request.headers)
|
||||||
|
exported_headers = "var SERVER_REQUEST_HEADERS = " + headers_as_json + ";"
|
||||||
|
rendered_html = template % {"headers": headers_as_json}
|
||||||
|
|
||||||
|
return response.headers, rendered_html
|
|
@ -0,0 +1,31 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>This page reports back it's request details the parent frame</title>
|
||||||
|
<!-- Common global functions for referrer-policy tests. -->
|
||||||
|
<script src="../generic/common.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>This page reports back it's request details to the parent frame.</h2>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Notice: This is filled in from server side.
|
||||||
|
var SERVER_REQUEST_HEADERS = %(headers)s;
|
||||||
|
|
||||||
|
var query = parseUrlQueryString(document.location.search)
|
||||||
|
|
||||||
|
// Note: Read the ID from the query section of this page's URL.
|
||||||
|
// The ID is used to identify the sender of the message in the parent.
|
||||||
|
var pageInfo = {
|
||||||
|
id: query.id,
|
||||||
|
location: document.location.toString(),
|
||||||
|
referrer: document.referrer,
|
||||||
|
headers: SERVER_REQUEST_HEADERS
|
||||||
|
};
|
||||||
|
|
||||||
|
// Notify parent frame.
|
||||||
|
parent.postMessage(pageInfo, "*");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -56,6 +56,19 @@ function constValue (cnt) {
|
||||||
return cnt.value;
|
return cnt.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function minOverloadLength(overloads) {
|
||||||
|
if (!overloads.length) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return overloads.map(function(attr) {
|
||||||
|
return attr.arguments ? attr.arguments.filter(function(arg) {
|
||||||
|
return !arg.optional && !arg.variadic;
|
||||||
|
}).length : 0;
|
||||||
|
})
|
||||||
|
.reduce(function(m, n) { return Math.min(m, n); });
|
||||||
|
}
|
||||||
|
|
||||||
/// IdlArray ///
|
/// IdlArray ///
|
||||||
// Entry point
|
// Entry point
|
||||||
self.IdlArray = function()
|
self.IdlArray = function()
|
||||||
|
@ -754,22 +767,7 @@ IdlInterface.prototype.test_self = function()
|
||||||
|
|
||||||
var constructors = this.extAttrs
|
var constructors = this.extAttrs
|
||||||
.filter(function(attr) { return attr.name == "Constructor"; });
|
.filter(function(attr) { return attr.name == "Constructor"; });
|
||||||
var expected_length;
|
var expected_length = minOverloadLength(constructors);
|
||||||
if (!constructors.length) {
|
|
||||||
// "If the [Constructor] extended attribute, does not appear on
|
|
||||||
// the interface definition, then the value is 0."
|
|
||||||
expected_length = 0;
|
|
||||||
} else {
|
|
||||||
// "Otherwise, the value is determined as follows: . . .
|
|
||||||
// "Return the length of the shortest argument list of the
|
|
||||||
// entries in S."
|
|
||||||
expected_length = constructors.map(function(attr) {
|
|
||||||
return attr.arguments ? attr.arguments.filter(function(arg) {
|
|
||||||
return !arg.optional;
|
|
||||||
}).length : 0;
|
|
||||||
})
|
|
||||||
.reduce(function(m, n) { return Math.min(m, n); });
|
|
||||||
}
|
|
||||||
assert_equals(self[this.name].length, expected_length, "wrong value for " + this.name + ".length");
|
assert_equals(self[this.name].length, expected_length, "wrong value for " + this.name + ".length");
|
||||||
}.bind(this), this.name + " interface object length");
|
}.bind(this), this.name + " interface object length");
|
||||||
}
|
}
|
||||||
|
@ -1122,12 +1120,10 @@ IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject
|
||||||
// ". . .
|
// ". . .
|
||||||
// "Return the length of the shortest argument list of the
|
// "Return the length of the shortest argument list of the
|
||||||
// entries in S."
|
// entries in S."
|
||||||
//
|
|
||||||
// TODO: Doesn't handle overloading or variadic arguments.
|
|
||||||
assert_equals(memberHolderObject[member.name].length,
|
assert_equals(memberHolderObject[member.name].length,
|
||||||
member.arguments.filter(function(arg) {
|
minOverloadLength(this.members.filter(function(m) {
|
||||||
return !arg.optional;
|
return m.type == "operation" && m.name == member.name;
|
||||||
}).length,
|
})),
|
||||||
"property has wrong .length");
|
"property has wrong .length");
|
||||||
|
|
||||||
// Make some suitable arguments
|
// Make some suitable arguments
|
||||||
|
@ -1460,13 +1456,12 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect
|
||||||
{
|
{
|
||||||
assert_false(member.name in obj);
|
assert_false(member.name in obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var minLength = minOverloadLength(this.members.filter(function(m) {
|
||||||
|
return m.type == "operation" && m.name == member.name;
|
||||||
|
}));
|
||||||
var args = [];
|
var args = [];
|
||||||
for (var i = 0; i < member.arguments.length; i++)
|
for (var i = 0; i < minLength; i++) {
|
||||||
{
|
|
||||||
if (member.arguments[i].optional)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
assert_throws(new TypeError(), function()
|
assert_throws(new TypeError(), function()
|
||||||
{
|
{
|
||||||
obj[member.name].apply(obj, args);
|
obj[member.name].apply(obj, args);
|
||||||
|
|
|
@ -368,8 +368,20 @@ policies and contribution forms [3].
|
||||||
self.addEventListener("message",
|
self.addEventListener("message",
|
||||||
function(event) {
|
function(event) {
|
||||||
if (event.data.type && event.data.type === "connect") {
|
if (event.data.type && event.data.type === "connect") {
|
||||||
this_obj._add_message_port(event.ports[0]);
|
if (event.ports && event.ports[0]) {
|
||||||
event.ports[0].start();
|
// If a MessageChannel was passed, then use it to
|
||||||
|
// send results back to the main window. This
|
||||||
|
// allows the tests to work even if the browser
|
||||||
|
// does not fully support MessageEvent.source in
|
||||||
|
// ServiceWorkers yet.
|
||||||
|
this_obj._add_message_port(event.ports[0]);
|
||||||
|
event.ports[0].start();
|
||||||
|
} else {
|
||||||
|
// If there is no MessageChannel, then attempt to
|
||||||
|
// use the MessageEvent.source to send results
|
||||||
|
// back to the main window.
|
||||||
|
this_obj._add_message_port(event.source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1476,15 +1488,24 @@ policies and contribution forms [3].
|
||||||
var message_port;
|
var message_port;
|
||||||
|
|
||||||
if (is_service_worker(worker)) {
|
if (is_service_worker(worker)) {
|
||||||
// The ServiceWorker's implicit MessagePort is currently not
|
if (window.MessageChannel) {
|
||||||
// reliably accessible from the ServiceWorkerGlobalScope due to
|
// The ServiceWorker's implicit MessagePort is currently not
|
||||||
// Blink setting MessageEvent.source to null for messages sent via
|
// reliably accessible from the ServiceWorkerGlobalScope due to
|
||||||
// ServiceWorker.postMessage(). Until that's resolved, create an
|
// Blink setting MessageEvent.source to null for messages sent
|
||||||
// explicit MessageChannel and pass one end to the worker.
|
// via ServiceWorker.postMessage(). Until that's resolved,
|
||||||
var message_channel = new MessageChannel();
|
// create an explicit MessageChannel and pass one end to the
|
||||||
message_port = message_channel.port1;
|
// worker.
|
||||||
message_port.start();
|
var message_channel = new MessageChannel();
|
||||||
worker.postMessage({type: "connect"}, [message_channel.port2]);
|
message_port = message_channel.port1;
|
||||||
|
message_port.start();
|
||||||
|
worker.postMessage({type: "connect"}, [message_channel.port2]);
|
||||||
|
} else {
|
||||||
|
// If MessageChannel is not available, then try the
|
||||||
|
// ServiceWorker.postMessage() approach using MessageEvent.source
|
||||||
|
// on the other end.
|
||||||
|
message_port = navigator.serviceWorker;
|
||||||
|
worker.postMessage({type: "connect"});
|
||||||
|
}
|
||||||
} else if (is_shared_worker(worker)) {
|
} else if (is_shared_worker(worker)) {
|
||||||
message_port = worker.port;
|
message_port = worker.port;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2335,7 +2356,15 @@ policies and contribution forms [3].
|
||||||
AssertionError.prototype = Object.create(Error.prototype);
|
AssertionError.prototype = Object.create(Error.prototype);
|
||||||
|
|
||||||
AssertionError.prototype.get_stack = function() {
|
AssertionError.prototype.get_stack = function() {
|
||||||
var lines = new Error().stack.split("\n");
|
var stack = new Error().stack;
|
||||||
|
if (!stack) {
|
||||||
|
try {
|
||||||
|
throw new Error();
|
||||||
|
} catch (e) {
|
||||||
|
stack = e.stack;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var lines = stack.split("\n");
|
||||||
var rv = [];
|
var rv = [];
|
||||||
var re = /\/resources\/testharness\.js/;
|
var re = /\/resources\/testharness\.js/;
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
|
@ -103,14 +103,6 @@ var vary_entries = [
|
||||||
request: new Request('http://example.com/c'),
|
request: new Request('http://example.com/c'),
|
||||||
response: new Response('',
|
response: new Response('',
|
||||||
{headers: {'Vary': 'Cookies'}})
|
{headers: {'Vary': 'Cookies'}})
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
name: 'vary_wildcard',
|
|
||||||
request: new Request('http://example.com/c',
|
|
||||||
{headers: {'Cookies': 'x', 'X-Key': '1'}}),
|
|
||||||
response: new Response('',
|
|
||||||
{headers: {'Vary': '*'}})
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -311,7 +303,6 @@ prepopulated_cache_test(vary_entries, function(cache, entries) {
|
||||||
assert_array_equivalent(
|
assert_array_equivalent(
|
||||||
result,
|
result,
|
||||||
[
|
[
|
||||||
entries.vary_wildcard.response,
|
|
||||||
entries.vary_cookie_absent.response
|
entries.vary_cookie_absent.response
|
||||||
],
|
],
|
||||||
'Cache.matchAll should exclude matches if a vary header is ' +
|
'Cache.matchAll should exclude matches if a vary header is ' +
|
||||||
|
@ -328,7 +319,6 @@ prepopulated_cache_test(vary_entries, function(cache, entries) {
|
||||||
assert_array_equivalent(
|
assert_array_equivalent(
|
||||||
result,
|
result,
|
||||||
[
|
[
|
||||||
entries.vary_wildcard.response
|
|
||||||
],
|
],
|
||||||
'Cache.matchAll should exclude matches if a vary header is ' +
|
'Cache.matchAll should exclude matches if a vary header is ' +
|
||||||
'missing in the cached request, but is present in the query ' +
|
'missing in the cached request, but is present in the query ' +
|
||||||
|
@ -355,7 +345,6 @@ prepopulated_cache_test(vary_entries, function(cache, entries) {
|
||||||
assert_object_in_array(
|
assert_object_in_array(
|
||||||
result,
|
result,
|
||||||
[
|
[
|
||||||
entries.vary_wildcard.response,
|
|
||||||
entries.vary_cookie_absent.response
|
entries.vary_cookie_absent.response
|
||||||
],
|
],
|
||||||
'Cache.match should honor "Vary" header.');
|
'Cache.match should honor "Vary" header.');
|
||||||
|
@ -372,7 +361,6 @@ prepopulated_cache_test(vary_entries, function(cache, entries) {
|
||||||
entries.vary_cookie_is_cookie.response,
|
entries.vary_cookie_is_cookie.response,
|
||||||
entries.vary_cookie_is_good.response,
|
entries.vary_cookie_is_good.response,
|
||||||
entries.vary_cookie_absent.response,
|
entries.vary_cookie_absent.response,
|
||||||
entries.vary_wildcard.response
|
|
||||||
],
|
],
|
||||||
'Cache.matchAll should honor "ignoreVary" parameter.');
|
'Cache.matchAll should honor "ignoreVary" parameter.');
|
||||||
});
|
});
|
||||||
|
|
|
@ -283,12 +283,35 @@ cache_test(function(cache) {
|
||||||
'[https://fetch.spec.whatwg.org/#dom-body-bodyused] ' +
|
'[https://fetch.spec.whatwg.org/#dom-body-bodyused] ' +
|
||||||
'Response.bodyUsed should be initially false.');
|
'Response.bodyUsed should be initially false.');
|
||||||
return response.text().then(function() {
|
return response.text().then(function() {
|
||||||
assert_false(
|
assert_true(
|
||||||
response.bodyUsed,
|
response.bodyUsed,
|
||||||
'[https://fetch.spec.whatwg.org/#concept-body-consume-body] ' +
|
'[https://fetch.spec.whatwg.org/#concept-body-consume-body] ' +
|
||||||
'The text() method should not set "body passed" flag.');
|
'The text() method should set "body used" flag.');
|
||||||
return cache.put(new Request(test_url), response);
|
return assert_promise_rejects(
|
||||||
});
|
cache.put(new Request(test_url), response),
|
||||||
|
new TypeError,
|
||||||
|
'[https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-put] ' +
|
||||||
|
'Cache put should reject with TypeError when Response ' +
|
||||||
|
'body is already used.');
|
||||||
|
});
|
||||||
}, 'Cache.put with a used response body');
|
}, 'Cache.put with a used response body');
|
||||||
|
|
||||||
|
cache_test(function(cache) {
|
||||||
|
return assert_promise_rejects(
|
||||||
|
cache.put(new Request(test_url),
|
||||||
|
new Response(test_body, { headers: { VARY: '*' }})),
|
||||||
|
new TypeError(),
|
||||||
|
'Cache.put should reject VARY:* Responses with a TypeError.');
|
||||||
|
}, 'Cache.put with a VARY:* Response');
|
||||||
|
|
||||||
|
cache_test(function(cache) {
|
||||||
|
return assert_promise_rejects(
|
||||||
|
cache.put(new Request(test_url),
|
||||||
|
new Response(test_body,
|
||||||
|
{ headers: { VARY: 'Accept-Language,*' }})),
|
||||||
|
new TypeError(),
|
||||||
|
'Cache.put should reject Responses with an embedded VARY:* with a ' +
|
||||||
|
'TypeError.');
|
||||||
|
}, 'Cache.put with an embedded VARY:* Response');
|
||||||
|
|
||||||
done();
|
done();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache.add and Cache.addAll</title>
|
<title>Cache.add and Cache.addAll</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache.delete</title>
|
<title>Cache.delete</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage.keys</title>
|
<title>CacheStorage.keys</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage.match</title>
|
<title>CacheStorage.match</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage</title>
|
<title>CacheStorage</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: Cache.add and Cache.addAll</title>
|
<title>Cache Storage: Cache.add and Cache.addAll</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: Cache.delete</title>
|
<title>Cache Storage: Cache.delete</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: CacheStorage.keys</title>
|
<title>Cache Storage: CacheStorage.keys</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: CacheStorage.match</title>
|
<title>Cache Storage: CacheStorage.match</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: CacheStorage</title>
|
<title>Cache Storage: CacheStorage</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache Storage: Verify access in sandboxed iframes</title>
|
<title>Cache Storage: Verify access in sandboxed iframes</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../resources/testharness-helpers.js"></script>
|
<script src="../resources/testharness-helpers.js"></script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache.add and Cache.addAll</title>
|
<title>Cache.add and Cache.addAll</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-add">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Cache.delete</title>
|
<title>Cache.delete</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-delete">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage.keys</title>
|
<title>CacheStorage.keys</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage.match</title>
|
<title>CacheStorage.match</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage-match">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CacheStorage</title>
|
<title>CacheStorage</title>
|
||||||
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
<link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage">
|
||||||
|
<meta name="timeout" content="long">
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<title>Web Animations API: AnimationTimeline tests</title>
|
<title>Web Animations API: DocumentTimeline tests</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
|
@ -1,15 +1,18 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<title>Web Animations API: AnimationTimeline tests</title>
|
<title>Web Animations API: DocumentTimeline tests</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="/resources/WebIDLParser.js"></script>
|
<script src="/resources/WebIDLParser.js"></script>
|
||||||
<script src="/resources/idlharness.js"></script>
|
<script src="/resources/idlharness.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<script type="text/plain" id="AnimationTimeline-IDL">
|
<script type="text/plain" id="DocumentTimeline-IDL">
|
||||||
interface AnimationTimeline {
|
interface AnimationTimeline {
|
||||||
readonly attribute double? currentTime;
|
readonly attribute double? currentTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface DocumentTimeline : AnimationTimeline {
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
'use strict';
|
'use strict';
|
||||||
|
@ -18,8 +21,8 @@ var idlArray;
|
||||||
test(function() {
|
test(function() {
|
||||||
idlArray = new IdlArray();
|
idlArray = new IdlArray();
|
||||||
idlArray.add_idls(
|
idlArray.add_idls(
|
||||||
document.getElementById('AnimationTimeline-IDL').textContent);
|
document.getElementById('DocumentTimeline-IDL').textContent);
|
||||||
idlArray.add_objects( { AnimationTimeline: ['document.timeline'] } );
|
idlArray.add_objects( { DocumentTimeline: ['document.timeline'] } );
|
||||||
});
|
});
|
||||||
idlArray.test();
|
idlArray.test();
|
||||||
|
|
||||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
||||||
</script>
|
</script>
|
||||||
<div id=log></div>
|
<div id=log></div>
|
||||||
<script>
|
<script>
|
||||||
var t = async_test();
|
onload = function() {
|
||||||
onload = t.step_func(function() {
|
|
||||||
window[0].postMessage(1, location.href, []);
|
window[0].postMessage(1, location.href, []);
|
||||||
window[1].postMessage(2, url, []);
|
window[1].postMessage(2, url, []);
|
||||||
var i = 0;
|
var i = 0;
|
||||||
onmessage = t.step_func(function(e) {
|
onmessage = function(e) {
|
||||||
i++;
|
i++;
|
||||||
assert_equals(e.data[0], i);
|
assert_equals(e.data[0], i);
|
||||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||||
if (i === 2) {
|
if (i === 2) {
|
||||||
t.done();
|
done();
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2") }), 1000);
|
};
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
||||||
</script>
|
</script>
|
||||||
<div id=log></div>
|
<div id=log></div>
|
||||||
<script>
|
<script>
|
||||||
var t = async_test();
|
onload = function() {
|
||||||
onload = t.step_func(function() {
|
|
||||||
window[0].postMessage(1, '*', []);
|
window[0].postMessage(1, '*', []);
|
||||||
window[1].postMessage(2, '*', []);
|
window[1].postMessage(2, '*', []);
|
||||||
var i = 0;
|
var i = 0;
|
||||||
onmessage = t.step_func(function(e) {
|
onmessage = function(e) {
|
||||||
i++;
|
i++;
|
||||||
assert_equals(e.data[0], i);
|
assert_equals(e.data[0], i);
|
||||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||||
if (i === 2) {
|
if (i === 2) {
|
||||||
t.done();
|
done();
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2") }), 1000);
|
};
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
||||||
</script>
|
</script>
|
||||||
<div id=log></div>
|
<div id=log></div>
|
||||||
<script>
|
<script>
|
||||||
var t = async_test();
|
onload = function() {
|
||||||
onload = t.step_func(function() {
|
|
||||||
window[0].postMessage(1, location.href);
|
window[0].postMessage(1, location.href);
|
||||||
window[1].postMessage(2, url);
|
window[1].postMessage(2, url);
|
||||||
var i = 0;
|
var i = 0;
|
||||||
onmessage = t.step_func(function(e) {
|
onmessage = function(e) {
|
||||||
i++;
|
i++;
|
||||||
assert_equals(e.data[0], i);
|
assert_equals(e.data[0], i);
|
||||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||||
if (i == 2) {
|
if (i == 2) {
|
||||||
t.done();
|
done();
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
setTimeout(t.step_func(function() {assert_unreached("Only got " + i + " events before timeout, expected 2")}), 1000);
|
};
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
||||||
</script>
|
</script>
|
||||||
<div id=log></div>
|
<div id=log></div>
|
||||||
<script>
|
<script>
|
||||||
var t = async_test();
|
onload = function() {
|
||||||
onload = t.step_func(function() {
|
|
||||||
window[0].postMessage(1, '*');
|
window[0].postMessage(1, '*');
|
||||||
window[1].postMessage(2, '*');
|
window[1].postMessage(2, '*');
|
||||||
var i = 0;
|
var i = 0;
|
||||||
onmessage = t.step_func(function(e) {
|
onmessage = function(e) {
|
||||||
i++;
|
i++;
|
||||||
assert_equals(e.data[0], i);
|
assert_equals(e.data[0], i);
|
||||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||||
if (i === 2) {
|
if (i === 2) {
|
||||||
t.done();
|
done();
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2")}), 1000);
|
};
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
149
tests/wpt/web-platform-tests/webrtc/no-media-call.html
Normal file
149
tests/wpt/web-platform-tests/webrtc/no-media-call.html
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--
|
||||||
|
This test uses no media, and thus does not require fake media devices.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>RTCPeerConnection No-Media Connection Test</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="log"></div>
|
||||||
|
<h2>iceConnectionState info</h2>
|
||||||
|
<div id="stateinfo">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- These files are in place when executing on W3C. -->
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/common/vendor-prefix.js"
|
||||||
|
data-prefixed-objects=
|
||||||
|
'[{"ancestors":["window"], "name":"RTCPeerConnection"},
|
||||||
|
{"ancestors":["window"], "name":"RTCSessionDescription"},
|
||||||
|
{"ancestors":["window"], "name":"RTCIceCandidate"}]'
|
||||||
|
>
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var test = async_test('Can set up a basic WebRTC call with no data.');
|
||||||
|
|
||||||
|
var gFirstConnection = null;
|
||||||
|
var gSecondConnection = null;
|
||||||
|
|
||||||
|
var onOfferCreated = test.step_func(function(offer) {
|
||||||
|
// TODO: Switch to promise-based interface.
|
||||||
|
gFirstConnection.setLocalDescription(offer, ignoreSuccess,
|
||||||
|
failed('setLocalDescription first'));
|
||||||
|
|
||||||
|
// This would normally go across the application's signaling solution.
|
||||||
|
// In our case, the "signaling" is to call this function.
|
||||||
|
receiveCall(offer.sdp);
|
||||||
|
});
|
||||||
|
|
||||||
|
function receiveCall(offerSdp) {
|
||||||
|
|
||||||
|
var parsedOffer = new RTCSessionDescription({ type: 'offer',
|
||||||
|
sdp: offerSdp });
|
||||||
|
// These functions use the legacy interface extensions to RTCPeerConnection.
|
||||||
|
// TODO: Switch to promise-based interfaces.
|
||||||
|
gSecondConnection.setRemoteDescription(parsedOffer,
|
||||||
|
function() {
|
||||||
|
gSecondConnection.createAnswer(onAnswerCreated,
|
||||||
|
failed('createAnswer'));
|
||||||
|
},
|
||||||
|
failed('setRemoteDescription second'));
|
||||||
|
};
|
||||||
|
|
||||||
|
var onAnswerCreated = test.step_func(function(answer) {
|
||||||
|
gSecondConnection.setLocalDescription(answer, ignoreSuccess,
|
||||||
|
failed('setLocalDescription second'));
|
||||||
|
|
||||||
|
// Similarly, this would go over the application's signaling solution.
|
||||||
|
handleAnswer(answer.sdp);
|
||||||
|
});
|
||||||
|
|
||||||
|
function handleAnswer(answerSdp) {
|
||||||
|
var parsedAnswer = new RTCSessionDescription({ type: 'answer',
|
||||||
|
sdp: answerSdp });
|
||||||
|
gFirstConnection.setRemoteDescription(parsedAnswer, ignoreSuccess,
|
||||||
|
failed('setRemoteDescription first'));
|
||||||
|
};
|
||||||
|
|
||||||
|
var onIceCandidateToFirst = test.step_func(function(event) {
|
||||||
|
// If event.candidate is null = no more candidates.
|
||||||
|
if (event.candidate) {
|
||||||
|
var candidate = new RTCIceCandidate(event.candidate);
|
||||||
|
gSecondConnection.addIceCandidate(candidate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var onIceCandidateToSecond = test.step_func(function(event) {
|
||||||
|
if (event.candidate) {
|
||||||
|
var candidate = new RTCIceCandidate(event.candidate);
|
||||||
|
gFirstConnection.addIceCandidate(candidate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var onRemoteStream = test.step_func(function(event) {
|
||||||
|
assert_unreached('WebRTC received a stream when there was none');
|
||||||
|
});
|
||||||
|
|
||||||
|
var onIceConnectionStateChange = test.step_func(function(event) {
|
||||||
|
assert_equals(event.type, 'iceconnectionstatechange');
|
||||||
|
var stateinfo = document.getElementById('stateinfo');
|
||||||
|
stateinfo.innerHTML = 'First: ' + gFirstConnection.iceConnectionState
|
||||||
|
+ '<br>Second: ' + gSecondConnection.iceConnectionState;
|
||||||
|
// Note: All these combinations are legal states indicating that the
|
||||||
|
// call has connected. All browsers should end up in completed/completed,
|
||||||
|
// but as of this moment, we've chosen to terminate the test early.
|
||||||
|
// TODO: Revise test to ensure completed/completed is reached.
|
||||||
|
if (gFirstConnection.iceConnectionState == 'connected' &&
|
||||||
|
gSecondConnection.iceConnectionState == 'connected') {
|
||||||
|
test.done()
|
||||||
|
}
|
||||||
|
if (gFirstConnection.iceConnectionState == 'connected' &&
|
||||||
|
gSecondConnection.iceConnectionState == 'completed') {
|
||||||
|
test.done()
|
||||||
|
}
|
||||||
|
if (gFirstConnection.iceConnectionState == 'completed' &&
|
||||||
|
gSecondConnection.iceConnectionState == 'connected') {
|
||||||
|
test.done()
|
||||||
|
}
|
||||||
|
if (gFirstConnection.iceConnectionState == 'completed' &&
|
||||||
|
gSecondConnection.iceConnectionState == 'completed') {
|
||||||
|
test.done()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Returns a suitable error callback.
|
||||||
|
function failed(function_name) {
|
||||||
|
return test.step_func(function() {
|
||||||
|
assert_unreached('WebRTC called error callback for ' + function_name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a suitable do-nothing.
|
||||||
|
function ignoreSuccess(function_name) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function starts the test.
|
||||||
|
test.step(function() {
|
||||||
|
gFirstConnection = new RTCPeerConnection(null);
|
||||||
|
gFirstConnection.onicecandidate = onIceCandidateToFirst;
|
||||||
|
gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
|
gSecondConnection = new RTCPeerConnection(null);
|
||||||
|
gSecondConnection.onicecandidate = onIceCandidateToSecond;
|
||||||
|
gSecondConnection.onaddstream = onRemoteStream;
|
||||||
|
gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
|
||||||
|
|
||||||
|
// The offerToReceiveVideo is necessary and sufficient to make
|
||||||
|
// an actual connection.
|
||||||
|
// TODO: Use a promise-based API. This is legacy.
|
||||||
|
gFirstConnection.createOffer(onOfferCreated, failed('createOffer'),
|
||||||
|
{offerToReceiveVideo: true});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -4,19 +4,19 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<div id=log></div>
|
<div id=log></div>
|
||||||
<script>
|
<script>
|
||||||
async_test(function(t) {
|
async_test(function() {
|
||||||
var testResult;
|
var testResult;
|
||||||
var worker = new Worker('./support/WorkerTerminate.js');
|
var worker = new Worker('./support/WorkerTerminate.js');
|
||||||
worker.onmessage = function(e) {
|
worker.onmessage = this.step_func(function(e) {
|
||||||
testResult = e.data;
|
testResult = e.data;
|
||||||
if (testResult >= 10000) {
|
if (testResult >= 10000) {
|
||||||
worker.terminate();
|
worker.terminate();
|
||||||
worker.onmessage = t.unreached_func('Unexpected message event');
|
worker.onmessage = this.unreached_func('Unexpected message event');
|
||||||
setTimeout(t.step_func_done(function() {
|
setTimeout(this.step_func_done(function() {
|
||||||
assert_equals(testResult, 10000);
|
assert_equals(testResult, 10000);
|
||||||
}), 100);
|
}), 100);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
worker.postMessage("ping");
|
worker.postMessage("ping");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -12,23 +12,15 @@ close();
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<script>
|
<script>
|
||||||
async_test(function() {
|
var worker = new Worker('#');
|
||||||
var gotMessage = false;
|
worker.onmessage = function(e) {
|
||||||
var gotError = false;
|
assert_unreached("Got message");
|
||||||
var worker = new Worker('#');
|
};
|
||||||
worker.onmessage = function(e) {
|
worker.onerror = function(e) {
|
||||||
gotMessage = true;
|
assert_unreached("Got error");
|
||||||
};
|
};
|
||||||
worker.onerror = function(e) {
|
worker.postMessage(1);
|
||||||
gotError = true;
|
setTimeout(done, 2000);
|
||||||
};
|
|
||||||
worker.postMessage(1);
|
|
||||||
setTimeout(this.step_func(function() {
|
|
||||||
assert_false(gotMessage, 'got message');
|
|
||||||
assert_true(gotError, 'got error');
|
|
||||||
this.done();
|
|
||||||
}), 500);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<!--
|
<!--
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,22 +18,14 @@ var interval2 = setInterval(function() {
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<script>
|
<script>
|
||||||
async_test(function() {
|
var worker = new Worker('#');
|
||||||
var gotMessage = false;
|
worker.onmessage = function(e) {
|
||||||
var gotError = false;
|
assert_unreached("Got message");
|
||||||
var worker = new Worker('#');
|
};
|
||||||
worker.onmessage = function(e) {
|
worker.onerror = function(e) {
|
||||||
gotMessage = true;
|
assert_unreached("Got error");
|
||||||
};
|
};
|
||||||
worker.onerror = function(e) {
|
setTimeout(done, 2000);
|
||||||
gotError = true;
|
|
||||||
};
|
|
||||||
setTimeout(this.step_func(function() {
|
|
||||||
assert_false(gotMessage, 'got message');
|
|
||||||
assert_true(gotError, 'got error');
|
|
||||||
this.done();
|
|
||||||
}), 500);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<!--
|
<!--
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -14,27 +14,15 @@ setTimeout(x, 0);
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<script>
|
<script>
|
||||||
setup({allow_uncaught_exception: true});
|
var worker = new Worker('#');
|
||||||
|
worker.onmessage = function(e) {
|
||||||
async_test(function() {
|
assert_unreached("Got message");
|
||||||
var gotMessage = false;
|
};
|
||||||
var gotError = false;
|
worker.onerror = function(e) {
|
||||||
var worker = new Worker('#');
|
assert_unreached("Got error");
|
||||||
worker.onmessage = function(e) {
|
};
|
||||||
gotMessage = true;
|
setTimeout(done, 2000);
|
||||||
};
|
|
||||||
worker.onerror = function(e) {
|
|
||||||
gotError = true;
|
|
||||||
};
|
|
||||||
setTimeout(this.step_func(function() {
|
|
||||||
assert_false(gotMessage, 'got message');
|
|
||||||
assert_true(gotError, 'got error');
|
|
||||||
this.done();
|
|
||||||
}), 500);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<!--
|
<!--
|
||||||
*/
|
*/
|
||||||
//-->
|
//-->
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue