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

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

Issue 8637001: [NTP4] Auto-deletion of empty apps panes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: removing bits for refactor Created 8 years, 11 months 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
« no previous file with comments | « no previous file | chrome/browser/resources/ntp4/nav_dot.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/ntp4/apps_page.js
diff --git a/chrome/browser/resources/ntp4/apps_page.js b/chrome/browser/resources/ntp4/apps_page.js
index df194a6b024a386f6e603cf873d06fab13463294..5aea1ee4f0285e01912ea7fb86c724bcd191e8b6 100644
--- a/chrome/browser/resources/ntp4/apps_page.js
+++ b/chrome/browser/resources/ntp4/apps_page.js
@@ -275,17 +275,6 @@ cr.define('ntp4', function() {
},
/**
- * Removes the app tile from the page. Should be called after the app has
- * been uninstalled.
- */
- remove: function() {
- // Unset the ID immediately, because the app is already gone. But leave
- // the tile on the page as it animates out.
- this.id = '';
- this.tile.doRemove();
- },
-
- /**
* Set the URL of the icon from |appData_|. This won't actually show the
* icon until loadIcon() is called (for performance reasons; we don't want
* to load icons until we have to).
@@ -634,10 +623,10 @@ cr.define('ntp4', function() {
* @constructor
* @extends {TilePage}
*/
- function AppsPage() {
+ function AppsPage(ordinal) {
var el = new TilePage(appsPageGridValues);
el.__proto__ = AppsPage.prototype;
- el.initialize();
+ el.initialize(ordinal);
return el;
}
@@ -645,7 +634,8 @@ cr.define('ntp4', function() {
AppsPage.prototype = {
__proto__: TilePage.prototype,
- initialize: function() {
+ initialize: function(ordinal) {
+ this.ordinal_ = ordinal;
this.classList.add('apps-page');
this.addEventListener('cardselected', this.onCardSelected_);
@@ -653,12 +643,24 @@ cr.define('ntp4', function() {
// the app notification bubbles when the app card slides in and out of
// view.
this.addEventListener('carddeselected', this.onCardDeselected_);
- this.addEventListener('cardSelectionCompleted',
- this.onCardSelectionCompleted_);
+ this.addEventListener(cr.ui.CardSlider.EventType.CARD_CHANGE_ENDED,
+ this.onCardChangeEnded_);
+
+ this.addEventListener(TilePage.EventType.TILE_ADDED, this.onTileAdded_);
this.content_.addEventListener('scroll', this.onScroll_.bind(this));
},
+ get ordinal() {
+ assert(typeof this.ordinal_ == 'string' && this.ordinal_);
+ return this.ordinal_;
+ },
+
+ set ordinal(ordinal) {
+ assert(typeof ordinal == 'string' && ordinal);
+ this.ordinal_ = ordinal;
+ },
+
/**
* Creates an app DOM element and places it at the last position on the
* page.
@@ -672,10 +674,7 @@ cr.define('ntp4', function() {
ntp4.getCardSlider().selectCardByValue(this);
this.content_.scrollTop = this.content_.scrollHeight;
}
- var app = new App(appData);
- if (this.classList.contains('selected-card'))
- app.loadIcon();
- this.appendTile(app, animate);
+ this.appendTile(new App(appData), animate);
},
/**
@@ -693,11 +692,24 @@ cr.define('ntp4', function() {
},
/**
- * Handler for the 'cardSelectionCompleted' event, fired when the app card
- * is done transitioning into view (and all the apps have repositioned).
+ * Handler for tile additions to this page.
+ * @param {Event} e The TILE_MOVED event.
+ */
+ onTileAdded_: function(e) {
+ assert(e.tilePage == this);
+ var tileContents = e.tilePage.tiles[e.tileIndex].firstChild;
+ assert(tileContents instanceof App);
+ if (e.tilePage.classList.contains('selected-card'))
+ tileContents.loadIcon();
+ },
+
+ /**
+ * Handler for the when this.cardSlider ends change its card. If animated,
+ * this happens when the -webkit-transition is done, otherwise happens
+ * immediately (but after CardSlider.EventType.CARD_CHANGED).
* @private
*/
- onCardSelectionCompleted_: function(e) {
+ onCardChangeEnded: function(e) {
for (var i = 0; i < this.tileElements_.length; i++) {
var app = this.tileElements_[i].firstChild;
assert(app instanceof App);
@@ -761,18 +773,23 @@ cr.define('ntp4', function() {
if (currentlyDraggingTile) {
var tileContents = currentlyDraggingTile.firstChild;
if (tileContents.classList.contains('app')) {
- sourceId = currentlyDraggingTile.tilePage == this ?
- DRAG_SOURCE.SAME_APPS_PANE : DRAG_SOURCE.OTHER_APPS_PANE;
- this.tileGrid_.insertBefore(
- currentlyDraggingTile,
- this.tileElements_[index]);
+ var originalPage = currentlyDraggingTile.tilePage;
+ var samePageDrag = originalPage == this;
+ sourceId = samePageDrag ? DRAG_SOURCE.SAME_APPS_PANE :
+ DRAG_SOURCE.OTHER_APPS_PANE;
+ this.tileGrid_.insertBefore(currentlyDraggingTile,
+ this.tileElements_[index]);
this.tileMoved(currentlyDraggingTile);
+ if (!samePageDrag)
+ originalPage.fireRemovedEvent(true);
+ if (originalPage)
+ originalPage.cleanupDrag();
} else if (currentlyDraggingTile.querySelector('.most-visited')) {
this.generateAppForLink(tileContents.data);
sourceId = DRAG_SOURCE.MOST_VISITED_PANE;
}
} else {
- this.addOutsideData_(dataTransfer, index);
+ this.addOutsideData_(dataTransfer);
sourceId = DRAG_SOURCE.OUTSIDE_NTP;
}
« no previous file with comments | « no previous file | chrome/browser/resources/ntp4/nav_dot.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698