| <body> | |
| <script> | |
| function addRow(table) | |
| { | |
| var tableRow = document.createElement("tr"); | |
| table.appendChild(tableRow); | |
| return tableRow; | |
| } | |
| function addCellWithNodeContents(tableRow, contents) | |
| { | |
| var tableCell = document.createElement("td"); | |
| tableCell.appendChild(contents); | |
| tableRow.appendChild(tableCell); | |
| return tableCell; | |
| } | |
| function addCellWithTextContents(tableRow, contents) | |
| { | |
| return addCellWithNodeContents(tableRow, document.createTextNode(contents)); | |
| } | |
| function addHeaderWithTextContents(tableRow, contents) | |
| { | |
| var tableCell = document.createElement("th"); | |
| tableCell.appendChild(document.createTextNode(contents)); | |
| tableRow.appendChild(tableCell); | |
| return tableCell; | |
| } | |
| function setFontSizeOnContent(size) | |
| { | |
| window.getSelection().selectAllChildren(editableDiv); | |
| document.execCommand("FontSize", false, size); | |
| return editableDiv.firstChild; | |
| } | |
| function setFontFamilyOnContent(fontFamily) | |
| { | |
| window.getSelection().selectAllChildren(editableDiv); | |
| document.execCommand("FontName", false, fontFamily); | |
| return editableDiv.firstChild; | |
| } | |
| function reportSizeForSpan(span, comment) | |
| { | |
| var tableRow = addRow(table); | |
| addCellWithTextContents(tableRow, comment); | |
| addCellWithTextContents(tableRow, span.parentNode.innerHTML); // sill FF has no outerHTML | |
| window.getSelection().selectAllChildren(span.parentNode); | |
| addCellWithTextContents(tableRow, "" + document.queryCommandValue("FontSize")); | |
| } | |
| function testExecCommandFontSize(size, fontFamily) | |
| { | |
| editableDiv.innerHTML = "test"; | |
| var sizedContent = setFontSizeOnContent(size); | |
| if (fontFamily) | |
| sizedContent = setFontFamilyOnContent(fontFamily); | |
| var sizeString = (typeof(size) == "string") ? ("'" + size + "'") : size; | |
| reportSizeForSpan(sizedContent, "execCommand('FontSize', " + sizeString + ")"); | |
| } | |
| function testManualFontSize(size) | |
| { | |
| editableDiv.innerHTML = "<span style='font-size: " + size + "'>test</span>"; | |
| reportSizeForSpan(editableDiv.firstChild, "manual CSS font-size: " + size); | |
| } | |
| if (window.testRunner) | |
| window.testRunner.dumpAsText(); | |
| var editableDiv = document.createElement("div"); | |
| editableDiv.contentEditable = true; | |
| document.body.appendChild(editableDiv); | |
| var table = document.createElement("table"); | |
| table.border = "1px"; | |
| table.width = "100%"; | |
| document.body.appendChild(table); | |
| var tableRow = addRow(table); | |
| addHeaderWithTextContents(tableRow, "test"); | |
| addHeaderWithTextContents(tableRow, "html"); | |
| addHeaderWithTextContents(tableRow, "queryCommandValue result"); | |
| for (var size = -2; size < 8; size++) { | |
| testExecCommandFontSize(size); | |
| } | |
| testExecCommandFontSize("8px"); | |
| testExecCommandFontSize("2px"); | |
| testManualFontSize("3px"); | |
| testManualFontSize("0.2em"); | |
| testManualFontSize("17px"); | |
| testManualFontSize("31px"); | |
| testManualFontSize("50px"); | |
| testManualFontSize("5em"); | |
| testManualFontSize("10px"); | |
| tableRow = addRow(table); | |
| addHeaderWithTextContents(tableRow, "monospace tests to ensure the bug 19161 does not affect queryCommandValue's values"); | |
| for (var size = -2; size < 8; size++) { | |
| testExecCommandFontSize(size, 'monospace'); | |
| } | |
| document.body.removeChild(editableDiv); | |
| </script> |