Bumping manifests a=b2g-bump
[gecko.git] / browser / modules / test / head.js
blob665e3550faf188bd36c08068908e566ffcf006df
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();
8   let tries = 0;
9   function checkCondition() {
10     if (tries >= tryCount) {
11       defer.reject(timeoutMsg);
12     }
13     var conditionPassed;
14     try {
15       conditionPassed = condition();
16     } catch (e) {
17       return defer.reject(e);
18     }
19     if (conditionPassed) {
20       return defer.resolve();
21     }
22     tries++;
23     setTimeout(checkCondition, SINGLE_TRY_TIMEOUT);
24   }
25   setTimeout(checkCondition, SINGLE_TRY_TIMEOUT);
26   return defer.promise;
29 function waitForCondition(condition, nextTest, errorMsg) {
30   waitForConditionPromise(condition, errorMsg).then(nextTest, (reason) => {
31     ok(false, reason + (reason.stack ? "\n" + e.stack : ""));
32   });