Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 _("Make sure notify sends out the right notifications");
2 Cu.import("resource://services-sync/util.js");
4 function run_test() {
5 let ret, rightThis, didCall;
6 let obj = {
7 notify: Utils.notify("foo:"),
8 _log: {
9 trace: function() {}
10 },
12 func: function() this.notify("bar", "baz", function() {
13 rightThis = this == obj;
14 didCall = true;
15 return 5;
16 })(),
18 throwy: function() this.notify("bad", "one", function() {
19 rightThis = this == obj;
20 didCall = true;
21 throw 10;
22 })()
23 };
25 let state = 0;
26 let makeObs = function(topic) {
27 let obj = {
28 observe: function(subject, topic, data) {
29 this.state = ++state;
30 this.subject = subject;
31 this.topic = topic;
32 this.data = data;
33 }
34 };
36 Svc.Obs.add(topic, obj);
37 return obj;
38 };
40 _("Make sure a normal call will call and return with notifications");
41 rightThis = didCall = false;
42 let fs = makeObs("foo:bar:start");
43 let ff = makeObs("foo:bar:finish");
44 let fe = makeObs("foo:bar:error");
45 ret = obj.func();
46 do_check_eq(ret, 5);
47 do_check_true(rightThis);
48 do_check_true(didCall);
50 do_check_eq(fs.state, 1);
51 do_check_eq(fs.subject, undefined);
52 do_check_eq(fs.topic, "foo:bar:start");
53 do_check_eq(fs.data, "baz");
55 do_check_eq(ff.state, 2);
56 do_check_eq(ff.subject, 5);
57 do_check_eq(ff.topic, "foo:bar:finish");
58 do_check_eq(ff.data, "baz");
60 do_check_eq(fe.state, undefined);
61 do_check_eq(fe.subject, undefined);
62 do_check_eq(fe.topic, undefined);
63 do_check_eq(fe.data, undefined);
65 _("Make sure a throwy call will call and throw with notifications");
66 ret = null;
67 rightThis = didCall = false;
68 let ts = makeObs("foo:bad:start");
69 let tf = makeObs("foo:bad:finish");
70 let te = makeObs("foo:bad:error");
71 try {
72 ret = obj.throwy();
73 do_throw("throwy should have thrown!");
74 }
75 catch(ex) {
76 do_check_eq(ex, 10);
77 }
78 do_check_eq(ret, null);
79 do_check_true(rightThis);
80 do_check_true(didCall);
82 do_check_eq(ts.state, 3);
83 do_check_eq(ts.subject, undefined);
84 do_check_eq(ts.topic, "foo:bad:start");
85 do_check_eq(ts.data, "one");
87 do_check_eq(tf.state, undefined);
88 do_check_eq(tf.subject, undefined);
89 do_check_eq(tf.topic, undefined);
90 do_check_eq(tf.data, undefined);
92 do_check_eq(te.state, 4);
93 do_check_eq(te.subject, 10);
94 do_check_eq(te.topic, "foo:bad:error");
95 do_check_eq(te.data, "one");
96 }