1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/extensions/cookie/test/file_testcommon.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,76 @@ 1.4 +var gExpectedCookies; 1.5 +var gExpectedLoads; 1.6 + 1.7 +var gPopup; 1.8 + 1.9 +var gLoads = 0; 1.10 + 1.11 +function setupTest(uri, cookies, loads) { 1.12 + SimpleTest.waitForExplicitFinish(); 1.13 + 1.14 + SpecialPowers.Cc["@mozilla.org/preferences-service;1"] 1.15 + .getService(SpecialPowers.Ci.nsIPrefBranch) 1.16 + .setIntPref("network.cookie.cookieBehavior", 1); 1.17 + 1.18 + var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"] 1.19 + .getService(SpecialPowers.Ci.nsICookieManager2); 1.20 + cs.removeAll(); 1.21 + 1.22 + gExpectedCookies = cookies; 1.23 + gExpectedLoads = loads; 1.24 + 1.25 + // Listen for MessageEvents. 1.26 + window.addEventListener("message", messageReceiver, false); 1.27 + 1.28 + // load a window which contains an iframe; each will attempt to set 1.29 + // cookies from their respective domains. 1.30 + gPopup = window.open(uri, 'hai', 'width=100,height=100'); 1.31 +} 1.32 + 1.33 +function finishTest() 1.34 +{ 1.35 + SpecialPowers.Cc["@mozilla.org/preferences-service;1"] 1.36 + .getService(SpecialPowers.Ci.nsIPrefBranch) 1.37 + .clearUserPref("network.cookie.cookieBehavior"); 1.38 + 1.39 + SimpleTest.finish(); 1.40 +} 1.41 + 1.42 +/** Receives MessageEvents to this window. */ 1.43 +// Count and check loads. 1.44 +function messageReceiver(evt) 1.45 +{ 1.46 + is(evt.data, "message", "message data received from popup"); 1.47 + if (evt.data != "message") { 1.48 + gPopup.close(); 1.49 + window.removeEventListener("message", messageReceiver, false); 1.50 + 1.51 + finishTest(); 1.52 + return; 1.53 + } 1.54 + 1.55 + // only run the test when all our children are done loading & setting cookies 1.56 + if (++gLoads == gExpectedLoads) { 1.57 + gPopup.close(); 1.58 + window.removeEventListener("message", messageReceiver, false); 1.59 + 1.60 + runTest(); 1.61 + } 1.62 +} 1.63 + 1.64 +// runTest() is run by messageReceiver(). 1.65 +// Count and check cookies. 1.66 +function runTest() { 1.67 + // set a cookie from a domain of "localhost" 1.68 + document.cookie = "oh=hai"; 1.69 + 1.70 + var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"] 1.71 + .getService(SpecialPowers.Ci.nsICookieManager); 1.72 + var count = 0; 1.73 + for(var list = cs.enumerator; list.hasMoreElements(); list.getNext()) 1.74 + ++count; 1.75 + is(count, gExpectedCookies, "total number of cookies"); 1.76 + cs.removeAll(); 1.77 + 1.78 + finishTest(); 1.79 +}