diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 23:17:17 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 23:17:17 +0000 |
commit | 4793c9449382bbc28dc9b865b1e77177c9a2feaf (patch) | |
tree | f159eabc0862f8cfa6a6352c482674336ed3def5 /chrome/browser/chromeos/preferences.cc | |
parent | ba463e96863261ba783e374fa7148fa263c9da4a (diff) | |
download | chromium_src-4793c9449382bbc28dc9b865b1e77177c9a2feaf.zip chromium_src-4793c9449382bbc28dc9b865b1e77177c9a2feaf.tar.gz chromium_src-4793c9449382bbc28dc9b865b1e77177c9a2feaf.tar.bz2 |
Enable and disable Chat Manager component extension based on labs preference setting.
BUG=56429
TEST=unit_tests --gtest_filter=ExtensionsServiceTest.*
Review URL: http://codereview.chromium.org/3120029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60123 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/preferences.cc')
-rw-r--r-- | chrome/browser/chromeos/preferences.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index 094c94a..07d9305 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc @@ -12,8 +12,10 @@ #include "chrome/browser/chromeos/cros/keyboard_library.h" #include "chrome/browser/chromeos/cros/touchpad_library.h" #include "chrome/browser/chromeos/input_method/input_method_util.h" +#include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prefs/pref_service.h" +#include "chrome/browser/profile.h" #include "chrome/common/notification_service.h" #include "chrome/common/pref_names.h" #include "unicode/timezone.h" @@ -21,6 +23,11 @@ namespace chromeos { static const char kFallbackInputMethodLocale[] = "en-US"; +static const char kTalkAppExtensionId[] = "ggnioahjipcehijkhpdjekioddnjoben"; + +Preferences::Preferences(Profile* profile) + : profile_(profile) { +} // static void Preferences::RegisterUserPrefs(PrefService* prefs) { @@ -33,6 +40,7 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) { if (prefs->FindPreference(prefs::kAccessibilityEnabled) == NULL) { prefs->RegisterBooleanPref(prefs::kAccessibilityEnabled, false); } + prefs->RegisterIntegerPref(prefs::kLabsTalkEnabled, 0); prefs->RegisterIntegerPref(prefs::kTouchpadSensitivity, 3); prefs->RegisterStringPref(prefs::kLanguageCurrentInputMethod, ""); prefs->RegisterStringPref(prefs::kLanguagePreviousInputMethod, ""); @@ -171,6 +179,8 @@ void Preferences::Init(PrefService* prefs) { language_xkb_auto_repeat_interval_pref_.Init( prefs::kLanguageXkbAutoRepeatInterval, prefs, this); + labs_talk_enabled_.Init(prefs::kLabsTalkEnabled, prefs, this); + // Initialize touchpad settings to what's saved in user preferences. NotifyPrefChanged(NULL); } @@ -327,6 +337,11 @@ void Preferences::NotifyPrefChanged(const std::string* pref_name) { (*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) { UpdateAutoRepeatRate(); } + + // Listen for explicit changes as ExtensionsService handles startup case. + if (pref_name && *pref_name == prefs::kLabsTalkEnabled) { + UpdateTalkApp(); + } } void Preferences::SetLanguageConfigBoolean(const char* section, @@ -417,4 +432,17 @@ void Preferences::UpdateAutoRepeatRate() { CrosLibrary::Get()->GetKeyboardLibrary()->SetAutoRepeatRate(rate); } +void Preferences::UpdateTalkApp() { + if (!profile_->GetExtensionsService()->is_ready()) { + NOTREACHED() << "Extensions service should be ready"; + return; + } + + if (labs_talk_enabled_.GetValue() == 0) { + profile_->GetExtensionsService()->DisableExtension(kTalkAppExtensionId); + } else { + profile_->GetExtensionsService()->EnableExtension(kTalkAppExtensionId); + } +} + } // namespace chromeos |