mirror of
https://github.com/servo/servo.git
synced 2025-08-02 12:10:29 +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: ==
|
||||
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
|
||||
expected: FAIL
|
||||
disabled: intermittent pass #5803
|
||||
disabled: intermittent pass (issue 5803)
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
type: reftest
|
||||
reftype: ==
|
||||
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]
|
||||
type: reftest
|
||||
disabled: intermittent failure #5207
|
||||
disabled: intermittent failure (issue 5207)
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
reftype: ==
|
||||
refurl: /2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm
|
||||
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'.]
|
||||
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\])]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
[requestAnimationFrame callback is invoked at least once before the timeout]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -153,12 +153,6 @@
|
|||
[Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -201,12 +195,6 @@
|
|||
[DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -225,15 +213,6 @@
|
|||
[DocumentType interface object length]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -297,12 +276,6 @@
|
|||
[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -315,15 +288,6 @@
|
|||
[Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -348,42 +312,18 @@
|
|||
[Text interface object length]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[ProcessingInstruction interface object length]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[Comment interface object length]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -513,12 +453,6 @@
|
|||
[DOMTokenList interface: operation toggle(DOMString,boolean)]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -534,12 +468,60 @@
|
|||
[DOMSettableTokenList interface: attribute value]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[NodeIterator interface object length]
|
||||
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)]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1179,12 +1179,6 @@
|
|||
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (81)]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -2178,12 +2172,6 @@
|
|||
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -2196,15 +2184,6 @@
|
|||
[Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -5889,9 +5868,6 @@
|
|||
[HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6711,9 +6687,6 @@
|
|||
[HTMLCanvasElement interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLCanvasElement interface: operation getContext(DOMString,any)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6729,9 +6702,6 @@
|
|||
[HTMLCanvasElement interface: operation toBlob(FileCallback,DOMString,any)]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6807,9 +6777,6 @@
|
|||
[CanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: operation stroke(Path2D)]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: operation drawSystemFocusRing(Element)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6894,9 +6861,6 @@
|
|||
[CanvasRenderingContext2D interface: attribute direction]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6939,12 +6903,6 @@
|
|||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type (24)]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6978,9 +6936,6 @@
|
|||
[CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7026,12 +6981,6 @@
|
|||
[CanvasRenderingContext2D interface: calling measureText(DOMString) 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) 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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7068,9 +7017,6 @@
|
|||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (69)]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -9477,3 +9423,21 @@
|
|||
[Location interface: window.location must have own property "reload"]
|
||||
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]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7347,9 +7335,6 @@
|
|||
[object.hspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[object.hspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[object.hspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7662,9 +7647,6 @@
|
|||
[object.vspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[object.vspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[object.vspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -11310,9 +11292,6 @@
|
|||
[video.width: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[video.width: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[video.width: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -11496,9 +11475,6 @@
|
|||
[video.height: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[video.height: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[video.height: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -16977,24 +16953,12 @@
|
|||
[canvas.width: setAttribute() to 4294967295 followed by IDL get]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
[canvas.height: setAttribute() to 4294967295 followed by IDL get]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5268,9 +5268,6 @@
|
|||
[input.maxLength: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[input.maxLength: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[input.maxLength: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -5766,12 +5763,6 @@
|
|||
[input.required: IDL set to object "test-valueOf" followed by IDL get]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -8226,12 +8217,6 @@
|
|||
[select.required: IDL set to object "test-valueOf" followed by IDL get]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -11505,12 +11490,6 @@
|
|||
[textarea.autofocus: IDL set to object "test-valueOf" followed by IDL get]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -12396,9 +12375,6 @@
|
|||
[textarea.maxLength: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[textarea.maxLength: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[textarea.maxLength: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -12420,12 +12396,6 @@
|
|||
[textarea.maxLength: IDL set to 2147483647 followed by getAttribute()]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2835,9 +2835,6 @@
|
|||
[pre.width: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[pre.width: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[pre.width: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -4755,9 +4752,6 @@
|
|||
[ol.start: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[ol.start: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[ol.start: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6876,9 +6870,6 @@
|
|||
[li.value: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[li.value: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[li.value: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1431,9 +1431,6 @@
|
|||
[applet.hspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[applet.hspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[applet.hspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1911,9 +1908,6 @@
|
|||
[applet.vspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[applet.vspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[applet.vspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -3474,9 +3468,6 @@
|
|||
[marquee.hspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.hspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.hspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -3660,9 +3651,6 @@
|
|||
[marquee.scrollAmount: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.scrollAmount: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.scrollAmount: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -3846,9 +3834,6 @@
|
|||
[marquee.scrollDelay: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.scrollDelay: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.scrollDelay: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -4140,9 +4125,6 @@
|
|||
[marquee.vspace: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.vspace: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[marquee.vspace: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3480,9 +3480,6 @@
|
|||
[colgroup.span: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[colgroup.span: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[colgroup.span: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -5031,9 +5028,6 @@
|
|||
[col.span: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[col.span: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[col.span: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -11544,12 +11538,6 @@
|
|||
[td.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -11712,9 +11700,6 @@
|
|||
[td.rowSpan: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[td.rowSpan: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[td.rowSpan: setAttribute() to object "3" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -13737,12 +13722,6 @@
|
|||
[th.tabIndex: IDL set to -2147483648 followed by getAttribute()]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -13905,9 +13884,6 @@
|
|||
[th.rowSpan: setAttribute() to object "2" followed by IDL get]
|
||||
expected: FAIL
|
||||
|
||||
[th.rowSpan: setAttribute() to object "3" followed by getAttribute()]
|
||||
expected: FAIL
|
||||
|
||||
[th.rowSpan: setAttribute() to object "3" followed by IDL get]
|
||||
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)]
|
||||
expected: FAIL
|
||||
|
||||
[WorkerGlobalScope interface: calling importScripts(DOMString) on self with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[WorkerNavigator interface object length]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -147,3 +144,6 @@
|
|||
[WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (8)]
|
||||
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>
|
||||
test(function() {
|
||||
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.");
|
||||
}, "Blob interface object");
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
var open_rq = createdb(t);
|
||||
open_rq.onupgradeneeded = function(e) {
|
||||
db = event.target.result;
|
||||
db = e.target.result;
|
||||
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
||||
store.createIndex("idx", "iKey");
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
var open_rq = createdb(t);
|
||||
open_rq.onupgradeneeded = function(e) {
|
||||
db = event.target.result;
|
||||
db = e.target.result;
|
||||
var store = db.createObjectStore("test", {keyPath:"pKey"});
|
||||
|
||||
for(var i = 0; i < records.length; i++) {
|
||||
|
|
|
@ -29,7 +29,7 @@ open_rq.onsuccess = function(e) {
|
|||
upgradeneeded_fired = counter++;
|
||||
});
|
||||
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(upgradeneeded_fired, 2, 'second upgradeneeded event fired #')
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<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="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>
|
||||
|
|
|
@ -47,7 +47,7 @@ should_throw({
|
|||
|
||||
function should_work(val) {
|
||||
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() {
|
||||
t.done()
|
||||
}
|
||||
|
|
|
@ -25,11 +25,14 @@
|
|||
txn.objectStore("store")
|
||||
.openCursor().onsuccess = this.step_func(function(e)
|
||||
{
|
||||
if (e.target.result)
|
||||
if (e.target.result) {
|
||||
count += 1;
|
||||
e.target.result.continue()
|
||||
}
|
||||
})
|
||||
|
||||
txn.oncomplete = this.step_func(function() {
|
||||
assert_equals(count, 100);
|
||||
this.done()
|
||||
})
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<script src=support.js></script>
|
||||
|
||||
<script>
|
||||
// TODO XXX DO THE IDBTransaction abort test here here
|
||||
var db, aborted,
|
||||
t = async_test(document.title, {timeout: 10000}),
|
||||
record = { indexedProperty: "bar" };
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
// Errors
|
||||
db.onerror = fail(t, "db.error");
|
||||
db.abort = fail(t, "db.abort");
|
||||
db.onabort = fail(t, "db.abort");
|
||||
|
||||
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
|
||||
accepted, detele youre branch (see '
|
||||
accepted, delete your branch (see '
|
||||
[When Pull Request is Accepted][cleanup]').
|
||||
|
||||
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, 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")
|
||||
|
||||
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() {
|
||||
var node = create()
|
||||
assert_equals(node.data, "test")
|
||||
|
@ -32,6 +42,33 @@ function testNode(create, type) {
|
|||
assert_equals(node.data, "tst")
|
||||
}, 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() {
|
||||
var node = create()
|
||||
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, "") })
|
||||
}, 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() {
|
||||
var node = create()
|
||||
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) {
|
||||
var frame = document.createElement("iframe"),
|
||||
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() {
|
||||
assert_equals(frame.contentDocument.characterSet, name)
|
||||
assert_equals(frame.contentDocument.inputEncoding, name)
|
||||
|
|
|
@ -63,9 +63,7 @@ test(function() {
|
|||
assert_equals(img2.id, "test4");
|
||||
|
||||
assert_false("test4" in document, '"test4" in document should be false');
|
||||
var collection = document.test4;
|
||||
assert_class_string(collection, "HTMLCollection", "collection should be an HTMLCollection");
|
||||
assert_array_equals(collection, [img1, img2]);
|
||||
assert_equals(document.test4, undefined);
|
||||
}, "If there are two imgs, nothing should be returned. (id)");
|
||||
|
||||
test(function() {
|
||||
|
|
|
@ -373,7 +373,7 @@ ReflectionTests.typeMap = {
|
|||
{toString:function() {return 2;}, valueOf: null},
|
||||
{valueOf:function() {return 3;}}],
|
||||
"domExpected": function(val) {
|
||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
||||
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||
if (parsed === false || parsed > maxInt || parsed < minInt) {
|
||||
return null;
|
||||
}
|
||||
|
@ -409,7 +409,7 @@ ReflectionTests.typeMap = {
|
|||
{toString:function() {return 2;}, valueOf: null},
|
||||
{valueOf:function() {return 3;}}],
|
||||
"domExpected": function(val) {
|
||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
||||
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||
// Note maxInt, not maxUnsigned.
|
||||
if (parsed === false || parsed < 0 || parsed > maxInt) {
|
||||
return null;
|
||||
|
@ -450,7 +450,7 @@ ReflectionTests.typeMap = {
|
|||
{toString:function() {return 2;}, valueOf: null},
|
||||
{valueOf:function() {return 3;}}],
|
||||
"domExpected": function(val) {
|
||||
var parsed = ReflectionTests.parseNonneg(val + "");
|
||||
var parsed = ReflectionTests.parseNonneg(String(val));
|
||||
// Note maxInt, not maxUnsigned.
|
||||
if (parsed === false || parsed < 1 || parsed > maxInt) {
|
||||
return null;
|
||||
|
@ -696,7 +696,7 @@ ReflectionTests.doReflects = function(data, idlName, idlObj, domName, domObj) {
|
|||
}
|
||||
try {
|
||||
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");
|
||||
if (ReflectionHarness.catchUnexpectedExceptions) {
|
||||
ReflectionHarness.success();
|
||||
|
|
|
@ -10,18 +10,18 @@
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<meta name='flags' content='dom'>
|
||||
<style type='text/css'>
|
||||
#colonlangcontroltest { color: red; font-weight: bold; width: 400px; }
|
||||
#colonlangcontroltest:lang(xx) { display:none; }
|
||||
#colonlangcontroltest { color: red; font-weight: bold; width: 400px; }
|
||||
#colonlangcontroltest:lang(xx) { display:none; }
|
||||
.test div { width: 50px; }
|
||||
|
||||
#box:lang(ko) { width: 100px; }
|
||||
#box:lang(zh) { width: 100px; }
|
||||
#box:lang(ja) { width: 100px; }
|
||||
|
||||
/* styling for debugging related notes */
|
||||
.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(ja) { background-color: #0000FF; color: white; padding: 0 5px; }
|
||||
/* styling for debugging related notes */
|
||||
.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(ja) { background-color: #0000FF; color: white; padding: 0 5px; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<head>
|
||||
<title>Pattern Attribute</title>
|
||||
<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="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
|
||||
<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="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
@ -14,20 +14,20 @@
|
|||
<body>
|
||||
|
||||
|
||||
<h1>Pattern Attribute</h1>
|
||||
<div style="display: none">
|
||||
<input pattern="[a-z]{3}" value="abcd" title="three letters max"/>
|
||||
</div>
|
||||
<h1>Pattern Attribute</h1>
|
||||
<div style="display: none">
|
||||
<input pattern="[a-z]{3}" value="abcd" title="three letters max"/>
|
||||
</div>
|
||||
|
||||
<div id="log">
|
||||
</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>
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<head>
|
||||
<title>Required Attribute</title>
|
||||
<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="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-required">
|
||||
<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="help" href="https://html.spec.whatwg.org/multipage/#attr-input-required">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
@ -14,20 +14,20 @@
|
|||
<body>
|
||||
|
||||
|
||||
<h1>Required Attribute</h1>
|
||||
<div style="display: none">
|
||||
<input type="text" required="required" />
|
||||
</div>
|
||||
<h1>Required Attribute</h1>
|
||||
<div style="display: none">
|
||||
<input type="text" required="required" />
|
||||
</div>
|
||||
|
||||
<div id="log">
|
||||
</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>
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<head>
|
||||
<title>Search Input</title>
|
||||
<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="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
||||
<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="help" href="https://html.spec.whatwg.org/multipage/#the-input-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
@ -14,21 +14,21 @@
|
|||
<body>
|
||||
|
||||
|
||||
<h1>Search Input</h1>
|
||||
<input type="search" style="display:none" placeholder="Search..." />
|
||||
<h1>Search Input</h1>
|
||||
<input type="search" style="display:none" placeholder="Search..." />
|
||||
|
||||
<div id="log">
|
||||
</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", {
|
||||
"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", {
|
||||
"help" : "https://html.spec.whatwg.org/multipage/#dom-input-placeholder" });
|
||||
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" });
|
||||
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" });
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
|
|
|
@ -1,84 +1,84 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Input tel</title>
|
||||
<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)">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<title>Input tel</title>
|
||||
<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)">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Input tel</h1>
|
||||
<input type="tel" id="novalue" />
|
||||
<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_CRLF" value="0

1" />
|
||||
<div id="log">
|
||||
</div>
|
||||
<h1>Input tel</h1>
|
||||
<input type="tel" id="novalue" />
|
||||
<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_CRLF" value="0

1" />
|
||||
<div id="log">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var element = document.getElementById('novalue');
|
||||
test(function(){
|
||||
assert_equals(element.type, 'tel');
|
||||
}, 'tel type supported on input element');
|
||||
test(function(){
|
||||
element.value = '0\u000A1';
|
||||
assert_equals(element.value, '01');
|
||||
}, 'User agents must not allow users to insert "LF" (U+000A)');
|
||||
test(function(){
|
||||
element.value = '0\u000D1';
|
||||
assert_equals(element.value, '01');
|
||||
}, 'User agents must not allow users to insert "CR" (U+000D)');
|
||||
<script type="text/javascript">
|
||||
var element = document.getElementById('novalue');
|
||||
test(function(){
|
||||
assert_equals(element.type, 'tel');
|
||||
}, 'tel type supported on input element');
|
||||
test(function(){
|
||||
element.value = '0\u000A1';
|
||||
assert_equals(element.value, '01');
|
||||
}, 'User agents must not allow users to insert "LF" (U+000A)');
|
||||
test(function(){
|
||||
element.value = '0\u000D1';
|
||||
assert_equals(element.value, '01');
|
||||
}, 'User agents must not allow users to insert "CR" (U+000D)');
|
||||
|
||||
element = document.getElementById('value_with_LF');
|
||||
test(function(){
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value attribute, if specified, must have a value that contains no "LF" (U+000A)');
|
||||
element = document.getElementById('value_with_LF');
|
||||
test(function(){
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value attribute, if specified, must have a value that contains no "LF" (U+000A)');
|
||||
|
||||
element = document.getElementById('value_with_CR');
|
||||
test(function(){
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value attribute, if specified, must have a value that contains no "CR" (U+000D)');
|
||||
element = document.getElementById('value_with_CR');
|
||||
test(function(){
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value attribute, if specified, must have a value that contains no "CR" (U+000D)');
|
||||
|
||||
test(function(){
|
||||
element = document.getElementById('novalue');
|
||||
element.value = '0\u000D\u000A1';
|
||||
assert_equals(element.value, '01');
|
||||
test(function(){
|
||||
element = document.getElementById('novalue');
|
||||
element.value = '0\u000D\u000A1';
|
||||
assert_equals(element.value, '01');
|
||||
|
||||
element = document.getElementById('value_with_CRLF');
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||
element = document.getElementById('value_with_CRLF');
|
||||
assert_equals(element.value, '01');
|
||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||
|
||||
element = document.getElementById('novalue');
|
||||
test(function(){
|
||||
element.value = '+811234';
|
||||
assert_equals(element.value, '+811234');
|
||||
}, 'Element can accept the phone number with plus sign(country code)');
|
||||
test(function(){
|
||||
element.value = '1234#5678';
|
||||
assert_equals(element.value, '1234#5678');
|
||||
}, 'Element can accept the phone number with hash mark(extension number)');
|
||||
test(function(){
|
||||
element.value = '123-456-789';
|
||||
assert_equals(element.value, '123-456-789');
|
||||
}, 'Element can accept the phone number with hyphen');
|
||||
test(function(){
|
||||
element.value = '123.456.789';
|
||||
assert_equals(element.value, '123.456.789');
|
||||
}, 'Element can accept the phone number with dots');
|
||||
test(function(){
|
||||
element.value = '1 23 4';
|
||||
assert_equals(element.value, '1 23 4');
|
||||
}, 'Element can accept the phone number with whitespace');
|
||||
test(function(){
|
||||
element.value = ' 1234 ';
|
||||
assert_equals(element.value, ' 1234 ');
|
||||
}, 'Element can accept the phone number with leading & following whitespaces');
|
||||
test(function(){
|
||||
element.value = '(03)12345678';
|
||||
assert_equals(element.value, '(03)12345678');
|
||||
}, 'Element can accept the phone number with parentheses(area code)');
|
||||
</script>
|
||||
element = document.getElementById('novalue');
|
||||
test(function(){
|
||||
element.value = '+811234';
|
||||
assert_equals(element.value, '+811234');
|
||||
}, 'Element can accept the phone number with plus sign(country code)');
|
||||
test(function(){
|
||||
element.value = '1234#5678';
|
||||
assert_equals(element.value, '1234#5678');
|
||||
}, 'Element can accept the phone number with hash mark(extension number)');
|
||||
test(function(){
|
||||
element.value = '123-456-789';
|
||||
assert_equals(element.value, '123-456-789');
|
||||
}, 'Element can accept the phone number with hyphen');
|
||||
test(function(){
|
||||
element.value = '123.456.789';
|
||||
assert_equals(element.value, '123.456.789');
|
||||
}, 'Element can accept the phone number with dots');
|
||||
test(function(){
|
||||
element.value = '1 23 4';
|
||||
assert_equals(element.value, '1 23 4');
|
||||
}, 'Element can accept the phone number with whitespace');
|
||||
test(function(){
|
||||
element.value = ' 1234 ';
|
||||
assert_equals(element.value, ' 1234 ');
|
||||
}, 'Element can accept the phone number with leading & following whitespaces');
|
||||
test(function(){
|
||||
element.value = '(03)12345678';
|
||||
assert_equals(element.value, '(03)12345678');
|
||||
}, 'Element can accept the phone number with parentheses(area code)');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -4,43 +4,43 @@
|
|||
<head>
|
||||
<title>Input Time</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Input Time</h1>
|
||||
<div style="display:none;">
|
||||
<input type="time "id="chkDefaultValue" />
|
||||
<input type="time" id="chkStep" />
|
||||
<input type="time" id="chkSetValueTest" />
|
||||
<input type="time" id="chkSupportAttribute" min="01:01:01.001" max="12:12:12.012" step="600" />
|
||||
</div>
|
||||
<div id="log">
|
||||
<h1>Input Time</h1>
|
||||
<div style="display:none;">
|
||||
<input type="time "id="chkDefaultValue" />
|
||||
<input type="time" id="chkStep" />
|
||||
<input type="time" id="chkSetValueTest" />
|
||||
<input type="time" id="chkSupportAttribute" min="01:01:01.001" max="12:12:12.012" step="600" />
|
||||
</div>
|
||||
<div id="log">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
<script type="text/javascript">
|
||||
|
||||
/* check default value */
|
||||
test(function(){ assert_equals(document.getElementById("chkDefaultValue").value, "");
|
||||
}, "time element of default time value");
|
||||
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, "");
|
||||
} , "max attribute on default value check")
|
||||
}, "max attribute on default value check")
|
||||
test(function(){assert_equals(document.getElementById('chkDefaultValue').max, "");
|
||||
} , "min attribute on default value check")
|
||||
}, "min attribute on default value check")
|
||||
|
||||
/* simple attribute test*/
|
||||
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")}
|
||||
, "max attribute support on input element");
|
||||
, "max attribute support on input element");
|
||||
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")}
|
||||
, "step attribute support on input element");
|
||||
, "step attribute support on input element");
|
||||
|
||||
/* check step up and down */
|
||||
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(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value,"12:01");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value,"12:01");
|
||||
} , "stepUp step value empty on default step value ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value,"11:59");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value,"11:59");
|
||||
}, "stepDown step value empty default step value");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "-600";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:01");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "-600";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:01");
|
||||
},"stepUp on step value minus");
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "-600";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "-600";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59");
|
||||
},"stepDown on step value minus");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:01");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:01");
|
||||
} , "stepUp on step value zero ");
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59");
|
||||
} , "stepDown on step value zero ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "00:00";
|
||||
_StepTest.step = "86399";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "23:59:59");
|
||||
_StepTest.value = "00:00";
|
||||
_StepTest.step = "86399";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "23:59:59");
|
||||
} , "stepUp on step value 24 hour");
|
||||
test(function(){
|
||||
_StepTest.value = "23:59:59";
|
||||
_StepTest.step = "86399";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "00:00:00");
|
||||
_StepTest.value = "23:59:59";
|
||||
_StepTest.step = "86399";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "00:00:00");
|
||||
} , "stepDown on step value 24 hour ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "3600";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "13:00");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "3600";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "13:00");
|
||||
} , "stepUp on step value hour ");
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "3600";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:00");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "3600";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:00");
|
||||
} , "stepDown on step value hour ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:00:01");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:00:01");
|
||||
} , "stepUp on step value second ");
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59:59");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59:59");
|
||||
} , "stepDown on step value second ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0.001";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:00:00.001");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0.001";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "12:00:00.001");
|
||||
} , "stepUp on step value miri second ");
|
||||
test(function(){
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0.001";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59:59.999");
|
||||
_StepTest.value = "12:00";
|
||||
_StepTest.step = "0.001";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "11:59:59.999");
|
||||
} , "stepDown on step value miri second ");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "13:00:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepUp(2);
|
||||
assert_equals(_StepTest.value, "13:00:02");
|
||||
_StepTest.value = "13:00:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepUp(2);
|
||||
assert_equals(_StepTest.value, "13:00:02");
|
||||
}, "stepUp argment 2 times");
|
||||
test(function(){
|
||||
_StepTest.value = "13:00:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepDown(2);
|
||||
assert_equals(_StepTest.value, "12:59:58");
|
||||
_StepTest.value = "13:00:00";
|
||||
_StepTest.step = "1";
|
||||
_StepTest.stepDown(2);
|
||||
assert_equals(_StepTest.value, "12:59:58");
|
||||
}, "stepDown argment 2 times");
|
||||
|
||||
test(function(){
|
||||
_StepTest.max = "15:00";
|
||||
_StepTest.value = "15:00";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "15:00");
|
||||
_StepTest.max = "";
|
||||
_StepTest.max = "15:00";
|
||||
_StepTest.value = "15:00";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "15:00");
|
||||
_StepTest.max = "";
|
||||
} , "stepUp stop because it exceeds the maximum value");
|
||||
test(function(){
|
||||
_StepTest.min = "13:00";
|
||||
_StepTest.value = "13:00";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "13:00");
|
||||
_StepTest.min="";
|
||||
_StepTest.min = "13:00";
|
||||
_StepTest.value = "13:00";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "13:00");
|
||||
_StepTest.min="";
|
||||
} , "stepDown Stop so lower than the minimum value");
|
||||
|
||||
test(function(){
|
||||
_StepTest.max = "15:01";
|
||||
_StepTest.value = "15:00";
|
||||
_StepTest.step = "120";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "15:01");
|
||||
_StepTest.max = "";
|
||||
_StepTest.max = "15:01";
|
||||
_StepTest.value = "15:00";
|
||||
_StepTest.step = "120";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "15:01");
|
||||
_StepTest.max = "";
|
||||
} , "stop at border on stepUp");
|
||||
test(function(){
|
||||
_StepTest.min = "12:59";
|
||||
_StepTest.value = "13:00";
|
||||
_StepTest.step = "120";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "12:59");
|
||||
_StepTest.min="";
|
||||
_StepTest.min = "12:59";
|
||||
_StepTest.value = "13:00";
|
||||
_StepTest.step = "120";
|
||||
_StepTest.stepDown();
|
||||
assert_equals(_StepTest.value, "12:59");
|
||||
_StepTest.min="";
|
||||
} , "stop at border on stepDown");
|
||||
|
||||
test(function(){
|
||||
_StepTest.value = "";
|
||||
_StepTest.step = "60";
|
||||
_StepTest.value = "";
|
||||
_StepTest.step = "60";
|
||||
_StepTest.stepUp();
|
||||
assert_equals(_StepTest.value, "00:01");
|
||||
assert_equals(_StepTest.value, "00:01");
|
||||
} , " empty value of stepUp");
|
||||
|
||||
|
||||
/* set value test */
|
||||
test(function(){
|
||||
var _time = document.getElementById("chkSetValueTest");
|
||||
_time.value = "12:00:00.000";
|
||||
assert_equals(_time.value, "12:00:00.000");
|
||||
_time.value = "hh:mi:ss.sss";
|
||||
assert_equals(_time.value, "");
|
||||
var _time = document.getElementById("chkSetValueTest");
|
||||
_time.value = "12:00:00.000";
|
||||
assert_equals(_time.value, "12:00:00.000");
|
||||
_time.value = "hh:mi:ss.sss";
|
||||
assert_equals(_time.value, "");
|
||||
}, "set value on not time format value");
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,59 +1,59 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Input url</title>
|
||||
<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">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<title>Input url</title>
|
||||
<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">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Input url</h1>
|
||||
<div style="display: none">
|
||||
<input type="url" id="type_support" />
|
||||
<input type="url" id="set_value_LF" />
|
||||
<input type="url" id="set_value_CR" />
|
||||
<input type="url" id="set_value_CRLF" />
|
||||
<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_inner_white_space" value=" a a " />
|
||||
</div>
|
||||
<div id="log">
|
||||
</div>
|
||||
<h1>Input url</h1>
|
||||
<div style="display: none">
|
||||
<input type="url" id="type_support" />
|
||||
<input type="url" id="set_value_LF" />
|
||||
<input type="url" id="set_value_CR" />
|
||||
<input type="url" id="set_value_CRLF" />
|
||||
<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_inner_white_space" value=" a a " />
|
||||
</div>
|
||||
<div id="log">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
test(function(){
|
||||
var element = document.getElementById('type_support');
|
||||
assert_equals(element.type, 'url');
|
||||
}, 'url type supported on input element');
|
||||
<script type="text/javascript">
|
||||
test(function(){
|
||||
var element = document.getElementById('type_support');
|
||||
assert_equals(element.type, 'url');
|
||||
}, 'url type supported on input element');
|
||||
|
||||
test(function(){
|
||||
var element = document.getElementById('set_value_LF');
|
||||
element.value = 'a\u000Aa';
|
||||
assert_equals(element.value, 'aa');
|
||||
test(function(){
|
||||
var element = document.getElementById('set_value_LF');
|
||||
element.value = 'a\u000Aa';
|
||||
assert_equals(element.value, 'aa');
|
||||
|
||||
element = document.getElementById('set_value_CR');
|
||||
element.value = 'a\u000Da';
|
||||
assert_equals(element.value, 'aa');
|
||||
element = document.getElementById('set_value_CR');
|
||||
element.value = 'a\u000Da';
|
||||
assert_equals(element.value, 'aa');
|
||||
|
||||
element = document.getElementById('set_value_CRLF');
|
||||
element.value = 'a\u000D\u000Aa';
|
||||
assert_equals(element.value, 'aa');
|
||||
}, 'The value must not be set with "LF" (U+000A) or "CR" (U+000D)');
|
||||
element = document.getElementById('set_value_CRLF');
|
||||
element.value = 'a\u000D\u000Aa';
|
||||
assert_equals(element.value, 'aa');
|
||||
}, 'The value must not be set with "LF" (U+000A) or "CR" (U+000D)');
|
||||
|
||||
test(function(){
|
||||
var element = document.getElementById('value_with_CRLF');
|
||||
assert_equals(element.value, 'aa');
|
||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||
test(function(){
|
||||
var element = document.getElementById('value_with_CRLF');
|
||||
assert_equals(element.value, 'aa');
|
||||
}, 'The value sanitization algorithm is as follows: Strip line breaks from the value');
|
||||
|
||||
test(function(){
|
||||
var element = document.getElementById('value_with_leading_trailing_white_space');
|
||||
assert_equals(element.value, 'aa');
|
||||
test(function(){
|
||||
var element = document.getElementById('value_with_leading_trailing_white_space');
|
||||
assert_equals(element.value, 'aa');
|
||||
|
||||
element = document.getElementById('value_with_leading_trailing_inner_white_space');
|
||||
assert_equals(element.value, 'a a');
|
||||
}, 'The value sanitization algorithm is as follows: Strip leading and trailing whitespace from the value.');
|
||||
</script>
|
||||
element = document.getElementById('value_with_leading_trailing_inner_white_space');
|
||||
assert_equals(element.value, 'a a');
|
||||
}, 'The value sanitization algorithm is as follows: Strip leading and trailing whitespace from the value.');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</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">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<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"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Template tag with div tags inside</p>
|
||||
<template>
|
||||
<div>This is div inside template</div>
|
||||
<div>This is another div inside template</div>
|
||||
</template>
|
||||
<p>Template tag with div tags inside</p>
|
||||
<template>
|
||||
<div>This is div inside template</div>
|
||||
<div>This is another div inside template</div>
|
||||
</template>
|
||||
</body>
|
||||
</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">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<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"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Template tag with children div tags inside another template tag</p>
|
||||
<template>
|
||||
<template>
|
||||
<div>This is div inside template</div>
|
||||
<div>This is another div inside template</div>
|
||||
</template>
|
||||
</template>
|
||||
<p>Template tag with children div tags inside another template tag</p>
|
||||
<template>
|
||||
<template>
|
||||
<div>This is div inside template</div>
|
||||
<div>This is another div inside template</div>
|
||||
</template>
|
||||
</template>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,56 +1,56 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Creating and deleting captions</title>
|
||||
<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/#dom-table-createcaption" />
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-deletecaption" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<title>Creating and deleting captions</title>
|
||||
<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/#dom-table-createcaption" />
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-table-deletecaption" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<table id="table1" style="display:none">
|
||||
<caption id="caption1">caption</caption>
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="table2" style="display:none">
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="table3" style="display:none">
|
||||
<caption id="caption3">caption 3</caption>
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script>
|
||||
test(function () {
|
||||
var table1 = document.getElementById('table1');
|
||||
var testCaption = table1.createCaption();
|
||||
var table1FirstCaption = table1.caption;
|
||||
assert_equals(testCaption, table1FirstCaption);
|
||||
}, "createCaption method returns the first caption element child of the table")
|
||||
test(function () {
|
||||
var table2 = document.getElementById('table2');
|
||||
var test2Caption = table2.createCaption();
|
||||
var table2FirstNode = table2.firstChild;
|
||||
assert_true(test2Caption instanceof HTMLTableCaptionElement);
|
||||
assert_equals(table2FirstNode, test2Caption);
|
||||
}, "createCaption method creates a new caption and inserts it as the first node of the table element")
|
||||
test(function () {
|
||||
var table3 = document.getElementById('table3');
|
||||
assert_equals(table3.caption.textContent, "caption 3");
|
||||
table3.deleteCaption();
|
||||
assert_equals(table3.caption, null);
|
||||
}, "deleteCaption method removes the first caption element child of the table element")
|
||||
</script>
|
||||
<div id="log"></div>
|
||||
<table id="table1" style="display:none">
|
||||
<caption id="caption1">caption</caption>
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="table2" style="display:none">
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="table3" style="display:none">
|
||||
<caption id="caption3">caption 3</caption>
|
||||
<tr>
|
||||
<td>cell</td>
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script>
|
||||
test(function () {
|
||||
var table1 = document.getElementById('table1');
|
||||
var testCaption = table1.createCaption();
|
||||
var table1FirstCaption = table1.caption;
|
||||
assert_equals(testCaption, table1FirstCaption);
|
||||
}, "createCaption method returns the first caption element child of the table")
|
||||
test(function () {
|
||||
var table2 = document.getElementById('table2');
|
||||
var test2Caption = table2.createCaption();
|
||||
var table2FirstNode = table2.firstChild;
|
||||
assert_true(test2Caption instanceof HTMLTableCaptionElement);
|
||||
assert_equals(table2FirstNode, test2Caption);
|
||||
}, "createCaption method creates a new caption and inserts it as the first node of the table element")
|
||||
test(function () {
|
||||
var table3 = document.getElementById('table3');
|
||||
assert_equals(table3.caption.textContent, "caption 3");
|
||||
table3.deleteCaption();
|
||||
assert_equals(table3.caption, null);
|
||||
}, "deleteCaption method removes the first caption element child of the table element")
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>HTML time element API</title>
|
||||
<style>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>HTML time element API</title>
|
||||
<style>
|
||||
#time { visibility: hidden; }
|
||||
</style>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-time-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<!-- 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>
|
||||
<script type="text/javascript">
|
||||
</style>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-time-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<!-- 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>
|
||||
<script type="text/javascript">
|
||||
function makeTime(dateTime,contents,dateTimeProp) {
|
||||
var timeEl = document.createElement('time');
|
||||
if( dateTime ) {
|
||||
timeEl.setAttribute('datetime',dateTime);
|
||||
}
|
||||
if( contents ) {
|
||||
timeEl.innerHTML = contents;
|
||||
}
|
||||
if( dateTimeProp ) {
|
||||
timeEl.dateTime = dateTimeProp;
|
||||
}
|
||||
return timeEl;
|
||||
var timeEl = document.createElement('time');
|
||||
if( dateTime ) {
|
||||
timeEl.setAttribute('datetime',dateTime);
|
||||
}
|
||||
if( contents ) {
|
||||
timeEl.innerHTML = contents;
|
||||
}
|
||||
if( dateTimeProp ) {
|
||||
timeEl.dateTime = dateTimeProp;
|
||||
}
|
||||
return timeEl;
|
||||
}
|
||||
|
||||
var timep = document.getElementById('time');
|
||||
|
@ -34,35 +34,35 @@ var times = timep.getElementsByTagName('time');
|
|||
|
||||
//TIME elements
|
||||
test(function () {
|
||||
assert_equals( times.length, 4 );
|
||||
assert_equals( times.length, 4 );
|
||||
}, 'HTML parsing should locate 4 time elements in this document');
|
||||
test(function () {
|
||||
assert_true( !!window.HTMLTimeElement );
|
||||
assert_true( !!window.HTMLTimeElement );
|
||||
}, 'HTMLTimeElement should be exposed for prototyping');
|
||||
test(function () {
|
||||
assert_true( makeTime() instanceof window.HTMLTimeElement, 'createElement variant' );
|
||||
assert_true( times[0] instanceof window.HTMLTimeElement, 'HTML parsing variant' );
|
||||
assert_true( makeTime() instanceof window.HTMLTimeElement, 'createElement variant' );
|
||||
assert_true( times[0] instanceof window.HTMLTimeElement, 'HTML parsing variant' );
|
||||
}, 'the time elements should be instanceof HTMLTimeElement');
|
||||
|
||||
//dateTime
|
||||
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');
|
||||
test(function () {
|
||||
assert_equals( typeof makeTime().dateTime, 'string', 'typeof test' );
|
||||
assert_equals( makeTime().dateTime, '', 'value test' );
|
||||
assert_equals( typeof makeTime().dateTime, 'string', 'typeof test' );
|
||||
assert_equals( makeTime().dateTime, '', 'value test' );
|
||||
}, 'the dateTime IDL property should default to an empty string');
|
||||
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');
|
||||
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');
|
||||
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');
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -21,77 +21,77 @@ test(function () {
|
|||
|
||||
/* Happy path */
|
||||
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');
|
||||
|
||||
|
||||
/* URL argument */
|
||||
test(function () {
|
||||
navigator.registerContentHandler('text/x-unknown-type', '%s', 'foo');
|
||||
navigator.registerContentHandler('text/x-unknown-type', '%s', 'foo');
|
||||
}, 'a relative URL should work');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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)');
|
||||
|
||||
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)');
|
||||
|
||||
/* Content type argument */
|
||||
|
@ -109,9 +109,9 @@ var blacklist = new Array(
|
|||
|
||||
for (var bi=0, bl=blacklist.length; bi<bl; ++bi){
|
||||
|
||||
test(function () {
|
||||
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');
|
||||
test(function () {
|
||||
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');
|
||||
|
||||
}
|
||||
|
||||
|
@ -124,9 +124,9 @@ var whitelist = new Array('application/atom+xml', /* For feeds. */
|
|||
|
||||
for (var wi=0, wl=whitelist.length; wi<wl; ++wi){
|
||||
|
||||
test(function () {
|
||||
navigator.registerContentHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||
}, 'overriding the ' + whitelist[wi] + ' MIME type should work');
|
||||
test(function () {
|
||||
navigator.registerContentHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||
}, 'overriding the ' + whitelist[wi] + ' MIME type should work');
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -20,163 +20,163 @@ test(function () {
|
|||
}, 'the registerProtocolHandler method should exist on the navigator object');
|
||||
|
||||
test(function () {
|
||||
navigator.registerProtocolHandler('tel', location.href + '/%s', 'foo');
|
||||
navigator.registerProtocolHandler('tel', location.href + '/%s', 'foo');
|
||||
}, 'a handler with valid arguments should work');
|
||||
|
||||
|
||||
/* URL argument */
|
||||
test(function () {
|
||||
navigator.registerProtocolHandler('tel', '%s', 'foo');
|
||||
navigator.registerProtocolHandler('tel', '%s', 'foo');
|
||||
}, 'a relative URL should work');
|
||||
|
||||
test(function () {
|
||||
navigator.registerProtocolHandler('tel', location.href + '#%s', 'foo');
|
||||
navigator.registerProtocolHandler('tel', location.href + '#%s', 'foo');
|
||||
}, 'a URL with a fragment identifier should work');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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)');
|
||||
|
||||
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)');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
/* Protocol argument */
|
||||
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. */
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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');
|
||||
|
||||
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”');
|
||||
|
||||
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”');
|
||||
|
||||
|
||||
/* Overriding any of the following protocols must never be allowed. That would
|
||||
* break the browser. */
|
||||
var blacklist = new Array(
|
||||
'about',
|
||||
'attachment',
|
||||
'blob',
|
||||
'chrome',
|
||||
'cid',
|
||||
'data',
|
||||
'file',
|
||||
'ftp',
|
||||
'http',
|
||||
'https',
|
||||
'javascript',
|
||||
'livescript',
|
||||
'mid',
|
||||
'mocha',
|
||||
'opera',
|
||||
'operamail',
|
||||
'res',
|
||||
'resource',
|
||||
'shttp',
|
||||
'tcl',
|
||||
'vbscript',
|
||||
'view-source',
|
||||
'ws',
|
||||
'wss',
|
||||
'wyciwyg');
|
||||
'about',
|
||||
'attachment',
|
||||
'blob',
|
||||
'chrome',
|
||||
'cid',
|
||||
'data',
|
||||
'file',
|
||||
'ftp',
|
||||
'http',
|
||||
'https',
|
||||
'javascript',
|
||||
'livescript',
|
||||
'mid',
|
||||
'mocha',
|
||||
'opera',
|
||||
'operamail',
|
||||
'res',
|
||||
'resource',
|
||||
'shttp',
|
||||
'tcl',
|
||||
'vbscript',
|
||||
'view-source',
|
||||
'ws',
|
||||
'wss',
|
||||
'wyciwyg');
|
||||
|
||||
for ( var bi=0, bl=blacklist.length; bi<bl; ++bi ){
|
||||
|
||||
test(function () {
|
||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
||||
}, 'attempting to override the ' + blacklist[bi] + ' protocol should throw SECURITY_ERR');
|
||||
test(function () {
|
||||
assert_throws('SECURITY_ERR', function () { navigator.registerProtocolHandler(blacklist[bi], location.href + '/%s', 'foo') } );
|
||||
}, '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
|
||||
* actually work as handlers is covered by the interactive tests. */
|
||||
var whitelist = new Array(
|
||||
'geo',
|
||||
'im',
|
||||
'irc',
|
||||
'ircs',
|
||||
'mailto',
|
||||
'mms',
|
||||
'news',
|
||||
'nntp',
|
||||
'sms',
|
||||
'smsto',
|
||||
'tel',
|
||||
'urn',
|
||||
'webcal',
|
||||
'wtai',
|
||||
'xmpp');
|
||||
'geo',
|
||||
'im',
|
||||
'irc',
|
||||
'ircs',
|
||||
'mailto',
|
||||
'mms',
|
||||
'news',
|
||||
'nntp',
|
||||
'sms',
|
||||
'smsto',
|
||||
'tel',
|
||||
'urn',
|
||||
'webcal',
|
||||
'wtai',
|
||||
'xmpp');
|
||||
|
||||
for ( var wi=0, wl=whitelist.length; wi<wl; ++wi ){
|
||||
|
||||
test(function () {
|
||||
navigator.registerProtocolHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||
assert_true(true);
|
||||
}, 'overriding the ' + whitelist[wi] + ' protocol should work');
|
||||
test(function () {
|
||||
navigator.registerProtocolHandler(whitelist[wi], location.href + '/%s', 'foo');
|
||||
assert_true(true);
|
||||
}, 'overriding the ' + whitelist[wi] + ' protocol should work');
|
||||
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -15,9 +15,7 @@ INDENT TABS: custom-elements/*
|
|||
INDENT TABS: DOMEvents/*
|
||||
INDENT TABS: eventsource/*
|
||||
INDENT TABS: html/editing/dnd/*
|
||||
INDENT TABS: html/semantics/*
|
||||
INDENT TABS: html/syntax/*
|
||||
INDENT TABS: html/webappapis/*
|
||||
INDENT TABS: media-source/*
|
||||
INDENT TABS: old-tests/*
|
||||
INDENT TABS: pointerlock/*
|
||||
|
@ -89,6 +87,7 @@ PRINT STATEMENT:*/tools/*
|
|||
CR AT EOL:WebIDL/valid/idl/documentation-dos.widl
|
||||
CR AT EOL:cors/resources/cors-headers.asis
|
||||
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
|
||||
PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.svg
|
||||
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 setting same duration multiple times does not fire duplicate durationchange', {timeout: 2500});
|
||||
}, 'Test setting same duration multiple times does not fire duplicate durationchange');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
assert_greater_than(timeUpdateCount, 2, "timeUpdateCount");
|
||||
test.done();
|
||||
});
|
||||
}, "Test HTMLVideoElement.getVideoPlaybackQuality() with MediaSource API", {timeout: 5000});
|
||||
}, "Test HTMLVideoElement.getVideoPlaybackQuality() with MediaSource API");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
mediaSource.endOfStream();
|
||||
mediaElement.play();
|
||||
});
|
||||
}, "Test normal playback case with MediaSource API", {timeout: 5000});
|
||||
}, "Test normal playback case with MediaSource API");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
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)
|
||||
{
|
||||
|
@ -136,7 +136,7 @@
|
|||
assert_greater_than(mediaElement.readyState, mediaElement.HAVE_CURRENT_DATA, 'Greater than HAVE_CURRENT_DATA');
|
||||
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>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
(function(window) {
|
||||
setup({ timeout: 12000 });
|
||||
|
||||
var SEGMENT_INFO_LIST = [
|
||||
{
|
||||
url: 'mp4/test.mp4',
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html><head>
|
||||
<title> scheduler: removing async attribute at runtime</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="testlib/testlib.js"></script>
|
||||
<title> scheduler: removing async attribute at runtime</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="testlib/testlib.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<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();
|
||||
|
||||
t.step(function() {
|
||||
|
@ -27,6 +27,6 @@
|
|||
assert_array_equals(eventOrder, ["external script #1", "external script #2"]);
|
||||
t.done();
|
||||
}), false);
|
||||
|
||||
|
||||
</script>
|
||||
</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;
|
||||
}
|
||||
|
||||
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 ///
|
||||
// Entry point
|
||||
self.IdlArray = function()
|
||||
|
@ -754,22 +767,7 @@ IdlInterface.prototype.test_self = function()
|
|||
|
||||
var constructors = this.extAttrs
|
||||
.filter(function(attr) { return attr.name == "Constructor"; });
|
||||
var expected_length;
|
||||
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); });
|
||||
}
|
||||
var expected_length = minOverloadLength(constructors);
|
||||
assert_equals(self[this.name].length, expected_length, "wrong value for " + this.name + ".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
|
||||
// entries in S."
|
||||
//
|
||||
// TODO: Doesn't handle overloading or variadic arguments.
|
||||
assert_equals(memberHolderObject[member.name].length,
|
||||
member.arguments.filter(function(arg) {
|
||||
return !arg.optional;
|
||||
}).length,
|
||||
minOverloadLength(this.members.filter(function(m) {
|
||||
return m.type == "operation" && m.name == member.name;
|
||||
})),
|
||||
"property has wrong .length");
|
||||
|
||||
// Make some suitable arguments
|
||||
|
@ -1460,13 +1456,12 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect
|
|||
{
|
||||
assert_false(member.name in obj);
|
||||
}
|
||||
|
||||
var minLength = minOverloadLength(this.members.filter(function(m) {
|
||||
return m.type == "operation" && m.name == member.name;
|
||||
}));
|
||||
var args = [];
|
||||
for (var i = 0; i < member.arguments.length; i++)
|
||||
{
|
||||
if (member.arguments[i].optional)
|
||||
{
|
||||
break;
|
||||
}
|
||||
for (var i = 0; i < minLength; i++) {
|
||||
assert_throws(new TypeError(), function()
|
||||
{
|
||||
obj[member.name].apply(obj, args);
|
||||
|
|
|
@ -368,8 +368,20 @@ policies and contribution forms [3].
|
|||
self.addEventListener("message",
|
||||
function(event) {
|
||||
if (event.data.type && event.data.type === "connect") {
|
||||
this_obj._add_message_port(event.ports[0]);
|
||||
event.ports[0].start();
|
||||
if (event.ports && event.ports[0]) {
|
||||
// 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;
|
||||
|
||||
if (is_service_worker(worker)) {
|
||||
// The ServiceWorker's implicit MessagePort is currently not
|
||||
// reliably accessible from the ServiceWorkerGlobalScope due to
|
||||
// Blink setting MessageEvent.source to null for messages sent via
|
||||
// ServiceWorker.postMessage(). Until that's resolved, create an
|
||||
// explicit MessageChannel and pass one end to the worker.
|
||||
var message_channel = new MessageChannel();
|
||||
message_port = message_channel.port1;
|
||||
message_port.start();
|
||||
worker.postMessage({type: "connect"}, [message_channel.port2]);
|
||||
if (window.MessageChannel) {
|
||||
// The ServiceWorker's implicit MessagePort is currently not
|
||||
// reliably accessible from the ServiceWorkerGlobalScope due to
|
||||
// Blink setting MessageEvent.source to null for messages sent
|
||||
// via ServiceWorker.postMessage(). Until that's resolved,
|
||||
// create an explicit MessageChannel and pass one end to the
|
||||
// worker.
|
||||
var message_channel = new MessageChannel();
|
||||
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)) {
|
||||
message_port = worker.port;
|
||||
} else {
|
||||
|
@ -2335,7 +2356,15 @@ policies and contribution forms [3].
|
|||
AssertionError.prototype = Object.create(Error.prototype);
|
||||
|
||||
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 re = /\/resources\/testharness\.js/;
|
||||
var i = 0;
|
||||
|
|
|
@ -103,14 +103,6 @@ var vary_entries = [
|
|||
request: new Request('http://example.com/c'),
|
||||
response: new Response('',
|
||||
{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(
|
||||
result,
|
||||
[
|
||||
entries.vary_wildcard.response,
|
||||
entries.vary_cookie_absent.response
|
||||
],
|
||||
'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(
|
||||
result,
|
||||
[
|
||||
entries.vary_wildcard.response
|
||||
],
|
||||
'Cache.matchAll should exclude matches if a vary header is ' +
|
||||
'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(
|
||||
result,
|
||||
[
|
||||
entries.vary_wildcard.response,
|
||||
entries.vary_cookie_absent.response
|
||||
],
|
||||
'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_good.response,
|
||||
entries.vary_cookie_absent.response,
|
||||
entries.vary_wildcard.response
|
||||
],
|
||||
'Cache.matchAll should honor "ignoreVary" parameter.');
|
||||
});
|
||||
|
|
|
@ -283,12 +283,35 @@ cache_test(function(cache) {
|
|||
'[https://fetch.spec.whatwg.org/#dom-body-bodyused] ' +
|
||||
'Response.bodyUsed should be initially false.');
|
||||
return response.text().then(function() {
|
||||
assert_false(
|
||||
assert_true(
|
||||
response.bodyUsed,
|
||||
'[https://fetch.spec.whatwg.org/#concept-body-consume-body] ' +
|
||||
'The text() method should not set "body passed" flag.');
|
||||
return cache.put(new Request(test_url), response);
|
||||
});
|
||||
'The text() method should set "body used" flag.');
|
||||
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_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();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache.add and Cache.addAll</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache.delete</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage.keys</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage.match</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/resources/test-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: Cache.add and Cache.addAll</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: Cache.delete</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: CacheStorage.keys</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: CacheStorage.match</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: CacheStorage</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache Storage: Verify access in sandboxed iframes</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="../resources/testharness-helpers.js"></script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache.add and Cache.addAll</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Cache.delete</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage.keys</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage.match</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CacheStorage</title>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!doctype html>
|
||||
<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/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
|
@ -1,15 +1,18 @@
|
|||
<!doctype html>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="/resources/WebIDLParser.js"></script>
|
||||
<script src="/resources/idlharness.js"></script>
|
||||
<div id="log"></div>
|
||||
<script type="text/plain" id="AnimationTimeline-IDL">
|
||||
<script type="text/plain" id="DocumentTimeline-IDL">
|
||||
interface AnimationTimeline {
|
||||
readonly attribute double? currentTime;
|
||||
};
|
||||
|
||||
interface DocumentTimeline : AnimationTimeline {
|
||||
};
|
||||
</script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
@ -18,8 +21,8 @@ var idlArray;
|
|||
test(function() {
|
||||
idlArray = new IdlArray();
|
||||
idlArray.add_idls(
|
||||
document.getElementById('AnimationTimeline-IDL').textContent);
|
||||
idlArray.add_objects( { AnimationTimeline: ['document.timeline'] } );
|
||||
document.getElementById('DocumentTimeline-IDL').textContent);
|
||||
idlArray.add_objects( { DocumentTimeline: ['document.timeline'] } );
|
||||
});
|
||||
idlArray.test();
|
||||
|
||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
|||
</script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
var t = async_test();
|
||||
onload = t.step_func(function() {
|
||||
onload = function() {
|
||||
window[0].postMessage(1, location.href, []);
|
||||
window[1].postMessage(2, url, []);
|
||||
var i = 0;
|
||||
onmessage = t.step_func(function(e) {
|
||||
onmessage = function(e) {
|
||||
i++;
|
||||
assert_equals(e.data[0], i);
|
||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||
if (i === 2) {
|
||||
t.done();
|
||||
done();
|
||||
}
|
||||
});
|
||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2") }), 1000);
|
||||
});
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
|||
</script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
var t = async_test();
|
||||
onload = t.step_func(function() {
|
||||
onload = function() {
|
||||
window[0].postMessage(1, '*', []);
|
||||
window[1].postMessage(2, '*', []);
|
||||
var i = 0;
|
||||
onmessage = t.step_func(function(e) {
|
||||
onmessage = function(e) {
|
||||
i++;
|
||||
assert_equals(e.data[0], i);
|
||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||
if (i === 2) {
|
||||
t.done();
|
||||
done();
|
||||
}
|
||||
});
|
||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2") }), 1000);
|
||||
});
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
|||
</script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
var t = async_test();
|
||||
onload = t.step_func(function() {
|
||||
onload = function() {
|
||||
window[0].postMessage(1, location.href);
|
||||
window[1].postMessage(2, url);
|
||||
var i = 0;
|
||||
onmessage = t.step_func(function(e) {
|
||||
onmessage = function(e) {
|
||||
i++;
|
||||
assert_equals(e.data[0], i);
|
||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||
if (i == 2) {
|
||||
t.done();
|
||||
done();
|
||||
}
|
||||
});
|
||||
setTimeout(t.step_func(function() {assert_unreached("Only got " + i + " events before timeout, expected 2")}), 1000);
|
||||
});
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
@ -13,20 +13,18 @@ document.body.appendChild(iframe);
|
|||
</script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
var t = async_test();
|
||||
onload = t.step_func(function() {
|
||||
onload = function() {
|
||||
window[0].postMessage(1, '*');
|
||||
window[1].postMessage(2, '*');
|
||||
var i = 0;
|
||||
onmessage = t.step_func(function(e) {
|
||||
onmessage = function(e) {
|
||||
i++;
|
||||
assert_equals(e.data[0], i);
|
||||
assert_equals(e.data[1], location.protocol + '//' + location.host);
|
||||
if (i === 2) {
|
||||
t.done();
|
||||
done();
|
||||
}
|
||||
});
|
||||
setTimeout(t.step_func(function() { assert_unreached("Only got " + i + " events before timeout, expected 2")}), 1000);
|
||||
});
|
||||
};
|
||||
};
|
||||
</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>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
async_test(function() {
|
||||
var testResult;
|
||||
var worker = new Worker('./support/WorkerTerminate.js');
|
||||
worker.onmessage = function(e) {
|
||||
worker.onmessage = this.step_func(function(e) {
|
||||
testResult = e.data;
|
||||
if (testResult >= 10000) {
|
||||
worker.terminate();
|
||||
worker.onmessage = t.unreached_func('Unexpected message event');
|
||||
setTimeout(t.step_func_done(function() {
|
||||
worker.onmessage = this.unreached_func('Unexpected message event');
|
||||
setTimeout(this.step_func_done(function() {
|
||||
assert_equals(testResult, 10000);
|
||||
}), 100);
|
||||
}
|
||||
};
|
||||
});
|
||||
worker.postMessage("ping");
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -12,23 +12,15 @@ close();
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
async_test(function() {
|
||||
var gotMessage = false;
|
||||
var gotError = false;
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
gotMessage = true;
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
gotError = true;
|
||||
};
|
||||
worker.postMessage(1);
|
||||
setTimeout(this.step_func(function() {
|
||||
assert_false(gotMessage, 'got message');
|
||||
assert_true(gotError, 'got error');
|
||||
this.done();
|
||||
}), 500);
|
||||
});
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
assert_unreached("Got message");
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
assert_unreached("Got error");
|
||||
};
|
||||
worker.postMessage(1);
|
||||
setTimeout(done, 2000);
|
||||
</script>
|
||||
<!--
|
||||
*/
|
||||
|
|
|
@ -18,22 +18,14 @@ var interval2 = setInterval(function() {
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
async_test(function() {
|
||||
var gotMessage = false;
|
||||
var gotError = false;
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
gotMessage = true;
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
gotError = true;
|
||||
};
|
||||
setTimeout(this.step_func(function() {
|
||||
assert_false(gotMessage, 'got message');
|
||||
assert_true(gotError, 'got error');
|
||||
this.done();
|
||||
}), 500);
|
||||
});
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
assert_unreached("Got message");
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
assert_unreached("Got error");
|
||||
};
|
||||
setTimeout(done, 2000);
|
||||
</script>
|
||||
<!--
|
||||
*/
|
||||
|
|
|
@ -14,27 +14,15 @@ setTimeout(x, 0);
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
setup({allow_uncaught_exception: true});
|
||||
|
||||
async_test(function() {
|
||||
var gotMessage = false;
|
||||
var gotError = false;
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
gotMessage = true;
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
gotError = true;
|
||||
};
|
||||
setTimeout(this.step_func(function() {
|
||||
assert_false(gotMessage, 'got message');
|
||||
assert_true(gotError, 'got error');
|
||||
this.done();
|
||||
}), 500);
|
||||
});
|
||||
var worker = new Worker('#');
|
||||
worker.onmessage = function(e) {
|
||||
assert_unreached("Got message");
|
||||
};
|
||||
worker.onerror = function(e) {
|
||||
assert_unreached("Got error");
|
||||
};
|
||||
setTimeout(done, 2000);
|
||||
</script>
|
||||
<!--
|
||||
*/
|
||||
//-->
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue