| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index 74d2f578ca91ef885bc1aac8ba7728aed02ee742..907bc9ee7f9541967b1e4acfe7309165322e5d91 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -486,7 +486,9 @@ bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
|
| IPC_MESSAGE_HANDLER(InputMsg_CursorVisibilityChange,
|
| OnCursorVisibilityChange)
|
| IPC_MESSAGE_HANDLER(InputMsg_ImeSetComposition, OnImeSetComposition)
|
| - IPC_MESSAGE_HANDLER(InputMsg_ImeConfirmComposition, OnImeConfirmComposition)
|
| + IPC_MESSAGE_HANDLER(InputMsg_ImeCommitText, OnImeCommitText)
|
| + IPC_MESSAGE_HANDLER(InputMsg_ImeFinishComposingText,
|
| + OnImeFinishComposingText)
|
| IPC_MESSAGE_HANDLER(InputMsg_MouseCaptureLost, OnMouseCaptureLost)
|
| IPC_MESSAGE_HANDLER(InputMsg_SetFocus, OnSetFocus)
|
| IPC_MESSAGE_HANDLER(InputMsg_SyntheticGestureCompleted,
|
| @@ -1399,13 +1401,13 @@ void RenderWidget::OnImeSetComposition(
|
| UpdateCompositionInfo(false /* not an immediate request */);
|
| }
|
|
|
| -void RenderWidget::OnImeConfirmComposition(const base::string16& text,
|
| - const gfx::Range& replacement_range,
|
| - bool keep_selection) {
|
| +void RenderWidget::OnImeCommitText(const base::string16& text,
|
| + const gfx::Range& replacement_range,
|
| + int relative_cursor_pos) {
|
| #if defined(ENABLE_PLUGINS)
|
| if (focused_pepper_plugin_) {
|
| - focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
|
| - text, replacement_range, keep_selection);
|
| + focused_pepper_plugin_->render_frame()->OnImeCommitText(
|
| + text, replacement_range, relative_cursor_pos);
|
| return;
|
| }
|
| #endif
|
| @@ -1418,12 +1420,27 @@ void RenderWidget::OnImeConfirmComposition(const base::string16& text,
|
| return;
|
| ImeEventGuard guard(this);
|
| input_handler_->set_handling_input_event(true);
|
| - if (text.length())
|
| - webwidget_->confirmComposition(text);
|
| - else if (keep_selection)
|
| - webwidget_->confirmComposition(WebWidget::KeepSelection);
|
| - else
|
| - webwidget_->confirmComposition(WebWidget::DoNotKeepSelection);
|
| + webwidget_->commitText(text, relative_cursor_pos);
|
| + input_handler_->set_handling_input_event(false);
|
| + UpdateCompositionInfo(false /* not an immediate request */);
|
| +}
|
| +
|
| +void RenderWidget::OnImeFinishComposingText(bool keep_selection) {
|
| +#if defined(ENABLE_PLUGINS)
|
| + if (focused_pepper_plugin_) {
|
| + focused_pepper_plugin_->render_frame()->OnImeFinishComposingText(
|
| + keep_selection);
|
| + return;
|
| + }
|
| +#endif
|
| +
|
| + if (!ShouldHandleImeEvent())
|
| + return;
|
| + ImeEventGuard guard(this);
|
| + input_handler_->set_handling_input_event(true);
|
| + webwidget_->finishComposingText(keep_selection
|
| + ? WebWidget::KeepSelection
|
| + : WebWidget::DoNotKeepSelection);
|
| input_handler_->set_handling_input_event(false);
|
| UpdateCompositionInfo(false /* not an immediate request */);
|
| }
|
| @@ -1922,7 +1939,7 @@ void RenderWidget::resetInputMethod() {
|
| if (text_input_info_.type != blink::WebTextInputTypeNone) {
|
| // If a composition text exists, then we need to let the browser process
|
| // to cancel the input method's ongoing composition session.
|
| - if (webwidget_->confirmComposition())
|
| + if (webwidget_->finishComposingText(WebWidget::DoNotKeepSelection))
|
| Send(new InputHostMsg_ImeCancelComposition(routing_id()));
|
| }
|
|
|
|
|