| Index: chrome/browser/resources/new_tab_sync_promo.js
|
| diff --git a/chrome/browser/resources/new_tab_sync_promo.js b/chrome/browser/resources/new_tab_sync_promo.js
|
| index d341a7a514879638aa546433b57241e0f3264ab7..b9d8068a1fe396df1efcf3276d4dc26a79f9cde6 100644
|
| --- a/chrome/browser/resources/new_tab_sync_promo.js
|
| +++ b/chrome/browser/resources/new_tab_sync_promo.js
|
| @@ -23,8 +23,35 @@ cr.define('new_tab', function() {
|
| // Variable to track if the promo is expanded or collapsed.
|
| isSyncPromoExpanded_: false,
|
|
|
| + // Variable to track if the login name should be clickable.
|
| + isLoginNameClickable_ : false,
|
| +
|
| + // Variable to track if the user is signed into sync.
|
| + isUserSignedIntoSync_ : false,
|
| +
|
| + // Override SyncSetupOverlay::showOverlay_ to expand the sync promo when the
|
| + // overlay is shown.
|
| showOverlay_: function() {
|
| - this.expandSyncPromo_(true);
|
| + this.isSyncPromoExpanded_ = true;
|
| + $('sync-promo-login-status').hidden = true;
|
| + $('sync-setup-overlay').hidden = false;
|
| + $('sync-promo').classList.remove('collapsed');
|
| + layoutSections();
|
| + },
|
| +
|
| + // Override SyncSetupOverlay::closeOverlay_ to collapse the sync promo when
|
| + // the overlay is closed.
|
| + closeOverlay_: function() {
|
| + options.SyncSetupOverlay.prototype.closeOverlay_.call(this);
|
| + this.isSyncPromoExpanded_ = false;
|
| + $('sync-promo-login-status').hidden = false;
|
| + $('sync-setup-overlay').hidden = true;
|
| + $('sync-promo').classList.add('collapsed');
|
| + layoutSections();
|
| +
|
| + // If the overlay is being closed because the user pressed cancelled
|
| + // then we need to ensure that chrome knows about it.
|
| + chrome.send('CollapseSyncPromo');
|
| },
|
|
|
| // Initializes the page.
|
| @@ -34,46 +61,56 @@ cr.define('new_tab', function() {
|
| $('sync-promo-toggle-button').onclick = function() {
|
| self.onTogglePromo();
|
| }
|
| + $('sync-promo-login-status-cell').onclick = function() {
|
| + self.onLoginNameClicked();
|
| + }
|
| chrome.send('InitializeSyncPromo');
|
| },
|
|
|
| // Handler for the toggle button to show or hide the sync promo.
|
| onTogglePromo: function() {
|
| if (this.isSyncPromoExpanded_) {
|
| - this.expandSyncPromo_(false);
|
| chrome.send('CollapseSyncPromo');
|
| + this.closeOverlay_();
|
| } else {
|
| chrome.send('ExpandSyncPromo');
|
| }
|
| },
|
|
|
| - // Shows or hides the sync promo.
|
| - expandSyncPromo_: function(shouldExpand) {
|
| - this.isSyncPromoExpanded_ = shouldExpand;
|
| - if (shouldExpand) {
|
| - $('sync-promo-login-status').hidden = true;
|
| - $('sync-setup-overlay').hidden = false;
|
| - $('sync-promo').classList.remove('collapsed');
|
| - } else {
|
| - $('sync-promo-login-status').hidden = false;
|
| - $('sync-setup-overlay').hidden = true;
|
| - $('sync-promo').classList.add('collapsed');
|
| - }
|
| - layoutSections();
|
| + // Called when the user clicks the login name on the top right of the sync
|
| + // promo. If the user isn't signed in then we just expand the sync promo.
|
| + // If the user is signed in then we ask Chrome to show the profile menu.
|
| + onLoginNameClicked: function() {
|
| + if (!this.isLoginNameClickable_)
|
| + return;
|
| +
|
| + if (this.isUserSignedIntoSync_)
|
| + chrome.send('ShowProfileMenu');
|
| + else
|
| + this.onTogglePromo();
|
| },
|
|
|
| - // Sets the sync login name. If there's no login name then makes the
|
| - // 'not connected' UI visible and shows the sync promo toggle button.
|
| - updateLogin_: function(user_name) {
|
| - if (user_name) {
|
| - $('sync-promo-toggle').hidden = true;
|
| - $('sync-promo-user-name').textContent = user_name;
|
| - $('sync-promo-not-connected').hidden = true;
|
| + // Updates the sync login status. If the user is not logged in then it
|
| + // shows the sync promo toggle button.
|
| + updateLogin_: function(login_status_msg, icon_url, is_signed_in,
|
| + is_clickable) {
|
| + $('sync-promo-login-status-msg').textContent = login_status_msg;
|
| + this.isUserSignedIntoSync_ = is_signed_in;
|
| + $('sync-promo-toggle').hidden = is_signed_in;
|
| +
|
| + if (icon_url == "") {
|
| + $('login-status-avatar-icon').hidden = true;
|
| } else {
|
| - $('sync-promo-toggle').hidden = false;
|
| - $('sync-promo-user-name').hidden = true;
|
| - $('sync-promo-not-connected').hidden = false;
|
| + $('login-status-avatar-icon').hidden = false;
|
| + $('login-status-avatar-icon').src = icon_url;
|
| }
|
| +
|
| + this.isLoginNameClickable_ = is_clickable;
|
| + if (is_clickable)
|
| + $('sync-promo-login-status-cell').style.cursor = "pointer";
|
| + else
|
| + $('sync-promo-login-status-cell').style.cursor = "default";
|
| +
|
| layoutSections();
|
| },
|
|
|
| @@ -115,8 +152,10 @@ cr.define('new_tab', function() {
|
| NewTabSyncPromo.getInstance().showSyncPromo_();
|
| }
|
|
|
| - NewTabSyncPromo.updateLogin = function(user_name) {
|
| - NewTabSyncPromo.getInstance().updateLogin_(user_name);
|
| + NewTabSyncPromo.updateLogin = function(user_name, icon_url, is_signed_in,
|
| + is_clickable) {
|
| + NewTabSyncPromo.getInstance().updateLogin_(
|
| + user_name, icon_url, is_signed_in, is_clickable);
|
| }
|
|
|
| // Export
|
|
|