--- a/browser/components/customizableui/CustomizeMode.jsm
+++ b/browser/components/customizableui/CustomizeMode.jsm
@@ -229,25 +229,26 @@ CustomizeMode.prototype = {
// Always disable the reset button at the start of customize mode, it'll be re-enabled
// if necessary when we finish entering:
let resetButton = this.document.getElementById("customization-reset-button");
resetButton.setAttribute("disabled", "true");
Task.spawn(function*() {
// We shouldn't start customize mode until after browser-delayed-startup has finished:
if (!this.window.gBrowserInit.delayedStartupFinished) {
- let delayedStartupDeferred = Promise.defer();
- let delayedStartupObserver = function(aSubject) {
- if (aSubject == this.window) {
- Services.obs.removeObserver(delayedStartupObserver, "browser-delayed-startup-finished");
- delayedStartupDeferred.resolve();
- }
- }.bind(this);
- Services.obs.addObserver(delayedStartupObserver, "browser-delayed-startup-finished", false);
- yield delayedStartupDeferred.promise;
+ yield new Promise(resolve => {
+ let delayedStartupObserver = aSubject => {
+ if (aSubject == this.window) {
+ Services.obs.removeObserver(delayedStartupObserver, "browser-delayed-startup-finished");
+ resolve();
+ }
+ };
+
+ Services.obs.addObserver(delayedStartupObserver, "browser-delayed-startup-finished", false);
+ });
}
let toolbarVisibilityBtn = document.getElementById(kToolbarVisibilityBtn);
let togglableToolbars = window.getTogglableToolbars();
let bookmarksToolbar = document.getElementById("PersonalToolbar");
if (togglableToolbars.length == 0) {
toolbarVisibilityBtn.setAttribute("hidden", "true");
} else {
@@ -557,59 +558,59 @@ CustomizeMode.prototype = {
* order - customize-entered, customize-exiting, remove LWT swapping,
* pre-customization mode.
*
* When in the customize-entering, customize-entered, or customize-exiting
* phases, there is a "customizing" attribute set on the main-window to simplify
* excluding certain styles while in any phase of customize mode.
*/
_doTransition: function(aEntering) {
- let deferred = Promise.defer();
let deck = this.document.getElementById("content-deck");
-
- let customizeTransitionEnd = (aEvent) => {
- if (aEvent != "timedout" &&
- (aEvent.originalTarget != deck || aEvent.propertyName != "margin-left")) {
- return;
- }
- this.window.clearTimeout(catchAllTimeout);
- // We request an animation frame to do the final stage of the transition
- // to improve perceived performance. (bug 962677)
- this.window.requestAnimationFrame(() => {
- deck.removeEventListener("transitionend", customizeTransitionEnd);
+ let customizeTransitionEndPromise = new Promise(resolve => {
+ let customizeTransitionEnd = (aEvent) => {
+ if (aEvent != "timedout" &&
+ (aEvent.originalTarget != deck || aEvent.propertyName != "margin-left")) {
+ return;
+ }
+ this.window.clearTimeout(catchAllTimeout);
+ // We request an animation frame to do the final stage of the transition
+ // to improve perceived performance. (bug 962677)
+ this.window.requestAnimationFrame(() => {
+ deck.removeEventListener("transitionend", customizeTransitionEnd);
- if (!aEntering) {
- this.document.documentElement.removeAttribute("customize-exiting");
- this.document.documentElement.removeAttribute("customizing");
- } else {
- this.document.documentElement.setAttribute("customize-entered", true);
- this.document.documentElement.removeAttribute("customize-entering");
- }
- CustomizableUI.dispatchToolboxEvent("customization-transitionend", aEntering, this.window);
+ if (!aEntering) {
+ this.document.documentElement.removeAttribute("customize-exiting");
+ this.document.documentElement.removeAttribute("customizing");
+ } else {
+ this.document.documentElement.setAttribute("customize-entered", true);
+ this.document.documentElement.removeAttribute("customize-entering");
+ }
+ CustomizableUI.dispatchToolboxEvent("customization-transitionend", aEntering, this.window);
- deferred.resolve();
- });
- };
- deck.addEventListener("transitionend", customizeTransitionEnd);
+ resolve();
+ });
+ };
+ deck.addEventListener("transitionend", customizeTransitionEnd);
+ let catchAll = () => customizeTransitionEnd("timedout");
+ let catchAllTimeout = this.window.setTimeout(catchAll, kMaxTransitionDurationMs);
+ });
if (gDisableAnimation) {
this.document.getElementById("tab-view-deck").setAttribute("fastcustomizeanimation", true);
}
if (aEntering) {
this.document.documentElement.setAttribute("customizing", true);
this.document.documentElement.setAttribute("customize-entering", true);
} else {
this.document.documentElement.setAttribute("customize-exiting", true);
this.document.documentElement.removeAttribute("customize-entered");
}
- let catchAll = () => customizeTransitionEnd("timedout");
- let catchAllTimeout = this.window.setTimeout(catchAll, kMaxTransitionDurationMs);
- return deferred.promise;
+ return customizeTransitionEndPromise;
},
updateLWTStyling: function(aData) {
let docElement = this.document.documentElement;
if (!aData) {
let lwt = docElement._lightweightTheme;
aData = lwt.getData();
}
@@ -863,24 +864,22 @@ CustomizeMode.prototype = {
aNode.localName == "toolbarspacer";
},
isWrappedToolbarItem: function(aNode) {
return aNode.localName == "toolbarpaletteitem";
},
deferredWrapToolbarItem: function(aNode, aPlace) {
- let deferred = Promise.defer();
-
- dispatchFunction(function() {
- let wrapper = this.wrapToolbarItem(aNode, aPlace);
- deferred.resolve(wrapper);
- }.bind(this));
-
- return deferred.promise;
+ return new Promise(resolve => {
+ dispatchFunction(() => {
+ let wrapper = this.wrapToolbarItem(aNode, aPlace);
+ resolve(wrapper);
+ });
+ });
},
wrapToolbarItem: function(aNode, aPlace) {
if (!this.isCustomizableItem(aNode)) {
return aNode;
}
let wrapper = this.createOrUpdateWrapper(aNode, aPlace);
@@ -980,27 +979,27 @@ CustomizeMode.prototype = {
wrapper.addEventListener("mousedown", this);
wrapper.addEventListener("mouseup", this);
}
return wrapper;
},
deferredUnwrapToolbarItem: function(aWrapper) {
- let deferred = Promise.defer();
- dispatchFunction(function() {
- let item = null;
- try {
- item = this.unwrapToolbarItem(aWrapper);
- } catch (ex) {
- Cu.reportError(ex);
- }
- deferred.resolve(item);
- }.bind(this));
- return deferred.promise;
+ return new Promise(resolve => {
+ dispatchFunction(() => {
+ let item = null;
+ try {
+ item = this.unwrapToolbarItem(aWrapper);
+ } catch (ex) {
+ Cu.reportError(ex);
+ }
+ resolve(item);
+ });
+ });
},
unwrapToolbarItem: function(aWrapper) {
if (aWrapper.nodeName != "toolbarpaletteitem") {
return aWrapper;
}
aWrapper.removeEventListener("mousedown", this);
aWrapper.removeEventListener("mouseup", this);