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

Issue 1388283002: Fix OSK flickering issue (Closed)

Created:
5 years, 2 months ago by Changwan Ryu
Modified:
5 years, 1 month ago
CC:
blink-reviews, blink-reviews-api_chromium.org, chromium-reviews, darin-cc_chromium.org, dglazkov+blink, jam, mkwst+moarreviews-renderer_chromium.org, mlamouri+watch-content_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix OSK flickering issue On Android, on-screen keyboard will flicker when you move focus from one input form to another. We have a delayed OSK dismissal hack, but we found that this is not a good solution for three reasons: 1) Flickering still happens, even though it's less severe. 2) Hiding of OSK will be delayed when touching a non-editable web node. 3) It makes keyboard showing & hiding very difficult to test. The main cause of the flickering is that we call UpdateTextInputState() in the middle of focus change: - FocusController::setFocusedElement() - FocusController::clearSelectionIfNecessary() - FrameSelection::clear() - Editor::notifyComponentsOnChangedSelection() - ... - RenderWidget::UpdateTextInputState() - WebViewImpl::textInputInfo() This can be avoided if we guard non-keyboard events in OnHandleInputType. Also because focuschange (which should result in state update) can happen through / not through OnHandleInputType, I made StartHandlingImeEvent and FinishHandlingImeEvent nestable. BUG=484139, 542619 Committed: https://crrev.com/f2a707b1d5492b35833bee9945c197595ba11d89 Cr-Commit-Position: refs/heads/master@{#357056}

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Patch Set 4 : #

Patch Set 5 : #

Total comments: 13

Patch Set 6 : addressed comments for imeadapter and removed platform guard #

Patch Set 7 : fix more tests except for contextualsearchmanagertests #

Total comments: 6

Patch Set 8 : switched to ime guard approach #

Total comments: 4

Patch Set 9 : fixed tests and changed some names #

Patch Set 10 : added OS_ANDROID guard #

Patch Set 11 : rebased #

Total comments: 3

Patch Set 12 : refactor variables into imeeventguard #

Patch Set 13 : fix a small logic error #

Patch Set 14 : rebased #

Total comments: 4

Patch Set 15 : fixed a nit and updated comment #

Unified diffs Side-by-side diffs Delta from patch set Stats (+223 lines, -134 lines) Patch
M content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +2 lines, -2 lines 0 comments Download
M content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java View 1 2 3 4 5 6 7 8 9 10 10 chunks +27 lines, -68 lines 0 comments Download
M content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java View 1 2 3 4 5 6 7 8 12 chunks +102 lines, -22 lines 0 comments Download
M content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestInputMethodManagerWrapper.java View 1 5 chunks +28 lines, -2 lines 0 comments Download
M content/renderer/ime_event_guard.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +11 lines, -2 lines 0 comments Download
M content/renderer/ime_event_guard.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +10 lines, -3 lines 0 comments Download
M content/renderer/render_widget.h View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +7 lines, -5 lines 0 comments Download
M content/renderer/render_widget.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +36 lines, -30 lines 0 comments Download

Messages

