| 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 9c45d7c59a1af24c656f67fd6af09bff7eb926ae..df67f69c4df0abdf4d6ab76f64d403c0ec9f40ca 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -73,6 +73,11 @@ void InsertSyncPointAndAckForCompositor(
|
| route_id, renderer_host_id, ack);
|
| }
|
|
|
| +// Sends an acknowledgement to the renderer of a processed IME event.
|
| +void SendAcknowledgeImeEvent(RenderWidgetHostImpl* host) {
|
| + host->Send(new ViewMsg_AcknowledgeImeEvent(host->GetRoutingID()));
|
| +}
|
| +
|
| } // anonymous namespace
|
|
|
| RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
|
| @@ -83,6 +88,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
|
| are_layers_attached_(true),
|
| content_view_core_(NULL),
|
| ime_adapter_android_(this),
|
| + strict_ime_processing_(false),
|
| cached_background_color_(SK_ColorWHITE),
|
| texture_id_in_layer_(0),
|
| weak_ptr_factory_(this),
|
| @@ -114,6 +120,10 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
|
| true);
|
| }
|
|
|
| + strict_ime_processing_ =
|
| + CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableStrictImeProcessing);
|
| +
|
| host_->SetView(this);
|
| SetContentViewCore(content_view_core);
|
| }
|
| @@ -390,6 +400,12 @@ int RenderWidgetHostViewAndroid::GetNativeImeAdapter() {
|
|
|
| void RenderWidgetHostViewAndroid::OnTextInputStateChanged(
|
| const ViewHostMsg_TextInputState_Params& params) {
|
| + if (has_strict_ime_processing()) {
|
| + // Regardless of how we exit from this method, we must acknowledge that we
|
| + // processed the input state change.
|
| + base::ScopedClosureRunner ackCaller(
|
| + base::Bind(&SendAcknowledgeImeEvent, host_));
|
| + }
|
| if (!IsShowing())
|
| return;
|
|
|
|
|