| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index 8f6ffdb2189c598c6079f455a214ab1456329318..471efa2a729c960a2dfe0622b632ee9d43108db2 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -68,6 +68,7 @@
|
| #include "third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h"
|
| #include "third_party/WebKit/public/web/WebDeviceEmulationParams.h"
|
| #include "third_party/WebKit/public/web/WebFrameWidget.h"
|
| +#include "third_party/WebKit/public/web/WebInputMethodController.h"
|
| #include "third_party/WebKit/public/web/WebLocalFrame.h"
|
| #include "third_party/WebKit/public/web/WebNode.h"
|
| #include "third_party/WebKit/public/web/WebPagePopup.h"
|
| @@ -112,6 +113,7 @@ using blink::WebGestureEvent;
|
| using blink::WebImage;
|
| using blink::WebInputEvent;
|
| using blink::WebInputEventResult;
|
| +using blink::WebInputMethodController;
|
| using blink::WebKeyboardEvent;
|
| using blink::WebLocalFrame;
|
| using blink::WebMouseEvent;
|
| @@ -1412,7 +1414,10 @@ void RenderWidget::OnImeSetComposition(
|
| if (!ShouldHandleImeEvent())
|
| return;
|
| ImeEventGuard guard(this);
|
| - if (!GetWebWidget()->setComposition(
|
| + blink::WebInputMethodController* controller = GetInputMethodController();
|
| + DCHECK(controller);
|
| + if (!controller ||
|
| + !controller->setComposition(
|
| text, WebVector<WebCompositionUnderline>(underlines), selection_start,
|
| selection_end)) {
|
| // If we failed to set the composition text, then we need to let the browser
|
| @@ -1442,7 +1447,8 @@ void RenderWidget::OnImeCommitText(const base::string16& text,
|
| return;
|
| ImeEventGuard guard(this);
|
| input_handler_->set_handling_input_event(true);
|
| - GetWebWidget()->commitText(text, relative_cursor_pos);
|
| + if (auto* controller = GetInputMethodController())
|
| + controller->commitText(text, relative_cursor_pos);
|
| input_handler_->set_handling_input_event(false);
|
| UpdateCompositionInfo(false /* not an immediate request */);
|
| }
|
| @@ -1460,9 +1466,11 @@ void RenderWidget::OnImeFinishComposingText(bool keep_selection) {
|
| return;
|
| ImeEventGuard guard(this);
|
| input_handler_->set_handling_input_event(true);
|
| - GetWebWidget()->finishComposingText(keep_selection
|
| - ? WebWidget::KeepSelection
|
| - : WebWidget::DoNotKeepSelection);
|
| + if (auto* controller = GetInputMethodController()) {
|
| + controller->finishComposingText(
|
| + keep_selection ? WebInputMethodController::KeepSelection
|
| + : WebInputMethodController::DoNotKeepSelection);
|
| + }
|
| input_handler_->set_handling_input_event(false);
|
| UpdateCompositionInfo(false /* not an immediate request */);
|
| }
|
| @@ -1940,7 +1948,10 @@ void RenderWidget::resetInputMethod() {
|
| if (text_input_type_ != ui::TEXT_INPUT_TYPE_NONE) {
|
| // If a composition text exists, then we need to let the browser process
|
| // to cancel the input method's ongoing composition session.
|
| - if (GetWebWidget()->finishComposingText(WebWidget::DoNotKeepSelection))
|
| + blink::WebInputMethodController* controller = GetInputMethodController();
|
| + if (controller &&
|
| + controller->finishComposingText(
|
| + WebInputMethodController::DoNotKeepSelection))
|
| Send(new InputHostMsg_ImeCancelComposition(routing_id()));
|
| }
|
|
|
| @@ -2096,4 +2107,13 @@ blink::WebWidget* RenderWidget::GetWebWidget() const {
|
| return webwidget_internal_;
|
| }
|
|
|
| +blink::WebInputMethodController* RenderWidget::GetInputMethodController()
|
| + const {
|
| + // TODO(ekaramad): Remove this CHECK when GetWebWidget() is
|
| + // always a WebFrameWidget.
|
| + CHECK(GetWebWidget()->isWebFrameWidget());
|
| + return static_cast<blink::WebFrameWidget*>(GetWebWidget())
|
| + ->getActiveWebInputMethodController();
|
| +}
|
| +
|
| } // namespace content
|
|
|