extensions/cookie/test/file_testloadflags.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 var gExpectedCookies;
     2 var gExpectedHeaders;
     3 var gExpectedLoads;
     5 var gObs;
     6 var gPopup;
     8 var gHeaders = 0;
     9 var gLoads = 0;
    11 // setupTest() is run from 'onload='.
    12 function setupTest(uri, domain, cookies, loads, headers) {
    13   ok(true, "setupTest uri: " + uri + " domain: " + domain + " cookies: " + cookies +
    14            " loads: " + loads + " headers: " + headers);
    16   SimpleTest.waitForExplicitFinish();
    18   SpecialPowers.Cc["@mozilla.org/preferences-service;1"]
    19                .getService(SpecialPowers.Ci.nsIPrefBranch)
    20                .setIntPref("network.cookie.cookieBehavior", 1);
    22   var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"]
    23                         .getService(SpecialPowers.Ci.nsICookieManager2);
    25   ok(true, "we are going to remove these cookies");
    26   var count = 0;
    27   var list = cs.enumerator;
    28   while (list.hasMoreElements()) {
    29     var cookie = list.getNext().QueryInterface(SpecialPowers.Ci.nsICookie);
    30     ok(true, "cookie: " + cookie);
    31     ok(true, "cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name +
    32        " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires);
    33     ++count;
    34   }
    35   ok(true, count + " cookies");
    37   cs.removeAll();
    38   cs.add(domain, "", "oh", "hai", false, false, true, Math.pow(2, 62));
    39   is(cs.countCookiesFromHost(domain), 1, "number of cookies for domain " + domain);
    41   gExpectedCookies = cookies;
    42   gExpectedLoads = loads;
    43   gExpectedHeaders = headers;
    45   gObs = new obs();
    46   // Listen for MessageEvents.
    47   window.addEventListener("message", messageReceiver, false);
    49   // load a window which contains an iframe; each will attempt to set
    50   // cookies from their respective domains.
    51   gPopup = window.open(uri, 'hai', 'width=100,height=100');
    52 }
    54 function finishTest()
    55 {
    56   gObs.remove();
    58   SpecialPowers.Cc["@mozilla.org/preferences-service;1"]
    59                .getService(SpecialPowers.Ci.nsIPrefBranch)
    60                .clearUserPref("network.cookie.cookieBehavior");
    62   SimpleTest.finish();
    63 }
    65 // Count headers.
    66 function obs () {
    67   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    69   ok(true, "adding observer");
    71   this.window = window;
    72   this.os = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
    73                          .getService(SpecialPowers.Ci.nsIObserverService);
    74   this.os.addObserver(this, "http-on-modify-request", false);
    75 }
    77 obs.prototype = {
    78   observe: function obs_observe (theSubject, theTopic, theData)
    79   {
    80     ok(true, "theSubject " + theSubject);
    81     ok(true, "theTopic " + theTopic);
    82     ok(true, "theData " + theData);
    84     var channel = theSubject.QueryInterface(
    85                     this.window.SpecialPowers.Ci.nsIHttpChannel);
    86     ok(true, "channel " + channel);
    87     try {
    88       ok(true, "channel.URI " + channel.URI);
    89       ok(true, "channel.URI.spec " + channel.URI.spec);
    90       channel.visitRequestHeaders({
    91         visitHeader: function(aHeader, aValue) {
    92           ok(true, aHeader + ": " + aValue);
    93         }});
    94     } catch (err) {
    95       ok(false, "catch error " + err);
    96     }
    98     // Ignore notifications we don't care about (like favicons)
    99     if (channel.URI.spec.indexOf(
   100           "http://example.org/tests/extensions/cookie/test/") == -1) {
   101       ok(true, "ignoring this one");
   102       return;
   103     }
   105     this.window.isnot(channel.getRequestHeader("Cookie").indexOf("oh=hai"), -1,
   106                       "cookie 'oh=hai' is in header for " + channel.URI.spec);
   107     ++gHeaders;
   108   },
   110   remove: function obs_remove()
   111   {
   112     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
   114     ok(true, "removing observer");
   116     this.os.removeObserver(this, "http-on-modify-request");
   117     this.os = null;
   118     this.window = null;
   119   }
   120 }
   122 /** Receives MessageEvents to this window. */
   123 // Count and check loads.
   124 function messageReceiver(evt)
   125 {
   126   ok(evt.data == "f_lf_i msg data img" || evt.data == "f_lf_i msg data page",
   127      "message data received from popup");
   128   if (evt.data == "f_lf_i msg data img") {
   129     ok(true, "message data received from popup for image");
   130   }
   131   if (evt.data == "f_lf_i msg data page") {
   132     ok(true, "message data received from popup for page");
   133   }
   134   if (evt.data != "f_lf_i msg data img" && evt.data != "f_lf_i msg data page") {
   135     ok(true, "got this message but don't know what it is " + evt.data);
   136     gPopup.close();
   137     window.removeEventListener("message", messageReceiver, false);
   139     finishTest();
   140     return;
   141   }
   143   // only run the test when all our children are done loading & setting cookies
   144   if (++gLoads == gExpectedLoads) {
   145     gPopup.close();
   146     window.removeEventListener("message", messageReceiver, false);
   148     runTest();
   149   }
   150 }
   152 // runTest() is run by messageReceiver().
   153 // Check headers, and count and check cookies.
   154 function runTest() {
   155   // set a cookie from a domain of "localhost"
   156   document.cookie = "o=noes";
   158   is(gHeaders, gExpectedHeaders, "number of observed request headers");
   160   var cs = SpecialPowers.Cc["@mozilla.org/cookiemanager;1"]
   161                         .getService(SpecialPowers.Ci.nsICookieManager);
   162   var count = 0;
   163   var list = cs.enumerator;
   164   while (list.hasMoreElements()) {
   165     var cookie = list.getNext().QueryInterface(SpecialPowers.Ci.nsICookie);
   166     ok(true, "cookie: " + cookie);
   167     ok(true, "cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name +
   168        " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires);
   169     ++count;
   170   }
   171   is(count, gExpectedCookies, "total number of cookies");
   172   cs.removeAll();
   174   finishTest();
   175 }

mercurial