OLD | NEW |
(Empty) | |
| 1 <!doctype html> |
| 2 <title>Selection.deleteFromDocument() tests</title> |
| 3 <link rel=author title="Aryeh Gregor" href=ayg@aryeh.name> |
| 4 <p>To debug test failures, add a query parameter with the test id (like |
| 5 "?5"). Only that test will be run. Then you can look at the resulting |
| 6 iframes in the DOM. |
| 7 <div id=log></div> |
| 8 <script src=/resources/testharness.js></script> |
| 9 <script src=/resources/testharnessreport.js></script> |
| 10 <script src=common.js></script> |
| 11 <script> |
| 12 "use strict"; |
| 13 |
| 14 // We need to use explicit_done, because in Chrome 16 dev and Opera 12.00, the |
| 15 // second iframe doesn't block the load event -- even though it is added before |
| 16 // the load event. |
| 17 setup({explicit_done: true}); |
| 18 |
| 19 // Specified by WebIDL |
| 20 test(function() { |
| 21 assert_equals(Selection.prototype.deleteFromDocument.length, 0, |
| 22 "Selection.prototype.deleteFromDocument.length must equal 0"); |
| 23 }, "Selection.prototype.deleteFromDocument.length must equal 0"); |
| 24 |
| 25 testDiv.parentNode.removeChild(testDiv); |
| 26 |
| 27 // Test an empty selection too |
| 28 testRanges.unshift("empty"); |
| 29 |
| 30 var actualIframe = document.createElement("iframe"); |
| 31 |
| 32 var expectedIframe = document.createElement("iframe"); |
| 33 |
| 34 var referenceDoc = document.implementation.createHTMLDocument(""); |
| 35 referenceDoc.removeChild(referenceDoc.documentElement); |
| 36 |
| 37 actualIframe.onload = function() { |
| 38 expectedIframe.onload = function() { |
| 39 for (var i = 0; i < testRanges.length; i++) { |
| 40 if (location.search && i != Number(location.search)) { |
| 41 continue; |
| 42 } |
| 43 |
| 44 test(function() { |
| 45 initializeIframe(actualIframe, testRanges[i]); |
| 46 initializeIframe(expectedIframe, testRanges[i]); |
| 47 |
| 48 var actualRange = actualIframe.contentWindow.testRange; |
| 49 var expectedRange = expectedIframe.contentWindow.testRange; |
| 50 |
| 51 assert_equals(actualIframe.contentWindow.unexpectedException, nu
ll, |
| 52 "Unexpected exception thrown when setting up Range for actua
l deleteFromDocument"); |
| 53 assert_equals(expectedIframe.contentWindow.unexpectedException,
null, |
| 54 "Unexpected exception thrown when setting up Range for simul
ated deleteFromDocument"); |
| 55 |
| 56 actualIframe.contentWindow.getSelection().removeAllRanges(); |
| 57 if (testRanges[i] != "empty") { |
| 58 assert_equals(typeof actualRange, "object", |
| 59 "Range produced in actual iframe must be an object"); |
| 60 assert_equals(typeof expectedRange, "object", |
| 61 "Range produced in expected iframe must be an object"); |
| 62 assert_true(actualRange instanceof actualIframe.contentWindo
w.Range, |
| 63 "Range produced in actual iframe must be instanceof Rang
e"); |
| 64 assert_true(expectedRange instanceof expectedIframe.contentW
indow.Range, |
| 65 "Range produced in expected iframe must be instanceof Ra
nge"); |
| 66 actualIframe.contentWindow.getSelection().addRange(actualIfr
ame.contentWindow.testRange); |
| 67 expectedIframe.contentWindow.testRange.deleteContents(); |
| 68 } |
| 69 actualIframe.contentWindow.getSelection().deleteFromDocument(); |
| 70 |
| 71 assertNodesEqual(actualIframe.contentDocument, expectedIframe.co
ntentDocument, "DOM contents"); |
| 72 }, "Range " + i + ": " + testRanges[i]); |
| 73 } |
| 74 actualIframe.style.display = "none"; |
| 75 expectedIframe.style.display = "none"; |
| 76 done(); |
| 77 }; |
| 78 expectedIframe.src = "test-iframe.html"; |
| 79 document.body.appendChild(expectedIframe); |
| 80 referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneN
ode(true)); |
| 81 }; |
| 82 actualIframe.src = "test-iframe.html"; |
| 83 document.body.appendChild(actualIframe); |
| 84 |
| 85 function initializeIframe(iframe, endpoints) { |
| 86 while (iframe.contentDocument.firstChild) { |
| 87 iframe.contentDocument.removeChild(iframe.contentDocument.lastChild); |
| 88 } |
| 89 iframe.contentDocument.appendChild(iframe.contentDocument.implementation.cre
ateDocumentType("html", "", "")); |
| 90 iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(tr
ue)); |
| 91 iframe.contentWindow.setupRangeTests(); |
| 92 if (endpoints != "empty") { |
| 93 iframe.contentWindow.testRangeInput = endpoints; |
| 94 iframe.contentWindow.run(); |
| 95 } |
| 96 } |
| 97 </script> |
OLD | NEW |