diff options
Diffstat (limited to 'application/palemoon/base/content/newtab')
-rw-r--r-- | application/palemoon/base/content/newtab/newTab.js | 1 | ||||
-rw-r--r-- | application/palemoon/base/content/newtab/transformations.js | 26 | ||||
-rw-r--r-- | application/palemoon/base/content/newtab/updater.js | 65 |
3 files changed, 41 insertions, 51 deletions
diff --git a/application/palemoon/base/content/newtab/newTab.js b/application/palemoon/base/content/newtab/newTab.js index bba73fd7a..bea545ab5 100644 --- a/application/palemoon/base/content/newtab/newTab.js +++ b/application/palemoon/base/content/newtab/newTab.js @@ -11,7 +11,6 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/PageThumbs.jsm"); Cu.import("resource://gre/modules/NewTabUtils.jsm"); -Cu.import("resource:///modules/promise.js"); XPCOMUtils.defineLazyModuleGetter(this, "Rect", "resource://gre/modules/Geometry.jsm"); diff --git a/application/palemoon/base/content/newtab/transformations.js b/application/palemoon/base/content/newtab/transformations.js index 0711d7d0a..978116182 100644 --- a/application/palemoon/base/content/newtab/transformations.js +++ b/application/palemoon/base/content/newtab/transformations.js @@ -103,7 +103,7 @@ var gTransformation = { let style = aSite.node.style; let comp = getComputedStyle(aSite.node, null); - style.width = comp.getPropertyValue("width") + style.width = comp.getPropertyValue("width"); style.height = comp.getPropertyValue("height"); aSite.node.setAttribute("frozen", "true"); @@ -179,23 +179,23 @@ var gTransformation = { if (!aSite || aSite == gDrag.draggedSite) return; - let deferred = Promise.defer(); - batch.push(deferred.promise); - let cb = function () deferred.resolve(); - - if (!cells[aIndex]) + batch.push(new Promise(resolve => { + if (!cells[aIndex]) { // The site disappeared from the grid, hide it. - this.hideSite(aSite, cb); - else if (this._getNodeOpacity(aSite.node) != 1) + this.hideSite(aSite, resolve); + } else if (this._getNodeOpacity(aSite.node) != 1) { // The site disappeared before but is now back, show it. - this.showSite(aSite, cb); - else + this.showSite(aSite, resolve); + } else { // The site's position has changed, move it around. - this._moveSite(aSite, aIndex, {unfreeze: unfreeze, callback: cb}); + this._moveSite(aSite, aIndex, {unfreeze: unfreeze, callback: resolve}); + } + })); }, this); - let wait = Promise.promised(function () callback && callback()); - wait.apply(null, batch); + if (callback) { + Promise.all(batch).then(callback); + } }, /** diff --git a/application/palemoon/base/content/newtab/updater.js b/application/palemoon/base/content/newtab/updater.js index e6da37f87..2bab74d70 100644 --- a/application/palemoon/base/content/newtab/updater.js +++ b/application/palemoon/base/content/newtab/updater.js @@ -20,24 +20,22 @@ var gUpdater = { // Find all sites that remain in the grid. let sites = this._findRemainingSites(links); - let self = this; - // Remove sites that are no longer in the grid. - this._removeLegacySites(sites, function () { + this._removeLegacySites(sites, () => { // Freeze all site positions so that we can move their DOM nodes around // without any visual impact. - self._freezeSitePositions(sites); + this._freezeSitePositions(sites); // Move the sites' DOM nodes to their new position in the DOM. This will // have no visual effect as all the sites have been frozen and will // remain in their current position. - self._moveSiteNodes(sites); + this._moveSiteNodes(sites); // Now it's time to animate the sites actually moving to their new // positions. - self._rearrangeSites(sites, function () { + this._rearrangeSites(sites, () => { // Try to fill empty cells and finish. - self._fillEmptyCells(links, aCallback); + this._fillEmptyCells(links, aCallback); // Update other pages that might be open to keep them synced. gAllPages.update(gPage); @@ -134,21 +132,19 @@ var gUpdater = { if (!aSite || aSites.indexOf(aSite) != -1) return; - let deferred = Promise.defer(); - batch.push(deferred.promise); - - // Fade out the to-be-removed site. - gTransformation.hideSite(aSite, function () { - let node = aSite.node; + batch.push(new Promise(resolve => { + // Fade out the to-be-removed site. + gTransformation.hideSite(aSite, function () { + let node = aSite.node; - // Remove the site from the DOM. - node.parentNode.removeChild(node); - deferred.resolve(); - }); + // Remove the site from the DOM. + node.parentNode.removeChild(node); + resolve(); + }); + })); }); - let wait = Promise.promised(aCallback); - wait.apply(null, batch); + Promise.all(batch).then(aCallback); }, /** @@ -158,29 +154,24 @@ var gUpdater = { */ _fillEmptyCells: function Updater_fillEmptyCells(aLinks, aCallback) { let {cells, sites} = gGrid; - let batch = []; // Find empty cells and fill them. - sites.forEach(function (aSite, aIndex) { + Promise.all(sites.map((aSite, aIndex) => { if (aSite || !aLinks[aIndex]) - return; - - let deferred = Promise.defer(); - batch.push(deferred.promise); + return null; - // Create the new site and fade it in. - let site = gGrid.createSite(aLinks[aIndex], cells[aIndex]); + return new Promise(resolve => { + // Create the new site and fade it in. + let site = gGrid.createSite(aLinks[aIndex], cells[aIndex]); - // Set the site's initial opacity to zero. - site.node.style.opacity = 0; + // Set the site's initial opacity to zero. + site.node.style.opacity = 0; - // Flush all style changes for the dynamically inserted site to make - // the fade-in transition work. - window.getComputedStyle(site.node).opacity; - gTransformation.showSite(site, function () deferred.resolve()); - }); - - let wait = Promise.promised(aCallback); - wait.apply(null, batch); + // Flush all style changes for the dynamically inserted site to make + // the fade-in transition work. + window.getComputedStyle(site.node).opacity; + gTransformation.showSite(site, resolve); + }); + })).then(aCallback).catch(console.exception); } }; |