Chromium Code Reviews| Index: ui/keyboard/keyboard_ui_handler.cc |
| diff --git a/ui/keyboard/keyboard_ui_handler.cc b/ui/keyboard/keyboard_ui_handler.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..92a81852fccb1a765dc0d927dd52fdbd7c6db74a |
| --- /dev/null |
| +++ b/ui/keyboard/keyboard_ui_handler.cc |
| @@ -0,0 +1,49 @@ |
| +// Copyright (c) 2013 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/keyboard_ui_handler.h" |
| + |
| +#include <string> |
| + |
| +#include "base/bind.h" |
| +#include "base/logging.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "content/public/browser/web_ui.h" |
| +#include "ui/aura/root_window.h" |
| +#include "ui/base/events/event.h" |
| +#include "ui/keyboard/keyboard_util.h" |
| + |
| +namespace keyboard { |
| + |
| +KeyboardUIHandler::KeyboardUIHandler(aura::RootWindow* root_window) |
| + : root_window_(root_window) { |
| +} |
| + |
| +KeyboardUIHandler::~KeyboardUIHandler() { |
| +} |
| + |
| +void KeyboardUIHandler::RegisterMessages() { |
| + web_ui()->RegisterMessageCallback( |
| + "sendKeyEvent", |
| + base::Bind(&KeyboardUIHandler::HandleSendKeyEventMessage, |
| + base::Unretained(this))); |
| +} |
| + |
| +void KeyboardUIHandler::HandleSendKeyEventMessage(const base::ListValue* args) { |
| + std::string error; |
| + scoped_ptr<ui::KeyEvent> event(keyboard::KeyEventFromArgs(args, &error)); |
| + if (!event) { |
| + LOG(ERROR) << "sendKeyEvent failed: " << error; |
| + return; |
| + } |
| + |
| + if (root_window_) { |
| + root_window_->AsRootWindowHostDelegate()->OnHostKeyEvent(event.get()); |
|
sadrul
2013/04/18 02:58:28
Does it make sense to use web_ui()->GetWebContents
bryeung
2013/04/18 14:42:36
Clever! This is a great simplification. Done.
|
| + } else { |
| + DLOG(INFO) << "KeyboardUIHandler handling sendKeyEvent: key_code=" |
| + << event->key_code(); |
| + } |
| +} |
| + |
| +} // namespace keyboard |