dom/tests/mochitest/bugs/test_bug1171215.html
author Ciure Andrei <aciure@mozilla.com>
Thu, 28 Feb 2019 00:55:39 +0200
changeset 519419 66a4a5cb3fc7603baa4fe83c98b3b83b5b33075c
parent 519391 6a8401de32379f23a5544a7e0b5b1b16916fd581
child 520527 8ff9e8f45e02c5a46473df098e5a4aff2c971236
permissions -rw-r--r--
Backed out 12 changesets (bug 1525245) for failing worker-interception.https.html CLOSED TREE Backed out changeset 009e7457b990 (bug 1525245) Backed out changeset efb2e8fca464 (bug 1525245) Backed out changeset 6a8401de3237 (bug 1525245) Backed out changeset 38e802661b14 (bug 1525245) Backed out changeset d02e3f436390 (bug 1525245) Backed out changeset 10afd61b7582 (bug 1525245) Backed out changeset 6b92fb3666d1 (bug 1525245) Backed out changeset 476af2d7efe5 (bug 1525245) Backed out changeset 43ad14e323a1 (bug 1525245) Backed out changeset 94295e3fb027 (bug 1525245) Backed out changeset d01ead2270e9 (bug 1525245) Backed out changeset 6bdda622a04a (bug 1525245)

<!DOCTYPE html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1022869
-->
<head>
  <meta charset="utf-8">
  <title>Test for Bug 1022869</title>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <iframe src="about:blank"></iframe>
  <script type="text/javascript">

  var f = document.getElementsByTagName("iframe")[0];

  SimpleTest.waitForExplicitFinish();

  /** Test for Bug 1022869 **/
  function startTest() {
    // Initialize our cookie.
    document.cookie = "a=b";

    // Set a cookie in example.org so we can test that we can't read it in
    // third-party cases.
    f.contentWindow.location =
        "http://example.org/tests/dom/tests/mochitest/bugs/file_prime_cookie.html";
    waitForLoad().then(function() {
        // Cookies are set up, disallow third-party cookies and start the test.
        SpecialPowers.pushPrefEnv({ set: [
            ["network.cookie.cookieBehavior", 1],
          ]}, () => { continueTest(); });
    }).catch((e) => { ok(false, `Got exception: ${e}`) });
  }

  function waitForLoad() {
    return new Promise((resolve) => {
      window.addEventListener("message", function(msg) {
        info(`got message ${msg.data}`);
        resolve(msg.data);
      }, {once: true});
    });
  }

  async function continueTest() {
    var sameOrigin = "http://mochi.test:8888";
    var thirdParty = "http://example.org";
    var page = "tests/dom/tests/mochitest/bugs/file_cookieOutputter.html"
    var redirect = "tests/dom/tests/mochitest/bugs/file_redirector.sjs";

    function createRedirect(firstOrigin, secondOrigin) {
      return `${firstOrigin}/${redirect}?${secondOrigin}/${page}`;
    }

    info("starting test");

    // Same origin to same origin.
    f.contentWindow.location = createRedirect(sameOrigin, sameOrigin);
    let cookie = await waitForLoad();
    is(cookie, "a=b", "got the cookie");

    // Cross origin to cross origin.
    f.contentWindow.location = createRedirect(thirdParty, thirdParty);
    cookie = await waitForLoad();
    is(cookie, "", "no third-party cookies");

    // Same origin to cross origin.
    f.contentWindow.location = createRedirect(sameOrigin, thirdParty);
    cookie = await waitForLoad();
    is(cookie, "", "no third-party cookies");

    // Cross origin to same origin
    f.contentWindow.location = createRedirect(thirdParty, sameOrigin);
    cookie = await waitForLoad();
    is(cookie, "a=b", "got the cookie");

    SimpleTest.finish();
  }
  </script>
</head>
<body onload="startTest()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1022869">Mozilla Bug 1022869</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
</html>