Index: ui/keyboard/webui/vk_mojo_handler.cc |
diff --git a/ui/keyboard/webui/vk_mojo_handler.cc b/ui/keyboard/webui/vk_mojo_handler.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..48e6dccd51eee190cdd763bfec6799b02812cc40 |
--- /dev/null |
+++ b/ui/keyboard/webui/vk_mojo_handler.cc |
@@ -0,0 +1,120 @@ |
+// Copyright 2014 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 "ui/keyboard/webui/vk_mojo_handler.h" |
+ |
+#include "ui/aura/window.h" |
+#include "ui/base/ime/input_method.h" |
+#include "ui/base/ime/text_input_client.h" |
+#include "ui/keyboard/keyboard_controller.h" |
+#include "ui/keyboard/keyboard_controller_proxy.h" |
+#include "ui/keyboard/keyboard_util.h" |
+#include "ui/keyboard/webui/keyboard.mojom.h" |
+ |
+namespace keyboard { |
+ |
+VKMojoHandler::VKMojoHandler() { |
+ GetInputMethod()->AddObserver(this); |
+} |
+ |
+VKMojoHandler::~VKMojoHandler() { |
+ GetInputMethod()->RemoveObserver(this); |
+} |
+ |
+ui::InputMethod* VKMojoHandler::GetInputMethod() { |
+ return KeyboardController::GetInstance()->proxy()->GetInputMethod(); |
+} |
+ |
+void VKMojoHandler::OnConnectionEstablished() { |
+ OnTextInputStateChanged(GetInputMethod()->GetTextInputClient()); |
+} |
+ |
+void VKMojoHandler::SendKeyEvent(const mojo::String& event_type, |
+ int32_t char_value, |
+ int32_t key_code, |
+ const mojo::String& key_name, |
+ int32_t modifiers) { |
+ aura::Window* window = |
+ KeyboardController::GetInstance()->GetContainerWindow(); |
+ std::string type = event_type.To<std::string>(); |
+ std::string name = key_name.To<std::string>(); |
+ keyboard::SendKeyEvent( |
+ type, char_value, key_code, name, modifiers, window->GetHost()); |
+} |
+ |
+void VKMojoHandler::HideKeyboard() { |
+ KeyboardController::GetInstance()->HideKeyboard( |
+ KeyboardController::HIDE_REASON_MANUAL); |
+} |
+ |
+void VKMojoHandler::OnTextInputTypeChanged(const ui::TextInputClient* client) { |
+} |
+ |
+void VKMojoHandler::OnFocus() { |
+} |
+ |
+void VKMojoHandler::OnBlur() { |
+} |
+ |
+void VKMojoHandler::OnCaretBoundsChanged(const ui::TextInputClient* client) { |
+} |
+ |
+void VKMojoHandler::OnTextInputStateChanged( |
+ const ui::TextInputClient* text_client) { |
+ ui::TextInputType type = |
+ text_client ? text_client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE; |
+ std::string type_name = "none"; |
+ switch (type) { |
+ case ui::TEXT_INPUT_TYPE_NONE: |
+ type_name = "none"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_PASSWORD: |
+ type_name = "password"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_EMAIL: |
+ type_name = "email"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_NUMBER: |
+ type_name = "number"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_TELEPHONE: |
+ type_name = "tel"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_URL: |
+ type_name = "url"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_DATE: |
+ type_name = "date"; |
+ break; |
+ |
+ case ui::TEXT_INPUT_TYPE_TEXT: |
+ case ui::TEXT_INPUT_TYPE_SEARCH: |
+ case ui::TEXT_INPUT_TYPE_DATE_TIME: |
+ case ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL: |
+ case ui::TEXT_INPUT_TYPE_MONTH: |
+ case ui::TEXT_INPUT_TYPE_TIME: |
+ case ui::TEXT_INPUT_TYPE_WEEK: |
+ case ui::TEXT_INPUT_TYPE_TEXT_AREA: |
+ case ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE: |
+ case ui::TEXT_INPUT_TYPE_DATE_TIME_FIELD: |
+ type_name = "text"; |
+ break; |
+ } |
+ client()->OnTextInputTypeChanged(type_name); |
+} |
+ |
+void VKMojoHandler::OnInputMethodDestroyed( |
+ const ui::InputMethod* input_method) { |
+} |
+ |
+void VKMojoHandler::OnShowImeIfNeeded() { |
+} |
+ |
+} // namespace keyboard |