| <html> | |
| <body style="background: #cccccc;"> | |
| <p id="console"></p> | |
| <div id="background" style="position: absolute; top: 490px; width: 500px; height:3em;background: black;"></div> | |
| <div id="container" contenteditable="true"></div> | |
| <script type="text/javascript"> | |
| if (window.testRunner) | |
| testRunner.dumpAsText(); | |
| function getColor(e) { | |
| if (document.selection) { | |
| var r = document.selection.createRange(); | |
| r.moveToElementText(e); | |
| r.select(); | |
| backColor = document.queryCommandValue('backColor'); | |
| r = (backColor & 0xFF) | |
| g = ((backColor >> 8) & 0xFF) | |
| b = ((backColor >> 16) & 0xFF) | |
| return 'rgb('+r+', '+g+', '+b+')'; | |
| } else { | |
| var r = document.createRange(); | |
| var s = window.getSelection(); | |
| r.setStart(e, 0); | |
| r.setEnd(e, e.childNodes.length); | |
| s.removeAllRanges(); | |
| s.addRange(r); | |
| return document.queryCommandValue('backColor'); | |
| } | |
| } | |
| function test(html, expected) { | |
| var c = document.getElementById('container'); | |
| c.innerHTML = html; | |
| var actual = getColor(document.getElementById('selected')); | |
| var console = document.getElementById('console'); | |
| if (actual == expected) { | |
| console.innerHTML += "<span style='color: green; font-weight: bold;'>PASS</span> "+expected+" for "; | |
| } else { | |
| console.innerHTML += "<span style='color: red; font-weight: bold;'>FAILED</span> expected "+expected+ | |
| " but got "+actual+" for "; | |
| } | |
| console.appendChild(document.createTextNode(html)); | |
| console.innerHTML += "<br>"; | |
| c.innerHTML = ""; | |
| } | |
| test("<div style='background: green;'><span id=selected>hello world</span></div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;'><p>hello</p><span id=selected>world</span><p>webkit</p></div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;'>hello <span style='background-color: blue;' id=selected>world</span></div>", 'rgb(0, 0, 255)'); | |
| test("<div style='background: green;'>hello<span style='position: absolute; top: 200px;' id=selected>world</span></div>", 'rgb(204, 204, 204)'); | |
| test("<div style='background: green;'>hello<span style='position: absolute; top: 500px;' id=selected>world</span></div>", 'rgb(0, 0, 0)'); | |
| test("<div style='background: green;' id=selected><span style='background-color: yellow'>hello</span> world</div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;' id=selected><span style='background-color: yellow'>hello</span><span style='background-color: yellow'> world</span></div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;' id=selected><span style='background-color: yellow'>hello</span><span style='background-color: blue'> world</span></div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;'><span style='background-color: yellow' id=selected>hello world</span></div>", 'rgb(255, 255, 0)'); | |
| test("<div style='background: green;'><span style='background-color: rgba(255, 255, 0, 0);' id=selected>hello world</span></div>", 'rgb(0, 128, 0)'); | |
| test("<div style='background: green;'><span style='background-color: rgba(255, 255, 0, 0.5);' id=selected>hello world</span></div>", 'rgba(255, 255, 0, 0.498039)'); | |
| </script> |