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
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Test the monitor actor.
*/
"use strict";
function run_test()
{
let EventEmitter = require("devtools/shared/event-emitter");
function MonitorClient(client, form) {
this.client = client;
this.actor = form.monitorActor;
this.events = ["update"];
EventEmitter.decorate(this);
client.registerClient(this);
}
MonitorClient.prototype.destroy = function () {
this.client.unregisterClient(this);
};
MonitorClient.prototype.start = function (callback) {
this.client.request({
to: this.actor,
type: "start"
}, callback);
};
MonitorClient.prototype.stop = function (callback) {
this.client.request({
to: this.actor,
type: "stop"
}, callback);
};
let monitor, client;
// Start the monitor actor.
get_chrome_actors((c, form) => {
client = c;
monitor = new MonitorClient(client, form);
monitor.on("update", gotUpdate);
monitor.start(update);
});
let time = Date.now();
function update() {
let event = {
graph: "Test",
curve: "test",
value: 42,
time: time,
};
Services.obs.notifyObservers(null, "devtools-monitor-update", JSON.stringify(event));
}
function gotUpdate(type, packet) {
packet.data.forEach(function (event) {
// Ignore updates that were not sent by this test.
if (event.graph === "Test") {
do_check_eq(event.curve, "test");
do_check_eq(event.value, 42);
do_check_eq(event.time, time);
monitor.stop(function (aResponse) {
monitor.destroy();
finishClient(client);
});
}
});
}
do_test_pending();
}
|