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

Side by Side Diff: chrome/browser/resources/ntp4/apps_page.js

Issue 7592001: ntp4: most visited dragging onto apps page (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/resources/ntp4/most_visited_page.css » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('ntp4', function() { 5 cr.define('ntp4', function() {
6 'use strict'; 6 'use strict';
7 7
8 var localStrings = new LocalStrings; 8 var localStrings = new LocalStrings;
9 9
10 var APP_LAUNCH = { 10 var APP_LAUNCH = {
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 * Returns a pointer to the context menu for this app. All apps share the 320 * Returns a pointer to the context menu for this app. All apps share the
321 * singleton AppContextMenu. This function is called by the 321 * singleton AppContextMenu. This function is called by the
322 * ContextMenuHandler in response to the 'contextmenu' event. 322 * ContextMenuHandler in response to the 'contextmenu' event.
323 * @type {cr.ui.Menu} 323 * @type {cr.ui.Menu}
324 */ 324 */
325 get contextMenu() { 325 get contextMenu() {
326 var menu = AppContextMenu.getInstance(); 326 var menu = AppContextMenu.getInstance();
327 menu.setupForApp(this); 327 menu.setupForApp(this);
328 return menu.menu; 328 return menu.menu;
329 }, 329 },
330
331 /**
332 * Returns whether this element can be 'removed' from chrome (i.e. whether
333 * the user can drag it onto the trash and expect something to happen).
334 * @return {boolean} True if the app can be uninstalled.
335 */
336 canBeRemoved: function() {
337 return this.appData_.can_uninstall;
338 },
339
340 /**
341 * Uninstalls the app after it's been dropped on the trash.
342 */
343 removeFromChrome: function() {
344 chrome.send('uninstallApp', [this.appData_.id, true]);
345
346 var tile = this.parentNode;
347 tile.tilePage.cleanupDrag();
348 tile.parentNode.removeChild(tile);
349 },
330 }; 350 };
331 351
332 var TilePage = ntp4.TilePage; 352 var TilePage = ntp4.TilePage;
333 353
334 // The fraction of the app tile size that the icon uses. 354 // The fraction of the app tile size that the icon uses.
335 var APP_IMG_SIZE_FRACTION = 4 / 5; 355 var APP_IMG_SIZE_FRACTION = 4 / 5;
336 356
337 var appsPageGridValues = { 357 var appsPageGridValues = {
338 // The fewest tiles we will show in a row. 358 // The fewest tiles we will show in a row.
339 minColCount: 3, 359 minColCount: 3,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 this.appendTile(new App(appData), animate); 397 this.appendTile(new App(appData), animate);
378 }, 398 },
379 399
380 /** @inheritDoc */ 400 /** @inheritDoc */
381 shouldAcceptDrag: function(e) { 401 shouldAcceptDrag: function(e) {
382 return ntp4.getCurrentlyDraggingTile() || 402 return ntp4.getCurrentlyDraggingTile() ||
383 (e.dataTransfer && e.dataTransfer.types.indexOf('url') != -1); 403 (e.dataTransfer && e.dataTransfer.types.indexOf('url') != -1);
384 }, 404 },
385 405
386 /** @inheritDoc */ 406 /** @inheritDoc */
387 addOutsideData: function(dataTransfer, index) { 407 addDragData: function(dataTransfer, index) {
408 var currentlyDraggingTile = ntp4.getCurrentlyDraggingTile();
409 if (currentlyDraggingTile) {
410 var tileContents = currentlyDraggingTile.firstChild;
411 if (tileContents.classList.contains('app')) {
412 this.tileGrid_.insertBefore(
413 currentlyDraggingTile,
414 this.tileElements_[index]);
415 this.tileMoved(currentlyDraggingTile);
416 } else if (tileContents.classList.contains('most-visited')) {
417 this.generateAppForLink(tileContents.data);
418 }
419 } else {
420 this.addOutsideData_(e.dataTransfer, index);
421 }
422 },
423
424 /**
425 * Adds drag data that has been dropped from a source that is not a tile.
426 * @param {Object} dataTransfer The data transfer object that holds drop
427 * data.
428 * @param {number} index The index for the new data.
429 * @private
430 */
431 addOutsideData_: function(dataTransfer, index) {
388 var url = dataTransfer.getData('url'); 432 var url = dataTransfer.getData('url');
389 assert(url); 433 assert(url);
390 if (!url) 434 if (!url)
391 return; 435 return;
392 436
393 // If the dataTransfer has html data, use that html's text contents as the 437 // If the dataTransfer has html data, use that html's text contents as the
394 // title of the new link. 438 // title of the new link.
395 var html = dataTransfer.getData('text/html'); 439 var html = dataTransfer.getData('text/html');
396 var title; 440 var title;
397 if (html) { 441 if (html) {
(...skipping 12 matching lines...) Expand all
410 if (data.title.length > 45) 454 if (data.title.length > 45)
411 data.title = data.title.substring(0,45); 455 data.title = data.title.substring(0,45);
412 if (data.title.length == 0) 456 if (data.title.length == 0)
413 data.title = data.url; 457 data.title = data.url;
414 this.generateAppForLink(data); 458 this.generateAppForLink(data);
415 }, 459 },
416 460
417 /** 461 /**
418 * Creates a new crx-less app manifest and installs it. 462 * Creates a new crx-less app manifest and installs it.
419 * @param {Object} data The data object describing the link. Must have |url| 463 * @param {Object} data The data object describing the link. Must have |url|
420 * and |title| members. 464 * and |title| members.
465 * TODO(estade): pass along an index.
421 */ 466 */
422 generateAppForLink: function(data) { 467 generateAppForLink: function(data) {
468 assert(data.url != undefined);
469 assert(data.title != undefined);
423 chrome.send('generateAppForLink', [data.url, data.title]); 470 chrome.send('generateAppForLink', [data.url, data.title]);
424 }, 471 },
425 472
426 /** @inheritDoc */ 473 /** @inheritDoc */
427 tileMoved: function(draggedTile) { 474 tileMoved: function(draggedTile) {
428 if (!(draggedTile.firstChild instanceof App)) 475 if (!(draggedTile.firstChild instanceof App))
429 return; 476 return;
430 477
431 var pageIndex = ntp4.getAppsPageIndex(this); 478 var pageIndex = ntp4.getAppsPageIndex(this);
432 chrome.send('setPageIndex', [draggedTile.firstChild.appId, pageIndex]); 479 chrome.send('setPageIndex', [draggedTile.firstChild.appId, pageIndex]);
(...skipping 13 matching lines...) Expand all
446 var store = document.querySelector('.webstore'); 493 var store = document.querySelector('.webstore');
447 if (store) 494 if (store)
448 store.setAppsPromoData(data); 495 store.setAppsPromoData(data);
449 }; 496 };
450 497
451 return { 498 return {
452 APP_LAUNCH: APP_LAUNCH, 499 APP_LAUNCH: APP_LAUNCH,
453 AppsPage: AppsPage, 500 AppsPage: AppsPage,
454 }; 501 };
455 }); 502 });
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/ntp4/most_visited_page.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698