summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/preferences.cc
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-21 23:17:17 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-21 23:17:17 +0000
commit4793c9449382bbc28dc9b865b1e77177c9a2feaf (patch)
treef159eabc0862f8cfa6a6352c482674336ed3def5 /chrome/browser/chromeos/preferences.cc
parentba463e96863261ba783e374fa7148fa263c9da4a (diff)
downloadchromium_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.cc28
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