1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
// 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 "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"
#include "components/user_manager/user_manager.h"
#include "ui/base/ime/chromeos/input_method_manager.h"
class PrefRegistrySimple;
class PrefService;
class PrefServiceSyncable;
class TracingManager;
namespace user_prefs {
class PrefRegistrySyncable;
}
namespace chromeos {
class User;
namespace input_method {
class InputMethodManager;
class InputMethodSyncer;
}
// 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 user_manager::UserManager::UserSessionStateObserver {
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.
// |user| is the user owning this preferences.
void Init(Profile* profile, const user_manager::User* user);
void InitUserPrefsForTesting(
PrefServiceSyncable* prefs,
const user_manager::User* user,
scoped_refptr<input_method::InputMethodManager::State> ime_state);
void SetInputMethodListForTesting();
private:
enum ApplyReason {
REASON_INITIALIZATION,
REASON_ACTIVE_USER_CHANGED,
REASON_PREF_CHANGED
};
// 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 changed or user owning
// these preferences became active. Also this method is called on
// initialization. The reason of call is stored in |reason| parameter.
// |pref_name| keeps name of changed preference in |reason| is
// |REASON_PREF_CHANGED|, otherwise it is empty.
void ApplyPreferences(ApplyReason reason,
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;
// Overriden form user_manager::UserManager::UserSessionStateObserver.
virtual void ActiveUserChanged(
const user_manager::User* active_user) override;
void ActivateInputMethods(const user_manager::User* active_user);
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_;
IntegerPrefMember speed_factor_;
IntegerPrefMember mouse_sensitivity_;
IntegerPrefMember touchpad_sensitivity_;
BooleanPrefMember primary_mouse_button_right_;
FilePathPrefMember download_default_directory_;
BooleanPrefMember touch_hud_projection_enabled_;
// Input method preferences.
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_;
BooleanPrefMember wake_on_wifi_ssid_;
// User owning these preferences.
const user_manager::User* user_;
// Whether user is a primary user.
bool user_is_primary_;
// Input Methods state for this user.
scoped_refptr<input_method::InputMethodManager::State> ime_state_;
scoped_ptr<input_method::InputMethodSyncer> input_method_syncer_;
DISALLOW_COPY_AND_ASSIGN(Preferences);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PREFERENCES_H_
|