Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / ui / keyboard / webui / vk_mojo_handler.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/keyboard/webui/vk_mojo_handler.h"
6
7 #include "ui/aura/window.h"
8 #include "ui/base/ime/input_method.h"
9 #include "ui/base/ime/text_input_client.h"
10 #include "ui/keyboard/keyboard_controller.h"
11 #include "ui/keyboard/keyboard_controller_proxy.h"
12 #include "ui/keyboard/keyboard_util.h"
13 #include "ui/keyboard/webui/keyboard.mojom.h"
14
15 namespace keyboard {
16
17 VKMojoHandler::VKMojoHandler() {
18   GetInputMethod()->AddObserver(this);
19 }
20
21 VKMojoHandler::~VKMojoHandler() {
22   GetInputMethod()->RemoveObserver(this);
23 }
24
25 ui::InputMethod* VKMojoHandler::GetInputMethod() {
26   return KeyboardController::GetInstance()->proxy()->GetInputMethod();
27 }
28
29 void VKMojoHandler::OnConnectionEstablished() {
30   OnTextInputStateChanged(GetInputMethod()->GetTextInputClient());
31 }
32
33 void VKMojoHandler::SendKeyEvent(const mojo::String& event_type,
34                                  int32_t char_value,
35                                  int32_t key_code,
36                                  const mojo::String& key_name,
37                                  int32_t modifiers) {
38   aura::Window* window =
39       KeyboardController::GetInstance()->GetContainerWindow();
40   std::string type = event_type.To<std::string>();
41   std::string name = key_name.To<std::string>();
42   keyboard::SendKeyEvent(
43       type, char_value, key_code, name, modifiers, window->GetHost());
44 }
45
46 void VKMojoHandler::HideKeyboard() {
47   KeyboardController::GetInstance()->HideKeyboard(
48       KeyboardController::HIDE_REASON_MANUAL);
49 }
50
51 void VKMojoHandler::OnTextInputTypeChanged(const ui::TextInputClient* client) {
52 }
53
54 void VKMojoHandler::OnFocus() {
55 }
56
57 void VKMojoHandler::OnBlur() {
58 }
59
60 void VKMojoHandler::OnCaretBoundsChanged(const ui::TextInputClient* client) {
61 }
62
63 void VKMojoHandler::OnTextInputStateChanged(
64     const ui::TextInputClient* text_client) {
65   ui::TextInputType type =
66       text_client ? text_client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE;
67   std::string type_name = "none";
68   switch (type) {
69     case ui::TEXT_INPUT_TYPE_NONE:
70       type_name = "none";
71       break;
72
73     case ui::TEXT_INPUT_TYPE_PASSWORD:
74       type_name = "password";
75       break;
76
77     case ui::TEXT_INPUT_TYPE_EMAIL:
78       type_name = "email";
79       break;
80
81     case ui::TEXT_INPUT_TYPE_NUMBER:
82       type_name = "number";
83       break;
84
85     case ui::TEXT_INPUT_TYPE_TELEPHONE:
86       type_name = "tel";
87       break;
88
89     case ui::TEXT_INPUT_TYPE_URL:
90       type_name = "url";
91       break;
92
93     case ui::TEXT_INPUT_TYPE_DATE:
94       type_name = "date";
95       break;
96
97     case ui::TEXT_INPUT_TYPE_TEXT:
98     case ui::TEXT_INPUT_TYPE_SEARCH:
99     case ui::TEXT_INPUT_TYPE_DATE_TIME:
100     case ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL:
101     case ui::TEXT_INPUT_TYPE_MONTH:
102     case ui::TEXT_INPUT_TYPE_TIME:
103     case ui::TEXT_INPUT_TYPE_WEEK:
104     case ui::TEXT_INPUT_TYPE_TEXT_AREA:
105     case ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE:
106     case ui::TEXT_INPUT_TYPE_DATE_TIME_FIELD:
107       type_name = "text";
108       break;
109   }
110   client()->OnTextInputTypeChanged(type_name);
111 }
112
113 void VKMojoHandler::OnInputMethodDestroyed(
114     const ui::InputMethod* input_method) {
115 }
116
117 void VKMojoHandler::OnShowImeIfNeeded() {
118 }
119
120 }  // namespace keyboard