Chromium Code Reviews| Index: content/browser/renderer_host/render_widget_host_view_android.cc |
| diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
| index 4a8319613f9b8b58b84cbab3ee8532bdd3299ec4..9481ab1bd67ec403aa8e50a458f28d7ab2af34a5 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc |
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
| @@ -77,6 +77,11 @@ void InsertSyncPointAndAckForCompositor( |
| route_id, output_surface_id, renderer_host_id, ack); |
| } |
| +// Sends an acknowledgement to the renderer of a processed IME event. |
| +void SendImeEventAck(RenderWidgetHostImpl* host) { |
| + host->Send(new ViewMsg_ImeEventAck(host->GetRoutingID())); |
| +} |
| + |
| } // anonymous namespace |
| RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
| @@ -398,6 +403,13 @@ int RenderWidgetHostViewAndroid::GetNativeImeAdapter() { |
| void RenderWidgetHostViewAndroid::OnTextInputStateChanged( |
| const ViewHostMsg_TextInputState_Params& params) { |
| +#if defined(OS_ANDROID) |
| + if (params.require_ack) { |
| + // Regardless of how we exit from this method, we must acknowledge that we |
| + // processed the input state change. |
| + base::ScopedClosureRunner ackCaller(base::Bind(&SendImeEventAck, host_)); |
|
jam
2013/08/01 22:34:07
nit: ack_caller per style guide
btw never saw Sco
nyquist
2013/08/01 23:11:04
Done.
Yeah, the ScopedClosureRunner is neat.
|
| + } |
| +#endif |
| if (!IsShowing()) |
| return; |