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
75
76
77
|
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_URI = "data:text/html;charset=utf-8,<p>Web Console test for " +
"notifications";
add_task(function* () {
yield loadTab(TEST_URI);
let consoleOpened = promise.defer();
let gotEvents = waitForEvents(consoleOpened.promise);
yield openConsole().then(() => {
consoleOpened.resolve();
});
yield gotEvents;
});
function waitForEvents(onConsoleOpened) {
let deferred = promise.defer();
function webConsoleCreated(id) {
Services.obs.removeObserver(observer, "web-console-created");
ok(HUDService.getHudReferenceById(id), "We have a hud reference");
content.wrappedJSObject.console.log("adding a log message");
}
function webConsoleDestroyed(id) {
Services.obs.removeObserver(observer, "web-console-destroyed");
ok(!HUDService.getHudReferenceById(id), "We do not have a hud reference");
executeSoon(deferred.resolve);
}
function webConsoleMessage(id, nodeID) {
Services.obs.removeObserver(observer, "web-console-message-created");
ok(id, "we have a console ID");
is(typeof nodeID, "string", "message node id is a string");
onConsoleOpened.then(closeConsole);
}
let observer = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
observe: function observe(subject, topic, data) {
subject = subject.QueryInterface(Ci.nsISupportsString);
switch (topic) {
case "web-console-created":
webConsoleCreated(subject.data);
break;
case "web-console-destroyed":
webConsoleDestroyed(subject.data);
break;
case "web-console-message-created":
webConsoleMessage(subject, data);
break;
default:
break;
}
},
init: function init() {
Services.obs.addObserver(this, "web-console-created", false);
Services.obs.addObserver(this, "web-console-destroyed", false);
Services.obs.addObserver(this, "web-console-message-created", false);
}
};
observer.init();
return deferred.promise;
}
|