| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index 4c0fda13bb72976e3dd52db55248cf0bf05495d2..c1bfdf40db9bbcda884934e860d1f0ee5c94f568 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -661,6 +661,10 @@ void RenderWidget::SendOrCrash(IPC::Message* message) {
|
| CHECK(closing_ || result) << "Failed to send message";
|
| }
|
|
|
| +bool RenderWidget::ShouldHandleImeEvents() const {
|
| + return GetWebWidget()->isWebFrameWidget() && has_focus_;
|
| +}
|
| +
|
| void RenderWidget::SetWindowRectSynchronously(
|
| const gfx::Rect& new_window_rect) {
|
| ResizeParams params;
|
| @@ -1034,8 +1038,8 @@ void RenderWidget::UpdateTextInputState(ShowIme show_ime,
|
| return; // Not considered as a text input field in WebKit/Chromium.
|
|
|
| blink::WebTextInputInfo new_info;
|
| - if (GetWebWidget())
|
| - new_info = GetWebWidget()->textInputInfo();
|
| + if (auto* controller = GetInputMethodController())
|
| + new_info = controller->textInputInfo();
|
| const ui::TextInputMode new_mode =
|
| ConvertWebTextInputMode(new_info.inputMode);
|
|
|
| @@ -1504,6 +1508,9 @@ void RenderWidget::OnImeSetComposition(
|
| const std::vector<WebCompositionUnderline>& underlines,
|
| const gfx::Range& replacement_range,
|
| int selection_start, int selection_end) {
|
| + if (!ShouldHandleImeEvents())
|
| + return;
|
| +
|
| #if BUILDFLAG(ENABLE_PLUGINS)
|
| if (focused_pepper_plugin_) {
|
| focused_pepper_plugin_->render_frame()->OnImeSetComposition(
|
| @@ -1535,6 +1542,9 @@ void RenderWidget::OnImeSetComposition(
|
| void RenderWidget::OnImeCommitText(const base::string16& text,
|
| const gfx::Range& replacement_range,
|
| int relative_cursor_pos) {
|
| + if (!ShouldHandleImeEvents())
|
| + return;
|
| +
|
| #if BUILDFLAG(ENABLE_PLUGINS)
|
| if (focused_pepper_plugin_) {
|
| focused_pepper_plugin_->render_frame()->OnImeCommitText(
|
| @@ -1558,6 +1568,9 @@ void RenderWidget::OnImeCommitText(const base::string16& text,
|
| }
|
|
|
| void RenderWidget::OnImeFinishComposingText(bool keep_selection) {
|
| + if (!ShouldHandleImeEvents())
|
| + return;
|
| +
|
| #if BUILDFLAG(ENABLE_PLUGINS)
|
| if (focused_pepper_plugin_) {
|
| focused_pepper_plugin_->render_frame()->OnImeFinishComposingText(
|
| @@ -1729,8 +1742,8 @@ ui::TextInputType RenderWidget::GetTextInputType() {
|
| if (focused_pepper_plugin_)
|
| return focused_pepper_plugin_->text_input_type();
|
| #endif
|
| - if (GetWebWidget())
|
| - return ConvertWebTextInputType(GetWebWidget()->textInputType());
|
| + if (auto* controller = GetInputMethodController())
|
| + return ConvertWebTextInputType(controller->textInputType());
|
| return ui::TEXT_INPUT_TYPE_NONE;
|
| }
|
|
|
| @@ -2111,7 +2124,8 @@ void RenderWidget::didHandleGestureEvent(
|
| UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
|
| } else if (event.type == WebInputEvent::GestureLongPress) {
|
| DCHECK(GetWebWidget());
|
| - if (GetWebWidget()->textInputInfo().value.isEmpty())
|
| + blink::WebInputMethodController* controller = GetInputMethodController();
|
| + if (!controller || controller->textInputInfo().value.isEmpty())
|
| UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME);
|
| else
|
| UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
|
| @@ -2124,7 +2138,9 @@ void RenderWidget::didHandleGestureEvent(
|
|
|
| // TODO(estade): hit test the event against focused node to make sure
|
| // the tap actually hit the focused node.
|
| - blink::WebTextInputType text_input_type = GetWebWidget()->textInputType();
|
| + blink::WebInputMethodController* controller = GetInputMethodController();
|
| + blink::WebTextInputType text_input_type =
|
| + controller ? controller->textInputType() : blink::WebTextInputTypeNone;
|
|
|
| Send(new ViewHostMsg_FocusedNodeTouched(
|
| routing_id_, text_input_type != blink::WebTextInputTypeNone));
|
|
|