OLD | NEW |
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('new_tab', function() { | 5 cr.define('new_tab', function() { |
6 | |
7 /** | 6 /** |
8 * NewTabSyncPromo class | 7 * NewTabSyncPromo class |
9 * Subclass of options.SyncSetupOverlay that customizes the sync setup | 8 * Subclass of options.SyncSetupOverlay that customizes the sync setup |
10 * overlay for use in the new tab page. | 9 * overlay for use in the new tab page. |
11 * @class | 10 * @class |
12 */ | 11 */ |
13 function NewTabSyncPromo() { | 12 function NewTabSyncPromo() { |
14 options.SyncSetupOverlay.call(this, 'syncSetup', | 13 options.SyncSetupOverlay.call(this, 'syncSetup', |
15 templateData.syncSetupOverlayTitle, | 14 templateData.syncSetupOverlayTitle, |
16 'sync-setup-overlay'); | 15 'sync-setup-overlay'); |
17 } | 16 } |
18 | 17 |
19 cr.addSingletonGetter(NewTabSyncPromo); | 18 cr.addSingletonGetter(NewTabSyncPromo); |
20 | 19 |
21 NewTabSyncPromo.prototype = { | 20 NewTabSyncPromo.prototype = { |
22 __proto__: options.SyncSetupOverlay.prototype, | 21 __proto__: options.SyncSetupOverlay.prototype, |
23 | 22 |
| 23 // Variable to track if the promo is expanded or collapsed. |
| 24 isSyncPromoExpanded_: false, |
| 25 |
24 showOverlay_: function() { | 26 showOverlay_: function() { |
25 $('sync-setup-overlay').hidden = false; | 27 this.expandSyncPromo_(true); |
26 }, | 28 }, |
27 | 29 |
| 30 // Initializes the page. |
28 initializePage: function() { | 31 initializePage: function() { |
29 options.SyncSetupOverlay.prototype.initializePage.call(this); | 32 options.SyncSetupOverlay.prototype.initializePage.call(this); |
30 chrome.send('SyncSetupAttachHandler'); | 33 var self = this; |
| 34 $('sync-promo-toggle-button').onclick = function() { |
| 35 self.onTogglePromo(); |
| 36 } |
| 37 chrome.send('InitializeSyncPromo'); |
31 }, | 38 }, |
32 | 39 |
33 showOverlay_: function() { | 40 // Handler for the toggle button to show or hide the sync promo. |
34 $('sync-setup-overlay').hidden = false; | 41 onTogglePromo: function() { |
| 42 if (this.isSyncPromoExpanded_) { |
| 43 this.expandSyncPromo_(false); |
| 44 chrome.send('CollapseSyncPromo'); |
| 45 } else { |
| 46 chrome.send('ExpandSyncPromo'); |
| 47 } |
| 48 }, |
| 49 |
| 50 // Shows or hides the sync promo. |
| 51 expandSyncPromo_: function(shouldExpand) { |
| 52 this.isSyncPromoExpanded_ = shouldExpand; |
| 53 if (shouldExpand) { |
| 54 $('sync-promo-login-status').hidden = true; |
| 55 $('sync-setup-overlay').hidden = false; |
| 56 $('sync-promo').classList.remove('collapsed'); |
| 57 } else { |
| 58 $('sync-promo-login-status').hidden = false; |
| 59 $('sync-setup-overlay').hidden = true; |
| 60 $('sync-promo').classList.add('collapsed'); |
| 61 } |
| 62 layoutSections(); |
| 63 }, |
| 64 |
| 65 // Sets the sync login name. If there's no login name then makes the |
| 66 // 'not connected' UI visible and shows the sync promo toggle button. |
| 67 updateLogin_: function(user_name) { |
| 68 if (user_name) { |
| 69 $('sync-promo-toggle').hidden = true; |
| 70 $('sync-promo-user-name').textContent = user_name; |
| 71 $('sync-promo-not-connected').hidden = true; |
| 72 } else { |
| 73 $('sync-promo-toggle').hidden = false; |
| 74 $('sync-promo-user-name').hidden = true; |
| 75 $('sync-promo-not-connected').hidden = false; |
| 76 } |
| 77 layoutSections(); |
| 78 }, |
| 79 |
| 80 // Shows the sync promo. |
| 81 showSyncPromo_: function() { |
| 82 $('sync-promo').hidden = false; |
35 }, | 83 }, |
36 }; | 84 }; |
37 | 85 |
38 NewTabSyncPromo.showErrorUI = function() { | 86 NewTabSyncPromo.showErrorUI = function() { |
39 NewTabSyncPromo.getInstance().showErrorUI_(); | 87 NewTabSyncPromo.getInstance().showErrorUI_(); |
40 }; | 88 }; |
41 | 89 |
42 NewTabSyncPromo.showSetupUI = function() { | 90 NewTabSyncPromo.showSetupUI = function() { |
43 NewTabSyncPromo.getInstance().showSetupUI_(); | 91 NewTabSyncPromo.getInstance().showSetupUI_(); |
44 }; | 92 }; |
(...skipping 11 matching lines...) Expand all Loading... |
56 }; | 104 }; |
57 | 105 |
58 NewTabSyncPromo.showStopSyncingUI = function() { | 106 NewTabSyncPromo.showStopSyncingUI = function() { |
59 NewTabSyncPromo.getInstance().showStopSyncingUI_(); | 107 NewTabSyncPromo.getInstance().showStopSyncingUI_(); |
60 }; | 108 }; |
61 | 109 |
62 NewTabSyncPromo.initialize = function() { | 110 NewTabSyncPromo.initialize = function() { |
63 NewTabSyncPromo.getInstance().initializePage(); | 111 NewTabSyncPromo.getInstance().initializePage(); |
64 } | 112 } |
65 | 113 |
| 114 NewTabSyncPromo.showSyncPromo = function() { |
| 115 NewTabSyncPromo.getInstance().showSyncPromo_(); |
| 116 } |
| 117 |
| 118 NewTabSyncPromo.updateLogin = function(user_name) { |
| 119 NewTabSyncPromo.getInstance().updateLogin_(user_name); |
| 120 } |
| 121 |
66 // Export | 122 // Export |
67 return { | 123 return { |
68 NewTabSyncPromo : NewTabSyncPromo | 124 NewTabSyncPromo : NewTabSyncPromo |
69 }; | 125 }; |
70 }); | 126 }); |
71 | 127 |
72 var OptionsPage = options.OptionsPage; | 128 var OptionsPage = options.OptionsPage; |
73 var SyncSetupOverlay = new_tab.NewTabSyncPromo; | 129 var SyncSetupOverlay = new_tab.NewTabSyncPromo; |
74 window.addEventListener('DOMContentLoaded', new_tab.NewTabSyncPromo.initialize); | 130 window.addEventListener('DOMContentLoaded', new_tab.NewTabSyncPromo.initialize); |
OLD | NEW |