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

Unified Diff: content/renderer/render_widget.cc

Issue 2355483006: Allow some InputConnection methods to be called on UI thread (Closed)
Patch Set: 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') | no next file » | 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 7dad7c5d34aa96bea5be96317829b8e6775fd784..c926810d89b33a42193cf5eb7129a41260d3bb3b 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -237,6 +237,7 @@ RenderWidget::RenderWidget(CompositorDependencies* compositor_deps,
is_fullscreen_granted_(false),
display_mode_(blink::WebDisplayModeUndefined),
ime_event_guard_(nullptr),
+ ime_in_batch_edit_(false),
closing_(false),
host_closing_(false),
is_swapped_out_(swapped_out),
@@ -503,6 +504,8 @@ bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(InputMsg_ImeEventAck, OnImeEventAck)
IPC_MESSAGE_HANDLER(InputMsg_RequestTextInputStateUpdate,
OnRequestTextInputStateUpdate)
+ IPC_MESSAGE_HANDLER(InputMsg_ImeBatchEdit,
+ OnImeBatchEdit)
IPC_MESSAGE_HANDLER(ViewMsg_ShowImeIfNeeded, OnShowImeIfNeeded)
#endif
IPC_MESSAGE_HANDLER(ViewMsg_HandleCompositorProto, OnHandleCompositorProto)
@@ -962,6 +965,7 @@ void RenderWidget::UpdateTextInputState(ShowIme show_ime,
#if defined(OS_ANDROID)
params.is_non_ime_change =
(change_source == ChangeSource::FROM_NON_IME) || text_field_is_dirty_;
+ params.batch_edit = ime_in_batch_edit_;
if (params.is_non_ime_change)
OnImeEventSentForAck(new_info);
text_field_is_dirty_ = false;
@@ -1580,6 +1584,19 @@ void RenderWidget::OnRequestTextInputStateUpdate() {
UpdateSelectionBounds();
UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_IME);
}
+
+void RenderWidget::OnImeBatchEdit(bool begin) {
+ if (begin) {
+ ime_in_batch_edit_ = true;
+ return;
+ }
+ if (!ime_in_batch_edit_)
+ return;
+ ime_in_batch_edit_ = false;
+ DCHECK(!ime_event_guard_);
+ UpdateSelectionBounds();
+ UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_IME);
+}
#endif
void RenderWidget::OnRequestCompositionUpdate(bool immediate_request,
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698