docshell/test/mochitest/file_bug475636.sjs
author Byron Campen [:bwc] <docfaraday@gmail.com>
Mon, 29 Apr 2019 15:51:30 +0000
changeset 471964 f8a6a019f873aaebc47740ea1423c0985aaedf69
parent 439189 17c314f6930d2b8d6e456aa9e9d41407a45c3008
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

jsURL = "javascript:" + escape('window.parent.postMessage("JS uri ran", "*");\
return \'\
<script>\
window.parent.postMessage("Able to access private: " +\
  window.parent.private, "*");\
</script>\'');
dataURL = "data:text/html," + escape('<!DOCTYPE HTML>\
<script>\
try {\
  window.parent.postMessage("Able to access private: " +\
    window.parent.private, "*");\
}\
catch (e) {\
  window.parent.postMessage("pass", "*");\
}\
</script>');

tests = [
// Plain document should work as normal
'<!DOCTYPE HTML>\
<script>\
try {\
  window.parent.private;\
  window.parent.postMessage("pass", "*");\
}\
catch (e) {\
  window.parent.postMessage("Unble to access private", "*");\
}\
</script>',

// refresh to plain doc
{ refresh: "file_bug475636.sjs?1",
  doc: '<!DOCTYPE HTML>' },

// meta-refresh to plain doc
'<!DOCTYPE HTML>\
<head>\
  <meta http-equiv="refresh" content="0; url=file_bug475636.sjs?1">\
</head>',

// refresh to data url
{ refresh: dataURL,
  doc: '<!DOCTYPE HTML>' },

// meta-refresh to data url
'<!DOCTYPE HTML>\
<head>\
  <meta http-equiv="refresh" content="0; url=' + dataURL + '">\
</head>',

// refresh to js url should not be followed
{ refresh: jsURL,
  doc:
'<!DOCTYPE HTML>\
<script>\
setTimeout(function() {\
  window.parent.postMessage("pass", "*");\
}, 2000);\
</script>' },

// meta refresh to js url should not be followed
'<!DOCTYPE HTML>\
<head>\
  <meta http-equiv="refresh" content="0; url=' + jsURL + '">\
</head>\
<script>\
setTimeout(function() {\
  window.parent.postMessage("pass", "*");\
}, 2000);\
</script>'
];


function handleRequest(request, response)
{
  dump("@@@@@@@@@hi there: " + request.queryString + "\n");
  test = tests[parseInt(request.queryString, 10) - 1];
  response.setHeader("Content-Type", "text/html");

  if (!test) {
    response.write('<script>parent.postMessage("done", "*");</script>');
  }
  else if (typeof test == "string") {
    response.write(test);
  }
  else if (test.refresh) {
    response.setHeader("Refresh", "0; url=" + test.refresh);
    response.write(test.doc);
  }
}