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

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

Issue 7602017: ntp4: respect non-default apps promo logo (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync'd against crx-less app change 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 | « chrome/browser/resources/ntp4/apps_page.css ('k') | chrome/browser/resources/ntp4/nav_dot.js » ('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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 174
175 initialize: function() { 175 initialize: function() {
176 assert(this.appData_.id, 'Got an app without an ID'); 176 assert(this.appData_.id, 'Got an app without an ID');
177 this.id = this.appData_.id; 177 this.id = this.appData_.id;
178 178
179 this.className = 'app'; 179 this.className = 'app';
180 180
181 var appContents = this.ownerDocument.createElement('div'); 181 var appContents = this.ownerDocument.createElement('div');
182 appContents.className = 'app-contents'; 182 appContents.className = 'app-contents';
183 183
184 var appImgContainer = this.ownerDocument.createElement('div');
185 appImgContainer.className = 'app-img-container';
186 this.appImgContainer_ = appImgContainer;
187
184 if (!this.appData_.icon_big_exists && this.appData_.icon_small_exists) 188 if (!this.appData_.icon_big_exists && this.appData_.icon_small_exists)
185 this.useSmallIcon_ = true; 189 this.useSmallIcon_ = true;
186 190
187 var appImg = this.ownerDocument.createElement('img'); 191 var appImg = this.ownerDocument.createElement('img');
188 appImg.src = this.useSmallIcon_ ? this.appData_.icon_small : 192 appImg.src = this.useSmallIcon_ ? this.appData_.icon_small :
189 this.appData_.icon_big; 193 this.appData_.icon_big;
194 appImgContainer.appendChild(appImg);
195
190 if (this.useSmallIcon_) { 196 if (this.useSmallIcon_) {
191 var imgDiv = this.ownerDocument.createElement('div'); 197 var imgDiv = this.ownerDocument.createElement('div');
192 imgDiv.className = 'app-icon-div'; 198 imgDiv.className = 'app-icon-div';
193 imgDiv.appendChild(appImg); 199 imgDiv.appendChild(appImgContainer);
194 imgDiv.addEventListener('click', this.onClick_.bind(this)); 200 imgDiv.addEventListener('click', this.onClick_.bind(this));
195 this.imgDiv_ = imgDiv; 201 this.imgDiv_ = imgDiv;
196 appContents.appendChild(imgDiv); 202 appContents.appendChild(imgDiv);
197 } else { 203 } else {
198 appImg.addEventListener('click', this.onClick_.bind(this)); 204 appImgContainer.addEventListener('click', this.onClick_.bind(this));
199 appContents.appendChild(appImg); 205 appContents.appendChild(appImgContainer);
200 } 206 }
201 this.appImg_ = appImg; 207 this.appImg_ = appImg;
202 208
203 var appSpan = this.ownerDocument.createElement('span'); 209 var appSpan = this.ownerDocument.createElement('span');
204 appSpan.textContent = this.appData_.name; 210 appSpan.textContent = this.appData_.name;
205 appSpan.addEventListener('click', this.onClick_.bind(this)); 211 appSpan.addEventListener('click', this.onClick_.bind(this));
206 appContents.appendChild(appSpan); 212 appContents.appendChild(appSpan);
207 this.appendChild(appContents); 213 this.appendChild(appContents);
214 this.appContents_ = appContents;
208 215
209 this.addEventListener('keydown', cr.ui.contextMenuHandler); 216 this.addEventListener('keydown', cr.ui.contextMenuHandler);
210 this.addEventListener('keyup', cr.ui.contextMenuHandler); 217 this.addEventListener('keyup', cr.ui.contextMenuHandler);
211 218
212 // This hack is here so that appContents.contextMenu will be the same as 219 // This hack is here so that appContents.contextMenu will be the same as
213 // this.contextMenu. 220 // this.contextMenu.
214 var self = this; 221 var self = this;
215 appContents.__defineGetter__('contextMenu', function() { 222 appContents.__defineGetter__('contextMenu', function() {
216 return self.contextMenu; 223 return self.contextMenu;
217 }); 224 });
(...skipping 14 matching lines...) Expand all
232 239
233 this.appsPromoExtras_ = $('apps-promo-extras-template').cloneNode(true); 240 this.appsPromoExtras_ = $('apps-promo-extras-template').cloneNode(true);
234 this.appsPromoExtras_.id = ''; 241 this.appsPromoExtras_.id = '';
235 this.appsPromoHeading_ = 242 this.appsPromoHeading_ =
236 this.appsPromoExtras_.querySelector('.apps-promo-heading'); 243 this.appsPromoExtras_.querySelector('.apps-promo-heading');
237 this.appsPromoLink_ = 244 this.appsPromoLink_ =
238 this.appsPromoExtras_.querySelector('.apps-promo-link'); 245 this.appsPromoExtras_.querySelector('.apps-promo-link');
239 this.appsPromoHide_ = 246 this.appsPromoHide_ =
240 this.appsPromoExtras_.querySelector('.apps-promo-hide'); 247 this.appsPromoExtras_.querySelector('.apps-promo-hide');
241 248
249 this.appsPromoLogo_ = this.ownerDocument.createElement('img');
250 this.appsPromoLogo_.className = 'apps-promo-logo';
251 this.appImgContainer_.appendChild(this.appsPromoLogo_);
252
242 this.appsPromoHide_.addEventListener('click', 253 this.appsPromoHide_.addEventListener('click',
243 this.onHidePromoClicked_.bind(this)); 254 this.onHidePromoClicked_.bind(this));
244 255
245 this.appendChild(this.appsPromoExtras_); 256 this.appendChild(this.appsPromoExtras_);
246 this.appsPromoExtras_.hidden = false; 257 this.appsPromoExtras_.hidden = false;
247 // TODO(estade): A ping url needs to be set for the app icon.
248 }, 258 },
249 259
250 /** 260 /**
251 * Handles when the "No, thanks" promo link is clicked. 261 * Handles when the "No, thanks" promo link is clicked.
252 * @private 262 * @private
253 */ 263 */
254 onHidePromoClicked_: function(e) { 264 onHidePromoClicked_: function(e) {
255 chrome.send('hideAppsPromo'); 265 chrome.send('hideAppsPromo');
256 this.setAppsPromoData(null); 266 this.setAppsPromoData(null);
257 }, 267 },
258 268
259 /** 269 /**
260 * Sets the apps promo appearance. If |data| is null, there is no promo. If 270 * Sets the apps promo appearance. If |data| is null, there is no promo. If
261 * |data| is non-null, it contains strings to be shown for the promo. The 271 * |data| is non-null, it contains strings to be shown for the promo. The
262 * promo is only shown when the webstore app icon is alone on a page. 272 * promo is only shown when the webstore app icon is alone on a page.
263 * @param {Object} data A dictionary that contains apps promo strings. 273 * @param {Object} data A dictionary that contains apps promo strings.
264 */ 274 */
265 setAppsPromoData: function(data) { 275 setAppsPromoData: function(data) {
266 if (data) { 276 if (data) {
267 this.classList.add('has-promo'); 277 this.classList.add('has-promo');
268 } else { 278 } else {
269 this.classList.remove('has-promo'); 279 this.classList.remove('has-promo');
270 return; 280 return;
271 } 281 }
272 282
273 this.appsPromoHeading_.textContent = data.promoHeader; 283 this.appsPromoHeading_.textContent = data.promoHeader;
274 this.appsPromoLink_.href = data.promoLink; 284 this.appsPromoLink_.href = data.promoLink;
275 this.appsPromoLink_.textContent = data.promoButton; 285 this.appsPromoLink_.textContent = data.promoButton;
276 this.appsPromoHide_.textContent = data.promoExpire; 286 this.appsPromoHide_.textContent = data.promoExpire;
287 this.appsPromoLogo_.src = data.promoLogo;
277 }, 288 },
278 289
279 /** 290 /**
280 * Set the size and position of the app tile. 291 * Set the size and position of the app tile.
281 * @param {number} size The total size of |this|. 292 * @param {number} size The total size of |this|.
282 * @param {number} x The x-position. 293 * @param {number} x The x-position.
283 * @param {number} y The y-position. 294 * @param {number} y The y-position.
284 * animate. 295 * animate.
285 */ 296 */
286 setBounds: function(size, x, y) { 297 setBounds: function(size, x, y) {
287 var imgSize = size * APP_IMG_SIZE_FRACTION; 298 var imgSize = size * APP_IMG_SIZE_FRACTION;
288 this.appImg_.style.width = this.appImg_.style.height = 299 this.appImgContainer_.style.width = this.appImgContainer_.style.height =
289 this.useSmallIcon_ ? '32px' : imgSize + 'px'; 300 this.useSmallIcon_ ? '32px' : imgSize + 'px';
290 301
291
292 this.style.width = this.style.height = size + 'px'; 302 this.style.width = this.style.height = size + 'px';
293 if (this.isStore_) 303 if (this.isStore_)
294 this.appsPromoExtras_.style.left = size + (imgSize - size) / 2 + 'px'; 304 this.appsPromoExtras_.style.left = size + (imgSize - size) / 2 + 'px';
295 305
296 this.style.left = x + 'px'; 306 this.style.left = x + 'px';
297 this.style.right = x + 'px'; 307 this.style.right = x + 'px';
298 this.style.top = y + 'px'; 308 this.style.top = y + 'px';
299 }, 309 },
300 310
301 /** 311 /**
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 var store = document.querySelector('.webstore'); 514 var store = document.querySelector('.webstore');
505 if (store) 515 if (store)
506 store.setAppsPromoData(data); 516 store.setAppsPromoData(data);
507 }; 517 };
508 518
509 return { 519 return {
510 APP_LAUNCH: APP_LAUNCH, 520 APP_LAUNCH: APP_LAUNCH,
511 AppsPage: AppsPage, 521 AppsPage: AppsPage,
512 }; 522 };
513 }); 523 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/ntp4/apps_page.css ('k') | chrome/browser/resources/ntp4/nav_dot.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698