Update web-platform-tests to revision 4d96cccabc2feacd48e1dab9afc22b8af2225572

This commit is contained in:
Ms2ger 2015-06-23 16:47:26 +02:00
parent 0d236288cc
commit c66c6af0ba
1067 changed files with 63768 additions and 10900 deletions

View file

@ -2,5 +2,4 @@
type: reftest
reftype: ==
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
expected: FAIL
disabled: intermittent pass (issue 5803)

View file

@ -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)

View file

@ -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

View file

@ -2,3 +2,4 @@
type: testharness
[loading documents from original origin after setting document.domain]
expected: FAIL

View file

@ -0,0 +1,5 @@
[send-entity-body-get-head.htm]
type: testharness
[XMLHttpRequest: send() - non-empty data argument and GET/HEAD (HEAD)]
expected: FAIL

View 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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1 +1 @@
0756a1f3b4c192a6794c70c6dc1f28f1e689f19e
d86c5879255ec9ced621412d4565a9a66ee4dc72

View file

@ -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

View file

@ -36,3 +36,144 @@
[Parsing: <http://> 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

View file

@ -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

View file

@ -0,0 +1,5 @@
[event_local_removeitem.html]
type: testharness
[key property test of local event]
expected: FAIL

View file

@ -0,0 +1,5 @@
[event_session_removeitem.html]
type: testharness
[key property test of session event]
expected: FAIL

View file

@ -1,4 +1,4 @@
[indexing.html]
[storage_indexing.html]
type: testharness
[Getting existing number-valued properties on localStorage]
expected: FAIL

View file

@ -1,5 +1,3 @@
[storage_local_setitem_quotaexceedederr.html]
type: testharness
[Web Storage]
expected: FAIL
expected: TIMEOUT

View file

@ -1,5 +1,3 @@
[storage_session_setitem_quotaexceedederr.html]
type: testharness
[Web Storage]
expected: FAIL
expected: TIMEOUT

View file

@ -0,0 +1,6 @@
[Worker_ErrorEvent_bubbles_cancelable.htm]
type: testharness
expected: TIMEOUT
[ErrorEvent on worker doesn't bubble and is cancelable]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[importScripts.html]
type: testharness
[Base URL in workers: importScripts]
expected: FAIL

View file

@ -0,0 +1,6 @@
[sharedworker.html]
type: testharness
expected: TIMEOUT
[Base URL in workers: new SharedWorker()]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[worker.html]
type: testharness
[Base URL in workers: new Worker()]
expected: FAIL

View file

@ -1,5 +1,5 @@
[historical.html]
[xhr.html]
type: testharness
[initCloseEvent]
[Base URL in workers: XHR]
expected: FAIL

View file

@ -0,0 +1,5 @@
[Blob-url.html]
type: testharness
[Worker supports Blob url]
expected: FAIL

View file

@ -1,5 +1,6 @@
[003.html]
type: testharness
expected: TIMEOUT
[worker]
expected: TIMEOUT

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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)
---------------------------------------------

View file

@ -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, [])

View file

@ -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, [])

View file

@ -15,6 +15,7 @@
<div id="log"></div>
<pre id="untested_idl">
[PrimaryGlobal]
interface Window {
};

View file

@ -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>

View file

@ -1,4 +1,6 @@
{"host": "web-platform.test",
"doc_root": null,
"ws_doc_root": null,
"external_host": null,
"ports":{"http":[8000, "auto"],
"https":[8443],

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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">

View file

@ -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();
}

View file

@ -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();
}

View 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
```

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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 = [

View file

@ -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 = [

View file

@ -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 = [

View file

@ -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>

View file

@ -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()});

View file

@ -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()});

View file

@ -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()});

View file

@ -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()});

View file

@ -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()});

View file

@ -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);

View file

@ -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);});

View file

@ -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) {

View file

@ -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>

View file

@ -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);

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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/*

View file

@ -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>

View file

@ -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();

View file

@ -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