summaryrefslogtreecommitdiffstats
path: root/browser/components/originattributes/test/browser/browser_clientAuth.js
blob: f93ec1dff22766bf0b8abddc951f2af4576d3731 (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
45
46
47
48
49
let certCached = true;
let secondTabStarted = false;

function onCertDialogLoaded(subject) {
  certCached = false;
  // Click OK.
  subject.acceptDialog();
}

Services.obs.addObserver(onCertDialogLoaded, "cert-dialog-loaded");

registerCleanupFunction(() => {
  Services.obs.removeObserver(onCertDialogLoaded, "cert-dialog-loaded");
});

async function setup() {
  await SpecialPowers.pushPrefEnv({
    set: [
      ["security.default_personal_cert", "Ask Every Time"],
      ["privacy.partition.network_state", false],
    ],
  });
}

function getResult() {
  // The first tab always returns true.
  if (!secondTabStarted) {
    certCached = true;
    secondTabStarted = true;
    return true;
  }

  // The second tab returns true if the cert is cached, so it will be different
  // from the result of the first tab, and considered isolated.
  let ret = certCached;
  certCached = true;
  secondTabStarted = false;
  return ret;
}

// aGetResultImmediately must be true because we need to get the result before
// the next tab is opened.
IsolationTestTools.runTests(
  "https://requireclientcert.example.com",
  getResult,
  null, // aCompareResultFunc
  setup, // aBeginFunc
  true
); // aGetResultImmediately