| 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 |