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

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

Issue 9838064: Add a sign-in promo message to the Other Devices menu. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix copyright header. Created 8 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 */ 46 */
47 var loginBubble; 47 var loginBubble;
48 48
49 /** 49 /**
50 * true if |loginBubble| should be shown. 50 * true if |loginBubble| should be shown.
51 * @type {Boolean} 51 * @type {Boolean}
52 */ 52 */
53 var shouldShowLoginBubble = false; 53 var shouldShowLoginBubble = false;
54 54
55 /** 55 /**
56 * The 'other-sessions-menu-button' element.
57 * @type {!Element|undefined}
58 */
59 var otherSessionsButton;
60
61 /**
56 * The time in milliseconds for most transitions. This should match what's 62 * The time in milliseconds for most transitions. This should match what's
57 * in new_tab.css. Unfortunately there's no better way to try to time 63 * in new_tab.css. Unfortunately there's no better way to try to time
58 * something to occur until after a transition has completed. 64 * something to occur until after a transition has completed.
59 * @type {number} 65 * @type {number}
60 * @const 66 * @const
61 */ 67 */
62 var DEFAULT_TRANSITION_TIME = 500; 68 var DEFAULT_TRANSITION_TIME = 500;
63 69
64 /** 70 /**
65 * Creates a NewTabView object. NewTabView extends PageListView with 71 * Creates a NewTabView object. NewTabView extends PageListView with
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 newTabView = new NewTabView(); 112 newTabView = new NewTabView();
107 113
108 notificationContainer = getRequiredElement('notification-container'); 114 notificationContainer = getRequiredElement('notification-container');
109 notificationContainer.addEventListener( 115 notificationContainer.addEventListener(
110 'webkitTransitionEnd', onNotificationTransitionEnd); 116 'webkitTransitionEnd', onNotificationTransitionEnd);
111 117
112 cr.ui.decorate($('recently-closed-menu-button'), ntp.RecentMenuButton); 118 cr.ui.decorate($('recently-closed-menu-button'), ntp.RecentMenuButton);
113 chrome.send('getRecentlyClosedTabs'); 119 chrome.send('getRecentlyClosedTabs');
114 120
115 if (templateData.showOtherSessionsMenu) { 121 if (templateData.showOtherSessionsMenu) {
116 cr.ui.decorate($('other-sessions-menu-button'), 122 otherSessionsButton = getRequiredElement('other-sessions-menu-button');
117 ntp.OtherSessionsMenuButton); 123 cr.ui.decorate(otherSessionsButton, ntp.OtherSessionsMenuButton);
124 otherSessionsButton.initialize(templateData.isUserSignedIn);
118 } 125 }
119 126
120 var mostVisited = new ntp.MostVisitedPage(); 127 var mostVisited = new ntp.MostVisitedPage();
121 // Move the footer into the most visited page if we are in "bare minimum" 128 // Move the footer into the most visited page if we are in "bare minimum"
122 // mode. 129 // mode.
123 if (document.body.classList.contains('bare-minimum')) 130 if (document.body.classList.contains('bare-minimum'))
124 mostVisited.appendFooter(getRequiredElement('footer')); 131 mostVisited.appendFooter(getRequiredElement('footer'));
125 newTabView.appendTilePage(mostVisited, 132 newTabView.appendTilePage(mostVisited,
126 localStrings.getString('mostvisited'), 133 localStrings.getString('mostvisited'),
127 false); 134 false);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 199
193 var learnMoreLink = infoBubble.querySelector('a'); 200 var learnMoreLink = infoBubble.querySelector('a');
194 learnMoreLink.href = localStrings.getString('ntp4_intro_url'); 201 learnMoreLink.href = localStrings.getString('ntp4_intro_url');
195 learnMoreLink.onclick = infoBubble.hide.bind(infoBubble); 202 learnMoreLink.onclick = infoBubble.hide.bind(infoBubble);
196 203
197 infoBubble.show(); 204 infoBubble.show();
198 chrome.send('introMessageSeen'); 205 chrome.send('introMessageSeen');
199 } 206 }
200 207
201 var loginContainer = getRequiredElement('login-container'); 208 var loginContainer = getRequiredElement('login-container');
202 loginContainer.addEventListener('click', function() { 209 loginContainer.addEventListener('click', showSyncLoginUI);
203 var rect = loginContainer.getBoundingClientRect();
204 chrome.send('showSyncLoginUI',
205 [rect.left, rect.top, rect.width, rect.height]);
206 });
207 chrome.send('initializeSyncLogin'); 210 chrome.send('initializeSyncLogin');
208 211
209 doWhenAllSectionsReady(function() { 212 doWhenAllSectionsReady(function() {
210 // Tell the slider about the pages. 213 // Tell the slider about the pages.
211 newTabView.updateSliderCards(); 214 newTabView.updateSliderCards();
212 // Mark the current page. 215 // Mark the current page.
213 newTabView.cardSlider.currentCardValue.navigationDot.classList.add( 216 newTabView.cardSlider.currentCardValue.navigationDot.classList.add(
214 'selected'); 217 'selected');
215 218
216 var promo = localStrings.getString('serverpromo'); 219 var promo = localStrings.getString('serverpromo');
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 node.stripeColor = color; 491 node.stripeColor = color;
489 } 492 }
490 493
491 /** 494 /**
492 * Updates the text displayed in the login container. If there is no text then 495 * Updates the text displayed in the login container. If there is no text then
493 * the login container is hidden. 496 * the login container is hidden.
494 * @param {string} loginHeader The first line of text. 497 * @param {string} loginHeader The first line of text.
495 * @param {string} loginSubHeader The second line of text. 498 * @param {string} loginSubHeader The second line of text.
496 * @param {string} iconURL The url for the login status icon. If this is null 499 * @param {string} iconURL The url for the login status icon. If this is null
497 then the login status icon is hidden. 500 then the login status icon is hidden.
501 * @param {boolean} isUserSignedIn Indicates if the user is signed in or not.
498 */ 502 */
499 function updateLogin(loginHeader, loginSubHeader, iconURL) { 503 function updateLogin(loginHeader, loginSubHeader, iconURL, isUserSignedIn) {
500 if (loginHeader || loginSubHeader) { 504 if (loginHeader || loginSubHeader) {
501 $('login-container').hidden = false; 505 $('login-container').hidden = false;
502 $('login-status-header').innerHTML = loginHeader; 506 $('login-status-header').innerHTML = loginHeader;
503 $('login-status-sub-header').innerHTML = loginSubHeader; 507 $('login-status-sub-header').innerHTML = loginSubHeader;
504 $('card-slider-frame').classList.add('showing-login-area'); 508 $('card-slider-frame').classList.add('showing-login-area');
505 509
506 if (iconURL) { 510 if (iconURL) {
507 $('login-status-header-container').style.backgroundImage = url(iconURL); 511 $('login-status-header-container').style.backgroundImage = url(iconURL);
508 $('login-status-header-container').classList.add('login-status-icon'); 512 $('login-status-header-container').classList.add('login-status-icon');
509 } else { 513 } else {
510 $('login-status-header-container').style.backgroundImage = 'none'; 514 $('login-status-header-container').style.backgroundImage = 'none';
511 $('login-status-header-container').classList.remove( 515 $('login-status-header-container').classList.remove(
512 'login-status-icon'); 516 'login-status-icon');
513 } 517 }
514 } else { 518 } else {
515 $('login-container').hidden = true; 519 $('login-container').hidden = true;
516 $('card-slider-frame').classList.remove('showing-login-area'); 520 $('card-slider-frame').classList.remove('showing-login-area');
517 } 521 }
518 if (shouldShowLoginBubble) { 522 if (shouldShowLoginBubble) {
519 window.setTimeout(loginBubble.show.bind(loginBubble), 0); 523 window.setTimeout(loginBubble.show.bind(loginBubble), 0);
520 chrome.send('loginMessageSeen'); 524 chrome.send('loginMessageSeen');
521 shouldShowLoginBubble = false; 525 shouldShowLoginBubble = false;
522 } else if (loginBubble) { 526 } else if (loginBubble) {
523 loginBubble.reposition(); 527 loginBubble.reposition();
524 } 528 }
529 if (otherSessionsButton)
530 otherSessionsButton.updateSignInState(isUserSignedIn);
525 } 531 }
526 532
527 /** 533 /**
534 * Show the sync login UI.
535 * @param {Event} e The click event.
536 */
537 function showSyncLoginUI(e) {
538 var rect = e.currentTarget.getBoundingClientRect();
539 chrome.send('showSyncLoginUI',
540 [rect.left, rect.top, rect.width, rect.height]);
541 }
542
543 /**
528 * Wrappers to forward the callback to corresponding PageListView member. 544 * Wrappers to forward the callback to corresponding PageListView member.
529 */ 545 */
530 function appAdded() { 546 function appAdded() {
531 return newTabView.appAdded.apply(newTabView, arguments); 547 return newTabView.appAdded.apply(newTabView, arguments);
532 } 548 }
533 549
534 function appMoved() { 550 function appMoved() {
535 return newTabView.appMoved.apply(newTabView, arguments); 551 return newTabView.appMoved.apply(newTabView, arguments);
536 } 552 }
537 553
538 function appRemoved() { 554 function appRemoved() {
539 return newTabView.appRemoved.apply(newTabView, arguments); 555 return newTabView.appRemoved.apply(newTabView, arguments);
540 } 556 }
541 557
542 function appsPrefChangeCallback() { 558 function appsPrefChangeCallback() {
543 return newTabView.appsPrefChangedCallback.apply(newTabView, arguments); 559 return newTabView.appsPrefChangedCallback.apply(newTabView, arguments);
544 } 560 }
545 561
546 function appsReordered() { 562 function appsReordered() {
547 return newTabView.appsReordered.apply(newTabView, arguments); 563 return newTabView.appsReordered.apply(newTabView, arguments);
548 } 564 }
549 565
550 function enterRearrangeMode() { 566 function enterRearrangeMode() {
551 return newTabView.enterRearrangeMode.apply(newTabView, arguments); 567 return newTabView.enterRearrangeMode.apply(newTabView, arguments);
552 } 568 }
553 569
554 function foreignSessions(sessionList) { 570 function setForeignSessions(sessionList, isTabSyncEnabled) {
555 $('other-sessions-menu-button').sessions = sessionList; 571 if (otherSessionsButton)
572 otherSessionsButton.setForeignSessions(sessionList, isTabSyncEnabled);
556 } 573 }
557 574
558 function getAppsCallback() { 575 function getAppsCallback() {
559 return newTabView.getAppsCallback.apply(newTabView, arguments); 576 return newTabView.getAppsCallback.apply(newTabView, arguments);
560 } 577 }
561 578
562 function getAppsPageIndex() { 579 function getAppsPageIndex() {
563 return newTabView.getAppsPageIndex.apply(newTabView, arguments); 580 return newTabView.getAppsPageIndex.apply(newTabView, arguments);
564 } 581 }
565 582
(...skipping 13 matching lines...) Expand all
579 newTabView.highlightAppId = appId; 596 newTabView.highlightAppId = appId;
580 } 597 }
581 598
582 // Return an object with all the exports 599 // Return an object with all the exports
583 return { 600 return {
584 appAdded: appAdded, 601 appAdded: appAdded,
585 appMoved: appMoved, 602 appMoved: appMoved,
586 appRemoved: appRemoved, 603 appRemoved: appRemoved,
587 appsPrefChangeCallback: appsPrefChangeCallback, 604 appsPrefChangeCallback: appsPrefChangeCallback,
588 enterRearrangeMode: enterRearrangeMode, 605 enterRearrangeMode: enterRearrangeMode,
589 foreignSessions: foreignSessions,
590 getAppsCallback: getAppsCallback, 606 getAppsCallback: getAppsCallback,
591 getAppsPageIndex: getAppsPageIndex, 607 getAppsPageIndex: getAppsPageIndex,
592 getCardSlider: getCardSlider, 608 getCardSlider: getCardSlider,
593 onLoad: onLoad, 609 onLoad: onLoad,
594 leaveRearrangeMode: leaveRearrangeMode, 610 leaveRearrangeMode: leaveRearrangeMode,
595 saveAppPageName: saveAppPageName, 611 saveAppPageName: saveAppPageName,
596 setAppToBeHighlighted: setAppToBeHighlighted, 612 setAppToBeHighlighted: setAppToBeHighlighted,
597 setBookmarkBarAttached: setBookmarkBarAttached, 613 setBookmarkBarAttached: setBookmarkBarAttached,
614 setForeignSessions: setForeignSessions,
598 setMostVisitedPages: setMostVisitedPages, 615 setMostVisitedPages: setMostVisitedPages,
599 setSuggestionsPages: setSuggestionsPages, 616 setSuggestionsPages: setSuggestionsPages,
600 setRecentlyClosedTabs: setRecentlyClosedTabs, 617 setRecentlyClosedTabs: setRecentlyClosedTabs,
601 setStripeColor: setStripeColor, 618 setStripeColor: setStripeColor,
602 showNotification: showNotification, 619 showNotification: showNotification,
603 themeChanged: themeChanged, 620 themeChanged: themeChanged,
604 updateLogin: updateLogin 621 updateLogin: updateLogin
605 }; 622 };
606 }); 623 });
607 624
608 document.addEventListener('DOMContentLoaded', ntp.onLoad); 625 document.addEventListener('DOMContentLoaded', ntp.onLoad);
OLDNEW
« no previous file with comments | « chrome/browser/resources/ntp4/new_tab.html ('k') | chrome/browser/resources/ntp4/other_sessions.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698