Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(285)

Unified Diff: content/renderer/render_widget.cc

Issue 2333813002: Introduce WebInputMethodController to blink (Closed)
Patch Set: Updated a comment Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget.h ('k') | content/renderer/render_widget_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 25475adaf5ae38f2b6f5dcd311ef7baa1957300b..22fa834432e08a4f8f9bf05e0c4ee9dc58421602 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -64,6 +64,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"
@@ -106,6 +107,7 @@ using blink::WebDeviceEmulationParams;
using blink::WebGestureEvent;
using blink::WebInputEvent;
using blink::WebInputEventResult;
+using blink::WebInputMethodController;
using blink::WebKeyboardEvent;
using blink::WebMouseEvent;
using blink::WebMouseWheelEvent;
@@ -1414,7 +1416,9 @@ void RenderWidget::OnImeSetComposition(
if (!ShouldHandleImeEvent())
return;
ImeEventGuard guard(this);
- if (!GetWebWidget()->setComposition(
+ DCHECK(GetInputMethodController());
+ if (!GetInputMethodController() ||
dglazkov 2016/10/06 22:18:58 this can be inverted and done the same way as I su
EhsanK 2016/11/01 15:46:04 Acknowledged.
+ !GetInputMethodController()->setComposition(
text, WebVector<WebCompositionUnderline>(underlines), selection_start,
selection_end)) {
// If we failed to set the composition text, then we need to let the browser
@@ -1444,7 +1448,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 (GetInputMethodController())
+ GetInputMethodController()->commitText(text, relative_cursor_pos);
dglazkov 2016/10/06 22:18:58 if (auto* controller = GetInputMethodController())
EhsanK 2016/11/01 15:46:04 Acknowledged.
input_handler_->set_handling_input_event(false);
UpdateCompositionInfo(false /* not an immediate request */);
}
@@ -1462,9 +1467,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 (GetInputMethodController()) {
dglazkov 2016/10/06 22:18:58 same here.
EhsanK 2016/11/01 15:46:04 Done.
+ GetInputMethodController()->finishComposingText(
+ keep_selection ? WebInputMethodController::KeepSelection
+ : WebInputMethodController::DoNotKeepSelection);
+ }
input_handler_->set_handling_input_event(false);
UpdateCompositionInfo(false /* not an immediate request */);
}
@@ -2007,7 +2014,9 @@ 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 (GetWebWidget()->finishComposingText(WebWidget::DoNotKeepSelection))
+ if (GetInputMethodController() &&
dglazkov 2016/10/06 22:18:58 same here.
EhsanK 2016/11/01 15:46:04 Acknowledged.
+ GetInputMethodController()->finishComposingText(
+ WebInputMethodController::DoNotKeepSelection))
Send(new InputHostMsg_ImeCancelComposition(routing_id()));
}
@@ -2172,4 +2181,13 @@ blink::WebWidget* RenderWidget::GetWebWidget() const {
return webwidget_internal_;
}
+blink::WebInputMethodController* RenderWidget::GetInputMethodController()
+ const {
+ // TODO(ekaramad): Will this DCHECK ever fire? Remove when GetWebWidget() is
+ // always a WebFrameWidget.
+ DCHECK(GetWebWidget()->isWebFrameWidget());
+ return static_cast<blink::WebFrameWidget*>(GetWebWidget())
+ ->getActiveWebInputMethodController();
+}
+
} // namespace content
« no previous file with comments | « content/renderer/render_widget.h ('k') | content/renderer/render_widget_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698