preferences.h revision 0f1bc08d4cfcc34181b0b5cbf065c40f687bf740
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ash/shell_observer.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_member.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/language_preferences.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/prefs/pref_service_syncable_observer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefRegistrySimple; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefServiceSyncable; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochclass TracingManager; 22bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class PrefRegistrySyncable; 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace input_method { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InputMethodManager; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The Preferences class handles Chrome OS preferences. When the class 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is first initialized, it will initialize the OS settings to what's stored in 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the preferences. These include touchpad settings, etc. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When the preferences change, we change the settings to reflect the new value. 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass Preferences : public PrefServiceSyncableObserver, 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public ash::ShellObserver { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Preferences(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Preferences( 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) input_method::InputMethodManager* input_method_manager); // for testing 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Preferences(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // These method will register the prefs associated with Chrome OS settings. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void RegisterPrefs(PrefRegistrySimple* registry); 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This method will initialize Chrome OS settings to values in user prefs. 500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // |is_primary_user| is true if preferences are initialized for primary user 510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // in multi-profile session. 520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) void Init(PrefServiceSyncable* prefs, bool is_primary_user); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitUserPrefsForTesting(PrefServiceSyncable* prefs); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetInputMethodListForTesting(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initializes all member prefs. 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitUserPrefs(PrefServiceSyncable* prefs); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback method for preference changes. 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnPreferenceChanged(const std::string& pref_name); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This will set the OS settings when the preference changes. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If this method is called with NULL, it will set all OS settings to what's 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // stored in the preferences. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void NotifyPrefChanged(const std::string* pref_name); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A variant of SetLanguageConfigStringList. You can pass comma-separated 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // values. Examples of |value|: "", "Control+space,Hiragana" 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetLanguageConfigStringListAsCSV(const char* section, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* name, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& value); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Restores the user's preferred input method / keyboard layout on signing in. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetInputMethodList(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the initial key repeat delay and key repeat interval following 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // current prefs values. We set the delay and interval at once since an 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // underlying XKB API requires it. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAutoRepeatRate(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Force natural scroll to on if --enable-natural-scroll-default is specified 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // on the cmd line. 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ForceNaturalScrollDefault(); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // PrefServiceSyncableObserver implementation. 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnIsSyncingChanged() OVERRIDE; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Overriden from ash::ShellObserver. 917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnTouchHudProjectionToggled(bool enabled) OVERRIDE; 927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefServiceSyncable* prefs_; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) input_method::InputMethodManager* input_method_manager_; 96bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch scoped_ptr<TracingManager> tracing_manager_; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 98bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch BooleanPrefMember performance_tracing_enabled_; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember tap_to_click_enabled_; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember tap_dragging_enabled_; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember three_finger_click_enabled_; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember natural_scroll_; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember vert_edge_scroll_enabled_; 104868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) BooleanPrefMember a11y_spoken_feedback_enabled_; 105868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) BooleanPrefMember a11y_high_contrast_enabled_; 106868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) BooleanPrefMember a11y_screen_magnifier_enabled_; 107868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) IntegerPrefMember a11y_screen_magnifier_type_; 108868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DoublePrefMember a11y_screen_magnifier_scale_; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IntegerPrefMember speed_factor_; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IntegerPrefMember mouse_sensitivity_; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IntegerPrefMember touchpad_sensitivity_; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember primary_mouse_button_right_; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember use_24hour_clock_; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember disable_drive_; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember disable_drive_over_cellular_; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember disable_drive_hosted_files_; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FilePathPrefMember download_default_directory_; 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FilePathPrefMember select_file_last_directory_; 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FilePathPrefMember save_file_default_directory_; 1207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch BooleanPrefMember touch_hud_projection_enabled_; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Input method preferences. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StringPrefMember preferred_languages_; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StringPrefMember preload_engines_; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StringPrefMember current_input_method_; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StringPrefMember previous_input_method_; 127b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) StringPrefMember enabled_extension_imes_; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember xkb_auto_repeat_enabled_; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IntegerPrefMember xkb_auto_repeat_delay_pref_; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IntegerPrefMember xkb_auto_repeat_interval_pref_; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // True if this preferences instance is for primary user. 1340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) bool is_primary_user_prefs_; 1350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Preferences); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ 142