|
[WIP] Bundle IME-related messages into one for batch edit
Android's InputConnection spec says that batch edit should not update
display until batch edit ends.
https://developer.android.com/reference/android/view/inputmethod/
InputConnection.html#beginBatchEdit()
By bundling IME-related messages and run them in one message loop, display
should not be updated during batch edit.
Since RenderWidget has some logic before calling InputMethodController
methods, batching messages at IPC::Message level seems natural.
Currently, the IME logic is split across RenderWidget and RenderFrameImpl,
which I don't think is necessary. In order to handle batch and run IME-
related messages in one message queue, I'm merging the logic and
place it in RenderWidget.
One possibly changed behavior is InputConnection#get*() methods in the
middle of batch edit. Previously, we returned results based on the
previous calls inside batch edit. With this change, we return results
based on states before entering batch edit. It is not explicit in the
spec, but we think of batch edit as a bundle of operations that do not
depend on the intermediate states.
By sending IME messages in the batch edit mode at once, we can also solve
other issues regarding beginBatchEdit(), such as crbug.com/643473
(we do not update selection change caused by operation just before
beginBatchEdit() is called.), and crbug.com/643477
(allow webview apps to call InputConnection methods on non-IME thread)
BUG= 644574, 643473, 643477
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation
Total comments: 2
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+372 lines, -251 lines) |
Patch |
 |
M |
blimp/engine/feature/engine_render_widget_feature_unittest.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
content/browser/browser_plugin/browser_plugin_guest.cc
|
View
|
|
1 chunk |
+1 line, -4 lines |
0 comments
|
Download
|
 |
M |
content/browser/frame_host/render_frame_host_impl.h
|
View
|
|
1 chunk |
+0 lines, -4 lines |
0 comments
|
Download
|
 |
M |
content/browser/frame_host/render_frame_host_impl.cc
|
View
|
|
1 chunk |
+0 lines, -5 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/ime_adapter_android.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/ime_adapter_android.cc
|
View
|
1
|
4 chunks |
+30 lines, -14 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_impl.h
|
View
|
1
2
3
4
5
6
|
2 chunks |
+14 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_impl.cc
|
View
|
1
2
3
4
5
6
|
4 chunks |
+31 lines, -3 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_view_aura.cc
|
View
|
1
|
3 chunks |
+3 lines, -5 lines |
0 comments
|
Download
|
 |
M |
content/common/input_messages.h
|
View
|
1
|
3 chunks |
+9 lines, -5 lines |
0 comments
|
Download
|
 |
M |
content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
|
View
|
|
2 chunks |
+12 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/public/android/java/src/org/chromium/content/browser/input/ThreadedInputConnection.java
|
View
|
1
2
|
4 chunks |
+18 lines, -2 lines |
0 comments
|
Download
|
 |
M |
content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java
|
View
|
1
2
|
1 chunk |
+24 lines, -9 lines |
0 comments
|
Download
|
 |
M |
content/public/android/junit/src/org/chromium/content/browser/input/ThreadedInputConnectionTest.java
|
View
|
1
2
|
2 chunks |
+17 lines, -10 lines |
0 comments
|
Download
|
 |
M |
content/public/browser/render_widget_host.h
|
View
|
1
2
3
4
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/public/test/text_input_test_utils.cc
|
View
|
1
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
content/renderer/render_frame_impl.h
|
View
|
1
2
3
4
|
1 chunk |
+0 lines, -5 lines |
0 comments
|
Download
|
 |
M |
content/renderer/render_frame_impl.cc
|
View
|
1
2
3
4
|
2 chunks |
+0 lines, -31 lines |
0 comments
|
Download
|
 |
M |
content/renderer/render_view_browsertest.cc
|
View
|
1
2
3
4
|
3 chunks |
+14 lines, -27 lines |
0 comments
|
Download
|
 |
M |
content/renderer/render_widget.h
|
View
|
1
2
3
4
|
3 chunks |
+19 lines, -9 lines |
0 comments
|
Download
|
 |
M |
content/renderer/render_widget.cc
|
View
|
1
2
3
4
|
4 chunks |
+43 lines, -7 lines |
0 comments
|
Download
|
 |
M |
content/renderer/render_widget_browsertest.cc
|
View
|
1
2
3
4
|
2 chunks |
+32 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/test/test_render_frame.h
|
View
|
1
|
1 chunk |
+0 lines, -6 lines |
0 comments
|
Download
|
 |
M |
content/test/test_render_frame.cc
|
View
|
1
|
2 chunks |
+0 lines, -15 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/web/WebLocalFrameImpl.h
|
View
|
|
1 chunk |
+0 lines, -3 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
|
View
|
1
2
3
4
|
1 chunk |
+0 lines, -47 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/web/WebViewImpl.h
|
View
|
1
2
3
4
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/web/WebViewImpl.cpp
|
View
|
1
2
3
4
5
|
1 chunk |
+56 lines, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/web/tests/WebViewTest.cpp
|
View
|
1
2
3
4
|
17 chunks |
+29 lines, -35 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/public/web/WebLocalFrame.h
|
View
|
|
1 chunk |
+0 lines, -4 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/public/web/WebWidget.h
|
View
|
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
Total messages: 41 (34 generated)
|