|
1 /* Any copyright is dedicated to the public domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 // Bug 795317: Test that the browser element sanitizes its URIs by removing the |
|
5 // "unexposable" parts before sending them in the locationchange event. |
|
6 |
|
7 "use strict"; |
|
8 SimpleTest.waitForExplicitFinish(); |
|
9 browserElementTestHelpers.setEnabledPref(true); |
|
10 browserElementTestHelpers.addPermission(); |
|
11 |
|
12 var iframe; |
|
13 |
|
14 function testPassword() { |
|
15 function locationchange(e) { |
|
16 var uri = e.detail; |
|
17 is(uri, 'http://mochi.test:8888/tests/dom/browser-element/mochitest/file_empty.html', |
|
18 "Username and password shouldn't be exposed in uri."); |
|
19 SimpleTest.finish(); |
|
20 } |
|
21 |
|
22 iframe.addEventListener('mozbrowserlocationchange', locationchange); |
|
23 iframe.src = "http://iamuser:iampassword@mochi.test:8888/tests/dom/browser-element/mochitest/file_empty.html"; |
|
24 } |
|
25 |
|
26 function testWyciwyg() { |
|
27 var locationChangeCount = 0; |
|
28 |
|
29 function locationchange(e) { |
|
30 // locationChangeCount: |
|
31 // 0 - the first load. |
|
32 // 1 - after document.write(). |
|
33 if (locationChangeCount == 0) { |
|
34 locationChangeCount ++; |
|
35 } else if (locationChangeCount == 1) { |
|
36 var uri = e.detail; |
|
37 is(uri, 'http://mochi.test:8888/tests/dom/browser-element/mochitest/file_wyciwyg.html', "Scheme in string shouldn't be wyciwyg"); |
|
38 iframe.removeEventListener('mozbrowserlocationchange', locationchange); |
|
39 SimpleTest.executeSoon(testPassword); |
|
40 } |
|
41 } |
|
42 |
|
43 // file_wyciwyg.html calls document.write() to create a wyciwyg channel. |
|
44 iframe.src = 'file_wyciwyg.html'; |
|
45 iframe.addEventListener('mozbrowserlocationchange', locationchange); |
|
46 } |
|
47 |
|
48 function runTest() { |
|
49 iframe = document.createElement('iframe'); |
|
50 SpecialPowers.wrap(iframe).mozbrowser = true; |
|
51 document.body.appendChild(iframe); |
|
52 testWyciwyg(); |
|
53 } |
|
54 |
|
55 addEventListener('testready', runTest); |