Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 2d27a73bd52c0b5f31f1ef5b3fdbee254a315783..1cf201845233b06f3c088ecb6dbb320a7c63d1a3 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -2305,9 +2305,15 @@ blink::WebWidget* RenderWidget::GetWebWidget() const { |
blink::WebInputMethodController* RenderWidget::GetInputMethodController() |
const { |
- // TODO(ekaramad): Remove this CHECK when GetWebWidget() is |
- // always a WebFrameWidget. |
- CHECK(GetWebWidget()->isWebFrameWidget()); |
+ // TODO(ekaramad): Remove this condition when GetWebWidget() is always a |
+ // WebFrameWidget, or find a better way to obtain the WebFrameWidget for |
+ // this RenderWidget. |
+ if (!GetWebWidget()->isWebFrameWidget()) { |
+ // It is possible to get here if this is a top-level RenderWidget and an IME |
+ // IPC is received during page navigation, in which case GetWebWidget() |
+ // yields a WebViewImpl instead of a WebFrameWiget. |
+ return nullptr; |
EhsanK
2016/11/24 01:21:39
I should also note that this method can return nul
|
+ } |
return static_cast<blink::WebFrameWidget*>(GetWebWidget()) |
->getActiveWebInputMethodController(); |
} |