| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ |
| #define CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "ash/shell_observer.h" |
| #include "base/compiler_specific.h" |
| #include "base/prefs/pref_member.h" |
| #include "chrome/browser/chromeos/language_preferences.h" |
| #include "chrome/browser/prefs/pref_service_syncable_observer.h" |
| |
| class PrefRegistrySimple; |
| class PrefService; |
| class PrefServiceSyncable; |
| |
| class TracingManager; |
| |
| namespace user_prefs { |
| class PrefRegistrySyncable; |
| } |
| |
| namespace chromeos { |
| |
| namespace input_method { |
| class InputMethodManager; |
| } |
| |
| // The Preferences class handles Chrome OS preferences. When the class |
| // is first initialized, it will initialize the OS settings to what's stored in |
| // the preferences. These include touchpad settings, etc. |
| // When the preferences change, we change the settings to reflect the new value. |
| class Preferences : public PrefServiceSyncableObserver, |
| public ash::ShellObserver { |
| public: |
| Preferences(); |
| explicit Preferences( |
| input_method::InputMethodManager* input_method_manager); // for testing |
| virtual ~Preferences(); |
| |
| // These method will register the prefs associated with Chrome OS settings. |
| static void RegisterPrefs(PrefRegistrySimple* registry); |
| static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| |
| // This method will initialize Chrome OS settings to values in user prefs. |
| // |is_primary_user| is true if preferences are initialized for primary user |
| // in multi-profile session. |
| void Init(PrefServiceSyncable* prefs, bool is_primary_user); |
| |
| void InitUserPrefsForTesting(PrefServiceSyncable* prefs); |
| void SetInputMethodListForTesting(); |
| |
| private: |
| // Initializes all member prefs. |
| void InitUserPrefs(PrefServiceSyncable* prefs); |
| |
| // Callback method for preference changes. |
| void OnPreferenceChanged(const std::string& pref_name); |
| |
| // This will set the OS settings when the preference changes. |
| // If this method is called with NULL, it will set all OS settings to what's |
| // stored in the preferences. |
| void NotifyPrefChanged(const std::string* pref_name); |
| |
| // A variant of SetLanguageConfigStringList. You can pass comma-separated |
| // values. Examples of |value|: "", "Control+space,Hiragana" |
| void SetLanguageConfigStringListAsCSV(const char* section, |
| const char* name, |
| const std::string& value); |
| |
| // Restores the user's preferred input method / keyboard layout on signing in. |
| void SetInputMethodList(); |
| |
| // Updates the initial key repeat delay and key repeat interval following |
| // current prefs values. We set the delay and interval at once since an |
| // underlying XKB API requires it. |
| void UpdateAutoRepeatRate(); |
| |
| // Force natural scroll to on if --enable-natural-scroll-default is specified |
| // on the cmd line. |
| void ForceNaturalScrollDefault(); |
| |
| // PrefServiceSyncableObserver implementation. |
| virtual void OnIsSyncingChanged() OVERRIDE; |
| |
| // Overriden from ash::ShellObserver. |
| virtual void OnTouchHudProjectionToggled(bool enabled) OVERRIDE; |
| |
| PrefServiceSyncable* prefs_; |
| |
| input_method::InputMethodManager* input_method_manager_; |
| scoped_ptr<TracingManager> tracing_manager_; |
| |
| BooleanPrefMember performance_tracing_enabled_; |
| BooleanPrefMember tap_to_click_enabled_; |
| BooleanPrefMember tap_dragging_enabled_; |
| BooleanPrefMember three_finger_click_enabled_; |
| BooleanPrefMember natural_scroll_; |
| BooleanPrefMember vert_edge_scroll_enabled_; |
| BooleanPrefMember a11y_spoken_feedback_enabled_; |
| BooleanPrefMember a11y_high_contrast_enabled_; |
| BooleanPrefMember a11y_screen_magnifier_enabled_; |
| IntegerPrefMember a11y_screen_magnifier_type_; |
| DoublePrefMember a11y_screen_magnifier_scale_; |
| IntegerPrefMember speed_factor_; |
| IntegerPrefMember mouse_sensitivity_; |
| IntegerPrefMember touchpad_sensitivity_; |
| BooleanPrefMember primary_mouse_button_right_; |
| BooleanPrefMember use_24hour_clock_; |
| BooleanPrefMember disable_drive_; |
| BooleanPrefMember disable_drive_over_cellular_; |
| BooleanPrefMember disable_drive_hosted_files_; |
| FilePathPrefMember download_default_directory_; |
| FilePathPrefMember select_file_last_directory_; |
| FilePathPrefMember save_file_default_directory_; |
| BooleanPrefMember touch_hud_projection_enabled_; |
| |
| // Input method preferences. |
| StringPrefMember preferred_languages_; |
| StringPrefMember preload_engines_; |
| StringPrefMember current_input_method_; |
| StringPrefMember previous_input_method_; |
| StringPrefMember enabled_extension_imes_; |
| |
| BooleanPrefMember xkb_auto_repeat_enabled_; |
| IntegerPrefMember xkb_auto_repeat_delay_pref_; |
| IntegerPrefMember xkb_auto_repeat_interval_pref_; |
| |
| // True if this preferences instance is for primary user. |
| bool is_primary_user_prefs_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Preferences); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ |