dom/tests/mochitest/bugs/test_bug1171215.html
author Gurzau Raul <rgurzau@mozilla.com>
Tue, 26 Feb 2019 22:09:25 +0200
changeset 519097 bc51c190590a057206eb960e3eca6ac7461c36a3
parent 519094 4cde0e38ada8218b273caa8ea90eae0307f9a589
child 519391 6a8401de32379f23a5544a7e0b5b1b16916fd581
permissions -rw-r--r--
Backed out 11 changesets (bug 1525245) for failing at test_cookies_thirdparty.js on a CLOSED TREE. Backed out changeset 1dcb31a1d5be (bug 1525245) Backed out changeset 4cde0e38ada8 (bug 1525245) Backed out changeset d3e99dd3fc32 (bug 1525245) Backed out changeset a565014fdd8d (bug 1525245) Backed out changeset 20f336320ce1 (bug 1525245) Backed out changeset d8ee13b6a17d (bug 1525245) Backed out changeset b79ec111bf41 (bug 1525245) Backed out changeset 858d08371107 (bug 1525245) Backed out changeset 1c359cdcf69f (bug 1525245) Backed out changeset d65fb2d2a243 (bug 1525245) Backed out changeset 28147c8790d3 (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>