Inputting character isn't inserted at caret position.
Categories
(GeckoView :: General, defect, P1)
Tracking
(firefox82 unaffected, firefox83 verified, firefox84 verified)
Tracking | Status | |
---|---|---|
firefox82 | --- | unaffected |
firefox83 | --- | verified |
firefox84 | --- | verified |
People
(Reporter: m_kato, Assigned: m_kato)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file)
47 bytes,
text/x-phabricator-request
|
pascalc
:
approval-mozilla-beta+
|
Details | Review |
I don't investigate regression range yet. I found this yesterday.
Env
- Fenix Nightly 201018 17:01
- Android 10 (Xperia XZ2 Compact)
- GBoard
Step
- Browse https://www.google.com
- Type any string (ex. google)
- set caret between characters.
- Type any character. (ex. a) and commit this.
- Set caret to tail
- Type any character
Result
6.'s character is inserted after 3.'s character. This doesn't occurs on Fenix beta (82-beta6)
Assignee | ||
Comment 1•4 years ago
|
||
I guess that mIMEMaskEventsCount
state is invalid, but I don't know regression range.
Assignee | ||
Comment 2•4 years ago
|
||
When destroying IME Content observer, we might not send NOTIFY_IME_OF_BLUR
by bug 1612802...
Updated•4 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
Nakano-san, I missed blur issue of application focus when reviewing bug 1612802. Before landing it, NOTIFY_IME_OF_BLUR
call count was same as NOTIFY_IME_OF_FOCUS
call count. Since we don't send NOTIFY_IME_OF_BLUR
during IME Content Observer is being destroyed, NOTIFY_IME_OF_BLUR
isn't called when application focus is lost.
Shouldn't we expect NOTIFY_IME_OF_BLUR
is always called? I think that NOTIFY_IME_OF_BLUR
is always called when focus is lost.
Since GeckoEditableSupport
runs on child process, I need more hacks for this situation.
Ah, I forgot the Android widget specific issue. I'll post a patch if you wish.
Probably:
- Rename
CanSendNotificationToTheMainProcess
toCanSendNotificationToWidget
- If it's in the main process, return
true
. - If it's in a content process, but the widget is a
PuppetWidget
and hasmNativeTextEventDispatcherListener
, returntrue
. - Otherwise, return
!sCleaningUpForStoppingIMEStateManagement
.
Then, it works in any type of processes.
Well, #2 and #3 could be implemented with a new API if there is no API to check whether the widget is a PuppetWidget
or not, and/or whether the PuppetWidget
has or does not have mNativeTextEventDispatcherListener
. E.g., add nsIWidget::HasNativeTextInputHandler()
, then, make nsBaseWidget::HasNativeTextInputHandler()
return true, and make PuppetWidget::HasNativeTextInputHandler()
return true only when it has mNativeTextEventDispatcherListener
(i.e., only on Android).
Assignee | ||
Comment 6•4 years ago
|
||
This is regression by bug 1672095. GeckoEditableSupport
expects that
NOTIFY_IME_OF_BLUR is always sent. I would like to allow this even if
IME content observer is being destroyed.
To reproduce this, we have to lost application focus, I cannot write
geckoview-junit test.
Comment 8•4 years ago
|
||
bugherder |
Assignee | ||
Comment 9•4 years ago
|
||
Comment on attachment 9183101 [details]
Bug 1672095 - Always send NOTIFY_IME_OF_BLUR on GeckoView. r=masayuki
Beta/Release Uplift Approval Request
- User impact if declined: After lost application focus on Fenix, inputted text is duplicated and user cannot insert text at caret position ever.
- Is this code covered by automated tests?: No
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: Yes
- If yes, steps to reproduce: 1. Set default keyboard to GBoard
- Browser https://www.google.com/ by Fenix (or GeckoView example)
- Input "abc def" to search box
- Tap home button of Android.
- Tap Fenix (or GeckoView example)
- Tap search box on http://www.google.com
- set caret to between "a" and "b" in search box
- Type "g"
- Result
6's "g" isn't inserted at caret position.
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): This is regression by bug 1612802. I revert this change on Android only.
- String changes made/needed: No
Assignee | ||
Updated•4 years ago
|
Updated•4 years ago
|
Comment 10•4 years ago
|
||
Comment on attachment 9183101 [details]
Bug 1672095 - Always send NOTIFY_IME_OF_BLUR on GeckoView. r=masayuki
83 regression with IME support that affects Fenix, let's take it in our next beta, thanks.
Comment 11•4 years ago
|
||
bugherder uplift |
Comment 12•4 years ago
|
||
Verified as fixed on Firefox Preview Nightly 201029 (Build #2015772459) using a Google Pixel 3 XL (Android 9) and OnePlus 6T (Android 9).
Updated•4 years ago
|
Comment 14•4 years ago
|
||
Verified as fixed on Firefox Preview Beta 10/27 (Build #2015772179) using a Google Pixel 3 XL (Android 9) and OnePlus 6T (Android 9).
Updated•4 years ago
|
Updated•4 years ago
|
Description
•