mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 07:48:38 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
196
dom/base/test/test_htmlcopyencoder.html
Normal file
196
dom/base/test/test_htmlcopyencoder.html
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
-->
|
||||
<head>
|
||||
<title>Test on the html copy encoder</title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=422403">Mozilla Bug </a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
function testHtmlCopyEncoder () {
|
||||
const de = SpecialPowers.Ci.nsIDocumentEncoder;
|
||||
var encoder = SpecialPowers.Cc["@mozilla.org/layout/htmlCopyEncoder;1"]
|
||||
.createInstance(SpecialPowers.Ci.nsIDocumentEncoder);
|
||||
var out, expected;
|
||||
|
||||
var node = document.getElementById('draggable');
|
||||
|
||||
|
||||
// in the following tests, we must use the OutputLFLineBreak flag, to avoid
|
||||
// to have the default line break of the platform in the result, so the test
|
||||
// can pass on all platform
|
||||
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setContainerNode(node);
|
||||
out = encoder.encodeToString();
|
||||
expected = 'This is a <em>draggable</em> bit of text.';
|
||||
is(out, expected, "test container node ");
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setNode(node);
|
||||
out = encoder.encodeToString();
|
||||
expected = "<div id=\"draggable\" ondragstart=\"doDragStartSelection(event)\">This is a <em>draggable</em> bit of text.</div>";
|
||||
is(out, expected, "test node");
|
||||
|
||||
var select = window.getSelection();
|
||||
select.selectAllChildren(node);
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = "<div style=\"display: none\">\n\n<div id=\"draggable\" ondragstart=\"doDragStartSelection(event)\">This is a <em>draggable</em> bit of text.</div>\n\n</div>";
|
||||
is(out, expected, "test selection");
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputAbsoluteLinks | de.OutputEncodeHTMLEntities | de.OutputSelectionOnly | de.OutputRaw);
|
||||
encoder.setSelection(select);
|
||||
var outContext = {value:''}, outInfo = {value:''};
|
||||
out = encoder.encodeToStringWithContext(outContext, outInfo);
|
||||
expected = "<div style=\"display: none\">\n\n<div id=\"draggable\" ondragstart=\"doDragStartSelection(event)\">This is a <em>draggable</em> bit of text.</div>\n\n</div>";
|
||||
is(out, expected, "test encodeToStringWithContext with selection ");
|
||||
|
||||
node.nextSibling.data="\nfoo bar\n";
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = "<div id=\"draggable\" ondragstart=\"doDragStartSelection(event)\">This is a <em>draggable</em> bit of text.</div>";
|
||||
is(out, expected, "test selection with additional data");
|
||||
|
||||
node = document.getElementById('aList');
|
||||
|
||||
var select = window.getSelection();
|
||||
select.selectAllChildren(node);
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<ol id=\"aList\">\n <li>Lorem ipsum dolor</li>\n <li>sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>';
|
||||
is(out, expected, "test list selection");
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setContainerNode(node);
|
||||
out = encoder.encodeToString();
|
||||
expected = '\n <li>Lorem ipsum dolor</li>\n <li>sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n';
|
||||
is(out, expected, "test list container node");
|
||||
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setNode(node);
|
||||
out = encoder.encodeToString();
|
||||
expected = "<ol id=\"aList\">\n <li>Lorem ipsum dolor</li>\n <li>sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>";
|
||||
is(out, expected, "test list node");
|
||||
|
||||
var liList = node.getElementsByTagName("li");
|
||||
var range = document.createRange();
|
||||
|
||||
// selection start at the first child of the ol, and end after the element ol
|
||||
range.setStart(node, 1);
|
||||
range.setEnd(node.parentNode, 2);
|
||||
select.removeAllRanges();
|
||||
select.addRange(range);
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<ol id="aList">\n <li>Lorem ipsum dolor</li>\n <li>sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>';
|
||||
is(out, expected, "test list selection with range: selection start at the first child of the ol, and end after the element ol");
|
||||
|
||||
// selection start at the third child of the ol, and end after the element ol
|
||||
range.setStart(node, 3);
|
||||
range.setEnd(node.parentNode, 2);
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<ol id="aList"><li value=\"2\">sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>';
|
||||
is(out, expected, "test list selection with range: selection start at the third child of the ol, and end after the element ol");
|
||||
|
||||
|
||||
// selection start at the third child of the ol, and end after the element ol + ol start at the value 5
|
||||
range.setStart(node, 3);
|
||||
range.setEnd(node.parentNode, 2);
|
||||
node.setAttribute("start","5");
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<ol id=\"aList\" start=\"5\"><li value=\"6\">sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>';
|
||||
is(out, expected, "test list selection with range: selection start at the third child of the ol, and end after the element ol + ol start at the value 5");
|
||||
|
||||
// selection contains only some child of the ol
|
||||
node.removeAttribute("start");
|
||||
range.setStart(node, 3);
|
||||
range.setEnd(node, 5);
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<li>sit amet, <strong>consectetuer</strong> </li>\n ';
|
||||
is(out, expected, "test list selection with range: selection contains only some child of the ol");
|
||||
|
||||
// selection contains only some child of the ol + ol start at the value 5
|
||||
node.setAttribute("start","5");
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<li>sit amet, <strong>consectetuer</strong> </li>\n ';
|
||||
is(out, expected, "test list selection with range: selection contains only some child of the ol + ol start at the value 5");
|
||||
|
||||
// selection contains only some child of the ol + a value is set on the first li
|
||||
node.removeAttribute("start");
|
||||
liList[0].setAttribute("value","8");
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<li>sit amet, <strong>consectetuer</strong> </li>\n ';
|
||||
is(out, expected, "test list selection with range: selection contains only some child of the ol + ol start at the value 5");
|
||||
|
||||
select.selectAllChildren(node);
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<ol id=\"aList\">\n <li value=\"8\">Lorem ipsum dolor</li>\n <li>sit amet, <strong>consectetuer</strong> </li>\n <li>adipiscing elit</li>\n <li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>\n <li>aptent taciti</li>\n</ol>';
|
||||
is(out, expected, "test list selection with a value on a LI");
|
||||
|
||||
//test Bug 436703
|
||||
node = document.getElementById('aContentEditable');
|
||||
select.selectAllChildren(node);
|
||||
encoder.init(document, "text/html", de.OutputLFLineBreak | de.OutputSelectionOnly);
|
||||
encoder.setSelection(select);
|
||||
out = encoder.encodeToString();
|
||||
expected = '<p>one</p><p>two</p>';
|
||||
is(out, expected, "select all children in an contentEditable div should not select the div itself");
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
addLoadEvent(testHtmlCopyEncoder);
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
<div style="display: none">
|
||||
|
||||
<div id="draggable" ondragstart="doDragStartSelection(event)">This is a <em>draggable</em> bit of text.</div>
|
||||
|
||||
</div>
|
||||
<div style="display: none">
|
||||
|
||||
<ol id="aList">
|
||||
<li>Lorem ipsum dolor</li>
|
||||
<li>sit amet, <strong>consectetuer</strong> </li>
|
||||
<li>adipiscing elit</li>
|
||||
<li>Nam eu sapien. Sed viverra lacus. Donec quis ipsum. Nunc cursus aliquet lectus. Nunc vitae eros. Class</li>
|
||||
<li>aptent taciti</li>
|
||||
</ol>
|
||||
foo bar
|
||||
</div>
|
||||
|
||||
<div id="aContentEditable" contentEditable="true"><p>one</p><p>two</p></div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue