diff options
author | erikwright@chromium.org <erikwright@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-10 22:03:45 +0000 |
---|---|---|
committer | erikwright@chromium.org <erikwright@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-10 22:03:45 +0000 |
commit | 3316496bdbe6f1120d6803190b50e70a85b232e5 (patch) | |
tree | 166e2611e1a9c61cbcf0fa1d228a33957df76d82 /chrome/browser/chromeos/input_method/input_method_delegate_impl.cc | |
parent | 260e1538389826b4e6bbda34d056aa2ebb2c8f13 (diff) | |
download | chromium_src-3316496bdbe6f1120d6803190b50e70a85b232e5.zip chromium_src-3316496bdbe6f1120d6803190b50e70a85b232e5.tar.gz chromium_src-3316496bdbe6f1120d6803190b50e70a85b232e5.tar.bz2 |
Extract a delegate interface from c/b/chromeos/input_method to permit decoupling from c/b.
BUG=164375
Review URL: https://chromiumcodereview.appspot.com/11415266
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172140 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/input_method/input_method_delegate_impl.cc')
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_delegate_impl.cc | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc new file mode 100644 index 0000000..4b6e71f --- /dev/null +++ b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc @@ -0,0 +1,73 @@ +// 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. + +#include "chrome/browser/chromeos/input_method/input_method_delegate_impl.h" + +#include "base/prefs/public/pref_service_base.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/language_preferences.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/common/pref_names.h" + +namespace chromeos { +namespace input_method { + +InputMethodDelegateImpl::InputMethodDelegateImpl() {} + +void InputMethodDelegateImpl::SetSystemInputMethod( + const std::string& input_method) { + if (g_browser_process) { + PrefServiceBase* local_state = g_browser_process->local_state(); + if (local_state) { + local_state->SetString(language_prefs::kPreferredKeyboardLayout, + input_method); + return; + } + } + + NOTREACHED(); +} + +void InputMethodDelegateImpl::SetUserInputMethod( + const std::string& input_method) { + PrefServiceBase* user_prefs = NULL; + Profile* profile = ProfileManager::GetDefaultProfile(); + if (profile) + user_prefs = profile->GetPrefs(); + if (!user_prefs) + return; + + const std::string current_input_method_on_pref = + user_prefs->GetString(prefs::kLanguageCurrentInputMethod); + if (current_input_method_on_pref == input_method) + return; + + user_prefs->SetString(prefs::kLanguagePreviousInputMethod, + current_input_method_on_pref); + user_prefs->SetString(prefs::kLanguageCurrentInputMethod, + input_method); +} + +std::string InputMethodDelegateImpl::GetHardwareKeyboardLayout() const { + if (g_browser_process) { + PrefServiceBase* local_state = g_browser_process->local_state(); + if (local_state) + return local_state->GetString(prefs::kHardwareKeyboardLayout); + } + // This shouldn't happen but just in case. + DVLOG(1) << "Local state is not yet ready."; + return std::string(); +} + +std::string InputMethodDelegateImpl::GetActiveLocale() const { + if (g_browser_process) + return g_browser_process->GetApplicationLocale(); + + NOTREACHED(); + return std::string(); +} + +} // namespace input_method +} // namespace chromeos |