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 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 prefs->RegisterBooleanPref(prefs::kExternalStorageDisabled, | 283 prefs->RegisterBooleanPref(prefs::kExternalStorageDisabled, |
284 false, | 284 false, |
285 PrefService::UNSYNCABLE_PREF); | 285 PrefService::UNSYNCABLE_PREF); |
286 | 286 |
287 RegisterDisplayPrefs(prefs); | 287 RegisterDisplayPrefs(prefs); |
288 } | 288 } |
289 | 289 |
290 void Preferences::InitUserPrefs(PrefService* prefs) { | 290 void Preferences::InitUserPrefs(PrefService* prefs) { |
291 prefs_ = prefs; | 291 prefs_ = prefs; |
292 | 292 |
293 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this); | 293 BooleanPrefMember::NamedChangeCallback callback = |
294 tap_dragging_enabled_.Init(prefs::kTapDraggingEnabled, prefs, this); | 294 base::Bind(&Preferences::OnPreferenceChanged, base::Unretained(this)); |
| 295 |
| 296 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, callback); |
| 297 tap_dragging_enabled_.Init(prefs::kTapDraggingEnabled, prefs, callback); |
295 three_finger_click_enabled_.Init(prefs::kEnableTouchpadThreeFingerClick, | 298 three_finger_click_enabled_.Init(prefs::kEnableTouchpadThreeFingerClick, |
296 prefs, this); | 299 prefs, callback); |
297 three_finger_swipe_enabled_.Init(prefs::kEnableTouchpadThreeFingerSwipe, | 300 three_finger_swipe_enabled_.Init(prefs::kEnableTouchpadThreeFingerSwipe, |
298 prefs, this); | 301 prefs, callback); |
299 natural_scroll_.Init(prefs::kNaturalScroll, prefs, this); | 302 natural_scroll_.Init(prefs::kNaturalScroll, prefs, callback); |
300 accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, this); | 303 accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, callback); |
301 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this); | 304 mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, callback); |
302 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, this); | 305 touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, callback); |
303 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, this); | 306 use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, callback); |
304 disable_drive_.Init(prefs::kDisableDrive, prefs, this); | 307 disable_drive_.Init(prefs::kDisableDrive, prefs, callback); |
305 disable_drive_over_cellular_.Init(prefs::kDisableDriveOverCellular, | 308 disable_drive_over_cellular_.Init(prefs::kDisableDriveOverCellular, |
306 prefs, this); | 309 prefs, callback); |
307 disable_drive_hosted_files_.Init(prefs::kDisableDriveHostedFiles, | 310 disable_drive_hosted_files_.Init(prefs::kDisableDriveHostedFiles, |
308 prefs, this); | 311 prefs, callback); |
309 download_default_directory_.Init(prefs::kDownloadDefaultDirectory, | 312 download_default_directory_.Init(prefs::kDownloadDefaultDirectory, |
310 prefs, this); | 313 prefs, callback); |
311 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight, | 314 primary_mouse_button_right_.Init(prefs::kPrimaryMouseButtonRight, |
312 prefs, this); | 315 prefs, callback); |
313 preferred_languages_.Init(prefs::kLanguagePreferredLanguages, | 316 preferred_languages_.Init(prefs::kLanguagePreferredLanguages, |
314 prefs, this); | 317 prefs, callback); |
315 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, this); | 318 preload_engines_.Init(prefs::kLanguagePreloadEngines, prefs, callback); |
316 filtered_extension_imes_.Init(prefs::kLanguageFilteredExtensionImes, | 319 filtered_extension_imes_.Init(prefs::kLanguageFilteredExtensionImes, |
317 prefs, this); | 320 prefs, callback); |
318 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, prefs, this); | 321 current_input_method_.Init(prefs::kLanguageCurrentInputMethod, |
319 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, prefs, this); | 322 prefs, callback); |
| 323 previous_input_method_.Init(prefs::kLanguagePreviousInputMethod, |
| 324 prefs, callback); |
320 | 325 |
321 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { | 326 for (size_t i = 0; i < language_prefs::kNumChewingBooleanPrefs; ++i) { |
322 chewing_boolean_prefs_[i].Init( | 327 chewing_boolean_prefs_[i].Init( |
323 language_prefs::kChewingBooleanPrefs[i].pref_name, prefs, this); | 328 language_prefs::kChewingBooleanPrefs[i].pref_name, prefs, callback); |
324 } | 329 } |
325 for (size_t i = 0; i < language_prefs::kNumChewingMultipleChoicePrefs; ++i) { | 330 for (size_t i = 0; i < language_prefs::kNumChewingMultipleChoicePrefs; ++i) { |
326 chewing_multiple_choice_prefs_[i].Init( | 331 chewing_multiple_choice_prefs_[i].Init( |
327 language_prefs::kChewingMultipleChoicePrefs[i].pref_name, prefs, this); | 332 language_prefs::kChewingMultipleChoicePrefs[i].pref_name, |
| 333 prefs, callback); |
328 } | 334 } |
329 chewing_hsu_sel_key_type_.Init( | 335 chewing_hsu_sel_key_type_.Init( |
330 language_prefs::kChewingHsuSelKeyType.pref_name, prefs, this); | 336 language_prefs::kChewingHsuSelKeyType.pref_name, prefs, callback); |
331 for (size_t i = 0; i < language_prefs::kNumChewingIntegerPrefs; ++i) { | 337 for (size_t i = 0; i < language_prefs::kNumChewingIntegerPrefs; ++i) { |
332 chewing_integer_prefs_[i].Init( | 338 chewing_integer_prefs_[i].Init( |
333 language_prefs::kChewingIntegerPrefs[i].pref_name, prefs, this); | 339 language_prefs::kChewingIntegerPrefs[i].pref_name, prefs, callback); |
334 } | 340 } |
335 hangul_keyboard_.Init(prefs::kLanguageHangulKeyboard, prefs, this); | 341 hangul_keyboard_.Init(prefs::kLanguageHangulKeyboard, prefs, callback); |
336 hangul_hanja_binding_keys_.Init( | 342 hangul_hanja_binding_keys_.Init( |
337 prefs::kLanguageHangulHanjaBindingKeys, prefs, this); | 343 prefs::kLanguageHangulHanjaBindingKeys, prefs, callback); |
338 for (size_t i = 0; i < language_prefs::kNumPinyinBooleanPrefs; ++i) { | 344 for (size_t i = 0; i < language_prefs::kNumPinyinBooleanPrefs; ++i) { |
339 pinyin_boolean_prefs_[i].Init( | 345 pinyin_boolean_prefs_[i].Init( |
340 language_prefs::kPinyinBooleanPrefs[i].pref_name, prefs, this); | 346 language_prefs::kPinyinBooleanPrefs[i].pref_name, prefs, callback); |
341 } | 347 } |
342 for (size_t i = 0; i < language_prefs::kNumPinyinIntegerPrefs; ++i) { | 348 for (size_t i = 0; i < language_prefs::kNumPinyinIntegerPrefs; ++i) { |
343 pinyin_int_prefs_[i].Init( | 349 pinyin_int_prefs_[i].Init( |
344 language_prefs::kPinyinIntegerPrefs[i].pref_name, prefs, this); | 350 language_prefs::kPinyinIntegerPrefs[i].pref_name, prefs, callback); |
345 } | 351 } |
346 pinyin_double_pinyin_schema_.Init( | 352 pinyin_double_pinyin_schema_.Init( |
347 language_prefs::kPinyinDoublePinyinSchema.pref_name, prefs, this); | 353 language_prefs::kPinyinDoublePinyinSchema.pref_name, prefs, callback); |
348 for (size_t i = 0; i < language_prefs::kNumMozcBooleanPrefs; ++i) { | 354 for (size_t i = 0; i < language_prefs::kNumMozcBooleanPrefs; ++i) { |
349 mozc_boolean_prefs_[i].Init( | 355 mozc_boolean_prefs_[i].Init( |
350 language_prefs::kMozcBooleanPrefs[i].pref_name, prefs, this); | 356 language_prefs::kMozcBooleanPrefs[i].pref_name, prefs, callback); |
351 } | 357 } |
352 for (size_t i = 0; i < language_prefs::kNumMozcMultipleChoicePrefs; ++i) { | 358 for (size_t i = 0; i < language_prefs::kNumMozcMultipleChoicePrefs; ++i) { |
353 mozc_multiple_choice_prefs_[i].Init( | 359 mozc_multiple_choice_prefs_[i].Init( |
354 language_prefs::kMozcMultipleChoicePrefs[i].pref_name, prefs, this); | 360 language_prefs::kMozcMultipleChoicePrefs[i].pref_name, prefs, callback); |
355 } | 361 } |
356 for (size_t i = 0; i < language_prefs::kNumMozcIntegerPrefs; ++i) { | 362 for (size_t i = 0; i < language_prefs::kNumMozcIntegerPrefs; ++i) { |
357 mozc_integer_prefs_[i].Init( | 363 mozc_integer_prefs_[i].Init( |
358 language_prefs::kMozcIntegerPrefs[i].pref_name, prefs, this); | 364 language_prefs::kMozcIntegerPrefs[i].pref_name, prefs, callback); |
359 } | 365 } |
360 xkb_auto_repeat_enabled_.Init( | 366 xkb_auto_repeat_enabled_.Init( |
361 prefs::kLanguageXkbAutoRepeatEnabled, prefs, this); | 367 prefs::kLanguageXkbAutoRepeatEnabled, prefs, callback); |
362 xkb_auto_repeat_delay_pref_.Init( | 368 xkb_auto_repeat_delay_pref_.Init( |
363 prefs::kLanguageXkbAutoRepeatDelay, prefs, this); | 369 prefs::kLanguageXkbAutoRepeatDelay, prefs, callback); |
364 xkb_auto_repeat_interval_pref_.Init( | 370 xkb_auto_repeat_interval_pref_.Init( |
365 prefs::kLanguageXkbAutoRepeatInterval, prefs, this); | 371 prefs::kLanguageXkbAutoRepeatInterval, prefs, callback); |
366 | 372 |
367 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, this); | 373 enable_screen_lock_.Init(prefs::kEnableScreenLock, prefs, callback); |
368 | 374 |
369 enable_drm_.Init(prefs::kEnableCrosDRM, prefs, this); | 375 enable_drm_.Init(prefs::kEnableCrosDRM, prefs, callback); |
370 } | 376 } |
371 | 377 |
372 void Preferences::Init(PrefService* prefs) { | 378 void Preferences::Init(PrefService* prefs) { |
373 InitUserPrefs(prefs); | 379 InitUserPrefs(prefs); |
374 | 380 |
375 // Initialize preferences to currently saved state. | 381 // Initialize preferences to currently saved state. |
376 NotifyPrefChanged(NULL); | 382 NotifyPrefChanged(NULL); |
377 | 383 |
378 // If a guest is logged in, initialize the prefs as if this is the first | 384 // If a guest is logged in, initialize the prefs as if this is the first |
379 // login. | 385 // login. |
380 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { | 386 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { |
381 LoginUtils::Get()->SetFirstLoginPrefs(prefs); | 387 LoginUtils::Get()->SetFirstLoginPrefs(prefs); |
382 } | 388 } |
383 | 389 |
384 NotifyDisplayPrefChanged(prefs); | 390 NotifyDisplayPrefChanged(prefs); |
385 } | 391 } |
386 | 392 |
387 void Preferences::InitUserPrefsForTesting(PrefService* prefs) { | 393 void Preferences::InitUserPrefsForTesting(PrefService* prefs) { |
388 InitUserPrefs(prefs); | 394 InitUserPrefs(prefs); |
389 } | 395 } |
390 | 396 |
391 void Preferences::SetInputMethodListForTesting() { | 397 void Preferences::SetInputMethodListForTesting() { |
392 SetInputMethodList(); | 398 SetInputMethodList(); |
393 } | 399 } |
394 | 400 |
395 void Preferences::OnPreferenceChanged(PrefServiceBase* service, | 401 void Preferences::OnPreferenceChanged(const std::string& pref_name) { |
396 const std::string& pref_name) { | |
397 NotifyPrefChanged(&pref_name); | 402 NotifyPrefChanged(&pref_name); |
398 } | 403 } |
399 | 404 |
400 void Preferences::NotifyPrefChanged(const std::string* pref_name) { | 405 void Preferences::NotifyPrefChanged(const std::string* pref_name) { |
401 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { | 406 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { |
402 const bool enabled = tap_to_click_enabled_.GetValue(); | 407 const bool enabled = tap_to_click_enabled_.GetValue(); |
403 system::touchpad_settings::SetTapToClick(enabled); | 408 system::touchpad_settings::SetTapToClick(enabled); |
404 if (pref_name) | 409 if (pref_name) |
405 UMA_HISTOGRAM_BOOLEAN("Touchpad.TapToClick.Changed", enabled); | 410 UMA_HISTOGRAM_BOOLEAN("Touchpad.TapToClick.Changed", enabled); |
406 else | 411 else |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 | 761 |
757 input_method::AutoRepeatRate rate; | 762 input_method::AutoRepeatRate rate; |
758 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); | 763 rate.initial_delay_in_ms = xkb_auto_repeat_delay_pref_.GetValue(); |
759 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); | 764 rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue(); |
760 DCHECK(rate.initial_delay_in_ms > 0); | 765 DCHECK(rate.initial_delay_in_ms > 0); |
761 DCHECK(rate.repeat_interval_in_ms > 0); | 766 DCHECK(rate.repeat_interval_in_ms > 0); |
762 input_method::XKeyboard::SetAutoRepeatRate(rate); | 767 input_method::XKeyboard::SetAutoRepeatRate(rate); |
763 } | 768 } |
764 | 769 |
765 } // namespace chromeos | 770 } // namespace chromeos |
OLD | NEW |