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

Unified Diff: content/renderer/render_widget.cc

Issue 2309983002: Allow selection change update before beginBatchEdit (Closed)
Patch Set: fixed a test failure 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 05adb9fcf7805f6e2521bd2b3c64ef2292888048..2e3e94eef7e0b2d01746a56bcc8770c19cb94881 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -234,6 +234,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),
@@ -516,6 +517,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)
@@ -981,6 +984,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;
@@ -1615,6 +1619,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