summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_private_cookie_changed.js
blob: 89e9f5e75aeb84de55318ba5e3b4da8f607278c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

"use strict";

function makeChan(uri, isPrivate) {
  var chan = NetUtil.newChannel({
    uri: uri.spec,
    loadUsingSystemPrincipal: true,
  }).QueryInterface(Ci.nsIHttpChannel);

  chan.QueryInterface(Ci.nsIPrivateBrowsingChannel).setPrivate(isPrivate);
  return chan;
}

function run_test() {
  // We don't want to have CookieJarSettings blocking this test.
  Services.prefs.setBoolPref(
    "network.cookieJarSettings.unblocked_for_testing",
    true
  );

  // Allow all cookies.
  Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);

  let publicNotifications = 0;
  let privateNotifications = 0;
  Services.obs.addObserver(function () {
    publicNotifications++;
  }, "cookie-changed");
  Services.obs.addObserver(function () {
    privateNotifications++;
  }, "private-cookie-changed");

  let uri = NetUtil.newURI("http://foo.com/");
  let publicChan = makeChan(uri, false);
  let svc = Services.cookies.QueryInterface(Ci.nsICookieService);
  svc.setCookieStringFromHttp(uri, "oh=hai", publicChan);
  let privateChan = makeChan(uri, true);
  svc.setCookieStringFromHttp(uri, "oh=hai", privateChan);
  Assert.equal(publicNotifications, 1);
  Assert.equal(privateNotifications, 1);
}