| Index: chrome/browser/resources/ntp4/tile_page.js
|
| diff --git a/chrome/browser/resources/ntp4/tile_page.js b/chrome/browser/resources/ntp4/tile_page.js
|
| index b5ab15d0da0b41a68dd75cc9b1a97e31b9056570..a0fe5de53edaab1383159388f66d2cd567e1dd4e 100644
|
| --- a/chrome/browser/resources/ntp4/tile_page.js
|
| +++ b/chrome/browser/resources/ntp4/tile_page.js
|
| @@ -290,10 +290,23 @@ cr.define('ntp4', function() {
|
| },
|
|
|
| /**
|
| - * Called when an app is removed from Chrome. Animates its disappearance.
|
| + * Called when a tile is removed from a tilePage. Animates its disappearance
|
| + * if |opt_animate| is truthy.
|
| + * @param {=boolean} opt_animate Whether the removal should be animated.
|
| + * @param {=boolean} opt_dontDelete Whether we should auto-delete an empty
|
| + * apps page if the last tile is removed.
|
| + * @return {Element} The tile being removed.
|
| */
|
| - doRemove: function() {
|
| - this.firstChild.classList.add('removing-tile-contents');
|
| + remove: function(opt_animate, opt_dontDelete) {
|
| + var owningPage = this.tilePage;
|
| + if (opt_animate)
|
| + owningPage.classList.add('animating-tile-page');
|
| + this.parentNode.removeChild(this);
|
| + owningPage.calculateLayoutValues_();
|
| + owningPage.cleanupDrag();
|
| + if (owningPage instanceof ntp4.AppsPage && !opt_dontDelete)
|
| + ntp4.removeAppsPageIfEmpty(owningPage, opt_animate);
|
| + return this;
|
| },
|
|
|
| /**
|
| @@ -304,7 +317,7 @@ cr.define('ntp4', function() {
|
| if (this.firstChild.classList.contains('new-tile-contents'))
|
| this.firstChild.classList.remove('new-tile-contents');
|
| if (this.firstChild.classList.contains('removing-tile-contents'))
|
| - this.tilePage.removeTile(this, true);
|
| + this.remove(true);
|
| },
|
| };
|
|
|
| @@ -498,10 +511,26 @@ cr.define('ntp4', function() {
|
| },
|
|
|
| /**
|
| + * Removes the tilePage from the DOM and cleans up event handlers.
|
| + */
|
| + remove: function() {
|
| + // This checks arguments.length as most remove functions have a boolean
|
| + // |opt_animate| argument, but that's not necesarilly applicable to
|
| + // removing a tilePage. Selecting a different card in an animated way and
|
| + // deleting the card afterward is probably a better choice.
|
| + assert(typeof arguments[0] != 'boolean',
|
| + 'This function takes no |opt_animate| argument.');
|
| + assert(this.tileCount == 0, 'Only removal of an empty page is allowed.');
|
| + this.tearDown_();
|
| + this.parentNode.removeChild(this);
|
| + },
|
| +
|
| + /**
|
| * Cleans up resources that are no longer needed after this TilePage
|
| * instance is removed from the DOM.
|
| + * @private
|
| */
|
| - tearDown: function() {
|
| + tearDown_: function() {
|
| this.eventTracker.removeAll();
|
| },
|
|
|
| @@ -541,21 +570,6 @@ cr.define('ntp4', function() {
|
| },
|
|
|
| /**
|
| - * Removes the given tile and animates the respositioning of the other
|
| - * tiles.
|
| - * @param {HTMLElement} tile The tile to remove from |tileGrid_|.
|
| - * @param {?boolean} animate If true, remaining tiles will animate.
|
| - */
|
| - removeTile: function(tile, animate) {
|
| - if (animate)
|
| - this.classList.add('animating-tile-page');
|
| - var index = tile.index;
|
| - tile.parentNode.removeChild(tile);
|
| - this.calculateLayoutValues_();
|
| - this.cleanupDrag();
|
| - },
|
| -
|
| - /**
|
| * Removes all tiles from the page.
|
| */
|
| removeAllTiles: function() {
|
| @@ -1118,8 +1132,11 @@ cr.define('ntp4', function() {
|
| var originalPage = currentlyDraggingTile ?
|
| currentlyDraggingTile.tilePage : null;
|
| this.addDragData(e.dataTransfer, adjustedIndex);
|
| - if (originalPage)
|
| + if (originalPage) {
|
| originalPage.cleanupDrag();
|
| + if (originalPage instanceof ntp4.AppsPage)
|
| + ntp4.removeAppsPageIfEmpty(originalPage, true);
|
| + }
|
| }
|
|
|
| // Dropping the icon may cause topMargin to change, but changing it
|
| @@ -1142,7 +1159,10 @@ cr.define('ntp4', function() {
|
| return;
|
|
|
| this.addDragData(null, this.tileElements_.length);
|
| - originalPage.cleanupDrag();
|
| + if (originalPage instanceof ntp4.AppsPage)
|
| + ntp4.removeAppsPageIfEmpty(originalPage, true);
|
| + if (originalPage)
|
| + originalPage.cleanupDrag();
|
| },
|
|
|
| /**
|
|
|