personal_options.js revision 731df977c0511bca2206b5f333555b1205ff1f43
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickcr.define('options', function() { 63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick var OptionsPage = options.OptionsPage; 83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // State variables. 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var syncEnabled = false; 11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var syncSetupCompleted = false; 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // PersonalOptions class 153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Encapsulated handling of personal options page. 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick function PersonalOptions() { 183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.call(this, 'personal', templateData.personalPage, 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 'personalPage'); 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick cr.addSingletonGetter(PersonalOptions); 233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PersonalOptions.prototype = { 253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Inherit PersonalOptions from OptionsPage. 263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick __proto__: options.OptionsPage.prototype, 273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Initialize PersonalOptions page. 293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick initializePage: function() { 303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Call base class implementation to starts preference initialization. 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.prototype.initializePage.call(this); 323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var self = this; 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('customize-sync').onclick = function(event) { 353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.showPageByName('sync'); 363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('start-stop-sync').onclick = function(event) { 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (self.syncSetupCompleted) 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick self.showStopSyncingOverlay_(); 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick else 41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick self.showSyncLoginDialog_(); 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }; 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('privacy-dashboard-link').onclick = function(event) { 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('openPrivacyDashboardTabAndActivate'); 453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('showpasswords').onclick = function(event) { 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PasswordsExceptions.load(); 493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.showPageByName('passwordsExceptions'); 503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.showTab($('passwords-nav-tab')); 513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('coreOptionsUserMetricsAction', 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ['Options_ShowPasswordsExceptions']); 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('autofill_options').onclick = function(event) { 563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.showPageByName('autoFillOptions'); 573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('coreOptionsUserMetricsAction', 583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ['Options_ShowAutoFillSettings']); 593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (!cr.isChromeOS) { 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('import_data').onclick = function(event) { 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OptionsPage.showOverlay('importDataOverlay'); 643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('coreOptionsUserMetricsAction', ['Import_ShowDlg']); 653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (!cr.isChromeOS && navigator.platform.match(/linux|BSD/i)) { 693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes_GTK_button').onclick = function(event) { 703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('themesSetGTK'); 713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes_set_classic').onclick = function(event) { 743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('themesReset'); 753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes-gallery').onclick = function(event) { 773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('themesGallery'); 783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (cr.isMac || cr.isWindows || cr.isChromeOS) { 823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes_reset').onclick = function(event) { 833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('themesReset'); 843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes-gallery').onclick = function(event) { 863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick chrome.send('themesGallery'); 873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 89731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 90731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (cr.isChromeOS) { 91731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('loadAccountPicture'); 92731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }, 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 95731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick showStopSyncingOverlay_: function(event) { 96731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick AlertOverlay.show( 97731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick localStrings.getString('stop_syncing_title'), 98731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick localStrings.getString('stop_syncing_explanation'), 99731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick localStrings.getString('stop_syncing_confirm_button_label'), 100731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick undefined, 101731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick function() { chrome.send('stopSyncing'); }); 102731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 103731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 104731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick showSyncLoginDialog_: function(event) { 105731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick chrome.send('showSyncLoginDialog'); 106731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 107731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 108731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setElementVisible_: function(element, visible) { 109731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick element.style.display = visible ? 'inline' : 'none'; 110731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 111731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 112731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setElementClassSyncError_: function(element, visible) { 113731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick visible ? element.classList.add('sync-error') : 114731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick element.classList.remove('sync-error'); 115731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 116731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 117731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncEnabled_: function(enabled) { 118731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.syncEnabled = enabled; 119731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 120731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 121731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncSetupCompleted_: function(completed) { 122731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.syncSetupCompleted = completed; 123731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 124731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 125731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setAccountPicture_: function(image) { 126731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('account-picture').src = image; 127731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 128731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 129731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncStatus_: function(status) { 130731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('sync-status').textContent = status; 131731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 132731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncStatusErrorVisible_: function(visible) { 134731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.setElementClassSyncError_($('sync-status'), visible); 135731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 136731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 137731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncActionLinkErrorVisible_: function(visible) { 138731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.setElementClassSyncError_($('sync-action-link'), visible); 139731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 140731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 141731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncActionLinkEnabled_: function(enabled) { 142731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('sync-action-link').disabled = !enabled; 143731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 144731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 145731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setSyncActionLinkLabel_: function(status) { 146731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('sync-action-link').textContent = status; 147731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 148731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // link-button does is not zero-area when the contents of the button are 149731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // empty, so explicitly hide the element. 150731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.setElementVisible_($('sync-action-link'), status.length != 0); 151731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 152731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 153731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setStartStopButtonVisible_: function(visible) { 154731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.setElementVisible_($('start-stop-sync'), visible); 155731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 156731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 157731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setStartStopButtonEnabled_: function(enabled) { 158731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('start-stop-sync').disabled = !enabled; 159731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 160731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 161731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setStartStopButtonLabel_: function(label) { 162731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('start-stop-sync').textContent = label; 163731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 164731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 165731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setCustomizeButtonVisible_: function(visible) { 166731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.setElementVisible_($('customize-sync'), visible); 167731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 168731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 169731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setCustomizeButtonEnabled_: function(enabled) { 170731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('customize-sync').disabled = !enabled; 171731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }, 172731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 173731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setCustomizeButtonLabel_: function(label) { 174731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('customize-sync').textContent = label; 1753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }, 1763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick setGtkThemeButtonEnabled_: function(enabled) { 1783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (!cr.isChromeOS && navigator.platform.match(/linux|BSD/i)) { 1793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick $('themes_GTK_button').disabled = !enabled; 1803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 1813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }, 1823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick setClassicThemeButtonEnabled_: function(enabled) { 184731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (!cr.isChromeOS && navigator.platform.match(/linux|BSD/i)) { 185731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick $('themes_set_classic').disabled = !enabled; 186731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 1873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }, 1883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 1893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 190731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Forward public APIs to private implementations. 191731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick [ 192731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncEnabled', 193731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncSetupCompleted', 194731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setAccountPicture', 195731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncStatus', 196731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncStatusErrorVisible', 197731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncActionLinkErrorVisible', 198731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncActionLinkEnabled', 199731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setSyncActionLinkLabel', 200731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setStartStopButtonVisible', 201731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setStartStopButtonEnabled', 202731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setStartStopButtonLabel', 203731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setCustomizeButtonVisible', 204731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setCustomizeButtonEnabled', 205731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setCustomizeButtonLabel', 206731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setGtkThemeButtonEnabled', 207731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 'setClassicThemeButtonEnabled', 208731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ].forEach(function(name) { 209731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick PersonalOptions[name] = function(value) { 210731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick PersonalOptions.getInstance()[name + '_'](value); 211731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }; 212731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }); 2133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 2143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Export 2153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick return { 2163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PersonalOptions: PersonalOptions 2173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick }; 2183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 2193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}); 220