| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index 2429f629b3cf53de06c6565c8eb7470c65ec36e8..30bd3cb7895a6b3a8c17b6347c8b98d05d29d29f 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -216,6 +216,7 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| RenderWidgetHostDelegate::RENDERER_UNRESPONSIVE_UNKNOWN),
|
| new_content_rendering_delay_(
|
| base::TimeDelta::FromMilliseconds(kNewContentRenderingDelayMs)),
|
| + in_ime_batch_edit_(false),
|
| weak_factory_(this) {
|
| CHECK(delegate_);
|
| CHECK_NE(MSG_ROUTING_NONE, routing_id_);
|
| @@ -1265,6 +1266,33 @@ void RenderWidgetHostImpl::HandleCompositorProto(
|
| Send(new ViewMsg_HandleCompositorProto(GetRoutingID(), proto));
|
| }
|
|
|
| +void RenderWidgetHostImpl::BeginBatchEdit() {
|
| + in_ime_batch_edit_ = true;
|
| +}
|
| +
|
| +void RenderWidgetHostImpl::EndBatchEdit() {
|
| + if (!in_ime_batch_edit_)
|
| + return;
|
| + in_ime_batch_edit_ = false;
|
| + if (batch_edit_messages_.empty())
|
| + return;
|
| + Send(new InputMsg_ImeBatchEdit(routing_id_, batch_edit_messages_));
|
| + batch_edit_messages_.clear();
|
| +}
|
| +
|
| +void RenderWidgetHostImpl::SendOrBatch(IPC::Message* message) {
|
| + if (in_ime_batch_edit_)
|
| + batch_edit_messages_.push_back(*message);
|
| + else
|
| + Send(message);
|
| +}
|
| +
|
| +void RenderWidgetHostImpl::ExtendSelectionAndDelete(size_t before,
|
| + size_t after) {
|
| + SendOrBatch(new InputMsg_ImeExtendSelectionAndDelete(
|
| + routing_id_, before, after));
|
| +}
|
| +
|
| void RenderWidgetHostImpl::NotifyScreenInfoChanged() {
|
| if (delegate_)
|
| delegate_->ScreenInfoChanged();
|
| @@ -1413,7 +1441,7 @@ void RenderWidgetHostImpl::ImeSetComposition(
|
| const gfx::Range& replacement_range,
|
| int selection_start,
|
| int selection_end) {
|
| - Send(new InputMsg_ImeSetComposition(
|
| + SendOrBatch(new InputMsg_ImeSetComposition(
|
| GetRoutingID(), text, underlines, replacement_range,
|
| selection_start, selection_end));
|
| }
|
| @@ -1422,12 +1450,12 @@ void RenderWidgetHostImpl::ImeConfirmComposition(
|
| const base::string16& text,
|
| const gfx::Range& replacement_range,
|
| bool keep_selection) {
|
| - Send(new InputMsg_ImeConfirmComposition(
|
| + SendOrBatch(new InputMsg_ImeConfirmComposition(
|
| GetRoutingID(), text, replacement_range, keep_selection));
|
| }
|
|
|
| void RenderWidgetHostImpl::ImeCancelComposition() {
|
| - Send(new InputMsg_ImeSetComposition(GetRoutingID(), base::string16(),
|
| + SendOrBatch(new InputMsg_ImeSetComposition(GetRoutingID(), base::string16(),
|
| std::vector<blink::WebCompositionUnderline>(),
|
| gfx::Range::InvalidRange(), 0, 0));
|
| }
|
|
|