summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
Diffstat (limited to 'application')
-rw-r--r--application/palemoon/base/content/newtab/newTab.js1
-rw-r--r--application/palemoon/base/content/newtab/transformations.js26
-rw-r--r--application/palemoon/base/content/newtab/updater.js65
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);
}
};