Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: chrome/browser/resources/ntp4/tile_page.js

Issue 8637001: [NTP4] Auto-deletion of empty apps panes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebasing rbyers and csilv's changes Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)
Evan Stade 2011/12/02 00:53:24 don't do this, use inheritance or whatever (same a
Dan Beam 2011/12/02 01:25:11 So do something like .removeIfEmpty() on TilePage
Evan Stade 2011/12/02 02:39:49 no, I just meant in this context. Superclass is no
Dan Beam 2011/12/05 18:07:13 Done. (still ironing out the issues with this smal
+ 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();
},
/**

Powered by Google App Engine
This is Rietveld 408576698