"use strict"; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Promise", "resource://gre/modules/Promise.jsm"); /** * A wrapper for the findbar's method "close", which is not synchronous * because of animation. */ function closeFindbarAndWait(findbar) { return new Promise((resolve) => { if (findbar.hidden) { resolve(); return; } findbar.addEventListener("transitionend", function cont(aEvent) { if (aEvent.propertyName != "visibility") { return; } findbar.removeEventListener("transitionend", cont); resolve(); }); findbar.close(); }); } function pushPrefs(...aPrefs) { let deferred = Promise.defer(); SpecialPowers.pushPrefEnv({"set": aPrefs}, deferred.resolve); return deferred.promise; }