Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 // TODO(kochi): Generalize the notification as a component and put it | 5 // TODO(kochi): Generalize the notification as a component and put it |
| 6 // in js/cr/ui/notification.js . | 6 // in js/cr/ui/notification.js . |
| 7 | 7 |
| 8 cr.define('options', function() { | 8 cr.define('options', function() { |
| 9 /** @const */ var OptionsPage = options.OptionsPage; | 9 /** @const */ var OptionsPage = options.OptionsPage; |
| 10 /** @const */ var LanguageList = options.LanguageList; | 10 /** @const */ var LanguageList = options.LanguageList; |
| 11 /** @const */ var ThirdPartyImeConfirmOverlay = | |
| 12 options.ThirdPartyImeConfirmOverlay; | |
| 11 | 13 |
| 12 /** | 14 /** |
| 13 * Spell check dictionary download status. | 15 * Spell check dictionary download status. |
| 14 * @type {Enum} | 16 * @type {Enum} |
| 15 */ | 17 */ |
| 16 /** @const*/ var DOWNLOAD_STATUS = { | 18 /** @const*/ var DOWNLOAD_STATUS = { |
| 17 IN_PROGRESS: 1, | 19 IN_PROGRESS: 1, |
| 18 FAILED: 2 | 20 FAILED: 2 |
| 19 }; | 21 }; |
| 20 | 22 |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 311 var inputMethodTemplate = $('language-options-input-method-template'); | 313 var inputMethodTemplate = $('language-options-input-method-template'); |
| 312 | 314 |
| 313 for (var i = 0; i < inputMethods.length; i++) { | 315 for (var i = 0; i < inputMethods.length; i++) { |
| 314 var inputMethod = inputMethods[i]; | 316 var inputMethod = inputMethods[i]; |
| 315 var element = inputMethodTemplate.cloneNode(true); | 317 var element = inputMethodTemplate.cloneNode(true); |
| 316 element.id = ''; | 318 element.id = ''; |
| 317 element.languageCodeSet = inputMethod.languageCodeSet; | 319 element.languageCodeSet = inputMethod.languageCodeSet; |
| 318 | 320 |
| 319 var input = element.querySelector('input'); | 321 var input = element.querySelector('input'); |
| 320 input.inputMethodId = inputMethod.id; | 322 input.inputMethodId = inputMethod.id; |
| 323 input.imeProvider = inputMethod.extensionName; | |
| 321 var span = element.querySelector('span'); | 324 var span = element.querySelector('span'); |
| 322 span.textContent = inputMethod.displayName; | 325 span.textContent = inputMethod.displayName; |
| 323 | 326 |
| 324 if (inputMethod.optionsPage) { | 327 if (inputMethod.optionsPage) { |
| 325 var button = document.createElement('button'); | 328 var button = document.createElement('button'); |
| 326 button.textContent = loadTimeData.getString('configure'); | 329 button.textContent = loadTimeData.getString('configure'); |
| 327 button.inputMethodId = inputMethod.id; | 330 button.inputMethodId = inputMethod.id; |
| 328 button.onclick = function(inputMethodId, e) { | 331 button.onclick = function(inputMethodId, e) { |
| 329 chrome.send('inputMethodOptionsOpen', [inputMethodId]); | 332 chrome.send('inputMethodOptionsOpen', [inputMethodId]); |
| 330 }.bind(this, inputMethod.id); | 333 }.bind(this, inputMethod.id); |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 816 }, | 819 }, |
| 817 | 820 |
| 818 /** | 821 /** |
| 819 * Handles input method checkbox's click event. | 822 * Handles input method checkbox's click event. |
| 820 * @param {Event} e Click event. | 823 * @param {Event} e Click event. |
| 821 * @private | 824 * @private |
| 822 */ | 825 */ |
| 823 handleCheckboxClick_: function(e) { | 826 handleCheckboxClick_: function(e) { |
| 824 var checkbox = e.target; | 827 var checkbox = e.target; |
| 825 | 828 |
| 829 // Third party IMEs require additional confirmation prior to enabling due | |
| 830 // to privacy risk. | |
| 831 if (!!checkbox.imeProvider && checkbox.checked) { | |
|
Dan Beam
2014/06/09 21:37:36
you don't need the !!
Shu Chen
2014/06/10 01:02:18
I think it would be safer to check IME ID instead
kevers
2014/06/10 17:56:44
Done.
| |
| 832 var self = this; | |
| 833 var confirmationCallback = function() { | |
| 834 self.handleCheckboxUpdate_(checkbox); | |
| 835 }; | |
|
Dan Beam
2014/06/09 21:37:36
nit: var confirmationCallback = this.handleCheckbo
kevers
2014/06/10 17:56:44
Done.
| |
| 836 var cancellationCallback = function() { | |
| 837 checkbox.checked = false; | |
| 838 } | |
|
Dan Beam
2014/06/09 21:37:36
};
kevers
2014/06/10 17:56:44
Done.
| |
| 839 ThirdPartyImeConfirmOverlay.showConfirmationDialog({ | |
| 840 extension: checkbox.imeProvider, | |
| 841 confirm: confirmationCallback, | |
| 842 cancel: cancellationCallback | |
| 843 }); | |
| 844 } else { | |
| 845 this.handleCheckboxUpdate_(checkbox); | |
| 846 } | |
| 847 }, | |
| 848 | |
| 849 /** | |
| 850 * Updates active IMEs based on change in state of a checkbox for an input | |
| 851 * method. | |
| 852 * @param {!Element} checkbox Updated checkbox element. | |
| 853 * @private | |
| 854 */ | |
| 855 handleCheckboxUpdate_: function(checkbox) { | |
| 826 if (checkbox.inputMethodId.match(/^_ext_ime_/)) { | 856 if (checkbox.inputMethodId.match(/^_ext_ime_/)) { |
| 827 this.updateEnabledExtensionsFromCheckboxes_(); | 857 this.updateEnabledExtensionsFromCheckboxes_(); |
| 828 this.saveEnabledExtensionPref_(); | 858 this.saveEnabledExtensionPref_(); |
| 829 return; | 859 return; |
| 830 } | 860 } |
| 831 if (this.preloadEngines_.length == 1 && !checkbox.checked) { | 861 if (this.preloadEngines_.length == 1 && !checkbox.checked) { |
| 832 // Don't allow disabling the last input method. | 862 // Don't allow disabling the last input method. |
| 833 this.showNotification_( | 863 this.showNotification_( |
| 834 loadTimeData.getString('pleaseAddAnotherInputMethod'), | 864 loadTimeData.getString('pleaseAddAnotherInputMethod'), |
| 835 loadTimeData.getString('okButton')); | 865 loadTimeData.getString('okButton')); |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1328 | 1358 |
| 1329 LanguageOptions.onComponentManagerInitialized = function(componentImes) { | 1359 LanguageOptions.onComponentManagerInitialized = function(componentImes) { |
| 1330 LanguageOptions.getInstance().appendComponentExtensionIme_(componentImes); | 1360 LanguageOptions.getInstance().appendComponentExtensionIme_(componentImes); |
| 1331 }; | 1361 }; |
| 1332 | 1362 |
| 1333 // Export | 1363 // Export |
| 1334 return { | 1364 return { |
| 1335 LanguageOptions: LanguageOptions | 1365 LanguageOptions: LanguageOptions |
| 1336 }; | 1366 }; |
| 1337 }); | 1367 }); |
| OLD | NEW |