|
1 var gExpectedCookies; |
|
2 var gExpectedLoads; |
|
3 |
|
4 var gPopup; |
|
5 |
|
6 var gLoads = 0; |
|
7 |
|
8 function setupTest(uri, cookies, loads) { |
|
9 SimpleTest.waitForExplicitFinish(); |
|
10 |
|
11 SpecialPowers.Cc["@mozilla.org/preferences-service;1"] |
|
12 .getService(SpecialPowers.Ci.nsIPrefBranch) |
|
13 .setIntPref("network.cookie.cookieBehavior", 1); |
|
14 |
|
15 var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"] |
|
16 .getService(SpecialPowers.Ci.nsICookieManager2); |
|
17 cs.removeAll(); |
|
18 |
|
19 gExpectedCookies = cookies; |
|
20 gExpectedLoads = loads; |
|
21 |
|
22 // Listen for MessageEvents. |
|
23 window.addEventListener("message", messageReceiver, false); |
|
24 |
|
25 // load a window which contains an iframe; each will attempt to set |
|
26 // cookies from their respective domains. |
|
27 gPopup = window.open(uri, 'hai', 'width=100,height=100'); |
|
28 } |
|
29 |
|
30 function finishTest() |
|
31 { |
|
32 SpecialPowers.Cc["@mozilla.org/preferences-service;1"] |
|
33 .getService(SpecialPowers.Ci.nsIPrefBranch) |
|
34 .clearUserPref("network.cookie.cookieBehavior"); |
|
35 |
|
36 SimpleTest.finish(); |
|
37 } |
|
38 |
|
39 /** Receives MessageEvents to this window. */ |
|
40 // Count and check loads. |
|
41 function messageReceiver(evt) |
|
42 { |
|
43 is(evt.data, "message", "message data received from popup"); |
|
44 if (evt.data != "message") { |
|
45 gPopup.close(); |
|
46 window.removeEventListener("message", messageReceiver, false); |
|
47 |
|
48 finishTest(); |
|
49 return; |
|
50 } |
|
51 |
|
52 // only run the test when all our children are done loading & setting cookies |
|
53 if (++gLoads == gExpectedLoads) { |
|
54 gPopup.close(); |
|
55 window.removeEventListener("message", messageReceiver, false); |
|
56 |
|
57 runTest(); |
|
58 } |
|
59 } |
|
60 |
|
61 // runTest() is run by messageReceiver(). |
|
62 // Count and check cookies. |
|
63 function runTest() { |
|
64 // set a cookie from a domain of "localhost" |
|
65 document.cookie = "oh=hai"; |
|
66 |
|
67 var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"] |
|
68 .getService(SpecialPowers.Ci.nsICookieManager); |
|
69 var count = 0; |
|
70 for(var list = cs.enumerator; list.hasMoreElements(); list.getNext()) |
|
71 ++count; |
|
72 is(count, gExpectedCookies, "total number of cookies"); |
|
73 cs.removeAll(); |
|
74 |
|
75 finishTest(); |
|
76 } |