summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/chrome/test_nsiconsolemessage.html
blob: 4e460225df14de3e101938eea2b6968a2c5a43f5 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="utf8">
  <title>Test for nsIConsoleMessages</title>
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="common.js"></script>
  <!-- Any copyright is dedicated to the Public Domain.
     - http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Make sure that nsIConsoleMessages are logged. See bug 859756.</p>

<script class="testbody" type="text/javascript">
"use strict";
SimpleTest.waitForExplicitFinish();

let expectedMessages = [];

async function startTest()
{
  removeEventListener("load", startTest);
  const {state} = await attachConsole(["PageError"]);
  onAttach(state);
}

function onAttach(aState)
{
  onLogMessage = onLogMessage.bind(null, aState);
  aState.webConsoleFront.on("logMessage", onLogMessage);

  expectedMessages = [{
    message: "hello world! bug859756",
    timeStamp: FRACTIONAL_NUMBER_REGEX,
  }];

  Services.console.logStringMessage("hello world! bug859756");

  info("waiting for messages");
}

const receivedMessages = [];

function onLogMessage(aState, aPacket)
{
  info("received message: " + aPacket.message);

  let found = false;
  for (const expected of expectedMessages) {
    if (expected.message == aPacket.message) {
      found = true;
      break;
    }
  }
  if (!found) {
    return;
  }

  receivedMessages.push(aPacket);
  if (receivedMessages.length != expectedMessages.length) {
    return;
  }

  aState.webConsoleFront.off("logMessage", onLogMessage);

  checkObject(receivedMessages, expectedMessages);

  closeDebugger(aState, () => SimpleTest.finish());
}

addEventListener("load", startTest);
</script>
</body>
</html>