| Index: chrome/browser/chromeos/input_method/input_method_engine.cc
|
| diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| index c7d6ed4721f087f7cf886548fa19ae6951715d45..e5475ca5d5c513939de8d3a939a25b335218177c 100644
|
| --- a/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| +++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| @@ -17,6 +17,7 @@
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/profiles/profile_manager.h"
|
| #include "ui/aura/window.h"
|
| #include "ui/aura/window_tree_host.h"
|
| #include "ui/base/ime/candidate_window.h"
|
| @@ -162,7 +163,8 @@ InputMethodEngine::InputMethodEngine()
|
| composition_cursor_(0),
|
| candidate_window_(new ui::CandidateWindow()),
|
| window_visible_(false),
|
| - sent_key_event_(NULL) {
|
| + sent_key_event_(NULL),
|
| + profile_(NULL) {
|
| }
|
|
|
| InputMethodEngine::~InputMethodEngine() {
|
| @@ -170,12 +172,14 @@ InputMethodEngine::~InputMethodEngine() {
|
|
|
| void InputMethodEngine::Initialize(
|
| scoped_ptr<InputMethodEngineInterface::Observer> observer,
|
| - const char* extension_id) {
|
| + const char* extension_id,
|
| + Profile* profile) {
|
| DCHECK(observer) << "Observer must not be null.";
|
|
|
| // TODO(komatsu): It is probably better to set observer out of Initialize.
|
| observer_ = observer.Pass();
|
| extension_id_ = extension_id;
|
| + profile_ = profile;
|
| }
|
|
|
| const std::string& InputMethodEngine::GetActiveComponentId() const {
|
| @@ -501,6 +505,8 @@ void InputMethodEngine::HideInputView() {
|
|
|
| void InputMethodEngine::SetCompositionBounds(
|
| const std::vector<gfx::Rect>& bounds) {
|
| + if (!CheckProfile())
|
| + return;
|
| observer_->OnCompositionBoundsChanged(bounds);
|
| }
|
|
|
| @@ -517,6 +523,8 @@ void InputMethodEngine::EnableInputView() {
|
|
|
| void InputMethodEngine::FocusIn(
|
| const IMEEngineHandlerInterface::InputContext& input_context) {
|
| + if (!CheckProfile())
|
| + return;
|
| current_input_type_ = input_context.type;
|
|
|
| if (!IsActive() || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE)
|
| @@ -562,6 +570,8 @@ void InputMethodEngine::FocusIn(
|
| }
|
|
|
| void InputMethodEngine::FocusOut() {
|
| + if (!CheckProfile())
|
| + return;
|
| if (!IsActive() || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE)
|
| return;
|
|
|
| @@ -573,6 +583,8 @@ void InputMethodEngine::FocusOut() {
|
| }
|
|
|
| void InputMethodEngine::Enable(const std::string& component_id) {
|
| + if (!CheckProfile())
|
| + return;
|
| DCHECK(!component_id.empty());
|
| active_component_id_ = component_id;
|
| observer_->OnActivate(component_id);
|
| @@ -584,15 +596,21 @@ void InputMethodEngine::Enable(const std::string& component_id) {
|
| }
|
|
|
| void InputMethodEngine::Disable() {
|
| + if (!CheckProfile())
|
| + return;
|
| active_component_id_.clear();
|
| observer_->OnDeactivated(active_component_id_);
|
| }
|
|
|
| void InputMethodEngine::PropertyActivate(const std::string& property_name) {
|
| + if (!CheckProfile())
|
| + return;
|
| observer_->OnMenuItemActivated(active_component_id_, property_name);
|
| }
|
|
|
| void InputMethodEngine::Reset() {
|
| + if (!CheckProfile())
|
| + return;
|
| observer_->OnReset(active_component_id_);
|
| }
|
|
|
| @@ -603,6 +621,8 @@ bool InputMethodEngine::IsInterestedInKeyEvent() const {
|
| void InputMethodEngine::ProcessKeyEvent(
|
| const ui::KeyEvent& key_event,
|
| const KeyEventDoneCallback& callback) {
|
| + if (!CheckProfile())
|
| + return;
|
|
|
| KeyEventDoneCallback* handler = new KeyEventDoneCallback();
|
| *handler = callback;
|
| @@ -624,6 +644,8 @@ void InputMethodEngine::ProcessKeyEvent(
|
| }
|
|
|
| void InputMethodEngine::CandidateClicked(uint32 index) {
|
| + if (!CheckProfile())
|
| + return;
|
| if (index > candidate_ids_.size()) {
|
| return;
|
| }
|
| @@ -636,12 +658,19 @@ void InputMethodEngine::CandidateClicked(uint32 index) {
|
| void InputMethodEngine::SetSurroundingText(const std::string& text,
|
| uint32 cursor_pos,
|
| uint32 anchor_pos) {
|
| + if (!CheckProfile())
|
| + return;
|
| observer_->OnSurroundingTextChanged(active_component_id_,
|
| text,
|
| static_cast<int>(cursor_pos),
|
| static_cast<int>(anchor_pos));
|
| }
|
|
|
| +bool InputMethodEngine::CheckProfile() const {
|
| + Profile* active_profile = ProfileManager::GetActiveUserProfile();
|
| + return active_profile == profile_ || profile_->IsSameProfile(active_profile);
|
| +}
|
| +
|
| // TODO(uekawa): rename this method to a more reasonable name.
|
| void InputMethodEngine::MenuItemToProperty(
|
| const MenuItem& item,
|
|
|