mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-01-09 13:30:34 +00:00
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
const Cc = Components.classes;
|
|
const Ci = Components.interfaces;
|
|
|
|
var timer;
|
|
|
|
// This test XPConnect's ability to deal with a certain type of exception. In
|
|
// particular, bug 641378 meant that if an exception had both 'message' and
|
|
// 'result' properties, then it wouldn't successfully read the 'result' field
|
|
// out of the exception (and sometimes crash).
|
|
//
|
|
// In order to make the test not fail completely on a negative result, we use
|
|
// a timer. The first time through the timer, we throw our special exception.
|
|
// Then, the second time through, we can test to see if XPConnect properly
|
|
// dealt with our exception.
|
|
var exception = {
|
|
message: "oops, something failed!",
|
|
|
|
tries: 0,
|
|
get result() {
|
|
++this.tries;
|
|
return 3;
|
|
}
|
|
};
|
|
|
|
var callback = {
|
|
tries: 0,
|
|
notify: function (timer) {
|
|
if (++this.tries === 1)
|
|
throw exception;
|
|
|
|
try {
|
|
do_check_true(exception.tries >= 1);
|
|
} finally {
|
|
timer.cancel();
|
|
timer = null;
|
|
do_test_finished();
|
|
}
|
|
}
|
|
};
|
|
|
|
function run_test() {
|
|
do_test_pending();
|
|
|
|
timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
|
timer.initWithCallback(callback, 0, timer.TYPE_REPEATING_SLACK);
|
|
}
|