1 Cu.import("resource://gre/modules/Promise.jsm");
3 const SINGLE_TRY_TIMEOUT = 100;
4 const NUMBER_OF_TRIES = 30;
6 function waitForConditionPromise(condition, timeoutMsg, tryCount=NUMBER_OF_TRIES) {
7 let defer = Promise.defer();
9 function checkCondition() {
10 if (tries >= tryCount) {
11 defer.reject(timeoutMsg);
15 conditionPassed = condition();
17 return defer.reject(e);
19 if (conditionPassed) {
20 return defer.resolve();
23 setTimeout(checkCondition, SINGLE_TRY_TIMEOUT);
25 setTimeout(checkCondition, SINGLE_TRY_TIMEOUT);
29 function waitForCondition(condition, nextTest, errorMsg) {
30 waitForConditionPromise(condition, errorMsg).then(nextTest, (reason) => {
31 ok(false, reason + (reason.stack ? "\n" + e.stack : ""));