OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/input_method/input_method_engine.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h" |
6 | 6 |
7 #undef FocusIn | 7 #undef FocusIn |
8 #undef FocusOut | 8 #undef FocusOut |
9 #undef RootWindow | 9 #undef RootWindow |
10 #include <map> | 10 #include <map> |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 keyboard_controller->Reload(); | 502 keyboard_controller->Reload(); |
503 } | 503 } |
504 | 504 |
505 void InputMethodEngine::FocusIn( | 505 void InputMethodEngine::FocusIn( |
506 const IMEEngineHandlerInterface::InputContext& input_context) { | 506 const IMEEngineHandlerInterface::InputContext& input_context) { |
507 current_input_type_ = input_context.type; | 507 current_input_type_ = input_context.type; |
508 | 508 |
509 if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) | 509 if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
510 return; | 510 return; |
511 | 511 |
512 // Prevent sending events on password field to 3rd-party IME extensions. | |
513 // And also make sure the VK fallback to system VK. | |
514 // TODO(shuchen): for password field, forcibly switch/lock the IME to the XKB | |
515 // keyboard related to the current IME. | |
516 if (current_input_type_ == ui::TEXT_INPUT_TYPE_PASSWORD && | |
517 !extension_ime_util::IsComponentExtensionIME(GetDescriptor().id())) { | |
518 EnableInputView(false); | |
519 return; | |
520 } | |
521 | |
522 context_id_ = next_context_id_; | 512 context_id_ = next_context_id_; |
523 ++next_context_id_; | 513 ++next_context_id_; |
524 | 514 |
525 InputMethodEngineInterface::InputContext context; | 515 InputMethodEngineInterface::InputContext context; |
526 context.id = context_id_; | 516 context.id = context_id_; |
527 switch (current_input_type_) { | 517 switch (current_input_type_) { |
528 case ui::TEXT_INPUT_TYPE_SEARCH: | 518 case ui::TEXT_INPUT_TYPE_SEARCH: |
529 context.type = "search"; | 519 context.type = "search"; |
530 break; | 520 break; |
531 case ui::TEXT_INPUT_TYPE_TELEPHONE: | 521 case ui::TEXT_INPUT_TYPE_TELEPHONE: |
(...skipping 16 matching lines...) Expand all Loading... |
548 break; | 538 break; |
549 } | 539 } |
550 | 540 |
551 observer_->OnFocus(context); | 541 observer_->OnFocus(context); |
552 } | 542 } |
553 | 543 |
554 void InputMethodEngine::FocusOut() { | 544 void InputMethodEngine::FocusOut() { |
555 if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) | 545 if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
556 return; | 546 return; |
557 | 547 |
558 ui::TextInputType previous_input_type = current_input_type_; | |
559 current_input_type_ = ui::TEXT_INPUT_TYPE_NONE; | 548 current_input_type_ = ui::TEXT_INPUT_TYPE_NONE; |
560 | 549 |
561 // Prevent sending events on password field to 3rd-party IME extensions. | |
562 // And also make sure the VK restore to IME input view. | |
563 if (previous_input_type == ui::TEXT_INPUT_TYPE_PASSWORD && | |
564 !extension_ime_util::IsComponentExtensionIME(GetDescriptor().id())) { | |
565 EnableInputView(true); | |
566 return; | |
567 } | |
568 | |
569 int context_id = context_id_; | 550 int context_id = context_id_; |
570 context_id_ = -1; | 551 context_id_ = -1; |
571 observer_->OnBlur(context_id); | 552 observer_->OnBlur(context_id); |
572 } | 553 } |
573 | 554 |
574 void InputMethodEngine::Enable() { | 555 void InputMethodEngine::Enable() { |
575 active_ = true; | 556 active_ = true; |
576 observer_->OnActivate(engine_id_); | 557 observer_->OnActivate(engine_id_); |
577 current_input_type_ = IMEBridge::Get()->GetCurrentTextInputType(); | 558 current_input_type_ = IMEBridge::Get()->GetCurrentTextInputType(); |
578 FocusIn(IMEEngineHandlerInterface::InputContext( | 559 FocusIn(IMEEngineHandlerInterface::InputContext( |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 // TODO(nona): Implement it. | 679 // TODO(nona): Implement it. |
699 break; | 680 break; |
700 } | 681 } |
701 } | 682 } |
702 } | 683 } |
703 | 684 |
704 // TODO(nona): Support item.children. | 685 // TODO(nona): Support item.children. |
705 } | 686 } |
706 | 687 |
707 } // namespace chromeos | 688 } // namespace chromeos |
OLD | NEW |