summaryrefslogtreecommitdiffstats
path: root/dom/plugins/test/mochitest/pluginstream.js
blob: c4ab769d5104d1a48f9b96d06e9a06f13a9d737e (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
SimpleTest.waitForExplicitFinish();

function frameLoaded(finishWhenCalled = true, lastObject = false) {
  var testframe = document.getElementById("testframe");
  function getNode(list) {
    if (list.length === 0) {
      return undefined;
    }
    return lastObject ? list[list.length - 1] : list[0];
  }
  var embed = getNode(document.getElementsByTagName("embed"));
  if (undefined === embed) {
    embed = getNode(document.getElementsByTagName("object"));
  }

  // In the file:// URI case, this ends up being cross-origin.
  // Skip these checks in that case.
  if (testframe.contentDocument) {
    var content = testframe.contentDocument.body.innerHTML;
    if (!content.length) {
      return;
    }

    var filename =
      embed.getAttribute("src") ||
      embed.getAttribute("geturl") ||
      embed.getAttribute("geturlnotify") ||
      embed.getAttribute("data");

    var req = new XMLHttpRequest();
    req.open("GET", filename, false);
    req.overrideMimeType("text/plain; charset=x-user-defined");
    req.send(null);
    is(req.status, 200, "bad XMLHttpRequest status");
    is(
      content,
      req.responseText.replace(/\r\n/g, "\n"),
      "content doesn't match"
    );
  }

  is(embed.getError(), "pass", "plugin reported error");
  if (finishWhenCalled) {
    SimpleTest.finish();
  }
}