mirror of
https://github.com/servo/servo.git
synced 2025-07-16 11:53:39 +01:00
Update web-platform-tests to revision 4d96cccabc2feacd48e1dab9afc22b8af2225572
This commit is contained in:
parent
0d236288cc
commit
c66c6af0ba
1067 changed files with 63768 additions and 10900 deletions
|
@ -2,5 +2,4 @@
|
|||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
|
||||
expected: FAIL
|
||||
disabled: intermittent pass (issue 5803)
|
||||
|
|
|
@ -2,5 +2,4 @@
|
|||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm
|
||||
expected: FAIL
|
||||
disabled: intermittent pass (issue 5764)
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
[progress.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[W3C WebSocket API - Create WebSocket - Pass a URL with a non ws/wss scheme - SYNTAX_ERR is thrown]
|
||||
expected: FAIL
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,3 +2,4 @@
|
|||
type: testharness
|
||||
[loading documents from original origin after setting document.domain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[send-entity-body-get-head.htm]
|
||||
type: testharness
|
||||
[XMLHttpRequest: send() - non-empty data argument and GET/HEAD (HEAD)]
|
||||
expected: FAIL
|
||||
|
20
tests/wpt/metadata/animation-timing/idlharness.html.ini
Normal file
20
tests/wpt/metadata/animation-timing/idlharness.html.ini
Normal file
|
@ -0,0 +1,20 @@
|
|||
[idlharness.html]
|
||||
type: testharness
|
||||
[Window interface: operation requestAnimationFrame(FrameRequestCallback)]
|
||||
expected: FAIL
|
||||
|
||||
[Window interface: operation cancelAnimationFrame(long)]
|
||||
expected: FAIL
|
||||
|
||||
[Window interface: window must inherit property "requestAnimationFrame" with the proper type (0)]
|
||||
expected: FAIL
|
||||
|
||||
[Window interface: calling requestAnimationFrame(FrameRequestCallback) on window with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[Window interface: window must inherit property "cancelAnimationFrame" with the proper type (1)]
|
||||
expected: FAIL
|
||||
|
||||
[Window interface: calling cancelAnimationFrame(long) on window with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
[DOMParser-parseFromString-xml.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Should parse correctly in type text/xml]
|
||||
expected: FAIL
|
||||
|
||||
[XMLDocument interface for correctly parsed document with type text/xml]
|
||||
expected: FAIL
|
||||
|
||||
[Should return an error document for XML wellformedness errors in type text/xml]
|
||||
expected: FAIL
|
||||
|
||||
[XMLDocument interface for incorrectly parsed document with type text/xml]
|
||||
expected: FAIL
|
||||
|
||||
[Should parse correctly in type application/xml]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1098,9 +1098,6 @@
|
|||
[Document interface: calling writeln(DOMString) 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 "defaultView" with the proper type (59)]
|
||||
expected: FAIL
|
||||
|
||||
[Document interface: document.implementation.createDocument(null, "", null) must inherit property "hasFocus" with the proper type (61)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -51,3 +51,21 @@
|
|||
[namedItem name attribute multiple attributes one element]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection [index\] method return the item with index]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection [name\] method return the item with name]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection.item(index) method return the item with index]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection.item(name) method return the item with index 0]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection.add method insert HTMLOptionElement Option element]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLOptionsCollection.remove method remove Option element by index]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
[error.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[<img id="ref" src="404" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img srcset="404" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img srcset="404 0.5x" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img srcset="404 2x" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img srcset="404 100w" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img srcset="404 100w" sizes="500px" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
[<img src="404 100w" sizes="500px" alt="testing">]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
[textfieldselection-setRangeText.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[text setRangeText fires a select event]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[text setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
@ -25,3 +24,171 @@
|
|||
[text setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[search setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[search selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[search selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[search selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[search selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[search selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[search setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[search setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[tel setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[tel selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[tel selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[tel selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[tel selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[tel selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[tel setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[tel setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[url setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[url selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[url selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[url selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[url selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[url selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[url setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[url setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[password setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[password selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[password selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[password selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[password selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[password selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[password setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[password setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[display_none setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[display_none selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[display_none selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[display_none selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[display_none selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[display_none selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[display_none setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[display_none setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[textarea setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[textarea selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[textarea selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[textarea selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[textarea selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[textarea selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[textarea setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[textarea setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments]
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc selectionMode missing]
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc selectionMode 'select']
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc selectionMode 'start']
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc selectionMode 'end']
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc selectionMode 'preserve']
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception]
|
||||
expected: FAIL
|
||||
|
||||
[input_not_in_doc setRangeText fires a select event]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
[email.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[single_email doesn't have the multiple attribute]
|
||||
expected: FAIL
|
||||
|
||||
[value should be sanitized: strip line breaks]
|
||||
expected: FAIL
|
||||
|
||||
[Email address validity]
|
||||
expected: FAIL
|
||||
|
||||
[When the multiple attribute is removed, the user agent must run the value sanitization algorithm]
|
||||
expected: FAIL
|
||||
|
||||
[multiple_email has the multiple attribute]
|
||||
expected: FAIL
|
||||
|
||||
[run the value sanitization algorithm after setting a new value]
|
||||
expected: FAIL
|
||||
|
||||
[valid value is a set of valid email addresses separated by a single ',']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
[deleteRow.html]
|
||||
type: testharness
|
||||
[HTMLTableSectionElement deleteRow(0)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement deleteRow(-1)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement deleteRow(rows.length)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement deleteRow(-2)]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
[insertRow.html]
|
||||
type: testharness
|
||||
[HTMLTableSectionElement insertRow(0)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement insertRow(-1)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement insertRow()]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement insertRow(-2)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableSectionElement insertRow(rows.length + 1)]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
[deleteCell.html]
|
||||
type: testharness
|
||||
[HTMLTableRowElement deleteCell(0)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement deleteCell(-1)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement deleteCell(-2)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement deleteCell(cells.length)]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
[insertCell.html]
|
||||
type: testharness
|
||||
[HTMLTableRowElement insertCell(0)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement insertCell(-1)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement insertCell(cells.length)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement insertCell()]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement insertCell(-2)]
|
||||
expected: FAIL
|
||||
|
||||
[HTMLTableRowElement insertCell(cells.length + 1)]
|
||||
expected: FAIL
|
||||
|
|
@ -1 +1 @@
|
|||
0756a1f3b4c192a6794c70c6dc1f28f1e689f19e
|
||||
d86c5879255ec9ced621412d4565a9a66ee4dc72
|
|
@ -798,9 +798,6 @@
|
|||
[Parsing: <http://foo:💩@example.com/bar> against <http://other.com/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <x> against <test:test>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </some/path> against <http://user@example.org/smth>]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -810,3 +807,120 @@
|
|||
[Parsing: </some/path> against <http://user:pass@example.org:21/smth>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#> against <test:test>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <mailto:x@x.com>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <data:,>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#> against <test:test?test>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <https://@@@example> against <http://doesnotmatter/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <about:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <data:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <javascript:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <mailto:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <sc://ñ.test/> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <sc:\\../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -36,3 +36,144 @@
|
|||
[Parsing: <http://0Xc0.0250.01> against <http://other.com/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <foo://> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <foo://///////> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <foo:////://///> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:/example.com/> against <http://example.org/foo/bar>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:c:\\foo\\bar.html> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: < File:c|////foo\\bar.html> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <C|/foo/bar> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </C|\\foo\\bar> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <//C|/foo/bar> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:///home/me> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <//> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <///> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <///test> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <test> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:test> against <file:///tmp/mock/path>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <httpa://foo:80/> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <file:/example.com/> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#> against <test:test>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <mailto:x@x.com>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <data:,>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#x> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#> against <test:test?test>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <../i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: </i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <?i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:sd/sd>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:/pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc://ho/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <#i> against <sc:///pa/pa>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <about:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <data:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <javascript:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <mailto:/../> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
[Parsing: <sc://ñ.test/> against <about:blank>]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[W3C WebSocket API - Create WebSocket - set binaryType to something other than blob or arraybuffer - SYNTAX_ERR is returned - Connection should be opened]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[W3C WebSocket API - Create WebSocket - set binaryType to something other than blob or arraybuffer - SYNTAX_ERR is returned - Connection should be closed]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[event_local_removeitem.html]
|
||||
type: testharness
|
||||
[key property test of local event]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[event_session_removeitem.html]
|
||||
type: testharness
|
||||
[key property test of session event]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[indexing.html]
|
||||
[storage_indexing.html]
|
||||
type: testharness
|
||||
[Getting existing number-valued properties on localStorage]
|
||||
expected: FAIL
|
|
@ -1,5 +1,3 @@
|
|||
[storage_local_setitem_quotaexceedederr.html]
|
||||
type: testharness
|
||||
[Web Storage]
|
||||
expected: FAIL
|
||||
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
[storage_session_setitem_quotaexceedederr.html]
|
||||
type: testharness
|
||||
[Web Storage]
|
||||
expected: FAIL
|
||||
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
[Worker_ErrorEvent_bubbles_cancelable.htm]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[ErrorEvent on worker doesn't bubble and is cancelable]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[importScripts.html]
|
||||
type: testharness
|
||||
[Base URL in workers: importScripts]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
[sharedworker.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Base URL in workers: new SharedWorker()]
|
||||
expected: TIMEOUT
|
||||
|
5
tests/wpt/metadata/workers/baseurl/alpha/worker.html.ini
Normal file
5
tests/wpt/metadata/workers/baseurl/alpha/worker.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[worker.html]
|
||||
type: testharness
|
||||
[Base URL in workers: new Worker()]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[historical.html]
|
||||
[xhr.html]
|
||||
type: testharness
|
||||
[initCloseEvent]
|
||||
[Base URL in workers: XHR]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[Blob-url.html]
|
||||
type: testharness
|
||||
[Worker supports Blob url]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
[003.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[worker]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -18,12 +18,13 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 2 arguments, the dest origin is 0,0
|
||||
// The source canvas will copied to the 0,0 position of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 0, 0);
|
||||
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 2 arguments, the dest origin is 0,0
|
||||
// The source canvas will copied to the 0,0 position of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 0, 0);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,16 +18,17 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The destination rectangle is larger than the destination canvas.
|
||||
// When the destination rectangle is outside the destination image (the scratch bitmap),
|
||||
// the pixels that land outside the scratch bitmap are discarded,
|
||||
// as if the destination was an infinite canvas
|
||||
// whose rendering was clipped to the dimensions of the scratch bitmap.
|
||||
destCtx.drawImage(sourceImg, 0, 0, 512, 512, 0, 0, 256, 256);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The destination rectangle is larger than the destination canvas.
|
||||
// When the destination rectangle is outside the destination image (the scratch bitmap),
|
||||
// the pixels that land outside the scratch bitmap are discarded,
|
||||
// as if the destination was an infinite canvas
|
||||
// whose rendering was clipped to the dimensions of the scratch bitmap.
|
||||
destCtx.drawImage(sourceImg, 0, 0, 512, 512, 0, 0, 256, 256);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The source rectangle is larger than the source canvas
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination are is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, 0, 0, 2048, 2048, 0, 0, 800, 800);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The source rectangle is larger than the source canvas
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination are is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, 0, 0, 2048, 2048, 0, 0, 800, 800);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// Negative coordinates of the source rectangle
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination area is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, -25, -25, 50, 50, 0, 0, 50, 50);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// Negative coordinates of the source rectangle
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination area is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, -25, -25, 50, 50, 0, 0, 50, 50);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,13 +18,14 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 2 arguments, the dest origin is not 0,0
|
||||
// The source image will copied to the 25, 25 position of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 25, 25);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 2 arguments, the dest origin is not 0,0
|
||||
// The source image will copied to the 25, 25 position of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 25, 25);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,13 +18,14 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 4 arguments, the source origin is not 0,0, the dest size is provided
|
||||
// The source canvas will copied to the 50, 50 position of the destination canvas and
|
||||
// on an area of 50x50 pixels
|
||||
destCtx.drawImage(sourceImg, 50, 50, 50, 50);
|
||||
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 4 arguments, the source origin is not 0,0, the dest size is provided
|
||||
// The source canvas will copied to the 50, 50 position of the destination canvas and
|
||||
// on an area of 50x50 pixels
|
||||
destCtx.drawImage(sourceImg, 50, 50, 50, 50);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 4 arguments, the dest origin is not 0,0 and the dest size is provided but
|
||||
// does not match the size of the source. The image will be distorted
|
||||
// The source canvas will copied to the 50,50 position of the destination canvas
|
||||
// and it will be shrunk to a and area of 16x16
|
||||
destCtx.drawImage(sourceImg, 50, 50, 16, 16);
|
||||
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// 4 arguments, the dest origin is not 0,0 and the dest size is provided but
|
||||
// does not match the size of the source. The image will be distorted
|
||||
// The source canvas will copied to the 50,50 position of the destination canvas
|
||||
// and it will be shrunk to a and area of 16x16
|
||||
destCtx.drawImage(sourceImg, 50, 50, 16, 16);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,13 +18,14 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// The source canvas will copied to the 50,50 position of the destination canvas
|
||||
// over an area of 64x32 pixels
|
||||
// The copied image will be distorted along the x axis
|
||||
destCtx.drawImage(sourceImg, 50, 50, 64, 32);
|
||||
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
// The source canvas will copied to the 50,50 position of the destination canvas
|
||||
// over an area of 64x32 pixels
|
||||
// The copied image will be distorted along the x axis
|
||||
destCtx.drawImage(sourceImg, 50, 50, 64, 32);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 8 arguments, both destination and source origins are 0, 0
|
||||
// An area of 32x32 pixels of the source image will be copied to
|
||||
// an area of 32x32 pixels of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 0, 0, 32, 32, 0, 0, 32, 32);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 8 arguments, both destination and source origins are 0, 0
|
||||
// An area of 32x32 pixels of the source image will be copied to
|
||||
// an area of 32x32 pixels of the destination canvas
|
||||
destCtx.drawImage(sourceImg, 0, 0, 32, 32, 0, 0, 32, 32);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 8 arguments the destination origin is not 0,0
|
||||
// An area of 32x32 pixels of the source image will be copied to
|
||||
// an area of 32x32 pixels of the destination canvas in the position 32,32
|
||||
destCtx.drawImage(sourceImg, 0, 0, 32, 32, 32, 32, 32, 32);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// 8 arguments the destination origin is not 0,0
|
||||
// An area of 32x32 pixels of the source image will be copied to
|
||||
// an area of 32x32 pixels of the destination canvas in the position 32,32
|
||||
destCtx.drawImage(sourceImg, 0, 0, 32, 32, 32, 32, 32, 32);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -18,14 +18,15 @@ sourceImg.src = '../2x2.png'
|
|||
sourceImg.width = sourceWidth;
|
||||
sourceImg.height = sourceHeight;
|
||||
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The source rectangle overflows the source image
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination are is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, 32, 32, 32, 32, 0, 0, 32, 32);
|
||||
sourceImg.onload = function() {
|
||||
var destCtx = destCanvas.getContext('2d');
|
||||
destCtx.fillStyle = "#FF0000";
|
||||
destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height);
|
||||
destCtx.imageSmoothingEnabled = smoothingEnabled;
|
||||
|
||||
// The source rectangle overflows the source image
|
||||
// The source area is clipped to fit the source image
|
||||
// and the destination are is clipped in the same proportion
|
||||
destCtx.drawImage(sourceImg, 32, 32, 32, 32, 0, 0, 32, 32);
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -172,18 +172,29 @@ The way to contribute is just as usual:
|
|||
* Commit locally and push that to your repo.
|
||||
* Send in a pull request based on the above.
|
||||
|
||||
A lint is available to test for common mistakes in testcases. It can
|
||||
be run with:
|
||||
Lint tool
|
||||
---------
|
||||
|
||||
We have a lint tool for catching common mistakes in test files. You
|
||||
can run it manually by starting the `lint` executable from the root of
|
||||
your local web-platform-tests working directory like this:
|
||||
|
||||
```
|
||||
./lint
|
||||
```
|
||||
|
||||
in the root of the checkout. It is also run for every submitted pull
|
||||
request, and branches with lint errors will not get merged. In the
|
||||
unusual case that the lint is reporting an error for something that is
|
||||
essential to your test, there is a whitelist at
|
||||
`tools/lint/lint.whitelist` that may be updated.
|
||||
The lint tool is also run automatically for every submitted pull
|
||||
request, and reviewers will not merge branches with tests that have
|
||||
lint errors, so you must fix any errors the lint tool reports. For
|
||||
details on doing that, see the [lint-tool documentation][lint-tool].
|
||||
|
||||
But in the unusual case of error reports for things essential to a
|
||||
certain test or that for other exceptional reasons shouldn't prevent
|
||||
a merge of a test, update and commit the `lint.whitelist` file in the
|
||||
web-platform-tests root directory to suppress the error reports. For
|
||||
details on doing that, see the [lint-tool documentation][lint-tool].
|
||||
|
||||
[lint-tool]: https://github.com/w3c/web-platform-tests/blob/master/docs/lint-tool.md
|
||||
|
||||
Adding command-line scripts ("tools" subdirs)
|
||||
---------------------------------------------
|
||||
|
|
|
@ -23,7 +23,13 @@
|
|||
client.upload.addEventListener('loadstart', logEvt)
|
||||
client.addEventListener('loadend', function(){
|
||||
test.step(function(){
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "NO")
|
||||
if (method === "HEAD") {
|
||||
// Fetch 4.4.3 --- Set Content-Length to 0 if method is HEAD and
|
||||
// request's body is null.
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "0")
|
||||
} else {
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "NO")
|
||||
}
|
||||
assert_equals(client.getResponseHeader("x-request-method"), method)
|
||||
assert_equals(client.responseText, "")
|
||||
assert_array_equals(events, [])
|
||||
|
|
|
@ -22,7 +22,14 @@
|
|||
client.upload.addEventListener('progress', logEvt)
|
||||
client.upload.addEventListener('loadend', logEvt)
|
||||
client.upload.addEventListener('loadstart', logEvt)
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "NO")
|
||||
|
||||
if (method === "HEAD") {
|
||||
// Fetch 4.4.3 --- Set Content-Length to 0 if method is HEAD and
|
||||
// request's body is null.
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "0")
|
||||
} else {
|
||||
assert_equals(client.getResponseHeader("x-request-content-length"), "NO")
|
||||
}
|
||||
assert_equals(client.getResponseHeader("x-request-method"), method)
|
||||
assert_equals(client.responseText, "")
|
||||
assert_array_equals(events, [])
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<div id="log"></div>
|
||||
|
||||
<pre id="untested_idl">
|
||||
[PrimaryGlobal]
|
||||
interface Window {
|
||||
};
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<link rel="help" href="http://www.w3.org/TR/animation-timing/#definitions"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/webidl2/lib/webidl2.js"></script>
|
||||
<script src="/resources/WebIDLParser.js"></script>
|
||||
<script src="/resources/idlharness.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -15,6 +15,7 @@
|
|||
<p>This test validates the WebIDL included in the Timing control for script-based animations specification.</p>
|
||||
|
||||
<pre id='untested_idl' style='display:none'>
|
||||
[PrimaryGlobal]
|
||||
interface Window {
|
||||
};
|
||||
</pre>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{"host": "web-platform.test",
|
||||
"doc_root": null,
|
||||
"ws_doc_root": null,
|
||||
"external_host": null,
|
||||
"ports":{"http":[8000, "auto"],
|
||||
"https":[8443],
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Video element src attribute must match src list - positive test</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
</head>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Audio element src attribute must match src list - positive test</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
</head>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Video track src attribute must match src list - positive test</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
</head>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Video track src attribute must match src list - negative test</title>
|
||||
<meta name=timeout content=long>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
</head>
|
||||
|
@ -11,7 +10,8 @@
|
|||
<div id='log'></div>
|
||||
|
||||
<script>
|
||||
var source_test = async_test("Disallowed track element");
|
||||
var source_test =
|
||||
async_test("Disallowed track element onerror handler fires.");
|
||||
|
||||
var trackURL = location.protocol +
|
||||
"//www." +
|
||||
|
@ -33,18 +33,25 @@
|
|||
</script>
|
||||
|
||||
<video id="videoObject" width="320" height="240" controls
|
||||
onloadeddata="media_loaded(source_test)" crossorigin>
|
||||
onerror="media_error_handler(source_test)"
|
||||
crossorigin>
|
||||
<source id="audioSourceObject"
|
||||
type="audio/mpeg"
|
||||
src="/media/white.mp4">
|
||||
<track id="trackObject"
|
||||
<track default
|
||||
id="trackObject"
|
||||
kind="subtitles"
|
||||
srclang="en"
|
||||
label="English"
|
||||
onerror="media_error_handler(source_test)">
|
||||
onerror="media_error_handler(source_test)"
|
||||
onload="media_loaded(source_test)"
|
||||
onloadeddata="media_loaded(source_test)">
|
||||
</video>
|
||||
<script>
|
||||
document.getElementById("trackObject").src = trackURL;
|
||||
source_test.step(function() {
|
||||
source_test.set_status(source_test.FAIL);
|
||||
});
|
||||
</script>
|
||||
|
||||
<script async defer src="../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27">
|
||||
|
|
|
@ -45,7 +45,8 @@
|
|||
if (hasMimeType) {
|
||||
test1.step(function() {assert_false(is_loaded, "External object loaded.")});
|
||||
} else {
|
||||
test1.step(function() {assert_true(hasMimeType, "No Flash Player, cannot run test.")});
|
||||
test1.set_status(test1.NOTRUN, "No Flash Player, cannot run test.");
|
||||
test1.phase = test1.phases.HAS_RESULT;
|
||||
}
|
||||
test1.done();
|
||||
}
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
if (hasMimeType) {
|
||||
test1.step(function() {assert_false(is_loaded, "External object loaded.")});
|
||||
} else {
|
||||
test1.step(function() {assert_true(hasMimeType, "No Flash Player, cannot run test.")});
|
||||
//test1.step(function() {});
|
||||
test1.set_status(test1.NOTRUN, "No Flash Player, cannot run test.");
|
||||
test1.phase = test1.phases.HAS_RESULT;
|
||||
}
|
||||
test1.done();
|
||||
}
|
||||
|
|
132
tests/wpt/web-platform-tests/docs/lint-tool.md
Normal file
132
tests/wpt/web-platform-tests/docs/lint-tool.md
Normal file
|
@ -0,0 +1,132 @@
|
|||
We have a lint tool for catching common mistakes in test files. You can run
|
||||
it manually by starting the `lint` executable from the root of your local
|
||||
web-platform-tests working directory like this:
|
||||
|
||||
```
|
||||
./lint
|
||||
```
|
||||
|
||||
The lint tool is also run automatically for every submitted pull request,
|
||||
and reviewers will not merge branches with tests that have lint errors, so
|
||||
you must either [fix all lint errors](#fixing-lint-errors), or you must
|
||||
[white-list test files] (#updating-the-whitelist) to suppress the errors.
|
||||
|
||||
## Fixing lint errors
|
||||
|
||||
You must fix any errors the lint tool reports, unless an error is for
|
||||
something essential to a certain test or that for some other exceptional
|
||||
reason shouldn't prevent the test from being merged. In those cases you can
|
||||
[white-list test files](#updating-the-whiteslist) to suppress the errors.
|
||||
Otherwise, use the details in this section to fix all errors reported.
|
||||
|
||||
* **CR AT EOL**: Test-file line ends with CR (U+000D) character; **fix**:
|
||||
reformat file so each line just has LF (U+000A) line ending (standard,
|
||||
cross-platform "Unix" line endings instead of, e.g., DOS line endings).
|
||||
|
||||
* **EARLY-TESTHARNESSREPORT**: Test file has an instance of
|
||||
`<script src='/resources/testharnessreport.js'>` prior to
|
||||
`<script src='/resources/testharness.js'>`; **fix**: flip the order.
|
||||
|
||||
* **INDENT TABS**: Test-file line starts with one or more tab characters;
|
||||
**fix**: use spaces to replace any tab characters at beginning of lines.
|
||||
|
||||
* **INVALID-TIMEOUT**: Test file with `<meta name='timeout'...>` element
|
||||
that has a `content` attribute whose value is not `long`; **fix**:
|
||||
replace the value of the `content` attribute with `long`.
|
||||
|
||||
* **LATE-TIMEOUT**: Test file with `<meta name="timeout"...>` element after
|
||||
`<script src='/resources/testharnessreport.js'>` element ; **fix**: move
|
||||
the `<meta name="timeout"...>` element to precede the `script` element.
|
||||
|
||||
* **MALFORMED-VARIANT**: Test file with a `<meta name='variant'...>`
|
||||
element whose `content` attribute has a malformed value; **fix**: ensure
|
||||
the value of the `content` attribute starts with `?` or `#` or is empty.
|
||||
|
||||
* **MISSING-TESTHARNESSREPORT**: Test file is missing an instance of
|
||||
`<script src='/resources/testharnessreport.js'>`; **fix**: ensure each
|
||||
test file contains `<script src='/resources/testharnessreport.js'>`.
|
||||
|
||||
* **MULTIPLE-TESTHARNESS**: Test file with multiple instances of
|
||||
`<script src='/resources/testharness.js'>`; **fix**: ensure each test
|
||||
has only one `<script src='/resources/testharness.js'>` instance.
|
||||
|
||||
* **MULTIPLE-TESTHARNESSREPORT**: Test file with multiple instances of
|
||||
`<script src='/resources/testharnessreport.js'>`; **fix**: ensure each test
|
||||
has only one `<script src='/resources/testharnessreport.js'>` instance.
|
||||
|
||||
* **MULTIPLE-TIMEOUT**: Test file with multiple `<meta name="timeout"...>`
|
||||
elements; **fix**: ensure each test file has only one instance of a
|
||||
`<meta name="timeout"...>` element.
|
||||
|
||||
* **PARSE-FAILED**: Test file failed parsing by manifest builder; **fix**:
|
||||
examine the file to find the causes of any parse errors, and fix them.
|
||||
|
||||
* **PATH LENGTH**: Test file's pathname has a total length greater than 150
|
||||
characters; **fix**: use shorter filename to rename the test file.
|
||||
|
||||
* **PRINT STATEMENT**: A server-side python support file contains a `print`
|
||||
statement; **fix**: remove the `print` statement or replace it with
|
||||
something else that achieves the intended effect (e.g., a logging call).
|
||||
|
||||
* **SET TIMEOUT**: Test-file line has `setTimeout(...)` call; **fix**:
|
||||
replace all `setTimeout(...)` calls with `step_timeout(...)` calls.
|
||||
|
||||
* **TRAILING WHITESPACE**: Test-file line has trailing whitespace; **fix**:
|
||||
remove trailing whitespace from all lines in the file.
|
||||
|
||||
* **VARIANT-MISSING**: Test file with a `<meta name='variant'...>` element
|
||||
that's missing a `content` attribute; **fix**: add a `content` attribute
|
||||
with an appropriate value to the `<meta name='variant'...>` element.
|
||||
|
||||
* **W3C-TEST.ORG**: Test-file line has the string `w3c-test.org`; **fix**:
|
||||
either replace the `w3c-test.org` string with the expression
|
||||
`{{host}}:{{ports[http][0]}}` or a generic hostname like `example.org`.
|
||||
|
||||
## Updating the whitelist
|
||||
|
||||
Normally you must [fix all lint errors](#fixing-lint-errors). But in the
|
||||
unusual case of error reports for things essential to certain tests or that
|
||||
for other exceptional reasons shouldn't prevent a merge of a test, you can
|
||||
update and commit the `lint.whitelist` file in the web-platform-tests root
|
||||
directory to suppress errors the lint tool would report for a test file.
|
||||
|
||||
To add a test file or directory to the whitelist, use the following format:
|
||||
|
||||
```
|
||||
ERROR TYPE:file/name/pattern
|
||||
```
|
||||
|
||||
For example, to whitelist the file `example/file.html` such that all
|
||||
`TRAILING WHITESPACE` errors the lint tool would report for it are
|
||||
suppressed, add the following line to the `lint.whitelist` file.
|
||||
|
||||
```
|
||||
TRAILING WHITESPACE:example/file.html
|
||||
```
|
||||
|
||||
To whitelist an entire directory rather than just one file, use the `*`
|
||||
wildcard. For example, to whitelist the `example` directory such that all
|
||||
`TRAILING WHITESPACE` errors the lint tool would report for any files in it
|
||||
are suppressed, add the following line to the `lint.whitelist` file.
|
||||
|
||||
```
|
||||
TRAILING WHITESPACE:example/*
|
||||
```
|
||||
|
||||
If needed, you can also use the `*` wildcard to express other filename
|
||||
patterns or directory-name patterns (just as you would when, e.g.,
|
||||
executing shell commands from the command line).
|
||||
|
||||
Finally, to whitelist just one line in a file, use the following format:
|
||||
|
||||
```
|
||||
ERROR TYPE:file/name/pattern:line_number
|
||||
```
|
||||
|
||||
For example, to whitelist just line 128 of the file `example/file.html`
|
||||
such that any `TRAILING WHITESPACE` error the lint tool would report for
|
||||
that line is suppressed, add the following to the `lint.whitelist` file.
|
||||
|
||||
```
|
||||
TRAILING WHITESPACE:example/file.html:128
|
||||
```
|
|
@ -305,18 +305,28 @@ met in order to be included in an official specification testsuite.
|
|||
|
||||
* [Metadata](css-metadata.html)
|
||||
|
||||
## Test Lint
|
||||
## Lint tool
|
||||
|
||||
A lint tool is available to catch common mistakes in tests. It may be
|
||||
run from the web-platform-tests home directory using:
|
||||
We have a lint tool for catching common mistakes in test files. You can run
|
||||
it manually by starting the `lint` executable from the root of your local
|
||||
web-platform-tests working directory like this:
|
||||
|
||||
python tools/script/lint.py
|
||||
```
|
||||
./lint
|
||||
```
|
||||
|
||||
The lint is run automatically on every pull request and any violations
|
||||
of the rules will be regarded as an error. In order to silence
|
||||
unwanted linter errors, add the error to the whitelist in
|
||||
`tools/scripts/lint.whitelist`.
|
||||
The lint tool is also run automatically for every submitted pull request,
|
||||
and reviewers will not merge branches with tests that have lint errors, so
|
||||
you must fix any errors the lint tool reports. For details on doing that,
|
||||
see the [lint-tool documentation][lint-tool].
|
||||
|
||||
But in the unusual case of error reports for things essential to a certain
|
||||
test or that for other exceptional reasons shouldn't prevent a merge of a
|
||||
test, update and commit the `lint.whitelist` file in the web-platform-tests
|
||||
root directory to suppress the error reports. For details on doing that,
|
||||
see the [lint-tool documentation][lint-tool].
|
||||
|
||||
[lint-tool]: ./lint-tool.html
|
||||
[reftests]: ./reftests.html
|
||||
[test-templates]: ./test-templates.html
|
||||
[requirement-flags]: ./test-templates.html#requirement-flags
|
||||
|
|
|
@ -27,7 +27,22 @@ test(function() {
|
|||
}, 'Parsing of id attribute');
|
||||
|
||||
test(function() {
|
||||
assert_equals(document.documentURI, doc.documentURI,
|
||||
assert_equals(doc.contentType, "text/html")
|
||||
}, 'contentType');
|
||||
|
||||
test(function() {
|
||||
assert_equals(doc.characterSet, "UTF-8")
|
||||
}, 'characterSet');
|
||||
|
||||
test(function() {
|
||||
assert_equals(doc.inputEncoding, "UTF-8")
|
||||
}, 'inputEncoding');
|
||||
|
||||
test(function() {
|
||||
var url = document.URL;
|
||||
assert_equals(doc.documentURI, url,
|
||||
'The document must have a URL value equal to the URL of the active document.');
|
||||
assert_equals(doc.URL, url,
|
||||
'The document must have a URL value equal to the URL of the active document.');
|
||||
}, 'URL value');
|
||||
|
||||
|
@ -36,4 +51,10 @@ test(function() {
|
|||
'The document must have a location value of null.');
|
||||
}, 'Location value');
|
||||
|
||||
test(function() {
|
||||
var soup = "<!DOCTYPE foo></><foo></multiple></>";
|
||||
var htmldoc = new DOMParser().parseFromString(soup, "text/html");
|
||||
assert_equals(htmldoc.documentElement.localName, "html");
|
||||
assert_equals(htmldoc.documentElement.namespaceURI, "http://www.w3.org/1999/xhtml");
|
||||
}, "DOMParser parses HTML tag soup with no problems");
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<title>DOMParser</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
function checkMetadata(doc, contentType) {
|
||||
assert_true(doc instanceof Document, "Should be Document");
|
||||
assert_equals(doc.URL, document.URL, "URL");
|
||||
assert_equals(doc.documentURI, document.URL, "documentURI");
|
||||
assert_equals(doc.characterSet, "UTF-8", "characterSet");
|
||||
assert_equals(doc.inputEncoding, "UTF-8", "inputEncoding");
|
||||
assert_equals(doc.contentType, contentType, "contentType");
|
||||
assert_equals(doc.location, null, "location");
|
||||
}
|
||||
|
||||
var allowedTypes = ["text/xml", "application/xml", "application/xhtml+xml", "image/svg+xml"];
|
||||
|
||||
allowedTypes.forEach(function(type) {
|
||||
test(function() {
|
||||
var p = new DOMParser();
|
||||
var doc = p.parseFromString("<foo/>", type);
|
||||
assert_true(doc instanceof Document, "Should be Document");
|
||||
checkMetadata(doc, type);
|
||||
assert_equals(doc.documentElement.namespaceURI, null);
|
||||
assert_equals(doc.documentElement.localName, "foo");
|
||||
assert_equals(doc.documentElement.tagName, "foo");
|
||||
}, "Should parse correctly in type " + type);
|
||||
|
||||
test(function() {
|
||||
var p = new DOMParser();
|
||||
var doc = p.parseFromString("<foo/>", type);
|
||||
assert_false(doc instanceof XMLDocument, "Should not be XMLDocument");
|
||||
}, "XMLDocument interface for correctly parsed document with type " + type);
|
||||
|
||||
test(function() {
|
||||
var p = new DOMParser();
|
||||
var doc = p.parseFromString("<foo>", type);
|
||||
checkMetadata(doc, type);
|
||||
assert_equals(doc.documentElement.namespaceURI, "http://www.mozilla.org/newlayout/xml/parsererror.xml");
|
||||
assert_equals(doc.documentElement.localName, "parsererror");
|
||||
assert_equals(doc.documentElement.tagName, "parsererror");
|
||||
}, "Should return an error document for XML wellformedness errors in type " + type);
|
||||
|
||||
test(function() {
|
||||
var p = new DOMParser();
|
||||
var doc = p.parseFromString("<foo>", type);
|
||||
assert_false(doc instanceof XMLDocument, "Should not be XMLDocument");
|
||||
}, "XMLDocument interface for incorrectly parsed document with type " + type);
|
||||
});
|
||||
</script>
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Encoding API: invalid label</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/encodings.js"></script>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<title>Encoding API: Fatal flag</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/shared.js"></script>
|
||||
<script>
|
||||
|
||||
var bad = [
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<title>Encoding API: UTF-16 surrogate handling</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/shared.js"></script>
|
||||
<script>
|
||||
|
||||
var bad = [
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<title>Encoding API: USVString surrogate handling when encoding</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/shared.js"></script>
|
||||
<script>
|
||||
|
||||
var bad = [
|
||||
|
|
|
@ -8,38 +8,25 @@
|
|||
<body>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var test = async_test(null, {timeout: 5000});
|
||||
var url = "resources/message.py?sleep=1000&message=" + encodeURIComponent("retry:1000\ndata:abc\n\n");
|
||||
var es = new EventSource(url);
|
||||
var lastEventTime = 0;
|
||||
var lastEventType = "";
|
||||
var readyStateAtLastEvent = -1;
|
||||
es.onmessage =
|
||||
es.onerror =
|
||||
es.onopen = function (event) {
|
||||
lastEventTime = (new Date()).getTime();
|
||||
lastEventType = event.type;
|
||||
readyStateAtLastEvent = es.readyState;
|
||||
};
|
||||
setTimeout(function () {
|
||||
if (typeof window.stop === "function") {
|
||||
window.stop();
|
||||
}
|
||||
}, 100);
|
||||
setTimeout(function () {
|
||||
test.step(function () {
|
||||
var isActive = ((new Date()).getTime() - lastEventTime) < 2500;
|
||||
if (es.readyState === EventSource.CLOSED) {
|
||||
assert_true(!isActive, "In case EventSource was stopped, it should not be active");
|
||||
assert_equals(lastEventType, "error", "In case EventSource was stopped, the last event should be an error event");
|
||||
assert_equals(readyStateAtLastEvent, EventSource.CLOSED, "In case EventSource was stopped, readyState at last event should be closed");
|
||||
} else {
|
||||
assert_true(isActive, "EventSource is active, but readyState is not EventSource.CLOSED.");
|
||||
}
|
||||
var t = async_test();
|
||||
onload = t.step_func(function() {
|
||||
var url = "resources/message.py?sleep=1000&message=" + encodeURIComponent("retry:1000\ndata:abc\n\n");
|
||||
var es = new EventSource(url);
|
||||
es.onerror = t.step_func(function() {
|
||||
assert_equals(es.readyState, EventSource.CLOSED)
|
||||
setTimeout(t.step_func(function () {
|
||||
assert_equals(es.readyState, EventSource.CLOSED,
|
||||
"After stopping the eventsource readyState should be CLOSED")
|
||||
t.done();
|
||||
}), 1000);
|
||||
});
|
||||
es.close();
|
||||
test.done();
|
||||
}, 4000);
|
||||
|
||||
setTimeout(t.step_func(function() {
|
||||
window.stop()
|
||||
es.onopen = t.unreached_func("Got open event");
|
||||
es.onmessage = t.unreached_func("Got message after closing source");
|
||||
}), 0);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -8,7 +8,7 @@ var t = async_test();
|
|||
var win;
|
||||
|
||||
t.step(function() {
|
||||
win = window.open("001-1.html");
|
||||
win = window.open("support/001-1.html");
|
||||
});
|
||||
|
||||
add_completion_callback(function() {win.close()});
|
||||
|
|
|
@ -8,7 +8,7 @@ var t = async_test();
|
|||
var win;
|
||||
|
||||
t.step(function() {
|
||||
win = window.open("002-1.html");
|
||||
win = window.open("support/002-1.html");
|
||||
});
|
||||
|
||||
add_completion_callback(function() {win.close()});
|
||||
|
|
|
@ -8,7 +8,7 @@ var t = async_test();
|
|||
var win;
|
||||
|
||||
t.step(function() {
|
||||
win = window.open("003-1.html");
|
||||
win = window.open("support/003-1.html");
|
||||
});
|
||||
|
||||
add_completion_callback(function() {win.close()});
|
||||
|
|
|
@ -8,7 +8,7 @@ var t = async_test();
|
|||
var win;
|
||||
|
||||
t.step(function() {
|
||||
win = window.open("004-1.html");
|
||||
win = window.open("support/004-1.html");
|
||||
});
|
||||
|
||||
add_completion_callback(function() {win.close()});
|
||||
|
|
|
@ -8,7 +8,7 @@ var t = async_test();
|
|||
var win;
|
||||
|
||||
t.step(function() {
|
||||
win = window.open("005-1.html");
|
||||
win = window.open("support/005-1.html");
|
||||
});
|
||||
|
||||
add_completion_callback(function() {win.close()});
|
||||
|
|
|
@ -2247,6 +2247,10 @@ dictionary DragEventInit : MouseEventInit {
|
|||
DataTransfer? dataTransfer;
|
||||
};
|
||||
|
||||
// For purposes of this test, just treat WindowProxy as the same thing as
|
||||
// Window.
|
||||
typedef Window WindowProxy;
|
||||
|
||||
[PrimaryGlobal]
|
||||
/*sealed*/ interface Window : EventTarget {
|
||||
// the current browsing context
|
||||
|
@ -2274,7 +2278,7 @@ dictionary DragEventInit : MouseEventInit {
|
|||
[Replaceable] readonly attribute unsigned long length;
|
||||
[Unforgeable] readonly attribute WindowProxy top;
|
||||
attribute any opener;
|
||||
readonly attribute WindowProxy parent;
|
||||
[Replaceable] readonly attribute WindowProxy parent;
|
||||
readonly attribute Element? frameElement;
|
||||
WindowProxy open(optional DOMString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "", optional boolean replace = false);
|
||||
getter WindowProxy (unsigned long index);
|
||||
|
|
|
@ -175,6 +175,38 @@ test(function() {
|
|||
assert_equals(b_opts.namedItem("b9").value, "11");
|
||||
}, "namedItem name attribute multiple attributes one element");
|
||||
|
||||
test(function() {
|
||||
assert_true(b_opts[0] instanceof HTMLOptionElement);
|
||||
assert_equals(b_opts[0].innerHTML, "1");
|
||||
}, "HTMLOptionsCollection [index] method return the item with index");
|
||||
|
||||
test(function() {
|
||||
assert_true(b_opts["b2"] instanceof HTMLOptionElement);
|
||||
assert_equals(b_opts["b2"].innerHTML, "2");
|
||||
}, "HTMLOptionsCollection [name] method return the item with name");
|
||||
|
||||
test(function() {
|
||||
assert_true(b_opts.item(0) instanceof HTMLOptionElement);
|
||||
assert_equals(b_opts.item(0).innerHTML, "1");
|
||||
}, "HTMLOptionsCollection.item(index) method return the item with index");
|
||||
|
||||
test(function() {
|
||||
assert_true(b_opts.item("b2") instanceof HTMLOptionElement);
|
||||
assert_equals(b_opts.item("b2").innerHTML, "1");
|
||||
}, "HTMLOptionsCollection.item(name) method return the item with index 0");
|
||||
|
||||
test(function() {
|
||||
var b_opts_length = b_opts.length;
|
||||
b_opts.add(new Option("2", "2"));
|
||||
assert_equals(b_opts[b_opts_length].value, "2");
|
||||
}, "HTMLOptionsCollection.add method insert HTMLOptionElement Option element");
|
||||
|
||||
test(function() {
|
||||
var b_opts_length = b_opts.length;
|
||||
b_opts.remove(0);
|
||||
assert_equals(b_opts.length, b_opts_length - 1);
|
||||
}, "HTMLOptionsCollection.remove method remove Option element by index");
|
||||
|
||||
test(function() {
|
||||
var add = document.createElement("p");
|
||||
assert_throws(new TypeError(), function() {b_opts.add(add);});
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<script>
|
||||
setup({explicit_done:true});
|
||||
onload = function() {
|
||||
var ref = document.getElementById("ref");
|
||||
var expected_width = ref.width;
|
||||
var expected_height = ref.height;
|
||||
[].forEach.call(document.images, function(img) {
|
||||
|
|
|
@ -33,9 +33,6 @@
|
|||
]
|
||||
|
||||
elements.forEach(function(element) {
|
||||
var t = async_test(element.id + " setRangeText fires a select event"),
|
||||
q = false;
|
||||
|
||||
test(function() {
|
||||
element.value = "foobar";
|
||||
element.selectionStart = 0;
|
||||
|
@ -108,13 +105,16 @@
|
|||
});
|
||||
}, element.id + " setRangeText without argument throws a type error");
|
||||
|
||||
element.onselect = t.step_func_done(function(e) {
|
||||
async_test(function() {
|
||||
var q = false;
|
||||
element.onselect = this.step_func_done(function(e) {
|
||||
assert_true(q, "event should be queued");
|
||||
assert_true(e.isTrusted, "event is trusted");
|
||||
assert_false(e.bubbles, "event bubbles");
|
||||
assert_false(e.cancelable, "event is not cancelable");
|
||||
});
|
||||
element.setRangeText("foobar2", 0, 6);
|
||||
q=true;
|
||||
});
|
||||
element.setRangeText("foobar2", 0, 6);
|
||||
q = true;
|
||||
}, element.id + " setRangeText fires a select event");
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
var single = document.getElementById('single_email'),
|
||||
mult = document.getElementById('multiple_email'),
|
||||
mult = document.getElementById('multiple_email');
|
||||
|
||||
test(function(){
|
||||
assert_false(single.multiple);
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTMLOptionElement Test: disabled</title>
|
||||
<meta name="flags" content="interact">
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
|
||||
<div>
|
||||
<select>
|
||||
<option id="testOption1" text="Option1" >Option1</option>
|
||||
<option id="testOption2" disabled >Option2</option>
|
||||
<option id="testOption3" >Option3</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<h2>Description</h2>
|
||||
<p>
|
||||
This test validates that an option element is disabled if its disabled attribute is present.
|
||||
</p>
|
||||
|
||||
<h2>Test steps:</h2>
|
||||
<ol>
|
||||
<li>
|
||||
Click the select flag to select 'Option2'
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<h2>Result:</h2>
|
||||
<p>Test passes if not able to select 'Option2'</p>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTML Test: textarea - placeholder attribute</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-textarea-placeholder">
|
||||
<meta name="flags" content="interact">
|
||||
<body>
|
||||
<p>
|
||||
Test passes if there is a "Placeholder Text" in the text area,
|
||||
and if the "Placeholder Text" disappears after type in any character.
|
||||
</p>
|
||||
<textarea placeholder="Placeholder Text"></textarea>
|
||||
</body>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTMLTableSectionElement#deleteRow</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<div id ="log"></div>
|
||||
|
||||
<table>
|
||||
<tbody id="testBody">
|
||||
<tr><td>ABCDEF</td></tr>
|
||||
<tr><td>12345</td></tr>
|
||||
<tr><td>ABC12345DEF</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
|
||||
var tbody = document.getElementById("testBody");
|
||||
|
||||
test(function () {
|
||||
tbody.deleteRow(0);
|
||||
assert_equals(tbody.rows.length, 2);
|
||||
assert_equals(tbody.rows[0].childNodes[0].innerHTML, "12345");
|
||||
}, "HTMLTableSectionElement deleteRow(0)");
|
||||
|
||||
test(function () {
|
||||
tbody.deleteRow(-1);
|
||||
assert_equals(tbody.rows.length, 1);
|
||||
assert_equals(tbody.rows[0].childNodes[0].innerHTML, "12345");
|
||||
}, "HTMLTableSectionElement deleteRow(-1)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tbody.deleteRow(tbody.rows.length);
|
||||
});
|
||||
}, "HTMLTableSectionElement deleteRow(rows.length)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tbody.deleteRow(-2);
|
||||
});
|
||||
}, "HTMLTableSectionElement deleteRow(-2)");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTMLTableSectionElement#insertRow</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<div id ="log"></div>
|
||||
|
||||
<table>
|
||||
<tbody id="testBody">
|
||||
<tr><td>ABCDEF</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
|
||||
var tbody = document.getElementById("testBody");
|
||||
|
||||
test(function () {
|
||||
var trEle = tbody.insertRow(0);
|
||||
assert_equals(tbody.rows[0], trEle);
|
||||
assert_equals(tbody.rows.length, 2);
|
||||
}, "HTMLTableSectionElement insertRow(0)");
|
||||
|
||||
test(function () {
|
||||
var trEle = tbody.insertRow(-1);
|
||||
assert_equals(tbody.rows[tbody.rows.length - 1], trEle);
|
||||
assert_equals(tbody.rows.length, 3);
|
||||
}, "HTMLTableSectionElement insertRow(-1)");
|
||||
|
||||
test(function () {
|
||||
var trEle = tbody.insertRow();
|
||||
assert_equals(tbody.rows[tbody.rows.length - 1], trEle);
|
||||
assert_equals(tbody.rows.length, 4);
|
||||
}, "HTMLTableSectionElement insertRow()");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tbody.insertRow(-2);
|
||||
});
|
||||
}, "HTMLTableSectionElement insertRow(-2)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tbody.insertRow(tbody.rows.length + 1);
|
||||
});
|
||||
}, "HTMLTableSectionElement insertRow(rows.length + 1)");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTMLTableRowElement#deleteCell</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<div id="log"></div>
|
||||
|
||||
<table>
|
||||
<tr id="testTr">
|
||||
<td>ABCDE</td>
|
||||
<td>12345</td>
|
||||
<td>ABC12</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
|
||||
var tr = document.getElementById("testTr");
|
||||
|
||||
test(function () {
|
||||
tr.deleteCell(0);
|
||||
assert_equals(tr.cells[0].innerHTML, "12345");
|
||||
assert_equals(tr.cells.length, 2);
|
||||
}, "HTMLTableRowElement deleteCell(0)");
|
||||
|
||||
test(function () {
|
||||
tr.deleteCell(-1);
|
||||
assert_equals(tr.cells[tr.cells.length - 1].innerHTML, "12345");
|
||||
assert_equals(tr.cells.length, 1);
|
||||
}, "HTMLTableRowElement deleteCell(-1)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tr.deleteCell(-2);
|
||||
});
|
||||
}, "HTMLTableRowElement deleteCell(-2)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tr.deleteCell(tr.cells.length);
|
||||
});
|
||||
}, "HTMLTableRowElement deleteCell(cells.length)");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>HTMLTableRowElement#insertCell</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<div id="log"></div>
|
||||
|
||||
<table>
|
||||
<tr id="testTr"></tr>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
|
||||
var tr = document.getElementById("testTr");
|
||||
|
||||
test(function () {
|
||||
var tdEle = tr.insertCell(0);
|
||||
assert_equals(tr.cells[0], tdEle);
|
||||
assert_equals(tr.cells.length, 1);
|
||||
}, "HTMLTableRowElement insertCell(0)");
|
||||
|
||||
test(function () {
|
||||
var tdEle = tr.insertCell(-1);
|
||||
assert_equals(tr.cells[tr.cells.length - 1], tdEle);
|
||||
assert_equals(tr.cells.length, 2);
|
||||
}, "HTMLTableRowElement insertCell(-1)");
|
||||
|
||||
|
||||
test(function () {
|
||||
var tdEle = tr.insertCell(tr.cells.length);
|
||||
assert_equals(tr.cells[tr.cells.length - 1], tdEle);
|
||||
assert_equals(tr.cells.length, 3);
|
||||
}, "HTMLTableRowElement insertCell(cells.length)");
|
||||
|
||||
test(function () {
|
||||
var tdEle = tr.insertCell();
|
||||
assert_equals(tr.cells[tr.cells.length - 1], tdEle);
|
||||
assert_equals(tr.cells.length, 4);
|
||||
}, "HTMLTableRowElement insertCell()");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tr.insertCell(-2);
|
||||
});
|
||||
}, "HTMLTableRowElement insertCell(-2)");
|
||||
|
||||
test(function () {
|
||||
assert_throws("IndexSizeError", function () {
|
||||
tr.insertCell(tr.cells.length + 1);
|
||||
});
|
||||
}, "HTMLTableRowElement insertCell(cells.length + 1)");
|
||||
|
||||
</script>
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
## Whitespace rules that we can't enforce yet ##
|
||||
|
||||
CR AT EOL: svg/import/*
|
||||
|
||||
INDENT TABS: .gitmodules
|
||||
INDENT TABS: app-uri/*
|
||||
INDENT TABS: conformance-checkers/*
|
||||
|
@ -18,6 +20,7 @@ INDENT TABS: media-source/*
|
|||
INDENT TABS: old-tests/*
|
||||
INDENT TABS: pointerlock/*
|
||||
INDENT TABS: shadow-dom/*
|
||||
INDENT TABS: svg/import/*
|
||||
INDENT TABS: tools/*
|
||||
INDENT TABS: touch-events/*
|
||||
INDENT TABS: web-animations/*
|
||||
|
@ -39,6 +42,7 @@ TRAILING WHITESPACE: old-tests/*
|
|||
TRAILING WHITESPACE: pointerevents/*
|
||||
TRAILING WHITESPACE: progress-events/*
|
||||
TRAILING WHITESPACE: shadow-dom/*
|
||||
TRAILING WHITESPACE: svg/import/*
|
||||
TRAILING WHITESPACE: tools/*
|
||||
TRAILING WHITESPACE: webaudio/*
|
||||
TRAILING WHITESPACE: webdriver/*
|
||||
|
|
|
@ -19,7 +19,7 @@ object returned by the success callback in getUserMedia is correctly initialized
|
|||
<div id='log'></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/webidl2/lib/webidl2.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
<script src="/common/vendor-prefix.js" data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'></script>
|
||||
<script>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div id='log'></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/webidl2/lib/webidl2.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
<script>
|
||||
var idl_array = new IdlArray();
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div id='log'></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/webidl2/lib/webidl2.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
<script>
|
||||
var idl_array = new IdlArray();
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue