summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/extensions/input_method_api.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/extensions/input_method_api.cc')
-rw-r--r--chrome/browser/chromeos/extensions/input_method_api.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/extensions/input_method_api.cc b/chrome/browser/chromeos/extensions/input_method_api.cc
index debfdf6..fa69f45 100644
--- a/chrome/browser/chromeos/extensions/input_method_api.cc
+++ b/chrome/browser/chromeos/extensions/input_method_api.cc
@@ -9,6 +9,7 @@
#include <string>
#include <utility>
+#include "ash/shell.h"
#include "base/command_line.h"
#include "base/lazy_instance.h"
#include "base/values.h"
@@ -34,6 +35,7 @@
#include "ui/base/ime/chromeos/ime_keyboard.h"
#include "ui/base/ime/chromeos/input_method_descriptor.h"
#include "ui/base/ime/chromeos/input_method_manager.h"
+#include "ui/keyboard/keyboard_controller.h"
#include "ui/keyboard/keyboard_util.h"
namespace AddWordToDictionary =
@@ -57,6 +59,8 @@ namespace {
// Prefix, which is used by XKB.
const char kXkbPrefix[] = "xkb:";
+const char kErrorFailToShowInputView[] =
+ "Unable to show the input view window.";
} // namespace
@@ -228,6 +232,36 @@ InputMethodPrivateSetXkbLayoutFunction::Run() {
#endif
}
+ExtensionFunction::ResponseAction
+InputMethodPrivateShowInputViewFunction::Run() {
+#if !defined(OS_CHROMEOS)
+ EXTENSION_FUNCTION_VALIDATE(false);
+#else
+ keyboard::KeyboardController* keyboard_controller =
+ keyboard::KeyboardController::GetInstance();
+ if (keyboard_controller) {
+ keyboard_controller->ShowKeyboard(false);
+ return RespondNow(NoArguments());
+ }
+
+ if (keyboard::IsKeyboardEnabled())
+ return RespondNow(Error(kErrorFailToShowInputView));
+
+ // Forcibly enables the a11y onscreen keyboard if there is on keyboard enabled
+ // for now. And re-disables it after showing once.
+ keyboard::SetAccessibilityKeyboardEnabled(true);
+ ash::Shell::GetInstance()->CreateKeyboard();
+ keyboard_controller = keyboard::KeyboardController::GetInstance();
+ if (!keyboard_controller) {
+ keyboard::SetAccessibilityKeyboardEnabled(false);
+ return RespondNow(Error(kErrorFailToShowInputView));
+ }
+ keyboard_controller->ShowKeyboard(false);
+ keyboard::SetAccessibilityKeyboardEnabled(false);
+ return RespondNow(NoArguments());
+#endif
+}
+
InputMethodAPI::InputMethodAPI(content::BrowserContext* context)
: context_(context) {
EventRouter::Get(context_)->RegisterObserver(this, OnChanged::kEventName);