blob: 8027cd5f8484702c35348eaf8b405684915cf283 [file] [edit]
"use strict";
/**
* Waits until we have at least one frame rendered, regardless of the engine.
*
* @returns {Promise}
*/
function waitForAtLeastOneFrame() {
return new Promise(resolve => {
// Different web engines work slightly different on this area but 1) waiting
// for two requestAnimationFrames() to happen one after another and 2)
// adding a step_timeout(0) to guarantee events have finished should be
// sufficient to ensure at least one frame has been generated anywhere.
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1785615
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
setTimeout(resolve, 0);
});
});
});
}