Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: chrome/browser/resources/options/language_options.js

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 Page = cr.ui.pageManager.Page; 9 /** @const */ var Page = cr.ui.pageManager.Page;
10 /** @const */ var PageManager = cr.ui.pageManager.PageManager; 10 /** @const */ var PageManager = cr.ui.pageManager.PageManager;
11 /** @const */ var LanguageList = options.LanguageList; 11 /** @const */ var LanguageList = options.LanguageList;
12 /** @const */ var ThirdPartyImeConfirmOverlay = 12 /** @const */ var ThirdPartyImeConfirmOverlay =
13 options.ThirdPartyImeConfirmOverlay; 13 options.ThirdPartyImeConfirmOverlay;
14 14
15 /** 15 /**
16 * Spell check dictionary download status. 16 * Spell check dictionary download status.
17 * @type {Enum} 17 * @type {Enum}
18 */ 18 */
19 /** @const*/ var DOWNLOAD_STATUS = { 19 /** @const*/ var DOWNLOAD_STATUS = {IN_PROGRESS: 1, FAILED: 2};
20 IN_PROGRESS: 1,
21 FAILED: 2
22 };
23 20
24 /** 21 /**
25 * The preference is a boolean that enables/disables spell checking. 22 * The preference is a boolean that enables/disables spell checking.
26 * @type {string} 23 * @type {string}
27 * @const 24 * @const
28 */ 25 */
29 var ENABLE_SPELL_CHECK_PREF = 'browser.enable_spellchecking'; 26 var ENABLE_SPELL_CHECK_PREF = 'browser.enable_spellchecking';
30 27
31 /** 28 /**
32 * The preference is a CSV string that describes preload engines 29 * The preference is a CSV string that describes preload engines
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 72
76 ///////////////////////////////////////////////////////////////////////////// 73 /////////////////////////////////////////////////////////////////////////////
77 // LanguageOptions class: 74 // LanguageOptions class:
78 75
79 /** 76 /**
80 * Encapsulated handling of ChromeOS language options page. 77 * Encapsulated handling of ChromeOS language options page.
81 * @constructor 78 * @constructor
82 * @extends {cr.ui.pageManager.Page} 79 * @extends {cr.ui.pageManager.Page}
83 */ 80 */
84 function LanguageOptions(model) { 81 function LanguageOptions(model) {
85 Page.call(this, 'languages', 82 Page.call(
86 loadTimeData.getString('languagePageTabTitle'), 'languagePage'); 83 this, 'languages', loadTimeData.getString('languagePageTabTitle'),
84 'languagePage');
87 } 85 }
88 86
89 cr.addSingletonGetter(LanguageOptions); 87 cr.addSingletonGetter(LanguageOptions);
90 88
91 // Inherit LanguageOptions from Page. 89 // Inherit LanguageOptions from Page.
92 LanguageOptions.prototype = { 90 LanguageOptions.prototype = {
93 __proto__: Page.prototype, 91 __proto__: Page.prototype,
94 92
95 /** 93 /**
96 * For recording the prospective language (the next locale after relaunch). 94 * For recording the prospective language (the next locale after relaunch).
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 */ 163 */
166 enableTranslate_: false, 164 enableTranslate_: false,
167 165
168 /** @override */ 166 /** @override */
169 initializePage: function() { 167 initializePage: function() {
170 Page.prototype.initializePage.call(this); 168 Page.prototype.initializePage.call(this);
171 169
172 var languageOptionsList = $('language-options-list'); 170 var languageOptionsList = $('language-options-list');
173 LanguageList.decorate(languageOptionsList); 171 LanguageList.decorate(languageOptionsList);
174 172
175 languageOptionsList.addEventListener('change', 173 languageOptionsList.addEventListener(
176 this.handleLanguageOptionsListChange_.bind(this)); 174 'change', this.handleLanguageOptionsListChange_.bind(this));
177 languageOptionsList.addEventListener('save', 175 languageOptionsList.addEventListener(
178 this.handleLanguageOptionsListSave_.bind(this)); 176 'save', this.handleLanguageOptionsListSave_.bind(this));
179 177
180 this.prospectiveUiLanguageCode_ = 178 this.prospectiveUiLanguageCode_ =
181 loadTimeData.getString('prospectiveUiLanguageCode'); 179 loadTimeData.getString('prospectiveUiLanguageCode');
182 this.addEventListener('visibleChange', 180 this.addEventListener(
183 this.handleVisibleChange_.bind(this)); 181 'visibleChange', this.handleVisibleChange_.bind(this));
184 182
185 if (cr.isChromeOS) { 183 if (cr.isChromeOS) {
186 this.initializeInputMethodList_(); 184 this.initializeInputMethodList_();
187 this.initializeLanguageCodeToInputMethodIdsMap_(); 185 this.initializeLanguageCodeToInputMethodIdsMap_();
188 } 186 }
189 187
190 var checkbox = $('offer-to-translate-in-this-language'); 188 var checkbox = $('offer-to-translate-in-this-language');
191 checkbox.addEventListener('click', 189 checkbox.addEventListener(
192 this.handleOfferToTranslateCheckboxClick_.bind(this)); 190 'click', this.handleOfferToTranslateCheckboxClick_.bind(this));
193 191
194 Preferences.getInstance().addEventListener( 192 Preferences.getInstance().addEventListener(
195 TRANSLATE_BLOCKED_LANGUAGES_PREF, 193 TRANSLATE_BLOCKED_LANGUAGES_PREF,
196 this.handleTranslateBlockedLanguagesPrefChange_.bind(this)); 194 this.handleTranslateBlockedLanguagesPrefChange_.bind(this));
197 Preferences.getInstance().addEventListener(SPELL_CHECK_DICTIONARIES_PREF, 195 Preferences.getInstance().addEventListener(
196 SPELL_CHECK_DICTIONARIES_PREF,
198 this.handleSpellCheckDictionariesPrefChange_.bind(this)); 197 this.handleSpellCheckDictionariesPrefChange_.bind(this));
199 Preferences.getInstance().addEventListener(ENABLE_TRANSLATE, 198 Preferences.getInstance().addEventListener(
200 this.handleEnableTranslatePrefChange_.bind(this)); 199 ENABLE_TRANSLATE, this.handleEnableTranslatePrefChange_.bind(this));
201 this.translateSupportedLanguages_ = /** @type {Array} */( 200 this.translateSupportedLanguages_ = /** @type {Array} */ (
202 loadTimeData.getValue('translateSupportedLanguages')); 201 loadTimeData.getValue('translateSupportedLanguages'));
203 202
204 // Set up add button. 203 // Set up add button.
205 var onclick = function(e) { 204 var onclick = function(e) {
206 // Add the language without showing the overlay if it's specified in 205 // Add the language without showing the overlay if it's specified in
207 // the URL hash (ex. lang_add=ja). Used for automated testing. 206 // the URL hash (ex. lang_add=ja). Used for automated testing.
208 var match = document.location.hash.match(/\blang_add=([\w-]+)/); 207 var match = document.location.hash.match(/\blang_add=([\w-]+)/);
209 if (match) { 208 if (match) {
210 var addLanguageCode = match[1]; 209 var addLanguageCode = match[1];
211 $('language-options-list').addLanguage(addLanguageCode); 210 $('language-options-list').addLanguage(addLanguageCode);
212 this.addBlockedLanguage_(addLanguageCode); 211 this.addBlockedLanguage_(addLanguageCode);
213 } else { 212 } else {
214 PageManager.showPageByName('addLanguage'); 213 PageManager.showPageByName('addLanguage');
215 chrome.send('coreOptionsUserMetricsAction', 214 chrome.send(
216 ['Options_Languages_Add']); 215 'coreOptionsUserMetricsAction', ['Options_Languages_Add']);
217 } 216 }
218 }; 217 };
219 $('language-options-add-button').onclick = onclick.bind(this); 218 $('language-options-add-button').onclick = onclick.bind(this);
220 219
221 if (!cr.isMac) { 220 if (!cr.isMac) {
222 // Set up the button for editing custom spelling dictionary. 221 // Set up the button for editing custom spelling dictionary.
223 $('edit-custom-dictionary-button').onclick = function(e) { 222 $('edit-custom-dictionary-button').onclick = function(e) {
224 PageManager.showPageByName('editDictionary'); 223 PageManager.showPageByName('editDictionary');
225 }; 224 };
226 $('dictionary-download-retry-button').onclick = function(e) { 225 $('dictionary-download-retry-button').onclick = function(e) {
227 chrome.send('retryDictionaryDownload', 226 chrome.send(
228 [e.currentTarget.languageCode]); 227 'retryDictionaryDownload', [e.currentTarget.languageCode]);
229 }; 228 };
230 } 229 }
231 230
232 // Listen to add language dialog ok button. 231 // Listen to add language dialog ok button.
233 $('add-language-overlay-ok-button').addEventListener( 232 $('add-language-overlay-ok-button')
234 'click', this.handleAddLanguageOkButtonClick_.bind(this)); 233 .addEventListener(
234 'click', this.handleAddLanguageOkButtonClick_.bind(this));
235 235
236 if (!(cr.isMac || cr.isChromeOS)) { 236 if (!(cr.isMac || cr.isChromeOS)) {
237 // Handle spell check enable/disable. 237 // Handle spell check enable/disable.
238 Preferences.getInstance().addEventListener( 238 Preferences.getInstance().addEventListener(
239 ENABLE_SPELL_CHECK_PREF, this.updateEnableSpellCheck_.bind(this)); 239 ENABLE_SPELL_CHECK_PREF, this.updateEnableSpellCheck_.bind(this));
240 } 240 }
241 241
242 // Handle clicks on "Use this language for spell checking" button. 242 // Handle clicks on "Use this language for spell checking" button.
243 if (!cr.isMac) { 243 if (!cr.isMac) {
244 $('spellcheck-language-checkbox').addEventListener( 244 $('spellcheck-language-checkbox')
245 'change', 245 .addEventListener(
246 this.handleSpellCheckLanguageCheckboxClick_.bind(this)); 246 'change',
247 this.handleSpellCheckLanguageCheckboxClick_.bind(this));
247 } 248 }
248 249
249 if (cr.isChromeOS) { 250 if (cr.isChromeOS) {
250 $('language-options-ui-restart-button').onclick = function() { 251 $('language-options-ui-restart-button').onclick = function() {
251 chrome.send('uiLanguageRestart'); 252 chrome.send('uiLanguageRestart');
252 }; 253 };
253 } 254 }
254 255
255 $('language-confirm').onclick = 256 $('language-confirm').onclick =
256 PageManager.closeOverlay.bind(PageManager); 257 PageManager.closeOverlay.bind(PageManager);
257 258
258 // Public session users cannot change the locale. 259 // Public session users cannot change the locale.
259 if (cr.isChromeOS && UIAccountTweaks.loggedInAsPublicAccount()) 260 if (cr.isChromeOS && UIAccountTweaks.loggedInAsPublicAccount())
260 $('language-options-ui-language-section').hidden = true; 261 $('language-options-ui-language-section').hidden = true;
261 262
262 // IME menu (CrOS only). 263 // IME menu (CrOS only).
263 if (cr.isChromeOS) { 264 if (cr.isChromeOS) {
264 // Show the 'activate-ime-menu' checkbox if the flag is tured on. 265 // Show the 'activate-ime-menu' checkbox if the flag is tured on.
265 if (loadTimeData.getBoolean('enableLanguageOptionsImeMenu')) 266 if (loadTimeData.getBoolean('enableLanguageOptionsImeMenu'))
266 $('language-options-ime-menu-template').hidden = false; 267 $('language-options-ime-menu-template').hidden = false;
267 268
268 // Updates the initial checked state of the check box. 269 // Updates the initial checked state of the check box.
269 Preferences.getInstance().addEventListener( 270 Preferences.getInstance().addEventListener(
270 ACTIVATE_IME_MENU_PREF, this.updateImeMenuCheckbox_.bind(this)); 271 ACTIVATE_IME_MENU_PREF, this.updateImeMenuCheckbox_.bind(this));
271 272
272 // Listen to check on 'activate-ime-menu' checkbox. 273 // Listen to check on 'activate-ime-menu' checkbox.
273 var checkboxImeMenu = $('activate-ime-menu'); 274 var checkboxImeMenu = $('activate-ime-menu');
274 checkboxImeMenu.addEventListener('click', 275 checkboxImeMenu.addEventListener(
275 this.handleActivateImeMenuCheckboxClick_.bind(this)); 276 'click', this.handleActivateImeMenuCheckboxClick_.bind(this));
276 } 277 }
277 }, 278 },
278 279
279 /** 280 /**
280 * Initializes the input method list. 281 * Initializes the input method list.
281 */ 282 */
282 initializeInputMethodList_: function() { 283 initializeInputMethodList_: function() {
283 var inputMethodList = $('language-options-input-method-list'); 284 var inputMethodList = $('language-options-input-method-list');
284 var inputMethodPrototype = $('language-options-input-method-template'); 285 var inputMethodPrototype = $('language-options-input-method-template');
285 286
286 // Add all input methods, but make all of them invisible here. We'll 287 // Add all input methods, but make all of them invisible here. We'll
287 // change the visibility in handleLanguageOptionsListChange_() based 288 // change the visibility in handleLanguageOptionsListChange_() based
288 // on the selected language. Note that we only have less than 100 289 // on the selected language. Note that we only have less than 100
289 // input methods, so creating DOM nodes at once here should be ok. 290 // input methods, so creating DOM nodes at once here should be ok.
290 this.appendInputMethodElement_(/** @type {!Array} */( 291 this.appendInputMethodElement_(
291 loadTimeData.getValue('inputMethodList'))); 292 /** @type {!Array} */ (loadTimeData.getValue('inputMethodList')));
292 this.appendComponentExtensionIme_(/** @type {!Array} */( 293 this.appendComponentExtensionIme_(/** @type {!Array} */ (
293 loadTimeData.getValue('componentExtensionImeList'))); 294 loadTimeData.getValue('componentExtensionImeList')));
294 this.appendInputMethodElement_(/** @type {!Array} */( 295 this.appendInputMethodElement_(
295 loadTimeData.getValue('extensionImeList'))); 296 /** @type {!Array} */ (loadTimeData.getValue('extensionImeList')));
296 297
297 // Listen to pref change once the input method list is initialized. 298 // Listen to pref change once the input method list is initialized.
298 Preferences.getInstance().addEventListener( 299 Preferences.getInstance().addEventListener(
299 PRELOAD_ENGINES_PREF, 300 PRELOAD_ENGINES_PREF,
300 this.handlePreloadEnginesPrefChange_.bind(this)); 301 this.handlePreloadEnginesPrefChange_.bind(this));
301 Preferences.getInstance().addEventListener( 302 Preferences.getInstance().addEventListener(
302 ENABLED_EXTENSION_IME_PREF, 303 ENABLED_EXTENSION_IME_PREF,
303 this.handleEnabledExtensionsPrefChange_.bind(this)); 304 this.handleEnabledExtensionsPrefChange_.bind(this));
304 }, 305 },
305 306
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 var button = document.createElement('button'); 352 var button = document.createElement('button');
352 button.textContent = loadTimeData.getString('configure'); 353 button.textContent = loadTimeData.getString('configure');
353 button.inputMethodId = inputMethod.id; 354 button.inputMethodId = inputMethod.id;
354 button.onclick = function(inputMethodId, e) { 355 button.onclick = function(inputMethodId, e) {
355 chrome.send('inputMethodOptionsOpen', [inputMethodId]); 356 chrome.send('inputMethodOptionsOpen', [inputMethodId]);
356 }.bind(this, inputMethod.id); 357 }.bind(this, inputMethod.id);
357 element.appendChild(button); 358 element.appendChild(button);
358 } 359 }
359 360
360 // Listen to user clicks. 361 // Listen to user clicks.
361 input.addEventListener('click', 362 input.addEventListener('click', this.handleCheckboxClick_.bind(this));
362 this.handleCheckboxClick_.bind(this));
363 inputMethodList.appendChild(element); 363 inputMethodList.appendChild(element);
364 } 364 }
365 }, 365 },
366 366
367 /** 367 /**
368 * Adds a language to the preference 'translate_blocked_languages'. If 368 * Adds a language to the preference 'translate_blocked_languages'. If
369 * |langCode| is already added, nothing happens. |langCode| is converted 369 * |langCode| is already added, nothing happens. |langCode| is converted
370 * to a Translate language synonym before added. 370 * to a Translate language synonym before added.
371 * @param {string} langCode A language code like 'en' 371 * @param {string} langCode A language code like 'en'
372 * @private 372 * @private
373 */ 373 */
374 addBlockedLanguage_: function(langCode) { 374 addBlockedLanguage_: function(langCode) {
375 langCode = this.convertLangCodeForTranslation_(langCode); 375 langCode = this.convertLangCodeForTranslation_(langCode);
376 if (this.translateBlockedLanguages_.indexOf(langCode) == -1) { 376 if (this.translateBlockedLanguages_.indexOf(langCode) == -1) {
377 this.translateBlockedLanguages_.push(langCode); 377 this.translateBlockedLanguages_.push(langCode);
378 Preferences.setListPref(TRANSLATE_BLOCKED_LANGUAGES_PREF, 378 Preferences.setListPref(
379 this.translateBlockedLanguages_, true); 379 TRANSLATE_BLOCKED_LANGUAGES_PREF, this.translateBlockedLanguages_,
380 true);
380 } 381 }
381 }, 382 },
382 383
383 /** 384 /**
384 * Removes a language from the preference 'translate_blocked_languages'. 385 * Removes a language from the preference 'translate_blocked_languages'.
385 * If |langCode| doesn't exist in the preference, nothing happens. 386 * If |langCode| doesn't exist in the preference, nothing happens.
386 * |langCode| is converted to a Translate language synonym before removed. 387 * |langCode| is converted to a Translate language synonym before removed.
387 * @param {string} langCode A language code like 'en' 388 * @param {string} langCode A language code like 'en'
388 * @private 389 * @private
389 */ 390 */
390 removeBlockedLanguage_: function(langCode) { 391 removeBlockedLanguage_: function(langCode) {
391 langCode = this.convertLangCodeForTranslation_(langCode); 392 langCode = this.convertLangCodeForTranslation_(langCode);
392 if (this.translateBlockedLanguages_.indexOf(langCode) != -1) { 393 if (this.translateBlockedLanguages_.indexOf(langCode) != -1) {
393 this.translateBlockedLanguages_ = 394 this.translateBlockedLanguages_ =
394 this.translateBlockedLanguages_.filter( 395 this.translateBlockedLanguages_.filter(function(
395 function(langCodeNotTranslated) { 396 langCodeNotTranslated) {
396 return langCodeNotTranslated != langCode; 397 return langCodeNotTranslated != langCode;
397 }); 398 });
398 Preferences.setListPref(TRANSLATE_BLOCKED_LANGUAGES_PREF, 399 Preferences.setListPref(
399 this.translateBlockedLanguages_, true); 400 TRANSLATE_BLOCKED_LANGUAGES_PREF, this.translateBlockedLanguages_,
401 true);
400 } 402 }
401 }, 403 },
402 404
403 /** 405 /**
404 * Handles Page's visible property change event. 406 * Handles Page's visible property change event.
405 * @param {Event} e Property change event. 407 * @param {Event} e Property change event.
406 * @private 408 * @private
407 */ 409 */
408 handleVisibleChange_: function(e) { 410 handleVisibleChange_: function(e) {
409 if (this.visible) { 411 if (this.visible) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // Convert the list into a dictonary for simpler lookup. 488 // Convert the list into a dictonary for simpler lookup.
487 var preloadEngineSet = {}; 489 var preloadEngineSet = {};
488 for (var i = 0; i < preloadEngines.length; i++) { 490 for (var i = 0; i < preloadEngines.length; i++) {
489 preloadEngineSet[preloadEngines[i]] = true; 491 preloadEngineSet[preloadEngines[i]] = true;
490 } 492 }
491 493
492 // Create the new preload engine list per the language codes. 494 // Create the new preload engine list per the language codes.
493 var newPreloadEngines = []; 495 var newPreloadEngines = [];
494 for (var i = 0; i < languageCodes.length; i++) { 496 for (var i = 0; i < languageCodes.length; i++) {
495 var languageCode = languageCodes[i]; 497 var languageCode = languageCodes[i];
496 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[ 498 var inputMethodIds =
497 languageCode]; 499 this.languageCodeToInputMethodIdsMap_[languageCode];
498 if (!inputMethodIds) 500 if (!inputMethodIds)
499 continue; 501 continue;
500 502
501 // Check if we have active input methods associated with the language. 503 // Check if we have active input methods associated with the language.
502 for (var j = 0; j < inputMethodIds.length; j++) { 504 for (var j = 0; j < inputMethodIds.length; j++) {
503 var inputMethodId = inputMethodIds[j]; 505 var inputMethodId = inputMethodIds[j];
504 if (inputMethodId in preloadEngineSet) { 506 if (inputMethodId in preloadEngineSet) {
505 // If we have, add it to the new engine list. 507 // If we have, add it to the new engine list.
506 newPreloadEngines.push(inputMethodId); 508 newPreloadEngines.push(inputMethodId);
507 // And delete it from the set. This is necessary as one input 509 // And delete it from the set. This is necessary as one input
(...skipping 26 matching lines...) Expand all
534 } 536 }
535 } 537 }
536 }, 538 },
537 539
538 /** 540 /**
539 * Updates the currently selected language name. 541 * Updates the currently selected language name.
540 * @param {string} languageCode Language code (ex. "fr"). 542 * @param {string} languageCode Language code (ex. "fr").
541 * @private 543 * @private
542 */ 544 */
543 updateSelectedLanguageName_: function(languageCode) { 545 updateSelectedLanguageName_: function(languageCode) {
544 var languageInfo = LanguageList.getLanguageInfoFromLanguageCode( 546 var languageInfo =
545 languageCode); 547 LanguageList.getLanguageInfoFromLanguageCode(languageCode);
546 var languageDisplayName = languageInfo.displayName; 548 var languageDisplayName = languageInfo.displayName;
547 var languageNativeDisplayName = languageInfo.nativeDisplayName; 549 var languageNativeDisplayName = languageInfo.nativeDisplayName;
548 var textDirection = languageInfo.textDirection; 550 var textDirection = languageInfo.textDirection;
549 551
550 // If the native name is different, add it. 552 // If the native name is different, add it.
551 if (languageDisplayName != languageNativeDisplayName) { 553 if (languageDisplayName != languageNativeDisplayName) {
552 languageDisplayName += ' - ' + languageNativeDisplayName; 554 languageDisplayName += ' - ' + languageNativeDisplayName;
553 } 555 }
554 556
555 // Update the currently selected language name. 557 // Update the currently selected language name.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 [spellCheckLanguageSection, dictionaryDownloadFailed], 1); 670 [spellCheckLanguageSection, dictionaryDownloadFailed], 1);
669 if (this.spellcheckDictionaryDownloadFailures_ > 1) 671 if (this.spellcheckDictionaryDownloadFailures_ > 1)
670 dictionaryDownloadFailHelp.hidden = false; 672 dictionaryDownloadFailHelp.hidden = false;
671 $('dictionary-download-retry-button').languageCode = languageCode; 673 $('dictionary-download-retry-button').languageCode = languageCode;
672 break; 674 break;
673 } 675 }
674 676
675 var areNoLanguagesSelected = 677 var areNoLanguagesSelected =
676 Object.keys(this.spellCheckLanguages_).length == 0; 678 Object.keys(this.spellCheckLanguages_).length == 0;
677 var usesSystemSpellchecker = !$('enable-spellcheck-container'); 679 var usesSystemSpellchecker = !$('enable-spellcheck-container');
678 var isSpellcheckingEnabled = usesSystemSpellchecker || 680 var isSpellcheckingEnabled =
679 $('enable-spellcheck').checked; 681 usesSystemSpellchecker || $('enable-spellcheck').checked;
680 $('edit-custom-dictionary-button').hidden = 682 $('edit-custom-dictionary-button').hidden =
681 areNoLanguagesSelected || !isSpellcheckingEnabled; 683 areNoLanguagesSelected || !isSpellcheckingEnabled;
682 }, 684 },
683 685
684 /** 686 /**
685 * Updates the checkbox for stopping translation. 687 * Updates the checkbox for stopping translation.
686 * @param {string} languageCode Language code (ex. "fr"). 688 * @param {string} languageCode Language code (ex. "fr").
687 * @private 689 * @private
688 */ 690 */
689 updateOfferToTranslateCheckbox_: function(languageCode) { 691 updateOfferToTranslateCheckbox_: function(languageCode) {
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 * Handles input method checkbox's click event. 854 * Handles input method checkbox's click event.
853 * @param {Event} e Click event. 855 * @param {Event} e Click event.
854 * @private 856 * @private
855 */ 857 */
856 handleCheckboxClick_: function(e) { 858 handleCheckboxClick_: function(e) {
857 var checkbox = assertInstanceof(e.target, Element); 859 var checkbox = assertInstanceof(e.target, Element);
858 860
859 // Third party IMEs require additional confirmation prior to enabling due 861 // Third party IMEs require additional confirmation prior to enabling due
860 // to privacy risk. 862 // to privacy risk.
861 if (/^_ext_ime_/.test(checkbox.inputMethodId) && checkbox.checked) { 863 if (/^_ext_ime_/.test(checkbox.inputMethodId) && checkbox.checked) {
862 var confirmationCallback = this.handleCheckboxUpdate_.bind(this, 864 var confirmationCallback =
863 checkbox); 865 this.handleCheckboxUpdate_.bind(this, checkbox);
864 var cancellationCallback = function() { 866 var cancellationCallback = function() {
865 checkbox.checked = false; 867 checkbox.checked = false;
866 }; 868 };
867 ThirdPartyImeConfirmOverlay.showConfirmationDialog({ 869 ThirdPartyImeConfirmOverlay.showConfirmationDialog({
868 extension: checkbox.imeProvider, 870 extension: checkbox.imeProvider,
869 confirm: confirmationCallback, 871 confirm: confirmationCallback,
870 cancel: cancellationCallback 872 cancel: cancellationCallback
871 }); 873 });
872 } else { 874 } else {
873 this.handleCheckboxUpdate_(checkbox); 875 this.handleCheckboxUpdate_(checkbox);
874 } 876 }
875 877
876 chrome.send('coreOptionsUserMetricsAction', 878 chrome.send(
877 ['Options_Languages_InputMethodCheckbox' + 879 'coreOptionsUserMetricsAction',
878 (checkbox.checked ? '_Enable' : '_Disable')]); 880 ['Options_Languages_InputMethodCheckbox' +
881 (checkbox.checked ? '_Enable' : '_Disable')]);
879 }, 882 },
880 883
881 /** 884 /**
882 * Updates active IMEs based on change in state of a checkbox for an input 885 * Updates active IMEs based on change in state of a checkbox for an input
883 * method. 886 * method.
884 * @param {!Element} checkbox Updated checkbox element. 887 * @param {!Element} checkbox Updated checkbox element.
885 * @private 888 * @private
886 */ 889 */
887 handleCheckboxUpdate_: function(checkbox) { 890 handleCheckboxUpdate_: function(checkbox) {
888 if (checkbox.inputMethodId.match(/^_ext_ime_/)) { 891 if (checkbox.inputMethodId.match(/^_ext_ime_/)) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 }, 929 },
927 930
928 /** 931 /**
929 * Checks if languageCode is deletable or not. 932 * Checks if languageCode is deletable or not.
930 * @param {string} languageCode the languageCode to check for deletability. 933 * @param {string} languageCode the languageCode to check for deletability.
931 */ 934 */
932 languageIsDeletable: function(languageCode) { 935 languageIsDeletable: function(languageCode) {
933 // Don't allow removing the language if it's a UI language. 936 // Don't allow removing the language if it's a UI language.
934 if (languageCode == this.prospectiveUiLanguageCode_) 937 if (languageCode == this.prospectiveUiLanguageCode_)
935 return false; 938 return false;
936 return (!cr.isChromeOS || 939 return (!cr.isChromeOS || this.canDeleteLanguage_(languageCode));
937 this.canDeleteLanguage_(languageCode));
938 }, 940 },
939 941
940 /** 942 /**
941 * Handles browser.enable_spellchecking change. 943 * Handles browser.enable_spellchecking change.
942 * @param {Event} e Change event. 944 * @param {Event} e Change event.
943 * @private 945 * @private
944 */ 946 */
945 updateEnableSpellCheck_: function(e) { 947 updateEnableSpellCheck_: function(e) {
946 var value = !$('enable-spellcheck').checked; 948 var value = !$('enable-spellcheck').checked;
947 var languageControl = $('spellcheck-language-checkbox'); 949 var languageControl = $('spellcheck-language-checkbox');
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 */ 1004 */
1003 handleSpellCheckLanguageCheckboxClick_: function(e) { 1005 handleSpellCheckLanguageCheckboxClick_: function(e) {
1004 var languageCode = e.currentTarget.languageCode; 1006 var languageCode = e.currentTarget.languageCode;
1005 1007
1006 if (e.currentTarget.checked) 1008 if (e.currentTarget.checked)
1007 this.spellCheckLanguages_[languageCode] = true; 1009 this.spellCheckLanguages_[languageCode] = true;
1008 else 1010 else
1009 delete this.spellCheckLanguages_[languageCode]; 1011 delete this.spellCheckLanguages_[languageCode];
1010 1012
1011 var languageCodes = Object.keys(this.spellCheckLanguages_); 1013 var languageCodes = Object.keys(this.spellCheckLanguages_);
1012 Preferences.setListPref(SPELL_CHECK_DICTIONARIES_PREF, 1014 Preferences.setListPref(
1013 languageCodes, true); 1015 SPELL_CHECK_DICTIONARIES_PREF, languageCodes, true);
1014 1016
1015 // The spellCheckLanguageChange argument is only used for logging. 1017 // The spellCheckLanguageChange argument is only used for logging.
1016 chrome.send('spellCheckLanguageChange', [languageCodes.join(',')]); 1018 chrome.send('spellCheckLanguageChange', [languageCodes.join(',')]);
1017 chrome.send('coreOptionsUserMetricsAction', 1019 chrome.send(
1018 ['Options_Languages_SpellCheck']); 1020 'coreOptionsUserMetricsAction', ['Options_Languages_SpellCheck']);
1019 }, 1021 },
1020 1022
1021 /** 1023 /**
1022 * Checks whether it's possible to remove the language specified by 1024 * Checks whether it's possible to remove the language specified by
1023 * languageCode and returns true if possible. This function returns false 1025 * languageCode and returns true if possible. This function returns false
1024 * if the removal causes the number of preload engines to be zero. 1026 * if the removal causes the number of preload engines to be zero.
1025 * 1027 *
1026 * @param {string} languageCode Language code (ex. "fr"). 1028 * @param {string} languageCode Language code (ex. "fr").
1027 * @return {boolean} Returns true on success. 1029 * @return {boolean} Returns true on success.
1028 * @private 1030 * @private
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 // Don't allow this operation if it causes the number of preload 1077 // Don't allow this operation if it causes the number of preload
1076 // engines to be zero. 1078 // engines to be zero.
1077 return (newPreloadEngines.length > 0); 1079 return (newPreloadEngines.length > 0);
1078 }, 1080 },
1079 1081
1080 /** 1082 /**
1081 * Saves the enabled extension preference. 1083 * Saves the enabled extension preference.
1082 * @private 1084 * @private
1083 */ 1085 */
1084 saveEnabledExtensionPref_: function() { 1086 saveEnabledExtensionPref_: function() {
1085 Preferences.setStringPref(ENABLED_EXTENSION_IME_PREF, 1087 Preferences.setStringPref(
1086 this.enabledExtensionImes_.join(','), true); 1088 ENABLED_EXTENSION_IME_PREF, this.enabledExtensionImes_.join(','),
1089 true);
1087 }, 1090 },
1088 1091
1089 /** 1092 /**
1090 * Updates the checkboxes in the input method list from the enabled 1093 * Updates the checkboxes in the input method list from the enabled
1091 * extensions preference. 1094 * extensions preference.
1092 * @private 1095 * @private
1093 */ 1096 */
1094 updateCheckboxesFromEnabledExtensions_: function() { 1097 updateCheckboxesFromEnabledExtensions_: function() {
1095 // Convert the list into a dictonary for simpler lookup. 1098 // Convert the list into a dictonary for simpler lookup.
1096 var dictionary = {}; 1099 var dictionary = {};
(...skipping 30 matching lines...) Expand all
1127 this.enabledExtensionImes_.push(checkboxes[i].inputMethodId); 1130 this.enabledExtensionImes_.push(checkboxes[i].inputMethodId);
1128 } 1131 }
1129 } 1132 }
1130 }, 1133 },
1131 1134
1132 /** 1135 /**
1133 * Saves the preload engines preference. 1136 * Saves the preload engines preference.
1134 * @private 1137 * @private
1135 */ 1138 */
1136 savePreloadEnginesPref_: function() { 1139 savePreloadEnginesPref_: function() {
1137 Preferences.setStringPref(PRELOAD_ENGINES_PREF, 1140 Preferences.setStringPref(
1138 this.preloadEngines_.join(','), true); 1141 PRELOAD_ENGINES_PREF, this.preloadEngines_.join(','), true);
1139 }, 1142 },
1140 1143
1141 /** 1144 /**
1142 * Updates the checkboxes in the input method list from the preload 1145 * Updates the checkboxes in the input method list from the preload
1143 * engines preference. 1146 * engines preference.
1144 * @private 1147 * @private
1145 */ 1148 */
1146 updateCheckboxesFromPreloadEngines_: function() { 1149 updateCheckboxesFromPreloadEngines_: function() {
1147 // Convert the list into a dictonary for simpler lookup. 1150 // Convert the list into a dictonary for simpler lookup.
1148 var dictionary = {}; 1151 var dictionary = {};
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 // Special case for when a user changes to a different language, and 1296 // Special case for when a user changes to a different language, and
1294 // changes back to the same language without having restarted Chrome or 1297 // changes back to the same language without having restarted Chrome or
1295 // logged in/out of ChromeOS. 1298 // logged in/out of ChromeOS.
1296 if (languageCode == loadTimeData.getString('currentUiLanguageCode')) { 1299 if (languageCode == loadTimeData.getString('currentUiLanguageCode')) {
1297 this.updateUiLanguageButton_(languageCode); 1300 this.updateUiLanguageButton_(languageCode);
1298 return; 1301 return;
1299 } 1302 }
1300 1303
1301 // Otherwise, show a notification telling the user that their changes will 1304 // Otherwise, show a notification telling the user that their changes will
1302 // only take effect after restart. 1305 // only take effect after restart.
1303 showMutuallyExclusiveNodes([$('language-options-ui-language-button'), 1306 showMutuallyExclusiveNodes(
1304 $('language-options-ui-notification-bar')], 1307 [
1305 1); 1308 $('language-options-ui-language-button'),
1309 $('language-options-ui-notification-bar')
1310 ],
1311 1);
1306 }, 1312 },
1307 1313
1308 /** 1314 /**
1309 * A handler for when dictionary for |languageCode| begins downloading. 1315 * A handler for when dictionary for |languageCode| begins downloading.
1310 * @param {string} languageCode The language of the dictionary that just 1316 * @param {string} languageCode The language of the dictionary that just
1311 * began downloading. 1317 * began downloading.
1312 * @private 1318 * @private
1313 */ 1319 */
1314 onDictionaryDownloadBegin_: function(languageCode) { 1320 onDictionaryDownloadBegin_: function(languageCode) {
1315 this.spellcheckDictionaryDownloadStatus_[languageCode] = 1321 this.spellcheckDictionaryDownloadStatus_[languageCode] =
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 }, 1394 },
1389 1395
1390 /** 1396 /**
1391 * Handles activate-ime-menu checkbox's click event. 1397 * Handles activate-ime-menu checkbox's click event.
1392 * @param {Event} e Click event. 1398 * @param {Event} e Click event.
1393 * @private 1399 * @private
1394 */ 1400 */
1395 handleActivateImeMenuCheckboxClick_: function(e) { 1401 handleActivateImeMenuCheckboxClick_: function(e) {
1396 if (cr.isChromeOS) { 1402 if (cr.isChromeOS) {
1397 var checkbox = e.target; 1403 var checkbox = e.target;
1398 Preferences.setBooleanPref(ACTIVATE_IME_MENU_PREF, 1404 Preferences.setBooleanPref(
1399 checkbox.checked, true); 1405 ACTIVATE_IME_MENU_PREF, checkbox.checked, true);
1400 } 1406 }
1401 }, 1407 },
1402 1408
1403 /** 1409 /**
1404 * Updates the activate-ime-menu check box's checked state. 1410 * Updates the activate-ime-menu check box's checked state.
1405 * @param {Event} e Change event. 1411 * @param {Event} e Change event.
1406 * @private 1412 * @private
1407 */ 1413 */
1408 updateImeMenuCheckbox_: function(e) { 1414 updateImeMenuCheckbox_: function(e) {
1409 $('activate-ime-menu').checked = e.value.value; 1415 $('activate-ime-menu').checked = e.value.value;
(...skipping 23 matching lines...) Expand all
1433 1439
1434 LanguageOptions.onDictionaryDownloadSuccess = function(languageCode) { 1440 LanguageOptions.onDictionaryDownloadSuccess = function(languageCode) {
1435 LanguageOptions.getInstance().onDictionaryDownloadSuccess_(languageCode); 1441 LanguageOptions.getInstance().onDictionaryDownloadSuccess_(languageCode);
1436 }; 1442 };
1437 1443
1438 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) { 1444 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) {
1439 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode); 1445 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode);
1440 }; 1446 };
1441 1447
1442 // Export 1448 // Export
1443 return { 1449 return {LanguageOptions: LanguageOptions};
1444 LanguageOptions: LanguageOptions
1445 };
1446 }); 1450 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698