docshell/test/mochitest/test_triggeringprincipal_location_seturi.html
author Byron Campen [:bwc] <docfaraday@gmail.com>
Mon, 29 Apr 2019 15:51:30 +0000
changeset 471964 f8a6a019f873aaebc47740ea1423c0985aaedf69
parent 469640 c9c0c6f2eed54a187e124942e53c3660b4cf17d8
child 480827 fbbe113aeef2f44741248ef15be66562e66adf6c
permissions -rw-r--r--
Bug 1531803 - Part 3: Only set track id on JsepTrack if we're configured to emit track ids in SDP, and simplify some code. r=mjf Differential Revision: https://phabricator.services.mozilla.com/D25796

<!DOCTYPE html>
<html>
<head>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>        
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>

<script type="text/javascript">

SimpleTest.waitForExplicitFinish();

const SAME_ORIGIN_URI = "http://mochi.test:8888/tests/docshell/test/dummy_page.html";
const CROSS_ORIGIN_URI = "http://example.com/tests/docshell/test/dummy_page.html";
const NUMBER_OF_TESTS = 3;
let testCounter = 0;

function checkFinish() {
  testCounter++;
  if (testCounter < NUMBER_OF_TESTS) {
    return;
  }
  SimpleTest.finish();
}

// ---- test 1 ----

let myFrame1 = document.createElement("iframe");
myFrame1.src = SAME_ORIGIN_URI;
myFrame1.addEventListener("load", checkLoadFrame1);
document.documentElement.appendChild(myFrame1);

function checkLoadFrame1() {
  myFrame1.removeEventListener("load", checkLoadFrame1);
  // window.location.href is no longer cross-origin accessible in gecko.
  is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI,
    "initial same origin dummy loaded into frame1");

  SpecialPowers.wrap(myFrame1.contentWindow).location.hash = "#bar";
  is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI + "#bar",
    "initial same origin dummy#bar loaded into iframe1");

  myFrame1.addEventListener("load", checkNavFrame1);
  myFrame1.src = CROSS_ORIGIN_URI;
}

function checkNavFrame1() {
  myFrame1.removeEventListener("load", checkNavFrame1);
  is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, CROSS_ORIGIN_URI,
    "cross origin dummy loaded into frame1");

  myFrame1.addEventListener("load", checkBackNavFrame1);
  myFrame1.src = SAME_ORIGIN_URI + "#bar";
}

function checkBackNavFrame1() {
  myFrame1.removeEventListener("load", checkBackNavFrame1);
  is(SpecialPowers.wrap(myFrame1.contentWindow).location.href, SAME_ORIGIN_URI + "#bar",
    "navagiating back to same origin dummy for frame1");
  checkFinish();
}

// ---- test 2 ----

let myFrame2 = document.createElement("iframe");
myFrame2.src = "about:blank";
myFrame2.addEventListener("load", checkLoadFrame2);
document.documentElement.appendChild(myFrame2);

function checkLoadFrame2() {
  myFrame2.removeEventListener("load", checkLoadFrame2);
  is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank",
    "initial about:blank frame loaded");

  myFrame2.contentWindow.location.hash = "#foo";
  is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank#foo",
      "about:blank#foo frame loaded");

  myFrame2.addEventListener("load", checkHistoryFrame2);
  myFrame2.src = "about:blank";
}

function checkHistoryFrame2() {
  myFrame2.removeEventListener("load", checkHistoryFrame2);
  is(SpecialPowers.wrap(myFrame2.contentWindow).location.href, "about:blank",
    "about:blank frame loaded again");
  checkFinish();
}

// ---- test 3 ----

let myFrame3 = document.createElement("frame");
document.documentElement.appendChild(myFrame3);
myFrame3.contentWindow.location.hash = "#foo";

is(myFrame3.contentWindow.location.href, "about:blank#foo",
   "created history entry with about:blank#foo");
checkFinish();

</script>
</body>
</html>