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

Side by Side Diff: chrome/browser/chromeos/preferences.cc

Issue 9999018: chrome/browser/chromeos/input_method/ refactoring [part 6 of 6] (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 8 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 | Annotate | Revision Log
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 #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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 false, 127 false,
128 PrefService::SYNCABLE_PREF); 128 PrefService::SYNCABLE_PREF);
129 // We don't sync prefs::kLanguageCurrentInputMethod and PreviousInputMethod 129 // We don't sync prefs::kLanguageCurrentInputMethod and PreviousInputMethod
130 // because they're just used to track the logout state of the device. 130 // because they're just used to track the logout state of the device.
131 prefs->RegisterStringPref(prefs::kLanguageCurrentInputMethod, 131 prefs->RegisterStringPref(prefs::kLanguageCurrentInputMethod,
132 "", 132 "",
133 PrefService::UNSYNCABLE_PREF); 133 PrefService::UNSYNCABLE_PREF);
134 prefs->RegisterStringPref(prefs::kLanguagePreviousInputMethod, 134 prefs->RegisterStringPref(prefs::kLanguagePreviousInputMethod,
135 "", 135 "",
136 PrefService::UNSYNCABLE_PREF); 136 PrefService::UNSYNCABLE_PREF);
137 // We don't sync input method hotkeys since they're not configurable.
138 prefs->RegisterStringPref(prefs::kLanguageHotkeyNextEngineInMenu,
139 language_prefs::kHotkeyNextEngineInMenu,
140 PrefService::UNSYNCABLE_PREF);
141 prefs->RegisterStringPref(prefs::kLanguageHotkeyPreviousEngine,
142 language_prefs::kHotkeyPreviousEngine,
143 PrefService::UNSYNCABLE_PREF);
144 // We don't sync the list of input methods and preferred languages since a 137 // We don't sync the list of input methods and preferred languages since a
145 // user might use two or more devices with different hardware keyboards. 138 // user might use two or more devices with different hardware keyboards.
146 // crosbug.com/15181 139 // crosbug.com/15181
147 prefs->RegisterStringPref(prefs::kLanguagePreferredLanguages, 140 prefs->RegisterStringPref(prefs::kLanguagePreferredLanguages,
148 kFallbackInputMethodLocale, 141 kFallbackInputMethodLocale,
149 PrefService::UNSYNCABLE_PREF); 142 PrefService::UNSYNCABLE_PREF);
150 prefs->RegisterStringPref(prefs::kLanguagePreloadEngines, 143 prefs->RegisterStringPref(prefs::kLanguagePreloadEngines,
151 hardware_keyboard_id, 144 hardware_keyboard_id,
152 PrefService::UNSYNCABLE_PREF); 145 PrefService::UNSYNCABLE_PREF);
153 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { 146 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this); 264 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this);
272 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); 265 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this);
273 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, this); 266 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, this);
274 disable_gdata_.Init(prefs::kDisableGData, prefs, this); 267 disable_gdata_.Init(prefs::kDisableGData, prefs, this);
275 disable_gdata_over_cellular_.Init(prefs::kDisableGDataOverCellular, 268 disable_gdata_over_cellular_.Init(prefs::kDisableGDataOverCellular,
276 prefs, this); 269 prefs, this);
277 disable_gdata_hosted_files_.Init(prefs::kDisableGDataHostedFiles, 270 disable_gdata_hosted_files_.Init(prefs::kDisableGDataHostedFiles,
278 prefs, this); 271 prefs, this);
279 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight, 272 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight,
280 prefs, this); 273 prefs, this);
281 hotkey_next_engine_in_menu_.Init(
282 prefs::kLanguageHotkeyNextEngineInMenu, prefs, this);
283 hotkey_previous_engine_.Init(
284 prefs::kLanguageHotkeyPreviousEngine, prefs, this);
285 preferred_languages_.Init(prefs::kLanguagePreferredLanguages, 274 preferred_languages_.Init(prefs::kLanguagePreferredLanguages,
286 prefs, this); 275 prefs, this);
287 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, this); 276 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, this);
288 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, prefs, this); 277 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, prefs, this);
289 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, prefs, this); 278 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, prefs, this);
290 279
291 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { 280 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) {
292 chewing_boolean_prefs_[i].Init( 281 chewing_boolean_prefs_[i].Init(
293 language_prefs::kChewingBooleanPrefs[i].pref_name, prefs, this); 282 language_prefs::kChewingBooleanPrefs[i].pref_name, prefs, this);
294 } 283 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 } 404 }
416 if (!pref_name || *pref_name == prefs::kPrimaryMouseButtonRight) { 405 if (!pref_name || *pref_name == prefs::kPrimaryMouseButtonRight) {
417 const bool right = primary_mouse_button_right_.GetValue(); 406 const bool right = primary_mouse_button_right_.GetValue();
418 system::mouse_settings::SetPrimaryButtonRight(right); 407 system::mouse_settings::SetPrimaryButtonRight(right);
419 if (pref_name) 408 if (pref_name)
420 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Changed", right); 409 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Changed", right);
421 else 410 else
422 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Started", right); 411 UMA_HISTOGRAM_BOOLEAN("Mouse.PrimaryButtonRight.Started", right);
423 } 412 }
424 413
425 if (!pref_name || *pref_name == prefs::kLanguageHotkeyNextEngineInMenu) {
426 SetLanguageConfigStringListAsCSV(
427 language_prefs::kHotKeySectionName,
428 language_prefs::kNextEngineInMenuConfigName,
429 hotkey_next_engine_in_menu_.GetValue());
430 }
431 if (!pref_name || *pref_name == prefs::kLanguageHotkeyPreviousEngine) {
432 SetLanguageConfigStringListAsCSV(
433 language_prefs::kHotKeySectionName,
434 language_prefs::kPreviousEngineConfigName,
435 hotkey_previous_engine_.GetValue());
436 }
437 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) { 414 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) {
438 // Unlike kLanguagePreloadEngines and some other input method 415 // Unlike kLanguagePreloadEngines and some other input method
439 // preferencs, we don't need to send this to ibus-daemon. 416 // preferencs, we don't need to send this to ibus-daemon.
440 } 417 }
441 418
442 // Here, we set up the the modifier key mapping. This has to be done 419 // Here, we set up the the modifier key mapping. This has to be done
443 // before changing the current keyboard layout, so that the modifier key 420 // before changing the current keyboard layout, so that the modifier key
444 // preference is properly preserved. For this reason, we should do this 421 // preference is properly preserved. For this reason, we should do this
445 // before setting preload engines, that could change the current 422 // before setting preload engines, that could change the current
446 // keyboard layout as needed. 423 // keyboard layout as needed.
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 593
617 void Preferences::SetLanguageConfigStringListAsCSV(const char* section, 594 void Preferences::SetLanguageConfigStringListAsCSV(const char* section,
618 const char* name, 595 const char* name,
619 const std::string& value) { 596 const std::string& value) {
620 VLOG(1) << "Setting " << name << " to '" << value << "'"; 597 VLOG(1) << "Setting " << name << " to '" << value << "'";
621 598
622 std::vector<std::string> split_values; 599 std::vector<std::string> split_values;
623 if (!value.empty()) 600 if (!value.empty())
624 base::SplitString(value, ',', &split_values); 601 base::SplitString(value, ',', &split_values);
625 602
603 if (section == std::string(language_prefs::kGeneralSectionName) &&
604 name == std::string(language_prefs::kPreloadEnginesConfigName)) {
605 input_method_manager_->EnableInputMethods(split_values);
606 return;
607 }
608
626 // We should call the cros API even when |value| is empty, to disable default 609 // We should call the cros API even when |value| is empty, to disable default
627 // config. 610 // config.
628 SetLanguageConfigStringList(section, name, split_values); 611 SetLanguageConfigStringList(section, name, split_values);
629 } 612 }
630 613
631 void Preferences::SetInputMethodList() { 614 void Preferences::SetInputMethodList() {
632 // When |preload_engines_| are set, InputMethodManager::ChangeInputMethod() 615 // When |preload_engines_| are set, InputMethodManager::ChangeInputMethod()
633 // might be called to change the current input method to the first one in the 616 // 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 617 // |preload_engines_| list. This also updates previous/current input method
635 // prefs. That's why GetValue() calls are placed before the 618 // prefs. That's why GetValue() calls are placed before the
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 DCHECK(rate.initial_delay_in_ms > 0); 675 DCHECK(rate.initial_delay_in_ms > 0);
693 DCHECK(rate.repeat_interval_in_ms > 0); 676 DCHECK(rate.repeat_interval_in_ms > 0);
694 input_method::XKeyboard::SetAutoRepeatRate(rate); 677 input_method::XKeyboard::SetAutoRepeatRate(rate);
695 } 678 }
696 679
697 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) { 680 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) {
698 const DictionaryValue* virtual_keyboard_pref = 681 const DictionaryValue* virtual_keyboard_pref =
699 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard); 682 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard);
700 DCHECK(virtual_keyboard_pref); 683 DCHECK(virtual_keyboard_pref);
701 684
702 input_method::InputMethodManager* input_method_manager = 685 // TODO(yusukes): Clear all virtual keyboard preferences here.
703 input_method::InputMethodManager::GetInstance();
704 input_method_manager->ClearAllVirtualKeyboardPreferences();
705
706 std::string url; 686 std::string url;
707 std::vector<std::string> layouts_to_remove; 687 std::vector<std::string> layouts_to_remove;
708 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys(); 688 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys();
709 iter != virtual_keyboard_pref->end_keys(); 689 iter != virtual_keyboard_pref->end_keys();
710 ++iter) { 690 ++iter) {
711 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk" 691 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk"
712 if (!virtual_keyboard_pref->GetString(layout_id, &url)) 692 if (!virtual_keyboard_pref->GetString(layout_id, &url))
713 continue; 693 continue;
714 if (!input_method_manager->SetVirtualKeyboardPreference( 694 // 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 } 695 }
723 696
724 // Remove invalid prefs. 697 // Remove invalid prefs.
725 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard); 698 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard);
726 DictionaryValue* pref_value = updater.Get(); 699 DictionaryValue* pref_value = updater.Get();
727 for (size_t i = 0; i < layouts_to_remove.size(); ++i) { 700 for (size_t i = 0; i < layouts_to_remove.size(); ++i) {
728 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL); 701 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL);
729 } 702 }
730 } 703 }
731 704
732 } // namespace chromeos 705 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698