| OLD | NEW |
| 1 <head> | 1 <!DOCTYPE html> |
| 2 <script> | 2 <script src="../../resources/js-test.js"></script> |
| 3 if (window.testRunner) | |
| 4 testRunner.dumpAsText(); | |
| 5 | |
| 6 function print(message, color) | |
| 7 { | |
| 8 var paragraph = document.createElement("div"); | |
| 9 paragraph.appendChild(document.createTextNode(message)); | |
| 10 paragraph.style.fontFamily = "monospace"; | |
| 11 if (color) | |
| 12 paragraph.style.color = color; | |
| 13 document.getElementById("console").appendChild(paragraph); | |
| 14 } | |
| 15 | |
| 16 function run(a) | |
| 17 { | |
| 18 print(a); | |
| 19 try { | |
| 20 eval(a); | |
| 21 } catch(e) { | |
| 22 print(e); | |
| 23 } | |
| 24 } | |
| 25 | |
| 26 function shouldBe(a, b) | |
| 27 { | |
| 28 var evalA; | |
| 29 try { | |
| 30 evalA = eval(a); | |
| 31 } catch(e) { | |
| 32 evalA = e; | |
| 33 } | |
| 34 | |
| 35 if (evalA == b) | |
| 36 print("PASS: " + a + " should be " + b + " and is.", "green"); | |
| 37 else | |
| 38 print("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".
", "red"); | |
| 39 } | |
| 40 </script> | |
| 41 </head> | |
| 42 <body> | 3 <body> |
| 43 Test that innerHTML does not mangle javascript: urls. | 4 Test that innerHTML/outerHTML does not mangle javascript: urls. |
| 44 <div id=console></div> | 5 <div id=console></div> |
| 45 <div id=jsurltest><a href=' | 6 <div id=jsurltest><a href='javascript:test(&37;3C!--D--&37;3E)'>link</a></div> |
| 46 javascript:test(&37;3C!--D--&37;3E)'>link</a></div> | |
| 47 <script> | 7 <script> |
| 48 var r = document.getElementById('jsurltest'); | 8 var r = document.getElementById('jsurltest'); |
| 49 run("r.innerHTML = r.innerHTML.replace(/&37;3C!--D--&37;3E/g, 123)"); | 9 |
| 50 shouldBe("r.innerHTML.indexOf('javascript:test(123)') > -1", true); | 10 r.innerHTML = r.innerHTML.replace('&37;3C!--D--&37;3E', 123); |
| 51 run("r.firstChild.setAttribute('href', 'javascript:test(\"text<\")')"); | 11 shouldBeEqualToString('r.innerHTML', '<a href="javascript:test(123)">link</a>'); |
| 52 shouldBe("r.innerHTML.indexOf('javascript:test(\"text<\")') > -1", true); | 12 |
| 53 run('r.firstChild.setAttribute("href", "javascript:test(\'text>\')")'); | 13 r.firstChild.setAttribute('href', 'javascript:test(\"text<\")'); |
| 54 shouldBe('r.innerHTML.indexOf("javascript:test(\'text>\')") > -1', true); | 14 shouldBeEqualToString('r.innerHTML', '<a href=\'javascript:test("text<")\'>link<
/a>'); |
| 15 |
| 16 r.firstChild.setAttribute('href', 'javascript:test(\'text>\')'); |
| 17 shouldBeEqualToString("r.innerHTML", '<a href="javascript:test(\'text>\')">link<
/a>'); |
| 18 |
| 55 testString = 'javascript:test(\'text&\',"test2&")'; | 19 testString = 'javascript:test(\'text&\',"test2&")'; |
| 56 print("testString = " + testString); | 20 r.firstChild.setAttribute('href', testString); |
| 57 run('r.firstChild.setAttribute("href", testString)'); | 21 shouldBeEqualToString('r.innerHTML', '<a href="javascript:test(\'text&\',&qu
ot;test2&")">link</a>'); |
| 58 shouldBe('r.innerHTML.indexOf("javascript:test(\'text&\',"test2&")") >
1', true); | |
| 59 | 22 |
| 60 run("r.firstChild.setAttribute('href', 'http://www.google.fi/search?q=scarlett j
ohansson&meta=&btnG=Google-haku')"); | 23 r.firstChild.href = 'javascript:window.location=\'?x&y\''; |
| 61 print(r.innerHTML); | 24 shouldBeEqualToString("r.firstChild.outerHTML", '<a href="javascript:window.loca
tion=\'?x&y\'">link</a>'); |
| 25 |
| 26 // Behavior is same as FF |
| 27 r.firstChild.href = 'javascript:window.location=\'?x&y\''; |
| 28 shouldBeEqualToString('r.firstChild.outerHTML', '<a href="javascript:window.loca
tion=\'?x&amp;y\'">link</a>'); |
| 29 r.innerHTML = '<a href="javascript:window.location=\'?x&y\'">link</a>'; |
| 30 shouldBeEqualToString('r.firstChild.outerHTML', '<a href="javascript:window.loca
tion=\'?x&y\'">link</a>'); |
| 62 </script> | 31 </script> |
| OLD | NEW |