1 SimpleTest
.waitForExplicitFinish();
5 var gExpectedCookies
= 0;
6 var gExpectedLoads
= 0;
7 var gExpectedHeaders
= 0;
13 function setupTest(uri
, domain
, cookies
, loads
, headers
) {
14 netscape
.security
.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
16 var prefs
= Components
.classes
["@mozilla.org/preferences-service;1"]
17 .getService(Components
.interfaces
.nsIPrefBranch
);
18 prefs
.setIntPref("network.cookie.cookieBehavior", 1);
20 var cs
= Components
.classes
["@mozilla.org/cookiemanager;1"]
21 .getService(Components
.interfaces
.nsICookieManager2
);
23 cs
.add(domain
, "", "oh", "hai", false, false, true, Math
.pow(2, 62));
24 is(cs
.countCookiesFromHost(domain
), 1, "cookie wasn't inited");
28 gExpectedCookies
= cookies
;
29 gExpectedLoads
= loads
;
30 gExpectedHeaders
= headers
;
32 // load a window which contains an iframe; each will attempt to set
33 // cookies from their respective domains.
34 gPopup
= window
.open(uri
, 'hai', 'width=100,height=100');
38 netscape
.security
.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
39 this.os
= Components
.classes
["@mozilla.org/observer-service;1"]
40 .getService(Components
.interfaces
.nsIObserverService
);
41 this.os
.addObserver(this, "http-on-modify-request", false);
46 observe
: function obs_observe (theSubject
, theTopic
, theData
)
48 this.window
.netscape
.security
49 .PrivilegeManager
.enablePrivilege("UniversalXPConnect");
50 var httpchannel
= theSubject
.QueryInterface(this.window
.Components
.interfaces
53 var cookie
= httpchannel
.getRequestHeader("Cookie");
55 var got
= cookie
.indexOf("oh=hai");
56 this.window
.isnot(got
, -1, "cookie wasn't sent");
60 remove
: function obs_remove()
62 netscape
.security
.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
63 this.os
.removeObserver(this, "http-on-modify-request");
69 /** Receives MessageEvents to this window. */
70 function messageReceiver(evt
)
72 ok(evt
instanceof MessageEvent
, "wrong event type");
74 if (evt
.data
== "message")
77 ok(false, "wrong message");
83 // only run the test when all our children are done loading & setting cookies
84 if (gLoads
== gExpectedLoads
)
89 // set a cookie from a domain of "localhost"
90 document
.cookie
= "o=noes";
92 netscape
.security
.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
93 var cs
= Components
.classes
["@mozilla.org/cookiemanager;1"]
94 .getService(Components
.interfaces
.nsICookieManager
);
95 var list
= cs
.enumerator
;
97 while (list
.hasMoreElements()) {
101 is(count
, gExpectedCookies
, "incorrect number of cookies");
102 is(gHeaders
, gExpectedHeaders
, "incorrect number of request headers");
110 window
.addEventListener("message", messageReceiver
, false);