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 "ash/magnifier/magnifier_constants.h" | 7 #include "ash/magnifier/magnifier_constants.h" |
8 #include "ash/shell_delegate.h" | 8 #include "ash/shell.h" |
9 #include "base/chromeos/chromeos_version.h" | 9 #include "base/chromeos/chromeos_version.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/i18n/time_formatting.h" | 11 #include "base/i18n/time_formatting.h" |
12 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
13 #include "base/prefs/pref_member.h" | 13 #include "base/prefs/pref_member.h" |
14 #include "base/prefs/pref_registry_simple.h" | 14 #include "base/prefs/pref_registry_simple.h" |
15 #include "base/strings/string_split.h" | 15 #include "base/strings/string_split.h" |
16 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
17 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
18 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
(...skipping 25 matching lines...) Expand all Loading... |
44 | 44 |
45 static const char kFallbackInputMethodLocale[] = "en-US"; | 45 static const char kFallbackInputMethodLocale[] = "en-US"; |
46 | 46 |
47 // TODO(achuith): Remove deprecated pref in M31. crbug.com/223480. | 47 // TODO(achuith): Remove deprecated pref in M31. crbug.com/223480. |
48 static const char kEnableTouchpadThreeFingerSwipe[] = | 48 static const char kEnableTouchpadThreeFingerSwipe[] = |
49 "settings.touchpad.enable_three_finger_swipe"; | 49 "settings.touchpad.enable_three_finger_swipe"; |
50 | 50 |
51 Preferences::Preferences() | 51 Preferences::Preferences() |
52 : prefs_(NULL), | 52 : prefs_(NULL), |
53 input_method_manager_(input_method::InputMethodManager::Get()) { | 53 input_method_manager_(input_method::InputMethodManager::Get()) { |
| 54 // Do not observe shell, if there is no shell instance; e.g., in some unit |
| 55 // tests. |
| 56 if (ash::Shell::HasInstance()) |
| 57 ash::Shell::GetInstance()->AddShellObserver(this); |
54 } | 58 } |
55 | 59 |
56 Preferences::Preferences(input_method::InputMethodManager* input_method_manager) | 60 Preferences::Preferences(input_method::InputMethodManager* input_method_manager) |
57 : prefs_(NULL), | 61 : prefs_(NULL), |
58 input_method_manager_(input_method_manager) { | 62 input_method_manager_(input_method_manager) { |
| 63 // Do not observe shell, if there is no shell instance; e.g., in some unit |
| 64 // tests. |
| 65 if (ash::Shell::HasInstance()) |
| 66 ash::Shell::GetInstance()->AddShellObserver(this); |
59 } | 67 } |
60 | 68 |
61 Preferences::~Preferences() { | 69 Preferences::~Preferences() { |
62 prefs_->RemoveObserver(this); | 70 prefs_->RemoveObserver(this); |
| 71 // If shell instance is destoryed before this preferences instance, there is |
| 72 // no need to remove this shell observer. |
| 73 if (ash::Shell::HasInstance()) |
| 74 ash::Shell::GetInstance()->RemoveShellObserver(this); |
63 } | 75 } |
64 | 76 |
65 // static | 77 // static |
66 void Preferences::RegisterPrefs(PrefRegistrySimple* registry) { | 78 void Preferences::RegisterPrefs(PrefRegistrySimple* registry) { |
67 registry->RegisterBooleanPref(prefs::kOwnerPrimaryMouseButtonRight, false); | 79 registry->RegisterBooleanPref(prefs::kOwnerPrimaryMouseButtonRight, false); |
68 registry->RegisterBooleanPref(prefs::kOwnerTapToClickEnabled, true); | 80 registry->RegisterBooleanPref(prefs::kOwnerTapToClickEnabled, true); |
69 registry->RegisterBooleanPref(prefs::kVirtualKeyboardEnabled, false); | 81 registry->RegisterBooleanPref(prefs::kVirtualKeyboardEnabled, false); |
70 } | 82 } |
71 | 83 |
72 // static | 84 // static |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 registry->RegisterStringPref( | 417 registry->RegisterStringPref( |
406 prefs::kTermsOfServiceURL, | 418 prefs::kTermsOfServiceURL, |
407 "", | 419 "", |
408 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 420 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
409 | 421 |
410 // TODO(achuith): Remove deprecated pref in M31. crbug.com/223480. | 422 // TODO(achuith): Remove deprecated pref in M31. crbug.com/223480. |
411 registry->RegisterBooleanPref( | 423 registry->RegisterBooleanPref( |
412 kEnableTouchpadThreeFingerSwipe, | 424 kEnableTouchpadThreeFingerSwipe, |
413 false, | 425 false, |
414 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 426 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 427 |
| 428 registry->RegisterBooleanPref( |
| 429 prefs::kTouchHudProjectionEnabled, |
| 430 false, |
| 431 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
415 } | 432 } |
416 | 433 |
417 void Preferences::InitUserPrefs(PrefServiceSyncable* prefs) { | 434 void Preferences::InitUserPrefs(PrefServiceSyncable* prefs) { |
418 prefs_ = prefs; | 435 prefs_ = prefs; |
419 | 436 |
420 BooleanPrefMember::NamedChangeCallback callback = | 437 BooleanPrefMember::NamedChangeCallback callback = |
421 base::Bind(&Preferences::OnPreferenceChanged, base::Unretained(this)); | 438 base::Bind(&Preferences::OnPreferenceChanged, base::Unretained(this)); |
422 | 439 |
423 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, callback); | 440 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, callback); |
424 tap_dragging_enabled_.Init(prefs::kTapDraggingEnabled, prefs, callback); | 441 tap_dragging_enabled_.Init(prefs::kTapDraggingEnabled, prefs, callback); |
(...skipping 17 matching lines...) Expand all Loading... |
442 disable_drive_over_cellular_.Init(prefs::kDisableDriveOverCellular, | 459 disable_drive_over_cellular_.Init(prefs::kDisableDriveOverCellular, |
443 prefs, callback); | 460 prefs, callback); |
444 disable_drive_hosted_files_.Init(prefs::kDisableDriveHostedFiles, | 461 disable_drive_hosted_files_.Init(prefs::kDisableDriveHostedFiles, |
445 prefs, callback); | 462 prefs, callback); |
446 download_default_directory_.Init(prefs::kDownloadDefaultDirectory, | 463 download_default_directory_.Init(prefs::kDownloadDefaultDirectory, |
447 prefs, callback); | 464 prefs, callback); |
448 select_file_last_directory_.Init(prefs::kSelectFileLastDirectory, | 465 select_file_last_directory_.Init(prefs::kSelectFileLastDirectory, |
449 prefs, callback); | 466 prefs, callback); |
450 save_file_default_directory_.Init(prefs::kSaveFileDefaultDirectory, | 467 save_file_default_directory_.Init(prefs::kSaveFileDefaultDirectory, |
451 prefs, callback); | 468 prefs, callback); |
| 469 touch_hud_projection_enabled_.Init(prefs::kTouchHudProjectionEnabled, |
| 470 prefs, callback); |
452 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight, | 471 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight, |
453 prefs, callback); | 472 prefs, callback); |
454 preferred_languages_.Init(prefs::kLanguagePreferredLanguages, | 473 preferred_languages_.Init(prefs::kLanguagePreferredLanguages, |
455 prefs, callback); | 474 prefs, callback); |
456 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, callback); | 475 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, callback); |
457 enabled_extension_imes_.Init(prefs::kLanguageEnabledExtensionImes, | 476 enabled_extension_imes_.Init(prefs::kLanguageEnabledExtensionImes, |
458 prefs, callback); | 477 prefs, callback); |
459 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, | 478 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, |
460 prefs, callback); | 479 prefs, callback); |
461 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, | 480 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
695 if (!pref_name || *pref_name == prefs::kSaveFileDefaultDirectory) { | 714 if (!pref_name || *pref_name == prefs::kSaveFileDefaultDirectory) { |
696 const base::FilePath pref_path = save_file_default_directory_.GetValue(); | 715 const base::FilePath pref_path = save_file_default_directory_.GetValue(); |
697 // This pref can contain a Drive path, which needs to be updated due to | 716 // This pref can contain a Drive path, which needs to be updated due to |
698 // namespaces introduced by crbug.com/174233. | 717 // namespaces introduced by crbug.com/174233. |
699 // TODO(haruki): Remove this when migration completes. crbug.com/229304. | 718 // TODO(haruki): Remove this when migration completes. crbug.com/229304. |
700 if (drive::util::NeedsNamespaceMigration(pref_path)) { | 719 if (drive::util::NeedsNamespaceMigration(pref_path)) { |
701 prefs_->SetFilePath(prefs::kSaveFileDefaultDirectory, | 720 prefs_->SetFilePath(prefs::kSaveFileDefaultDirectory, |
702 drive::util::ConvertToMyDriveNamespace(pref_path)); | 721 drive::util::ConvertToMyDriveNamespace(pref_path)); |
703 } | 722 } |
704 } | 723 } |
| 724 if (!pref_name || *pref_name == prefs::kTouchHudProjectionEnabled) { |
| 725 const bool enabled = touch_hud_projection_enabled_.GetValue(); |
| 726 ash::Shell::GetInstance()->SetTouchHudProjectionEnabled(enabled); |
| 727 } |
705 | 728 |
706 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) { | 729 if (!pref_name || *pref_name == prefs::kLanguagePreferredLanguages) { |
707 // Unlike kLanguagePreloadEngines and some other input method | 730 // Unlike kLanguagePreloadEngines and some other input method |
708 // preferencs, we don't need to send this to ibus-daemon. | 731 // preferencs, we don't need to send this to ibus-daemon. |
709 } | 732 } |
710 | 733 |
711 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) { | 734 if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) { |
712 const bool enabled = xkb_auto_repeat_enabled_.GetValue(); | 735 const bool enabled = xkb_auto_repeat_enabled_.GetValue(); |
713 input_method::XKeyboard::SetAutoRepeatEnabled(enabled); | 736 input_method::XKeyboard::SetAutoRepeatEnabled(enabled); |
714 } | 737 } |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1020 return; | 1043 return; |
1021 | 1044 |
1022 input_method::AutoRepeatRate rate; | 1045 input_method::AutoRepeatRate rate; |
1023 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); | 1046 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); |
1024 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); | 1047 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); |
1025 DCHECK(rate.initial_delay_in_ms > 0); | 1048 DCHECK(rate.initial_delay_in_ms > 0); |
1026 DCHECK(rate.repeat_interval_in_ms > 0); | 1049 DCHECK(rate.repeat_interval_in_ms > 0); |
1027 input_method::XKeyboard::SetAutoRepeatRate(rate); | 1050 input_method::XKeyboard::SetAutoRepeatRate(rate); |
1028 } | 1051 } |
1029 | 1052 |
| 1053 void Preferences::OnTouchHudProjectionToggled(bool enabled) { |
| 1054 if (touch_hud_projection_enabled_.GetValue() == enabled) |
| 1055 return; |
| 1056 |
| 1057 touch_hud_projection_enabled_.SetValue(enabled); |
| 1058 } |
| 1059 |
1030 } // namespace chromeos | 1060 } // namespace chromeos |
OLD | NEW |