Chromium Code Reviews| 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 d7374c48f783c3635c9b30f1d2ff85df41a3adbb..88e1f9ae6cd349fc209f32d71ee35db379bd2561 100644 |
| --- a/chrome/browser/resources/ntp4/apps_page.js |
| +++ b/chrome/browser/resources/ntp4/apps_page.js |
| @@ -327,6 +327,27 @@ cr.define('ntp4', function() { |
| menu.setupForApp(this); |
| return menu.menu; |
| }, |
| + |
| + /** |
| + * Returns whether this element can be 'removed' from chrome (i.e. whether |
| + * the user can drag it onto the trash and expect something to happen). |
| + * @return {boolean} True if the app can be uninstalled. |
| + */ |
| + canBeRemoved: function() { |
| + return this.appData_.can_uninstall; |
| + }, |
| + |
| + /** |
| + * Uninstalls the app after it's been dropped on the trash. |
| + * @return {boolean} True if the app can be uninstalled. |
|
Rick Byers
2011/08/08 15:24:15
Remove - doesn't return anything
Evan Stade
2011/08/08 18:26:58
Done.
|
| + */ |
| + removeFromChrome: function() { |
| + chrome.send('uninstallApp', [this.appData_.id, true]); |
| + |
| + var tile = this.parentNode; |
| + tile.tilePage.cleanupDrag(); |
| + tile.parentNode.removeChild(tile); |
| + }, |
| }; |
| var TilePage = ntp4.TilePage; |
| @@ -384,7 +405,31 @@ cr.define('ntp4', function() { |
| }, |
| /** @inheritDoc */ |
| - addOutsideData: function(dataTransfer, index) { |
| + addDragData: function(dataTransfer, index) { |
| + var currentlyDraggingTile = ntp4.getCurrentlyDraggingTile(); |
| + if (currentlyDraggingTile) { |
| + var tileContents = currentlyDraggingTile.firstChild; |
| + if (tileContents.classList.contains('app')) { |
| + this.tileGrid_.insertBefore( |
| + currentlyDraggingTile, |
| + this.tileElements_[index]); |
| + this.tileMoved(currentlyDraggingTile); |
| + } else if (tileContents.classList.contains('most-visited')) { |
| + this.generateAppForLink(tileContents.data); |
| + } |
| + } else { |
| + this.addOutsideData_(e.dataTransfer, index); |
| + } |
| + }, |
| + |
| + /** |
| + * Adds drag data that has been dropped from a source that is not a tile. |
| + * @param {Object} dataTransfer The data transfer object that holds drop |
| + * data. |
| + * @param {number} index The index for the new data. |
| + * @private |
| + */ |
| + addOutsideData_: function(dataTransfer, index) { |
| var url = dataTransfer.getData('url'); |
| assert(url); |
| if (!url) |
| @@ -417,9 +462,12 @@ cr.define('ntp4', function() { |
| /** |
| * Creates a new crx-less app manifest and installs it. |
| * @param {Object} data The data object describing the link. Must have |url| |
| - * and |title| members. |
| + * and |title| members. |
| + * TODO(estade): pass along an index. |
| */ |
| generateAppForLink: function(data) { |
| + assert(data.url != undefined); |
| + assert(data.title != undefined); |
| chrome.send('generateAppForLink', [data.url, data.title]); |
| }, |