diff options
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 |