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 #include "chrome/browser/chromeos/preferences.h" | 5 #include "chrome/browser/chromeos/preferences.h" |
6 | 6 |
7 #include "base/chromeos/chromeos_version.h" | 7 #include "base/chromeos/chromeos_version.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/i18n/time_formatting.h" | 9 #include "base/i18n/time_formatting.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 616 |
617 void Preferences::SetLanguageConfigStringListAsCSV(const char* section, | 617 void Preferences::SetLanguageConfigStringListAsCSV(const char* section, |
618 const char* name, | 618 const char* name, |
619 const std::string& value) { | 619 const std::string& value) { |
620 VLOG(1) << "Setting " << name << " to '" << value << "'"; | 620 VLOG(1) << "Setting " << name << " to '" << value << "'"; |
621 | 621 |
622 std::vector<std::string> split_values; | 622 std::vector<std::string> split_values; |
623 if (!value.empty()) | 623 if (!value.empty()) |
624 base::SplitString(value, ',', &split_values); | 624 base::SplitString(value, ',', &split_values); |
625 | 625 |
| 626 if (section == std::string(language_prefs::kGeneralSectionName) && |
| 627 name == std::string(language_prefs::kPreloadEnginesConfigName)) { |
| 628 input_method_manager_->EnableInputMethods(split_values); |
| 629 return; |
| 630 } |
| 631 |
626 // We should call the cros API even when |value| is empty, to disable default | 632 // We should call the cros API even when |value| is empty, to disable default |
627 // config. | 633 // config. |
628 SetLanguageConfigStringList(section, name, split_values); | 634 SetLanguageConfigStringList(section, name, split_values); |
629 } | 635 } |
630 | 636 |
631 void Preferences::SetInputMethodList() { | 637 void Preferences::SetInputMethodList() { |
632 // When |preload_engines_| are set, InputMethodManager::ChangeInputMethod() | 638 // When |preload_engines_| are set, InputMethodManager::ChangeInputMethod() |
633 // might be called to change the current input method to the first one in the | 639 // might be called to change the current input method to the first one in the |
634 // |preload_engines_| list. This also updates previous/current input method | 640 // |preload_engines_| list. This also updates previous/current input method |
635 // prefs. That's why GetValue() calls are placed before the | 641 // prefs. That's why GetValue() calls are placed before the |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 return; | 693 return; |
688 | 694 |
689 input_method::AutoRepeatRate rate; | 695 input_method::AutoRepeatRate rate; |
690 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); | 696 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); |
691 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); | 697 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); |
692 DCHECK(rate.initial_delay_in_ms > 0); | 698 DCHECK(rate.initial_delay_in_ms > 0); |
693 DCHECK(rate.repeat_interval_in_ms > 0); | 699 DCHECK(rate.repeat_interval_in_ms > 0); |
694 input_method::XKeyboard::SetAutoRepeatRate(rate); | 700 input_method::XKeyboard::SetAutoRepeatRate(rate); |
695 } | 701 } |
696 | 702 |
| 703 // static |
697 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) { | 704 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) { |
698 const DictionaryValue* virtual_keyboard_pref = | 705 const DictionaryValue* virtual_keyboard_pref = |
699 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard); | 706 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard); |
700 DCHECK(virtual_keyboard_pref); | 707 DCHECK(virtual_keyboard_pref); |
701 | 708 |
702 input_method::InputMethodManager* input_method_manager = | 709 // TODO(yusukes): Clear all virtual keyboard preferences here. |
703 input_method::InputMethodManager::GetInstance(); | |
704 input_method_manager->ClearAllVirtualKeyboardPreferences(); | |
705 | |
706 std::string url; | 710 std::string url; |
707 std::vector<std::string> layouts_to_remove; | 711 std::vector<std::string> layouts_to_remove; |
708 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys(); | 712 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys(); |
709 iter != virtual_keyboard_pref->end_keys(); | 713 iter != virtual_keyboard_pref->end_keys(); |
710 ++iter) { | 714 ++iter) { |
711 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk" | 715 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk" |
712 if (!virtual_keyboard_pref->GetString(layout_id, &url)) | 716 if (!virtual_keyboard_pref->GetString(layout_id, &url)) |
713 continue; | 717 continue; |
714 if (!input_method_manager->SetVirtualKeyboardPreference( | 718 // TODO(yusukes): add the virtual keyboard preferences here. |
715 layout_id, GURL(url))) { | |
716 // Either |layout_id| or |url| is invalid. Remove the key from |prefs| | |
717 // later. | |
718 layouts_to_remove.push_back(layout_id); | |
719 LOG(ERROR) << "Removing invalid virtual keyboard pref: layout=" | |
720 << layout_id; | |
721 } | |
722 } | 719 } |
723 | 720 |
724 // Remove invalid prefs. | 721 // Remove invalid prefs. |
725 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard); | 722 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard); |
726 DictionaryValue* pref_value = updater.Get(); | 723 DictionaryValue* pref_value = updater.Get(); |
727 for (size_t i = 0; i < layouts_to_remove.size(); ++i) { | 724 for (size_t i = 0; i < layouts_to_remove.size(); ++i) { |
728 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL); | 725 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL); |
729 } | 726 } |
730 } | 727 } |
731 | 728 |
732 } // namespace chromeos | 729 } // namespace chromeos |
OLD | NEW |