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

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: > 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 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 appAdded(highlightApp, true); 312 appAdded(highlightApp, true);
313 313
314 // Mark the current page. 314 // Mark the current page.
315 cardSlider.currentCardValue.navigationDot.classList.add('selected'); 315 cardSlider.currentCardValue.navigationDot.classList.add('selected');
316 logEvent('apps.layout: ' + (Date.now() - startTime)); 316 logEvent('apps.layout: ' + (Date.now() - startTime));
317 317
318 document.documentElement.classList.remove('starting-up'); 318 document.documentElement.classList.remove('starting-up');
319 } 319 }
320 320
321 /** 321 /**
322 * Called by chrome when a new app has been added to chrome. 322 * Called by chrome when a new app has been added to chrome or has been
323 * @param {Object} app A data structure full of relevant information for the 323 * enabled if previously disabled.
324 * app. 324 * @param {Object} appData A data structure full of relevant information for
325 * the app.
325 */ 326 */
326 function appAdded(app, opt_highlight) { 327 function appAdded(appData, opt_highlight) {
327 if (app.id == highlightAppId) { 328 if (appData.id == highlightAppId) {
328 opt_highlight = true; 329 opt_highlight = true;
329 highlightAppId = null; 330 highlightAppId = null;
330 } 331 }
331 332
332 var pageIndex = app.page_index || 0; 333 var pageIndex = appData.page_index || 0;
333 334
334 if (pageIndex >= appsPages.length) { 335 if (pageIndex >= appsPages.length) {
335 while (pageIndex >= appsPages.length) { 336 while (pageIndex >= appsPages.length) {
336 appendAppsPage(new ntp4.AppsPage(), ''); 337 appendAppsPage(new ntp4.AppsPage(), '');
337 } 338 }
338 updateSliderCards(); 339 updateSliderCards();
339 } 340 }
340 341
341 var page = appsPages[pageIndex]; 342 var page = appsPages[pageIndex];
342 page.appendApp(app, opt_highlight); 343 var app = $(appData.id);
344 if (app)
345 app.replaceAppData(appData);
346 else
347 page.appendApp(appData, opt_highlight);
343 } 348 }
344 349
345 /** 350 /**
346 * Sets that an app should be highlighted if it is added. Called right before 351 * Sets that an app should be highlighted if it is added. Called right before
347 * appAdded for new installs. 352 * appAdded for new installs.
348 */ 353 */
349 function setAppToBeHighlighted(appId) { 354 function setAppToBeHighlighted(appId) {
350 highlightAppId = appId; 355 highlightAppId = appId;
351 } 356 }
352 357
353 /** 358 /**
354 * Called by chrome when an existing app has been removed/uninstalled from 359 * Called by chrome when an existing app has been disabled or
355 * chrome. 360 * removed/uninstalled from chrome.
356 * @param {Object} appData A data structure full of relevant information for 361 * @param {Object} appData A data structure full of relevant information for
357 * the app. 362 * the app.
363 * @param {boolean} isUninstall True if the app is being uninstalled;
364 * false if the app is being disabled.
358 */ 365 */
359 function appRemoved(appData) { 366 function appRemoved(appData, isUninstall) {
360 var app = $(appData.id); 367 var app = $(appData.id);
361 assert(app, 'trying to remove an app that doesn\'t exist'); 368 assert(app, 'trying to remove an app that doesn\'t exist');
362 app.remove(); 369
370 if (!isUninstall)
371 app.replaceAppData(appData);
372 else
373 app.remove();
363 } 374 }
364 375
365 /** 376 /**
366 * Given a theme resource name, construct a URL for it. 377 * Given a theme resource name, construct a URL for it.
367 * @param {string} resourceName The name of the resource. 378 * @param {string} resourceName The name of the resource.
368 * @return {string} A url which can be used to load the resource. 379 * @return {string} A url which can be used to load the resource.
369 */ 380 */
370 function getThemeUrl(resourceName) { 381 function getThemeUrl(resourceName) {
371 return 'chrome://theme/' + resourceName; 382 return 'chrome://theme/' + resourceName;
372 } 383 }
(...skipping 10 matching lines...) Expand all
383 // by only calling it for changes across different instances of the NTP 394 // by only calling it for changes across different instances of the NTP
384 // (i.e. two separate tabs both showing NTP). 395 // (i.e. two separate tabs both showing NTP).
385 for (var j = 0; j < data.apps.length; ++j) { 396 for (var j = 0; j < data.apps.length; ++j) {
386 for (var i = 0; i < apps.length; ++i) { 397 for (var i = 0; i < apps.length; ++i) {
387 if (data.apps[j]['id'] == apps[i].appId) 398 if (data.apps[j]['id'] == apps[i].appId)
388 apps[i].appData = data.apps[j]; 399 apps[i].appData = data.apps[j];
389 } 400 }
390 } 401 }
391 } 402 }
392 403
404 /**
405 * Listener for offline status change events. Updates apps that are
406 * not offline-enabled to be grayscale if the browser is offline.
407 */
408 function updateOfflineEnabledApps() {
409 var apps = document.querySelectorAll('.app');
410 for (var i = 0; i < apps.length; ++i) {
411 if (apps[i].appData.enabled && !apps[i].appData.offline_enabled)
412 apps[i].setIcon();
413 }
414 }
415
393 function getCardSlider() { 416 function getCardSlider() {
394 return cardSlider; 417 return cardSlider;
395 } 418 }
396 419
397 /** 420 /**
398 * Invoked whenever the pages in apps-page-list have changed so that 421 * Invoked whenever the pages in apps-page-list have changed so that
399 * the Slider knows about the new elements. 422 * the Slider knows about the new elements.
400 */ 423 */
401 function updateSliderCards() { 424 function updateSliderCards() {
402 var pageNo = cardSlider.currentCard; 425 var pageNo = cardSlider.currentCard;
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 getCardSlider: getCardSlider, 811 getCardSlider: getCardSlider,
789 initialize: initialize, 812 initialize: initialize,
790 isRTL: isRTL, 813 isRTL: isRTL,
791 leaveRearrangeMode: leaveRearrangeMode, 814 leaveRearrangeMode: leaveRearrangeMode,
792 saveAppPageName: saveAppPageName, 815 saveAppPageName: saveAppPageName,
793 setAppToBeHighlighted: setAppToBeHighlighted, 816 setAppToBeHighlighted: setAppToBeHighlighted,
794 setBookmarksData: setBookmarksData, 817 setBookmarksData: setBookmarksData,
795 setMostVisitedPages: setMostVisitedPages, 818 setMostVisitedPages: setMostVisitedPages,
796 setRecentlyClosedTabs: setRecentlyClosedTabs, 819 setRecentlyClosedTabs: setRecentlyClosedTabs,
797 showNotification: showNotification, 820 showNotification: showNotification,
798 themeChanged: themeChanged 821 themeChanged: themeChanged,
822 updateOfflineEnabledApps: updateOfflineEnabledApps
799 }; 823 };
800 }); 824 });
801 825
802 // publish ntp globals 826 // publish ntp globals
803 // TODO(estade): update the content handlers to use ntp namespace instead of 827 // TODO(estade): update the content handlers to use ntp namespace instead of
804 // making these global. 828 // making these global.
805 var assert = ntp4.assert; 829 var assert = ntp4.assert;
806 var getAppsCallback = ntp4.getAppsCallback; 830 var getAppsCallback = ntp4.getAppsCallback;
807 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback; 831 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback;
808 var themeChanged = ntp4.themeChanged; 832 var themeChanged = ntp4.themeChanged;
809 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs; 833 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs;
810 var setMostVisitedPages = ntp4.setMostVisitedPages; 834 var setMostVisitedPages = ntp4.setMostVisitedPages;
811 835
812 document.addEventListener('DOMContentLoaded', ntp4.initialize); 836 document.addEventListener('DOMContentLoaded', ntp4.initialize);
837 window.addEventListener('online', ntp4.updateOfflineEnabledApps);
838 window.addEventListener('offline', ntp4.updateOfflineEnabledApps);
OLDNEW
« no previous file with comments | « chrome/browser/resources/ntp4/apps_page.js ('k') | chrome/browser/ui/webui/ntp/app_launcher_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698