Index: extensions/shell/browser/shell_desktop_controller_aura.h |
diff --git a/extensions/shell/browser/shell_desktop_controller_aura.h b/extensions/shell/browser/shell_desktop_controller_aura.h |
index 8a83179fe28e9e551cd0577989eef591df8e9d42..c73faa22519d27b0713734db1a115200cb4dfc25 100644 |
--- a/extensions/shell/browser/shell_desktop_controller_aura.h |
+++ b/extensions/shell/browser/shell_desktop_controller_aura.h |
@@ -14,6 +14,7 @@ |
#include "extensions/shell/browser/desktop_controller.h" |
#include "ui/aura/client/window_parenting_client.h" |
#include "ui/aura/window_tree_host_observer.h" |
+#include "ui/base/ime/input_method_delegate.h" |
#if defined(OS_CHROMEOS) |
#include "chromeos/dbus/power_manager_client.h" |
@@ -52,9 +53,11 @@ class CursorManager; |
namespace extensions { |
class AppWindowClient; |
class Extension; |
+class InputMethodEventHandler; |
class ShellScreen; |
-// Handles desktop-related tasks for app_shell. |
+// Simple desktop controller for app_shell. Sets up a root Aura window for the |
+// primary display. |
class ShellDesktopControllerAura |
: public DesktopController, |
public aura::client::WindowParentingClient, |
@@ -62,7 +65,8 @@ class ShellDesktopControllerAura |
public chromeos::PowerManagerClient::Observer, |
public ui::DisplayConfigurator::Observer, |
#endif |
- public aura::WindowTreeHostObserver { |
+ public aura::WindowTreeHostObserver, |
+ public ui::internal::InputMethodDelegate { |
public: |
ShellDesktopControllerAura(); |
~ShellDesktopControllerAura() override; |
@@ -93,12 +97,18 @@ class ShellDesktopControllerAura |
// aura::WindowTreeHostObserver overrides: |
void OnHostCloseRequested(const aura::WindowTreeHost* host) override; |
+ // ui::internal::InputMethodDelegate overrides: |
+ ui::EventDispatchDetails DispatchKeyEventPostIME( |
+ ui::KeyEvent* key_event) override; |
+ |
protected: |
// Creates and sets the aura clients and window manager stuff. Subclass may |
// initialize different sets of the clients. |
virtual void InitWindowManager(); |
private: |
+ FRIEND_TEST_ALL_PREFIXES(ShellDesktopControllerAuraTest, InputEvents); |
+ |
// Creates the window that hosts the app. |
void CreateRootWindow(); |
@@ -119,6 +129,8 @@ class ShellDesktopControllerAura |
std::unique_ptr<wm::CompoundEventFilter> root_window_event_filter_; |
+ std::unique_ptr<InputMethodEventHandler> input_method_event_handler_; |
+ |
std::unique_ptr<aura::client::DefaultCaptureClient> capture_client_; |
std::unique_ptr<aura::client::FocusClient> focus_client_; |