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 cf46e19b606030421abdfde984d215bed5004043..4f3e84bd619774a47aec3af325afdde916857ed1 100644 |
| --- a/chrome/browser/resources/ntp4/apps_page.js |
| +++ b/chrome/browser/resources/ntp4/apps_page.js |
| @@ -79,6 +79,48 @@ cr.define('ntp4', function() { |
| }, |
| }; |
| + /** |
| + * Creates a new Link object. This is a stub implementation for now. |
| + * @param {Object} data The url and title. |
| + * @constructor |
| + * @extends {HTMLAnchorElement} |
| + */ |
| + function Link(data) { |
| + var el = cr.doc.createElement('a'); |
| + el.__proto__ = Link.prototype; |
| + el.data = data; |
| + el.initialize(); |
| + |
| + return el; |
| + }; |
| + |
| + Link.prototype = { |
| + __proto__: HTMLAnchorElement.prototype, |
| + |
| + initialize: function() { |
| + this.className = 'link'; |
| + var thumbnailDiv = this.ownerDocument.createElement('div'); |
| + this.appendChild(thumbnailDiv); |
| + |
| + var title = cr.doc.createElement('span'); |
|
arv (Not doing code reviews)
2011/05/20 23:49:07
Use this.ownerDocument here too
Evan Stade
2011/05/21 00:20:06
Done.
|
| + title.textContent = this.data.title; |
| + this.appendChild(title); |
| + }, |
| + |
| + /** |
| + * Set the size and position of the link tile. |
| + * @param {number} size The total size of |this|. |
| + * @param {number} x The x-position. |
| + * @param {number} y The y-position. |
| + * animate. |
| + */ |
| + setBounds: function(size, x, y) { |
| + this.style.width = this.style.height = size + 'px'; |
| + this.style.left = x + 'px'; |
| + this.style.top = y + 'px'; |
| + }, |
| + }; |
| + |
| // The fraction of the app tile size that the icon uses. |
| var APP_IMG_SIZE_FRACTION = 4 / 5; |
| @@ -124,6 +166,36 @@ cr.define('ntp4', function() { |
| appendApp: function(appData) { |
| this.appendTile(new App(appData)); |
| }, |
| + |
| + /** @inheritDoc */ |
| + shouldAcceptDrag: function(tile, dataTransfer) { |
| + return tile || (dataTransfer && dataTransfer.types.indexOf('url') != -1); |
| + }, |
| + |
| + /** @inheritDoc */ |
| + addOutsideData: function(dataTransfer, index) { |
| + var url = dataTransfer.getData('url'); |
| + assert(url); |
| + if (!url) |
| + return; |
| + |
| + // If the dataTransfer has html data, use that html's text contents as the |
| + // title of the new link. |
| + var html = dataTransfer.getData('text/html'); |
| + var title; |
| + if (html) { |
| + // It's important that we don't attach this node to the document |
| + // because it might contain scripts. |
| + var node = this.ownerDocument.createElement('div'); |
| + node.innerHTML = html; |
| + title = node.textContent; |
| + } |
| + if (!title) |
| + title = url; |
| + |
| + var data = {url: url, title: title}; |
| + this.addTileAt(new Link(data), index); |
| + }, |
| }; |
| return { |