4 <title>Test for nsITableEditor.getCellIndexes()
</title>
5 <script src=
"/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel=
"stylesheet" href=
"/tests/SimpleTest/test.css">
11 <div id=
"content" contenteditable
></div>
15 <script class=
"testbody" type=
"application/javascript">
17 SimpleTest.waitForExplicitFinish();
18 SimpleTest.waitForFocus(function() {
19 let editor = document.getElementById(
"content");
20 let selection = document.getSelection();
21 let rowIndex = {}, columnIndex = {};
24 getTableEditor().getCellIndexes(undefined, rowIndex, columnIndex);
25 ok(false,
"nsITableEditor.getCellIndexes(undefined) should cause throwing an exception");
27 ok(true,
"nsITableEditor.getCellIndexes(undefined) should cause throwing an exception");
31 getTableEditor().getCellIndexes(null, rowIndex, columnIndex);
32 ok(false,
"nsITableEditor.getCellIndexes(null) should cause throwing an exception");
34 ok(true,
"nsITableEditor.getCellIndexes(null) should cause throwing an exception");
38 getTableEditor().getCellIndexes(editor, rowIndex, columnIndex);
39 ok(false,
"nsITableEditor.getCellIndexes() should cause throwing an exception if given node is not a <td> nor a <th>");
41 ok(true,
"nsITableEditor.getCellIndexes() should cause throwing an exception if given node is not a <td> nor a <th>");
44 // Set id to
"test" for the argument for getCellIndexes().
45 // Set data-row and data-col to expected indexes.
47 '
<table><tr><td id=
"test" data-row=
"0" data-col=
"0">cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
48 '
<table><tr><td>cell1-
1</td><td id=
"test" data-row=
"0" data-col=
"1">cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
49 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td id=
"test" data-row=
"0" data-col=
"2">cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
50 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td id=
"test" data-row=
"1" data-col=
"0">cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
51 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td id=
"test" data-row=
"1" data-col=
"1">cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
52 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td id=
"test" data-row=
"1" data-col=
"2">cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
53 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td id=
"test" data-row=
"2" data-col=
"0">cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
54 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td id=
"test" data-row=
"2" data-col=
"1">cell3-
2</td><td>cell3-
3</td></tr></table>',
55 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td id=
"test" data-row=
"2" data-col=
"2">cell3-
3</td></tr></table>',
56 '
<table><tr><td>cell1-
1</td><td id=
"test" data-row=
"0" data-col=
"1" rowspan=
"2">cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
57 '
<table><tr><td>cell1-
1</td><td rowspan=
"2">cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td id=
"test" data-row=
"2" data-col=
"1">cell3-
2</td><td>cell3-
3</td></tr></table>',
58 '
<table><tr><td>cell1-
1</td><td id=
"test" data-row=
"0" data-col=
"1">cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td rowspan=
"2">cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
3</td></tr></table>',
59 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td id=
"test" data-row=
"1" data-col=
"1" rowspan=
"2">cell2-
2</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
3</td></tr></table>',
60 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td id=
"test" data-row=
"1" data-col=
"0" colspan=
"2">cell2-
1</td><td>cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
61 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td colspan=
"2">cell2-
1</td><td id=
"test" data-row=
"1" data-col=
"2">cell2-
3</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
62 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td id=
"test" data-row=
"1" data-col=
"0">cell2-
1</td><td colspan=
"2">cell2-
2</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
63 '
<table><tr><td>cell1-
1</td><td>cell1-
2</td><td>cell1-
3</tr><tr><td>cell2-
1</td><td id=
"test" data-row=
"1" data-col=
"1" colspan=
"2">cell2-
2</td></tr><tr><td>cell3-
1</td><td>cell3-
2</td><td>cell3-
3</td></tr></table>',
64 '
<table><tr><th id=
"test" data-row=
"0" data-col=
"0">cell1-
1</th><th>cell1-
2</th><th>cell1-
3</tr><tr><th>cell2-
1</th><th>cell2-
2</th><th>cell2-
3</th></tr><tr><th>cell3-
1</th><th>cell3-
2</th><th>cell3-
3</th></tr></table>',
67 for (const kTest of kTests) {
68 editor.innerHTML = kTest;
69 let cell = document.getElementById(
"test");
70 getTableEditor().getCellIndexes(cell, rowIndex, columnIndex);
71 is(rowIndex.value.toString(
10), cell.getAttribute(
"data-row"), `Specified cell element directly, row Index value of ${kTest}`);
72 is(columnIndex.value.toString(
10), cell.getAttribute(
"data-col"), `Specified cell element directly, column Index value of ${kTest}`);
73 selection.collapse(cell.firstChild,
0);
74 getTableEditor().getCellIndexes(null, rowIndex, columnIndex);
75 is(rowIndex.value.toString(
10), cell.getAttribute(
"data-row"), `Selection is collapsed in the cell element, row Index value of ${kTest}`);
76 is(columnIndex.value.toString(
10), cell.getAttribute(
"data-col"), `Selection is collapsed in the cell element, column Index value of ${kTest}`);
82 function getTableEditor() {
83 var Ci = SpecialPowers.Ci;
84 var editingSession = SpecialPowers.wrap(window).docShell.editingSession;
85 return editingSession.getEditorForWindow(window).QueryInterface(Ci.nsITableEditor);