| 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('options', function() { | 5 cr.define('options', function() { |
| 6 const OptionsPage = options.OptionsPage; | 6 const OptionsPage = options.OptionsPage; |
| 7 | 7 |
| 8 // Variable to track if a captcha challenge was issued. If this gets set to | 8 // Variable to track if a captcha challenge was issued. If this gets set to |
| 9 // true, it stays that way until we are told about successful login from | 9 // true, it stays that way until we are told about successful login from |
| 10 // the browser. This means subsequent errors (like invalid password) are | 10 // the browser. This means subsequent errors (like invalid password) are |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 var self = this; | 56 var self = this; |
| 57 $('gaia-login-form').onsubmit = function() { | 57 $('gaia-login-form').onsubmit = function() { |
| 58 self.sendCredentialsAndClose_(); | 58 self.sendCredentialsAndClose_(); |
| 59 return false; | 59 return false; |
| 60 }; | 60 }; |
| 61 $('choose-data-types-form').onsubmit = function() { | 61 $('choose-data-types-form').onsubmit = function() { |
| 62 self.sendConfiguration_(); | 62 self.sendConfiguration_(); |
| 63 return false; | 63 return false; |
| 64 }; | 64 }; |
| 65 $('google-option').onchange = $('explicit-option').onchange = function() { | 65 $('google-option').onchange = $('explicit-option').onchange = function() { |
| 66 self.onRadioChange_(); | 66 self.onPassphraseRadioChanged_(); |
| 67 }; | 67 }; |
| 68 $('choose-datatypes-cancel').onclick = $('sync-setup-cancel').onclick = | 68 $('choose-datatypes-cancel').onclick = $('sync-setup-cancel').onclick = |
| 69 $('confirm-everything-cancel').onclick = function() { | 69 $('confirm-everything-cancel').onclick = function() { |
| 70 self.closeOverlay_(); | 70 self.closeOverlay_(); |
| 71 }; | 71 }; |
| 72 $('customize-link').onclick = function() { | 72 $('customize-link').onclick = function() { |
| 73 self.showCustomizePage_(true); | 73 self.showCustomizePage_(true); |
| 74 }; | 74 }; |
| 75 $('confirm-everything-ok').onclick = function() { | 75 $('confirm-everything-ok').onclick = function() { |
| 76 self.sendConfiguration_(); | 76 self.sendConfiguration_(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 $('passphrase-cancel').disabled = true; | 116 $('passphrase-cancel').disabled = true; |
| 117 $('cancel-no-button').focus(); | 117 $('cancel-no-button').focus(); |
| 118 }, | 118 }, |
| 119 | 119 |
| 120 sendPassphraseAndClose_: function() { | 120 sendPassphraseAndClose_: function() { |
| 121 var f = $('passphrase-form'); | 121 var f = $('passphrase-form'); |
| 122 var result = JSON.stringify({"passphrase": f.passphrase.value}); | 122 var result = JSON.stringify({"passphrase": f.passphrase.value}); |
| 123 chrome.send("Passphrase", [result]); | 123 chrome.send("Passphrase", [result]); |
| 124 }, | 124 }, |
| 125 | 125 |
| 126 getRadioCheckedValue_: function() { | 126 getEncryptionRadioCheckedValue_: function() { |
| 127 var f = $('choose-data-types-form'); |
| 128 for (var i = 0; i < f.encrypt.length; ++i) { |
| 129 if (f.encrypt[i].checked) { |
| 130 return f.encrypt[i].value; |
| 131 } |
| 132 } |
| 133 |
| 134 return undefined; |
| 135 }, |
| 136 |
| 137 getPassphraseRadioCheckedValue_: function() { |
| 127 var f = $('choose-data-types-form'); | 138 var f = $('choose-data-types-form'); |
| 128 for (var i = 0; i < f.option.length; ++i) { | 139 for (var i = 0; i < f.option.length; ++i) { |
| 129 if (f.option[i].checked) { | 140 if (f.option[i].checked) { |
| 130 return f.option[i].value; | 141 return f.option[i].value; |
| 131 } | 142 } |
| 132 } | 143 } |
| 133 | 144 |
| 134 return undefined; | 145 return undefined; |
| 135 }, | 146 }, |
| 136 | 147 |
| 137 onRadioChange_: function() { | 148 disableEncryptionRadioGroup_: function() { |
| 138 var visible = this.getRadioCheckedValue_() == "explicit"; | 149 var f = $('choose-data-types-form'); |
| 150 for (var i = 0; i < f.encrypt.length; ++i) |
| 151 f.encrypt[i].disabled = true; |
| 152 }, |
| 153 |
| 154 onPassphraseRadioChanged_: function() { |
| 155 var visible = this.getPassphraseRadioCheckedValue_() == "explicit"; |
| 139 $('sync-custom-passphrase').hidden = !visible; | 156 $('sync-custom-passphrase').hidden = !visible; |
| 140 }, | 157 }, |
| 141 | 158 |
| 142 checkAllDataTypeCheckboxes_: function() { | 159 checkAllDataTypeCheckboxes_: function() { |
| 143 var checkboxes = document.getElementsByName("dataTypeCheckbox"); | 160 var checkboxes = document.getElementsByName("dataTypeCheckbox"); |
| 144 for (var i = 0; i < checkboxes.length; i++) { | 161 for (var i = 0; i < checkboxes.length; i++) { |
| 145 // Only check the visible ones (since there's no way to uncheck | 162 // Only check the visible ones (since there's no way to uncheck |
| 146 // the invisible ones). | 163 // the invisible ones). |
| 147 if (checkboxes[i].parentElement.className == "sync-item-show") { | 164 if (checkboxes[i].parentElement.className == "sync-item-show") { |
| 148 checkboxes[i].checked = true; | 165 checkboxes[i].checked = true; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 return atLeastOneEnabled && !atLeastOneChecked; | 206 return atLeastOneEnabled && !atLeastOneChecked; |
| 190 }, | 207 }, |
| 191 | 208 |
| 192 checkPassphraseMatch_: function() { | 209 checkPassphraseMatch_: function() { |
| 193 var emptyError = $('empty-error'); | 210 var emptyError = $('empty-error'); |
| 194 var mismatchError = $('mismatch-error'); | 211 var mismatchError = $('mismatch-error'); |
| 195 emptyError.style.display = "none"; | 212 emptyError.style.display = "none"; |
| 196 mismatchError.style.display = "none"; | 213 mismatchError.style.display = "none"; |
| 197 | 214 |
| 198 var f = $('choose-data-types-form'); | 215 var f = $('choose-data-types-form'); |
| 199 if (this.getRadioCheckedValue_() != "explicit" || f.option[0].disabled) | 216 if (this.getPassphraseRadioCheckedValue_() != "explicit" || |
| 217 f.option[0].disabled) |
| 200 return true; | 218 return true; |
| 201 | 219 |
| 202 var customPassphrase = $('custom-passphrase'); | 220 var customPassphrase = $('custom-passphrase'); |
| 203 if (customPassphrase.value.length == 0) { | 221 if (customPassphrase.value.length == 0) { |
| 204 emptyError.style.display = "block"; | 222 emptyError.style.display = "block"; |
| 205 return false; | 223 return false; |
| 206 } | 224 } |
| 207 | 225 |
| 208 var confirmPassphrase = $('confirm-passphrase'); | 226 var confirmPassphrase = $('confirm-passphrase'); |
| 209 if (confirmPassphrase.value != customPassphrase.value) { | 227 if (confirmPassphrase.value != customPassphrase.value) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 233 var f = $('choose-data-types-form'); | 251 var f = $('choose-data-types-form'); |
| 234 if (!this.checkPassphraseMatch_()) | 252 if (!this.checkPassphraseMatch_()) |
| 235 return; | 253 return; |
| 236 | 254 |
| 237 // Don't allow the user to tweak the settings once we send the | 255 // Don't allow the user to tweak the settings once we send the |
| 238 // configuration to the backend. | 256 // configuration to the backend. |
| 239 this.disableConfigureElements_(); | 257 this.disableConfigureElements_(); |
| 240 | 258 |
| 241 var syncAll = | 259 var syncAll = |
| 242 document.getElementById('sync-select-datatypes').selectedIndex == 0; | 260 document.getElementById('sync-select-datatypes').selectedIndex == 0; |
| 261 var usePassphrase = this.getPassphraseRadioCheckedValue_() == 'explicit'; |
| 262 var encryptAllData = this.getEncryptionRadioCheckedValue_() == 'all'; |
| 243 | 263 |
| 244 // These values need to be kept in sync with where they are read in | 264 // These values need to be kept in sync with where they are read in |
| 245 // SyncSetupFlow::GetDataTypeChoiceData(). | 265 // SyncSetupFlow::GetDataTypeChoiceData(). |
| 246 var result = JSON.stringify({ | 266 var result = JSON.stringify({ |
| 247 "keepEverythingSynced": syncAll, | 267 "keepEverythingSynced": syncAll, |
| 248 "syncBookmarks": syncAll || $('bookmarks-checkbox').checked, | 268 "syncBookmarks": syncAll || $('bookmarks-checkbox').checked, |
| 249 "syncPreferences": syncAll || $('preferences-checkbox').checked, | 269 "syncPreferences": syncAll || $('preferences-checkbox').checked, |
| 250 "syncThemes": syncAll || $('themes-checkbox').checked, | 270 "syncThemes": syncAll || $('themes-checkbox').checked, |
| 251 "syncPasswords": syncAll || $('passwords-checkbox').checked, | 271 "syncPasswords": syncAll || $('passwords-checkbox').checked, |
| 252 "syncAutofill": syncAll || $('autofill-checkbox').checked, | 272 "syncAutofill": syncAll || $('autofill-checkbox').checked, |
| 253 "syncExtensions": syncAll || $('extensions-checkbox').checked, | 273 "syncExtensions": syncAll || $('extensions-checkbox').checked, |
| 254 "syncTypedUrls": syncAll || $('typed-urls-checkbox').checked, | 274 "syncTypedUrls": syncAll || $('typed-urls-checkbox').checked, |
| 255 "syncApps": syncAll || $('apps-checkbox').checked, | 275 "syncApps": syncAll || $('apps-checkbox').checked, |
| 256 "syncSessions": syncAll || $('sessions-checkbox').checked, | 276 "syncSessions": syncAll || $('sessions-checkbox').checked, |
| 257 "usePassphrase": (this.getRadioCheckedValue_() == 'explicit'), | 277 "encryptAllData": encryptAllData, |
| 278 "usePassphrase": usePassphrase, |
| 258 "passphrase": $('custom-passphrase').value | 279 "passphrase": $('custom-passphrase').value |
| 259 }); | 280 }); |
| 260 chrome.send("Configure", [result]); | 281 chrome.send("Configure", [result]); |
| 261 }, | 282 }, |
| 262 | 283 |
| 263 /** | 284 /** |
| 264 * Disables all input elements within the 'Customize Sync Preferences' | 285 * Disables all input elements within the 'Customize Sync Preferences' |
| 265 * screen. This is used to prohibit the user from changing the inputs after | 286 * screen. This is used to prohibit the user from changing the inputs after |
| 266 * confirming the customized sync preferences. | 287 * confirming the customized sync preferences. |
| 267 * @private | 288 * @private |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 | 341 |
| 321 this.setCheckboxesToKeepEverythingSynced_(args.keepEverythingSynced); | 342 this.setCheckboxesToKeepEverythingSynced_(args.keepEverythingSynced); |
| 322 if (args.sessionsRegistered) { | 343 if (args.sessionsRegistered) { |
| 323 $('sessions-checkbox').checked = args.syncSessions; | 344 $('sessions-checkbox').checked = args.syncSessions; |
| 324 $('sessions-item').className = "sync-item-show"; | 345 $('sessions-item').className = "sync-item-show"; |
| 325 } else { | 346 } else { |
| 326 $('sessions-item').className = "sync-item-hide"; | 347 $('sessions-item').className = "sync-item-hide"; |
| 327 } | 348 } |
| 328 }, | 349 }, |
| 329 | 350 |
| 330 setEncryptionCheckboxes_: function(args) { | 351 setEncryptionRadios_: function(args) { |
| 331 if (args["usePassphrase"]) { | 352 if (args['encryptAllData']) { |
| 353 $('encrypt-all-option').checked = true; |
| 354 this.disableEncryptionRadioGroup_(); |
| 355 } else { |
| 356 $('encrypt-sensitive-option').checked = true; |
| 357 } |
| 358 }, |
| 359 |
| 360 setPassphraseRadios_: function(args) { |
| 361 if (args['usePassphrase']) { |
| 332 $('explicit-option').checked = true; | 362 $('explicit-option').checked = true; |
| 333 | 363 |
| 334 // The passphrase, once set, cannot be unset, but we show a reset link. | 364 // The passphrase, once set, cannot be unset, but we show a reset link. |
| 335 $('explicit-option').disabled = true; | 365 $('explicit-option').disabled = true; |
| 336 $('google-option').disabled = true; | 366 $('google-option').disabled = true; |
| 337 $('sync-custom-passphrase').hidden = true; | 367 $('sync-custom-passphrase').hidden = true; |
| 338 } else { | 368 } else { |
| 339 $('google-option').checked = true; | 369 $('google-option').checked = true; |
| 340 } | 370 } |
| 341 }, | 371 }, |
| 342 | 372 |
| 343 setErrorState_: function(args) { | 373 setErrorState_: function(args) { |
| 344 if (!args.was_aborted) | 374 if (!args.was_aborted) |
| 345 return; | 375 return; |
| 346 | 376 |
| 347 $('aborted-text').className = "sync-error-show"; | 377 $('aborted-text').className = "sync-error-show"; |
| 348 $('choose-datatypes-ok').disabled = true; | 378 $('choose-datatypes-ok').disabled = true; |
| 349 }, | 379 }, |
| 350 | 380 |
| 351 setCheckboxesAndErrors_: function(args) { | 381 setCheckboxesAndErrors_: function(args) { |
| 352 this.setChooseDataTypesCheckboxes_(args); | 382 this.setChooseDataTypesCheckboxes_(args); |
| 353 this.setEncryptionCheckboxes_(args); | 383 this.setEncryptionRadios_(args); |
| 384 this.setPassphraseRadios_(args); |
| 354 this.setErrorState_(args); | 385 this.setErrorState_(args); |
| 355 }, | 386 }, |
| 356 | 387 |
| 357 // Called once, when this html/js is loaded. | 388 // Called once, when this html/js is loaded. |
| 358 showConfigure_: function(args) { | 389 showConfigure_: function(args) { |
| 359 var datatypeSelect = document.getElementById('sync-select-datatypes'); | 390 var datatypeSelect = document.getElementById('sync-select-datatypes'); |
| 360 var self = this; | 391 var self = this; |
| 361 datatypeSelect.onchange = function() { | 392 datatypeSelect.onchange = function() { |
| 362 var syncAll = this.selectedIndex == 0; | 393 var syncAll = this.selectedIndex == 0; |
| 363 self.setCheckboxesToKeepEverythingSynced_(syncAll); | 394 self.setCheckboxesToKeepEverythingSynced_(syncAll); |
| 364 }; | 395 }; |
| 365 | 396 |
| 366 $('sync-setup-configure').classList.remove('hidden'); | 397 $('sync-setup-configure').classList.remove('hidden'); |
| 367 | 398 |
| 368 if (args) { | 399 if (args) { |
| 400 if (!args['encryptionEnabled']) |
| 401 $('customize-sync-encryption').classList.add('hidden'); |
| 369 this.setCheckboxesAndErrors_(args); | 402 this.setCheckboxesAndErrors_(args); |
| 370 | 403 |
| 371 // Whether to display the 'Sync everything' confirmation page or the | 404 // Whether to display the 'Sync everything' confirmation page or the |
| 372 // customize data types page. | 405 // customize data types page. |
| 373 var showSyncEverythingPage = args['showSyncEverythingPage']; | 406 var showSyncEverythingPage = args['showSyncEverythingPage']; |
| 374 var keepEverythingSynced = args['keepEverythingSynced']; | 407 var keepEverythingSynced = args['keepEverythingSynced']; |
| 375 this.usePassphrase_ = args['usePassphrase']; | 408 this.usePassphrase_ = args['usePassphrase']; |
| 376 if (showSyncEverythingPage == false || | 409 if (showSyncEverythingPage == false || |
| 377 keepEverythingSynced == false || this.usePassphrase_) { | 410 keepEverythingSynced == false || this.usePassphrase_) { |
| 378 this.showCustomizePage_(keepEverythingSynced); | 411 this.showCustomizePage_(keepEverythingSynced); |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 | 701 |
| 669 SyncSetupOverlay.showSuccessAndSettingUp = function() { | 702 SyncSetupOverlay.showSuccessAndSettingUp = function() { |
| 670 SyncSetupOverlay.getInstance().showSuccessAndSettingUp_(); | 703 SyncSetupOverlay.getInstance().showSuccessAndSettingUp_(); |
| 671 }; | 704 }; |
| 672 | 705 |
| 673 // Export | 706 // Export |
| 674 return { | 707 return { |
| 675 SyncSetupOverlay: SyncSetupOverlay | 708 SyncSetupOverlay: SyncSetupOverlay |
| 676 }; | 709 }; |
| 677 }); | 710 }); |
| OLD | NEW |