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

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

Issue 7792024: Show app disable and enable on NTP, and desaturate non-offline-enabled apps when offline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: u Created 9 years, 3 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
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 /** 5 /**
6 * @fileoverview New tab page 6 * @fileoverview New tab page
7 * This is the main code for the new tab page used by touch-enabled Chrome 7 * This is the main code for the new tab page used by touch-enabled Chrome
8 * browsers. For now this is still a prototype. 8 * browsers. For now this is still a prototype.
9 */ 9 */
10 10
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 appAdded(highlightApp, true); 335 appAdded(highlightApp, true);
336 336
337 // Mark the current page. 337 // Mark the current page.
338 cardSlider.currentCardValue.navigationDot.classList.add('selected'); 338 cardSlider.currentCardValue.navigationDot.classList.add('selected');
339 logEvent('apps.layout: ' + (Date.now() - startTime)); 339 logEvent('apps.layout: ' + (Date.now() - startTime));
340 340
341 document.documentElement.classList.remove('starting-up'); 341 document.documentElement.classList.remove('starting-up');
342 } 342 }
343 343
344 /** 344 /**
345 * Called by chrome when a new app has been added to chrome. 345 * Called by chrome when a new app has been added to chrome or has been
346 * @param {Object} app A data structure full of relevant information for the 346 * enabled if previously disabled.
347 * app. 347 * @param {Object} appData A data structure full of relevant information for
348 * the app.
348 */ 349 */
349 function appAdded(app, opt_highlight) { 350 function appAdded(app, opt_highlight) {
350 // If the page is already open when a new app is installed, the hash will 351 // If the page is already open when a new app is installed, the hash will
351 // be set once again. 352 // be set once again.
352 var appID = getAndClearAppIDHash(); 353 var appID = getAndClearAppIDHash();
353 if (appID == app.id) 354 if (appID == app.id)
354 opt_highlight = true; 355 opt_highlight = true;
355 356
356 var pageIndex = app.page_index || 0; 357 var pageIndex = app.page_index || 0;
357 358
358 if (pageIndex >= appsPages.length) { 359 if (pageIndex >= appsPages.length) {
359 while (pageIndex >= appsPages.length) { 360 while (pageIndex >= appsPages.length) {
360 appendAppsPage(new ntp4.AppsPage(), ''); 361 appendAppsPage(new ntp4.AppsPage(), '');
361 } 362 }
362 updateSliderCards(); 363 updateSliderCards();
363 } 364 }
364 365
365 var page = appsPages[pageIndex]; 366 var page = appsPages[pageIndex];
366 if (opt_highlight) 367 if (opt_highlight)
367 cardSlider.selectCardByValue(page); 368 cardSlider.selectCardByValue(page);
368 page.appendApp(app, true); 369 var app = $(appData.id);
370 if (app) {
Evan Stade 2011/08/30 03:34:14 no curlies
Yoyo Zhou 2011/08/30 17:37:10 Done.
371 app.replaceAppData(appData);
372 } else {
373 page.appendApp(appData, true);
374 }
369 } 375 }
370 376
371 /** 377 /**
372 * Called by chrome when an existing app has been removed/uninstalled from 378 * Called by chrome when an existing app has been disabled or
373 * chrome. 379 * removed/uninstalled from chrome.
374 * @param {Object} appData A data structure full of relevant information for 380 * @param {Object} appData A data structure full of relevant information for
375 * the app. 381 * the app.
376 */ 382 */
377 function appRemoved(appData) { 383 function appRemoved(appData, is_uninstall) {
Evan Stade 2011/08/30 03:34:14 isUninstall also, doc the param
Yoyo Zhou 2011/08/30 17:37:10 Done.
378 var app = $(appData.id); 384 var app = $(appData.id);
379 assert(app, 'trying to remove an app that doesn\'t exist'); 385 assert(app, 'trying to remove an app that doesn\'t exist');
380 386
381 var tile = findAncestorByClass(app, 'tile'); 387 if (!is_uninstall) {
382 tile.doRemove(); 388 app.replaceAppData(appData);
389 } else {
390 var tile = findAncestorByClass(app, 'tile');
391 tile.doRemove();
392 }
383 } 393 }
384 394
385 /** 395 /**
386 * Given a theme resource name, construct a URL for it. 396 * Given a theme resource name, construct a URL for it.
387 * @param {string} resourceName The name of the resource. 397 * @param {string} resourceName The name of the resource.
388 * @return {string} A url which can be used to load the resource. 398 * @return {string} A url which can be used to load the resource.
389 */ 399 */
390 function getThemeUrl(resourceName) { 400 function getThemeUrl(resourceName) {
391 return 'chrome://theme/' + resourceName; 401 return 'chrome://theme/' + resourceName;
392 } 402 }
(...skipping 10 matching lines...) Expand all
403 // by only calling it for changes across different instances of the NTP 413 // by only calling it for changes across different instances of the NTP
404 // (i.e. two separate tabs both showing NTP). 414 // (i.e. two separate tabs both showing NTP).
405 for (var j = 0; j < data.apps.length; ++j) { 415 for (var j = 0; j < data.apps.length; ++j) {
406 for (var i = 0; i < apps.length; ++i) { 416 for (var i = 0; i < apps.length; ++i) {
407 if (data.apps[j]['id'] == apps[i].appId) 417 if (data.apps[j]['id'] == apps[i].appId)
408 apps[i].appData = data.apps[j]; 418 apps[i].appData = data.apps[j];
409 } 419 }
410 } 420 }
411 } 421 }
412 422
423 /**
424 * Listener for offline status change events. Updates apps that are
425 * not offline-enabled to be grayscale if the browser is offline.
426 */
427 function updateOfflineEnabledApps() {
428 for (var i = 0; i < apps.length; ++i) {
429 if (apps[i].appData.enabled && !apps[i].appData.offline_enabled)
430 apps[i].setIcon();
431 }
432 }
433
413 function getCardSlider() { 434 function getCardSlider() {
414 return cardSlider; 435 return cardSlider;
415 } 436 }
416 437
417 /** 438 /**
418 * Invoked whenever the pages in apps-page-list have changed so that 439 * Invoked whenever the pages in apps-page-list have changed so that
419 * the Slider knows about the new elements. 440 * the Slider knows about the new elements.
420 */ 441 */
421 function updateSliderCards() { 442 function updateSliderCards() {
422 var pageNo = cardSlider.currentCard; 443 var pageNo = cardSlider.currentCard;
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 getAppsPageIndex: getAppsPageIndex, 793 getAppsPageIndex: getAppsPageIndex,
773 getCardSlider: getCardSlider, 794 getCardSlider: getCardSlider,
774 initialize: initialize, 795 initialize: initialize,
775 isRTL: isRTL, 796 isRTL: isRTL,
776 leaveRearrangeMode: leaveRearrangeMode, 797 leaveRearrangeMode: leaveRearrangeMode,
777 saveAppPageName: saveAppPageName, 798 saveAppPageName: saveAppPageName,
778 setBookmarksData: setBookmarksData, 799 setBookmarksData: setBookmarksData,
779 setMostVisitedPages: setMostVisitedPages, 800 setMostVisitedPages: setMostVisitedPages,
780 setRecentlyClosedTabs: setRecentlyClosedTabs, 801 setRecentlyClosedTabs: setRecentlyClosedTabs,
781 showNotification: showNotification, 802 showNotification: showNotification,
782 themeChanged: themeChanged 803 themeChanged: themeChanged,
804 updateOfflineEnabledApps: updateOfflineEnabledApps
783 }; 805 };
784 }); 806 });
785 807
786 // publish ntp globals 808 // publish ntp globals
787 // TODO(estade): update the content handlers to use ntp namespace instead of 809 // TODO(estade): update the content handlers to use ntp namespace instead of
788 // making these global. 810 // making these global.
789 var assert = ntp4.assert; 811 var assert = ntp4.assert;
790 var getAppsCallback = ntp4.getAppsCallback; 812 var getAppsCallback = ntp4.getAppsCallback;
791 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback; 813 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback;
792 var themeChanged = ntp4.themeChanged; 814 var themeChanged = ntp4.themeChanged;
793 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs; 815 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs;
794 var setMostVisitedPages = ntp4.setMostVisitedPages; 816 var setMostVisitedPages = ntp4.setMostVisitedPages;
795 817
796 document.addEventListener('DOMContentLoaded', ntp4.initialize); 818 document.addEventListener('DOMContentLoaded', ntp4.initialize);
819 document.addEventListener('online', ntp4.updateOfflineEnabledApps);
820 document.addEventListener('offline', ntp4.updateOfflineEnabledApps);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698