48 строки
1.5 KiB
JavaScript
48 строки
1.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
function run_test() {
|
|
let ssvc = Components.classes["@mozilla.org/calendar/startup-service;1"]
|
|
.getService(Components.interfaces.nsIObserver);
|
|
|
|
let first = {
|
|
startup: function(aListener) {
|
|
second.canStart = true;
|
|
aListener.onResult(null, Cr.NS_OK);
|
|
},
|
|
shutdown: function(aListener) {
|
|
ok(this.canStop);
|
|
aListener.onResult(null, Cr.NS_OK);
|
|
}
|
|
};
|
|
|
|
let second = {
|
|
startup: function(aListener) {
|
|
ok(this.canStart);
|
|
aListener.onResult(null, Cr.NS_OK);
|
|
},
|
|
shutdown: function(aListener) {
|
|
first.canStop = true;
|
|
aListener.onResult(null, Cr.NS_OK);
|
|
}
|
|
};
|
|
|
|
// Change the startup order so we can test our services
|
|
let oldStartupOrder = ssvc.wrappedJSObject.getStartupOrder;
|
|
ssvc.wrappedJSObject.getStartupOrder = function() {
|
|
let origOrder = oldStartupOrder.call(this);
|
|
|
|
let notify = origOrder[origOrder.length - 1];
|
|
return [first, second, notify];
|
|
};
|
|
|
|
// Pretend a startup run
|
|
ssvc.observe(null, "profile-after-change", null);
|
|
ok(second.canStart);
|
|
|
|
// Pretend a stop run
|
|
ssvc.observe(null, "profile-before-change", null);
|
|
ok(first.canStop);
|
|
}
|