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 28 matching lines...) Expand all Loading... | |
39 std::string board; | 39 std::string board; |
40 system::StatisticsProvider::GetInstance()->GetMachineStatistic( | 40 system::StatisticsProvider::GetInstance()->GetMachineStatistic( |
41 "CHROMEOS_RELEASE_BOARD", &board); | 41 "CHROMEOS_RELEASE_BOARD", &board); |
42 return StartsWithASCII(board, "lumpy", false); | 42 return StartsWithASCII(board, "lumpy", false); |
43 } | 43 } |
44 | 44 |
45 } // namespace | 45 } // namespace |
46 | 46 |
47 static const char kFallbackInputMethodLocale[] = "en-US"; | 47 static const char kFallbackInputMethodLocale[] = "en-US"; |
48 | 48 |
49 Preferences::Preferences() {} | 49 Preferences::Preferences() |
50 : input_method_manager_(input_method::InputMethodManager::GetInstance()) { | |
51 } | |
52 | |
53 Preferences::Preferences(input_method::InputMethodManager* input_method_manager) | |
54 : input_method_manager_(input_method_manager) { | |
55 } | |
50 | 56 |
51 Preferences::~Preferences() {} | 57 Preferences::~Preferences() {} |
52 | 58 |
53 // static | 59 // static |
54 void Preferences::RegisterUserPrefs(PrefService* prefs) { | 60 void Preferences::RegisterUserPrefs(PrefService* prefs) { |
55 input_method::InputMethodManager* manager = | 61 std::string hardware_keyboard_id; |
56 input_method::InputMethodManager::GetInstance(); | 62 // TODO(yusukes): Remove the runtime hack. |
63 if (base::chromeos::IsRunningOnChromeOS()) { | |
64 input_method::InputMethodManager* manager = | |
65 input_method::InputMethodManager::GetInstance(); | |
66 hardware_keyboard_id = | |
67 manager->GetInputMethodUtil()->GetHardwareInputMethodId(); | |
68 } else { | |
69 hardware_keyboard_id = "xkb:us::eng"; // only for testing. | |
70 } | |
57 | 71 |
58 const bool enable_tap_to_click_default = IsLumpy(); | 72 const bool enable_tap_to_click_default = IsLumpy(); |
59 prefs->RegisterBooleanPref(prefs::kTapToClickEnabled, | 73 prefs->RegisterBooleanPref(prefs::kTapToClickEnabled, |
60 enable_tap_to_click_default, | 74 enable_tap_to_click_default, |
61 PrefService::SYNCABLE_PREF); | 75 PrefService::SYNCABLE_PREF); |
62 prefs->RegisterBooleanPref(prefs::kNaturalScroll, | 76 prefs->RegisterBooleanPref(prefs::kNaturalScroll, |
63 false, | 77 false, |
64 PrefService::SYNCABLE_PREF); | 78 PrefService::SYNCABLE_PREF); |
65 prefs->RegisterBooleanPref(prefs::kPrimaryMouseButtonRight, | 79 prefs->RegisterBooleanPref(prefs::kPrimaryMouseButtonRight, |
66 false, | 80 false, |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 PrefService::UNSYNCABLE_PREF); | 140 PrefService::UNSYNCABLE_PREF); |
127 prefs->RegisterStringPref(prefs::kLanguageHotkeyPreviousEngine, | 141 prefs->RegisterStringPref(prefs::kLanguageHotkeyPreviousEngine, |
128 language_prefs::kHotkeyPreviousEngine, | 142 language_prefs::kHotkeyPreviousEngine, |
129 PrefService::UNSYNCABLE_PREF); | 143 PrefService::UNSYNCABLE_PREF); |
130 // We don't sync the list of input methods and preferred languages since a | 144 // We don't sync the list of input methods and preferred languages since a |
131 // user might use two or more devices with different hardware keyboards. | 145 // user might use two or more devices with different hardware keyboards. |
132 // crosbug.com/15181 | 146 // crosbug.com/15181 |
133 prefs->RegisterStringPref(prefs::kLanguagePreferredLanguages, | 147 prefs->RegisterStringPref(prefs::kLanguagePreferredLanguages, |
134 kFallbackInputMethodLocale, | 148 kFallbackInputMethodLocale, |
135 PrefService::UNSYNCABLE_PREF); | 149 PrefService::UNSYNCABLE_PREF); |
136 prefs->RegisterStringPref( | 150 prefs->RegisterStringPref(prefs::kLanguagePreloadEngines, |
137 prefs::kLanguagePreloadEngines, | 151 hardware_keyboard_id, |
138 manager->GetInputMethodUtil()->GetHardwareInputMethodId(), | 152 PrefService::UNSYNCABLE_PREF); |
139 PrefService::UNSYNCABLE_PREF); | |
140 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { | 153 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { |
141 prefs->RegisterBooleanPref( | 154 prefs->RegisterBooleanPref( |
142 language_prefs::kChewingBooleanPrefs[i].pref_name, | 155 language_prefs::kChewingBooleanPrefs[i].pref_name, |
143 language_prefs::kChewingBooleanPrefs[i].default_pref_value, | 156 language_prefs::kChewingBooleanPrefs[i].default_pref_value, |
144 language_prefs::kChewingBooleanPrefs[i].sync_status); | 157 language_prefs::kChewingBooleanPrefs[i].sync_status); |
145 } | 158 } |
146 for (size_t i = 0; i < language_prefs::kNumChewingMultipleChoicePrefs; ++i) { | 159 for (size_t i = 0; i < language_prefs::kNumChewingMultipleChoicePrefs; ++i) { |
147 prefs->RegisterStringPref( | 160 prefs->RegisterStringPref( |
148 language_prefs::kChewingMultipleChoicePrefs[i].pref_name, | 161 language_prefs::kChewingMultipleChoicePrefs[i].pref_name, |
149 language_prefs::kChewingMultipleChoicePrefs[i].default_pref_value, | 162 language_prefs::kChewingMultipleChoicePrefs[i].default_pref_value, |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
244 | 257 |
245 // OAuth1 all access token and secret pair. | 258 // OAuth1 all access token and secret pair. |
246 prefs->RegisterStringPref(prefs::kOAuth1Token, | 259 prefs->RegisterStringPref(prefs::kOAuth1Token, |
247 "", | 260 "", |
248 PrefService::UNSYNCABLE_PREF); | 261 PrefService::UNSYNCABLE_PREF); |
249 prefs->RegisterStringPref(prefs::kOAuth1Secret, | 262 prefs->RegisterStringPref(prefs::kOAuth1Secret, |
250 "", | 263 "", |
251 PrefService::UNSYNCABLE_PREF); | 264 PrefService::UNSYNCABLE_PREF); |
252 } | 265 } |
253 | 266 |
254 void Preferences::Init(PrefService* prefs) { | 267 void Preferences::InitUserPrefs(PrefService* prefs) { |
255 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this); | 268 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this); |
256 natural_scroll_.Init(prefs::kNaturalScroll, prefs, this); | 269 natural_scroll_.Init(prefs::kNaturalScroll, prefs, this); |
257 accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, this); | 270 accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, this); |
258 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this); | 271 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this); |
259 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); | 272 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); |
260 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, this); | 273 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, this); |
261 disable_gdata_.Init(prefs::kDisableGData, prefs, this); | 274 disable_gdata_.Init(prefs::kDisableGData, prefs, this); |
262 disable_gdata_over_cellular_.Init(prefs::kDisableGDataOverCellular, | 275 disable_gdata_over_cellular_.Init(prefs::kDisableGDataOverCellular, |
263 prefs, this); | 276 prefs, this); |
264 disable_gdata_hosted_files_.Init(prefs::kDisableGDataHostedFiles, | 277 disable_gdata_hosted_files_.Init(prefs::kDisableGDataHostedFiles, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
321 xkb_remap_alt_key_to_.Init( | 334 xkb_remap_alt_key_to_.Init( |
322 prefs::kLanguageXkbRemapAltKeyTo, prefs, this); | 335 prefs::kLanguageXkbRemapAltKeyTo, prefs, this); |
323 xkb_auto_repeat_enabled_.Init( | 336 xkb_auto_repeat_enabled_.Init( |
324 prefs::kLanguageXkbAutoRepeatEnabled, prefs, this); | 337 prefs::kLanguageXkbAutoRepeatEnabled, prefs, this); |
325 xkb_auto_repeat_delay_pref_.Init( | 338 xkb_auto_repeat_delay_pref_.Init( |
326 prefs::kLanguageXkbAutoRepeatDelay, prefs, this); | 339 prefs::kLanguageXkbAutoRepeatDelay, prefs, this); |
327 xkb_auto_repeat_interval_pref_.Init( | 340 xkb_auto_repeat_interval_pref_.Init( |
328 prefs::kLanguageXkbAutoRepeatInterval, prefs, this); | 341 prefs::kLanguageXkbAutoRepeatInterval, prefs, this); |
329 | 342 |
330 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, this); | 343 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, this); |
344 } | |
345 | |
346 void Preferences::Init(PrefService* prefs) { | |
347 InitUserPrefs(prefs); | |
331 | 348 |
332 // Initialize preferences to currently saved state. | 349 // Initialize preferences to currently saved state. |
333 NotifyPrefChanged(NULL); | 350 NotifyPrefChanged(NULL); |
334 | 351 |
335 // Initialize virtual keyboard settings to currently saved state. | 352 // Initialize virtual keyboard settings to currently saved state. |
336 UpdateVirturalKeyboardPreference(prefs); | 353 UpdateVirturalKeyboardPreference(prefs); |
337 | 354 |
338 // If a guest is logged in, initialize the prefs as if this is the first | 355 // If a guest is logged in, initialize the prefs as if this is the first |
339 // login. | 356 // login. |
340 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { | 357 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { |
341 LoginUtils::Get()->SetFirstLoginPrefs(prefs); | 358 LoginUtils::Get()->SetFirstLoginPrefs(prefs); |
342 } | 359 } |
343 } | 360 } |
344 | 361 |
362 void Preferences::InitUserPrefsForTesting(PrefService* prefs) { | |
363 InitUserPrefs(prefs); | |
364 } | |
365 | |
366 void Preferences::SetInputMethodListForTesting() { | |
367 SetInputMethodList(); | |
368 } | |
369 | |
345 void Preferences::Observe(int type, | 370 void Preferences::Observe(int type, |
346 const content::NotificationSource& source, | 371 const content::NotificationSource& source, |
347 const content::NotificationDetails& details) { | 372 const content::NotificationDetails& details) { |
348 if (type == chrome::NOTIFICATION_PREF_CHANGED) | 373 if (type == chrome::NOTIFICATION_PREF_CHANGED) |
349 NotifyPrefChanged(content::Details<std::string>(details).ptr()); | 374 NotifyPrefChanged(content::Details<std::string>(details).ptr()); |
350 } | 375 } |
351 | 376 |
352 void Preferences::NotifyPrefChanged(const std::string* pref_name) { | 377 void Preferences::NotifyPrefChanged(const std::string* pref_name) { |
353 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { | 378 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { |
354 const bool enabled = tap_to_click_enabled_.GetValue(); | 379 const bool enabled = tap_to_click_enabled_.GetValue(); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
426 } | 451 } |
427 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) { | 452 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) { |
428 const bool enabled = xkb_auto_repeat_enabled_.GetValue(); | 453 const bool enabled = xkb_auto_repeat_enabled_.GetValue(); |
429 input_method::XKeyboard::SetAutoRepeatEnabled(enabled); | 454 input_method::XKeyboard::SetAutoRepeatEnabled(enabled); |
430 } | 455 } |
431 if (!pref_name || ((*pref_name == prefs::kLanguageXkbAutoRepeatDelay) || | 456 if (!pref_name || ((*pref_name == prefs::kLanguageXkbAutoRepeatDelay) || |
432 (*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) { | 457 (*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) { |
433 UpdateAutoRepeatRate(); | 458 UpdateAutoRepeatRate(); |
434 } | 459 } |
435 | 460 |
436 if (!pref_name || *pref_name == prefs::kLanguagePreloadEngines) { | 461 if (!pref_name) { |
462 SetInputMethodList(); | |
463 } else if (*pref_name == prefs::kLanguagePreloadEngines) { | |
437 SetLanguageConfigStringListAsCSV(language_prefs::kGeneralSectionName, | 464 SetLanguageConfigStringListAsCSV(language_prefs::kGeneralSectionName, |
438 language_prefs::kPreloadEnginesConfigName, | 465 language_prefs::kPreloadEnginesConfigName, |
439 preload_engines_.GetValue()); | 466 preload_engines_.GetValue()); |
440 } | 467 } |
441 | 468 |
442 // Do not check |*pref_name| for the two prefs. We're only interested in | 469 // Do not check |*pref_name| of the prefs for remembering current/previous |
443 // initial values of the prefs. | 470 // input methods here. We're only interested in initial values of the prefs. |
444 if (!pref_name) { | |
445 const std::string previous_input_method_id = | |
446 previous_input_method_.GetValue(); | |
447 const std::string current_input_method_id = | |
448 current_input_method_.GetValue(); | |
449 // NOTICE: ChangeInputMethod() has to be called AFTER the value of | |
450 // |preload_engines_| is sent to the InputMethodManager. Otherwise, the | |
451 // ChangeInputMethod request might be ignored as an invalid input method ID. | |
452 input_method::InputMethodManager* manager = | |
453 input_method::InputMethodManager::GetInstance(); | |
454 if (!previous_input_method_id.empty()) | |
455 manager->ChangeInputMethod(previous_input_method_id); | |
456 if (!current_input_method_id.empty()) | |
457 manager->ChangeInputMethod(current_input_method_id); | |
458 } | |
459 | 471 |
460 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { | 472 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { |
461 if (!pref_name || | 473 if (!pref_name || |
462 *pref_name == language_prefs::kChewingBooleanPrefs[i].pref_name) { | 474 *pref_name == language_prefs::kChewingBooleanPrefs[i].pref_name) { |
463 SetLanguageConfigBoolean( | 475 SetLanguageConfigBoolean( |
464 language_prefs::kChewingSectionName, | 476 language_prefs::kChewingSectionName, |
465 language_prefs::kChewingBooleanPrefs[i].ibus_config_name, | 477 language_prefs::kChewingBooleanPrefs[i].ibus_config_name, |
466 chewing_boolean_prefs_[i].GetValue()); | 478 chewing_boolean_prefs_[i].GetValue()); |
467 } | 479 } |
468 } | 480 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
562 enable_screen_lock_.GetValue()); | 574 enable_screen_lock_.GetValue()); |
563 } | 575 } |
564 } | 576 } |
565 | 577 |
566 void Preferences::SetLanguageConfigBoolean(const char* section, | 578 void Preferences::SetLanguageConfigBoolean(const char* section, |
567 const char* name, | 579 const char* name, |
568 bool value) { | 580 bool value) { |
569 input_method::InputMethodConfigValue config; | 581 input_method::InputMethodConfigValue config; |
570 config.type = input_method::InputMethodConfigValue::kValueTypeBool; | 582 config.type = input_method::InputMethodConfigValue::kValueTypeBool; |
571 config.bool_value = value; | 583 config.bool_value = value; |
572 input_method::InputMethodManager::GetInstance()-> | 584 input_method_manager_->SetInputMethodConfig(section, name, config); |
573 SetInputMethodConfig(section, name, config); | |
574 } | 585 } |
575 | 586 |
576 void Preferences::SetLanguageConfigInteger(const char* section, | 587 void Preferences::SetLanguageConfigInteger(const char* section, |
577 const char* name, | 588 const char* name, |
578 int value) { | 589 int value) { |
579 input_method::InputMethodConfigValue config; | 590 input_method::InputMethodConfigValue config; |
580 config.type = input_method::InputMethodConfigValue::kValueTypeInt; | 591 config.type = input_method::InputMethodConfigValue::kValueTypeInt; |
581 config.int_value = value; | 592 config.int_value = value; |
582 input_method::InputMethodManager::GetInstance()-> | 593 input_method_manager_->SetInputMethodConfig(section, name, config); |
583 SetInputMethodConfig(section, name, config); | |
584 } | 594 } |
585 | 595 |
586 void Preferences::SetLanguageConfigString(const char* section, | 596 void Preferences::SetLanguageConfigString(const char* section, |
587 const char* name, | 597 const char* name, |
588 const std::string& value) { | 598 const std::string& value) { |
589 input_method::InputMethodConfigValue config; | 599 input_method::InputMethodConfigValue config; |
590 config.type = input_method::InputMethodConfigValue::kValueTypeString; | 600 config.type = input_method::InputMethodConfigValue::kValueTypeString; |
591 config.string_value = value; | 601 config.string_value = value; |
592 input_method::InputMethodManager::GetInstance()-> | 602 input_method_manager_->SetInputMethodConfig(section, name, config); |
593 SetInputMethodConfig(section, name, config); | |
594 } | 603 } |
595 | 604 |
596 void Preferences::SetLanguageConfigStringList( | 605 void Preferences::SetLanguageConfigStringList( |
597 const char* section, | 606 const char* section, |
598 const char* name, | 607 const char* name, |
599 const std::vector<std::string>& values) { | 608 const std::vector<std::string>& values) { |
600 input_method::InputMethodConfigValue config; | 609 input_method::InputMethodConfigValue config; |
601 config.type = input_method::InputMethodConfigValue::kValueTypeStringList; | 610 config.type = input_method::InputMethodConfigValue::kValueTypeStringList; |
602 for (size_t i = 0; i < values.size(); ++i) | 611 for (size_t i = 0; i < values.size(); ++i) |
603 config.string_list_value.push_back(values[i]); | 612 config.string_list_value.push_back(values[i]); |
604 | 613 |
605 input_method::InputMethodManager::GetInstance()-> | 614 input_method_manager_->SetInputMethodConfig(section, name, config); |
606 SetInputMethodConfig(section, name, config); | |
607 } | 615 } |
608 | 616 |
609 void Preferences::SetLanguageConfigStringListAsCSV(const char* section, | 617 void Preferences::SetLanguageConfigStringListAsCSV(const char* section, |
610 const char* name, | 618 const char* name, |
611 const std::string& value) { | 619 const std::string& value) { |
612 VLOG(1) << "Setting " << name << " to '" << value << "'"; | 620 VLOG(1) << "Setting " << name << " to '" << value << "'"; |
613 | 621 |
614 std::vector<std::string> split_values; | 622 std::vector<std::string> split_values; |
615 if (!value.empty()) | 623 if (!value.empty()) |
616 base::SplitString(value, ',', &split_values); | 624 base::SplitString(value, ',', &split_values); |
617 | 625 |
618 // We should call the cros API even when |value| is empty, to disable default | 626 // We should call the cros API even when |value| is empty, to disable default |
619 // config. | 627 // config. |
620 SetLanguageConfigStringList(section, name, split_values); | 628 SetLanguageConfigStringList(section, name, split_values); |
621 } | 629 } |
622 | 630 |
631 void Preferences::SetInputMethodList() { | |
632 // When |preload_engines_| are set, InputMethodManager::ChangeInputMethod() | |
633 // 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 | |
635 // prefs. That's why GetValue() calls are placed before the | |
636 // SetLanguageConfigStringListAsCSV() call below. | |
637 const std::string previous_input_method_id = | |
638 previous_input_method_.GetValue(); | |
639 const std::string current_input_method_id = current_input_method_.GetValue(); | |
640 SetLanguageConfigStringListAsCSV(language_prefs::kGeneralSectionName, | |
641 language_prefs::kPreloadEnginesConfigName, | |
642 preload_engines_.GetValue()); | |
643 | |
644 // ChangeInputMethod() has to be called AFTER the value of |preload_engines_| | |
645 // is sent to the InputMethodManager. Otherwise, the ChangeInputMethod request | |
646 // might be ignored as an invalid input method ID. The ChangeInputMethod() | |
647 // calls are also necessary to restore the previous/current input method prefs | |
648 // which could have been modified by the SetLanguageConfigStringListAsCSV call | |
649 // above to the original state. | |
650 if (!previous_input_method_id.empty()) | |
651 input_method_manager_->ChangeInputMethod(previous_input_method_id); | |
652 if (!current_input_method_id.empty()) | |
653 input_method_manager_->ChangeInputMethod(current_input_method_id); | |
654 } | |
655 | |
623 void Preferences::UpdateModifierKeyMapping() { | 656 void Preferences::UpdateModifierKeyMapping() { |
624 const int search_remap = xkb_remap_search_key_to_.GetValue(); | 657 const int search_remap = xkb_remap_search_key_to_.GetValue(); |
625 const int control_remap = xkb_remap_control_key_to_.GetValue(); | 658 const int control_remap = xkb_remap_control_key_to_.GetValue(); |
626 const int alt_remap = xkb_remap_alt_key_to_.GetValue(); | 659 const int alt_remap = xkb_remap_alt_key_to_.GetValue(); |
627 if ((search_remap < input_method::kNumModifierKeys) && (search_remap >= 0) && | 660 if ((search_remap < input_method::kNumModifierKeys) && (search_remap >= 0) && |
628 (control_remap < input_method::kNumModifierKeys) && | 661 (control_remap < input_method::kNumModifierKeys) && |
629 (control_remap >= 0) && | 662 (control_remap >= 0) && |
630 (alt_remap < input_method::kNumModifierKeys) && (alt_remap >= 0)) { | 663 (alt_remap < input_method::kNumModifierKeys) && (alt_remap >= 0)) { |
631 input_method::ModifierMap modifier_map; | 664 input_method::ModifierMap modifier_map; |
632 modifier_map.push_back( | 665 modifier_map.push_back( |
633 input_method::ModifierKeyPair( | 666 input_method::ModifierKeyPair( |
634 input_method::kSearchKey, | 667 input_method::kSearchKey, |
635 input_method::ModifierKey(search_remap))); | 668 input_method::ModifierKey(search_remap))); |
636 modifier_map.push_back( | 669 modifier_map.push_back( |
637 input_method::ModifierKeyPair( | 670 input_method::ModifierKeyPair( |
638 input_method::kLeftControlKey, | 671 input_method::kLeftControlKey, |
639 input_method::ModifierKey(control_remap))); | 672 input_method::ModifierKey(control_remap))); |
640 modifier_map.push_back( | 673 modifier_map.push_back( |
641 input_method::ModifierKeyPair( | 674 input_method::ModifierKeyPair( |
642 input_method::kLeftAltKey, | 675 input_method::kLeftAltKey, |
643 input_method::ModifierKey(alt_remap))); | 676 input_method::ModifierKey(alt_remap))); |
644 input_method::InputMethodManager::GetInstance()->GetXKeyboard()-> | 677 input_method_manager_->GetXKeyboard()->RemapModifierKeys(modifier_map); |
645 RemapModifierKeys(modifier_map); | |
646 } else { | 678 } else { |
647 LOG(ERROR) << "Failed to remap modifier keys. Unexpected value(s): " | 679 LOG(ERROR) << "Failed to remap modifier keys. Unexpected value(s): " |
648 << search_remap << ", " << control_remap << ", " << alt_remap; | 680 << search_remap << ", " << control_remap << ", " << alt_remap; |
649 } | 681 } |
650 } | 682 } |
651 | 683 |
652 void Preferences::UpdateAutoRepeatRate() { | 684 void Preferences::UpdateAutoRepeatRate() { |
653 // Avoid setting repeat rate on desktop dev environment. | 685 // Avoid setting repeat rate on desktop dev environment. |
654 if (!base::chromeos::IsRunningOnChromeOS()) | 686 if (!base::chromeos::IsRunningOnChromeOS()) |
655 return; | 687 return; |
656 | 688 |
657 input_method::AutoRepeatRate rate; | 689 input_method::AutoRepeatRate rate; |
658 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); | 690 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); |
659 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); | 691 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); |
660 DCHECK(rate.initial_delay_in_ms > 0); | 692 DCHECK(rate.initial_delay_in_ms > 0); |
661 DCHECK(rate.repeat_interval_in_ms > 0); | 693 DCHECK(rate.repeat_interval_in_ms > 0); |
662 input_method::XKeyboard::SetAutoRepeatRate(rate); | 694 input_method::XKeyboard::SetAutoRepeatRate(rate); |
663 } | 695 } |
664 | 696 |
665 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) { | 697 void Preferences::UpdateVirturalKeyboardPreference(PrefService* prefs) { |
666 const DictionaryValue* virtual_keyboard_pref = | 698 const DictionaryValue* virtual_keyboard_pref = |
667 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard); | 699 prefs->GetDictionary(prefs::kLanguagePreferredVirtualKeyboard); |
668 DCHECK(virtual_keyboard_pref); | 700 DCHECK(virtual_keyboard_pref); |
669 | 701 |
670 input_method::InputMethodManager* input_method_manager = | 702 input_method::InputMethodManager* input_method_manager = |
671 input_method::InputMethodManager::GetInstance(); | 703 input_method::InputMethodManager::GetInstance(); |
kinaba
2012/04/12 06:02:01
Just for confirmation, shouldn't this be replaced
Yusuke Sato
2012/04/12 09:21:25
good point, but actually the method is static. let
| |
672 input_method_manager->ClearAllVirtualKeyboardPreferences(); | 704 input_method_manager->ClearAllVirtualKeyboardPreferences(); |
673 | 705 |
674 std::string url; | 706 std::string url; |
675 std::vector<std::string> layouts_to_remove; | 707 std::vector<std::string> layouts_to_remove; |
676 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys(); | 708 for (DictionaryValue::key_iterator iter = virtual_keyboard_pref->begin_keys(); |
677 iter != virtual_keyboard_pref->end_keys(); | 709 iter != virtual_keyboard_pref->end_keys(); |
678 ++iter) { | 710 ++iter) { |
679 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk" | 711 const std::string& layout_id = *iter; // e.g. "us", "handwriting-vk" |
680 if (!virtual_keyboard_pref->GetString(layout_id, &url)) | 712 if (!virtual_keyboard_pref->GetString(layout_id, &url)) |
681 continue; | 713 continue; |
682 if (!input_method_manager->SetVirtualKeyboardPreference( | 714 if (!input_method_manager->SetVirtualKeyboardPreference( |
683 layout_id, GURL(url))) { | 715 layout_id, GURL(url))) { |
684 // Either |layout_id| or |url| is invalid. Remove the key from |prefs| | 716 // Either |layout_id| or |url| is invalid. Remove the key from |prefs| |
685 // later. | 717 // later. |
686 layouts_to_remove.push_back(layout_id); | 718 layouts_to_remove.push_back(layout_id); |
687 LOG(ERROR) << "Removing invalid virtual keyboard pref: layout=" | 719 LOG(ERROR) << "Removing invalid virtual keyboard pref: layout=" |
688 << layout_id; | 720 << layout_id; |
689 } | 721 } |
690 } | 722 } |
691 | 723 |
692 // Remove invalid prefs. | 724 // Remove invalid prefs. |
693 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard); | 725 DictionaryPrefUpdate updater(prefs, prefs::kLanguagePreferredVirtualKeyboard); |
694 DictionaryValue* pref_value = updater.Get(); | 726 DictionaryValue* pref_value = updater.Get(); |
695 for (size_t i = 0; i < layouts_to_remove.size(); ++i) { | 727 for (size_t i = 0; i < layouts_to_remove.size(); ++i) { |
696 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL); | 728 pref_value->RemoveWithoutPathExpansion(layouts_to_remove[i], NULL); |
697 } | 729 } |
698 } | 730 } |
699 | 731 |
700 } // namespace chromeos | 732 } // namespace chromeos |
OLD | NEW |