Total messages: 34 (9 generated)
aelias_OOO_until_Jul13
https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java File content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java (right): https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java#newcode202 content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java:202: // TODO(changwan): check if we can remove this line. ...
5 years, 2 months ago (2015-10-15 19:58:40 UTC) #2
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java File content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java (right): https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java#newcode202 content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java:202: // TODO(changwan): check if we can remove this line. ...
5 years, 2 months ago (2015-10-16 02:10:16 UTC) #3
aelias_OOO_until_Jul13
Looks like it caused test failures in RenderViewImplTest. Please address them and ping again when ...
5 years, 2 months ago (2015-10-16 03:06:31 UTC) #5
Changwan Ryu
On 2015/10/16 03:06:31, aelias wrote: > Looks like it caused test failures in RenderViewImplTest. Please ...
5 years, 2 months ago (2015-10-21 16:53:06 UTC) #6
aelias_OOO_until_Jul13
On 2015/10/21 at 16:53:06, changwan wrote: > Especially, I've disabled web_view_interactive_tests because in some cases ...
5 years, 2 months ago (2015-10-21 22:15:28 UTC) #7
aelias_OOO_until_Jul13
I realized there is a different way to address this problem without posting a task. ...
5 years, 2 months ago (2015-10-22 00:07:56 UTC) #8
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/120001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/120001/content/renderer/render_widget.cc#newcode1062 content/renderer/render_widget.cc:1062: #if defined(OS_ANDROID) On 2015/10/22 00:07:56, aelias wrote: > Let's ...
5 years, 2 months ago (2015-10-22 02:46:00 UTC) #10
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java File content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java (right): https://codereview.chromium.org/1388283002/diff/80001/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java#newcode202 content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java:202: // TODO(changwan): check if we can remove this line. ...
5 years, 2 months ago (2015-10-22 02:49:33 UTC) #11
aelias_OOO_until_Jul13
https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h File content/renderer/render_widget.h (right): https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h#newcode665 content/renderer/render_widget.h:665: int handling_ime_events_count_; Please rename to "ime_guard_count_". Strictly speaking, we ...
5 years, 2 months ago (2015-10-22 03:25:07 UTC) #12
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h File content/renderer/render_widget.h (right): https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h#newcode665 content/renderer/render_widget.h:665: int handling_ime_events_count_; On 2015/10/22 03:25:07, aelias wrote: > Please ...
5 years, 2 months ago (2015-10-22 06:18:18 UTC) #13
Changwan Ryu
On 2015/10/22 06:18:18, Changwan Ryu wrote: > https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h > File content/renderer/render_widget.h (right): > > https://codereview.chromium.org/1388283002/diff/140001/content/renderer/render_widget.h#newcode665 ...
5 years, 2 months ago (2015-10-22 07:04:47 UTC) #14
aelias_OOO_until_Jul13
Ok, lgtm modulo comment below. PTAL aurimas@ for browser-side OWNERS, sievers@ for content/renderer changes. > ...
5 years, 2 months ago (2015-10-22 16:50:59 UTC) #17
lazyboy
On 2015/10/21 22:15:28, aelias wrote: > On 2015/10/21 at 16:53:06, changwan wrote: > > Especially, ...
5 years, 2 months ago (2015-10-22 17:03:09 UTC) #18
Changwan Ryu
On 2015/10/22 17:03:09, lazyboy wrote: > On 2015/10/21 22:15:28, aelias wrote: > > On 2015/10/21 ...
5 years, 2 months ago (2015-10-22 17:52:05 UTC) #19
Changwan Ryu
On 2015/10/22 17:52:05, Changwan Ryu wrote: > On 2015/10/22 17:03:09, lazyboy wrote: > > On ...
5 years, 1 month ago (2015-10-26 06:46:49 UTC) #20
no sievers
https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc#newcode1876 content/renderer/render_widget.cc:1876: pending_update_from_non_ime_ |= from_non_ime; Since we already have the guard ...
5 years, 1 month ago (2015-10-26 20:13:12 UTC) #21
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc#newcode1876 content/renderer/render_widget.cc:1876: pending_update_from_non_ime_ |= from_non_ime; On 2015/10/26 20:13:12, sievers wrote: > ...
5 years, 1 month ago (2015-10-28 05:17:07 UTC) #22
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/200001/content/renderer/render_widget.cc#newcode1876 content/renderer/render_widget.cc:1876: pending_update_from_non_ime_ |= from_non_ime; On 2015/10/28 05:17:07, Changwan Ryu wrote: ...
5 years, 1 month ago (2015-10-28 16:25:51 UTC) #23
no sievers
lgtm https://codereview.chromium.org/1388283002/diff/260001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/260001/content/renderer/render_widget.cc#newcode1893 content/renderer/render_widget.cc:1893: ime_event_guard_->from_ime() & guard->from_ime()); '&' -> '&&' https://codereview.chromium.org/1388283002/diff/260001/content/renderer/render_widget.cc#newcode1893 content/renderer/render_widget.cc:1893: ...
5 years, 1 month ago (2015-10-30 00:05:52 UTC) #24
Changwan Ryu
https://codereview.chromium.org/1388283002/diff/260001/content/renderer/render_widget.cc File content/renderer/render_widget.cc (right): https://codereview.chromium.org/1388283002/diff/260001/content/renderer/render_widget.cc#newcode1893 content/renderer/render_widget.cc:1893: ime_event_guard_->from_ime() & guard->from_ime()); On 2015/10/30 00:05:52, sievers wrote: > ...
5 years, 1 month ago (2015-10-30 01:15:53 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1388283002/280001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1388283002/280001
5 years, 1 month ago (2015-10-30 01:22:51 UTC) #28
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/128032)
5 years, 1 month ago (2015-10-30 03:05:39 UTC) #30
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1388283002/280001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1388283002/280001
5 years, 1 month ago (2015-10-30 04:44:17 UTC) #32
commit-bot: I haz the power
Committed patchset #15 (id:280001)
5 years, 1 month ago (2015-10-30 08:22:23 UTC) #33
commit-bot: I haz the power
5 years, 1 month ago (2015-10-30 08:23:50 UTC) #34
Message was sent while issue was closed.
Patchset 15 (id:??) landed as
https://crrev.com/f2a707b1d5492b35833bee9945c197595ba11d89
Cr-Commit-Position: refs/heads/master@{#357056}

Powered by Google App Engine
This is Rietveld 408576698