Closed Bug 2038467 Opened 23 days ago Closed 7 days ago

Typing gets repeated when entering text 2 characters after @ in email fields

Categories

(GeckoView :: IME, defect)

Firefox 150
All
Android
defect

Tracking

(firefox150 wontfix, firefox151 verified, firefox152 verified, firefox153 verified)

VERIFIED FIXED
153 Branch
Tracking Status
firefox150 --- wontfix
firefox151 --- verified
firefox152 --- verified
firefox153 --- verified

People

(Reporter: jesup, Assigned: m_kato)

References

(Regression)

Details

(Keywords: regression)

Attachments

(4 files)

Steps to reproduce

  1. Go to any site with a login page with an email-entry field
  2. Type an email address. Two characters after typing '@' the contents of the field will get inserted at the local position.
    example:
    type ffgh@1 -> field reads ffgh@1
    type '2' -> field reads ffgh@ffgh121 with the cursor after the 2

Device information

Samsung S20FE

  • Firefox version: 150.0.1
  • Android device model: Samsung Galaxy S20FE
  • Android OS version: 13

Note: this only happens on one of our phones. No extensions.

Profile: https://share.firefox.dev/4nmJysT

Is your keyboard Samsung keyboard? Although I try to reproduce on Galaxy S20 (JP) / Android 13 with Samsung keyboard (5.6.10.48), I cannot reproduce this by https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/email

Flags: needinfo?(rjesup)
Component: General → Browser Engine

Also, if you take a profiler data by Firefox Nightly, I would like to request that moz log module is IMEHandler:5 by about:logging. If text transaction doesn't wok on Gecko side, not Java side, we may be able to find it.

I can try that. Not sure if it was samsung or gboard (probably default, which is likely samsung, but I'll check - daughter's phone)

Flags: needinfo?(rjesup)

Thank you, I can reproduce this now on Nightly + Samsung keyboard. Probably this is a regression by bug 2012938

Assignee: nobody → m_kato
Component: Browser Engine → IME
Keywords: regression
Product: Firefox for Android → GeckoView
Regressed by: 2012938

Set release status flags based on info from the regressing bug 2012938

This is a regression by bug 2012938.

Android IME (InputConnection) often requests current editable text
by synchronous. But Gecko has its on content process, so we have two
data for Java side (ShadowText) and content side (CurrentText). This
is synchronous when Gecko notifies IME of text/selection changes.

After bug 2012938 fix, it doesn't notify Gecko of IME composing range
during batch mode to avoid unnecessary selection changes. After ending
batch mode, we will send current composing ranges. Without text changes,
IME content observer doesn't notify widget of any changes. So calling
onIMESynchronized causes unexpected text/selection changes. Then text
transaction is broken.

So we shouldn't call it and not sync shadow text on ending batch mode.

See Also: → 2037869
See Also: → 2040346

Can we get a fix out for this and uplift to beta?
Also: are there any workarounds?

Flags: needinfo?(m_kato)

Set release status flags based on info from the regressing bug 2012938

(In reply to Randell Jesup [:jesup] (needinfo me) from comment #8)

Can we get a fix out for this and uplift to beta?

Yes, after landing this, I will request uplift.

Also: are there any workarounds?

This is a timing issue, If you use Samsung keyboard, disabling some "smart typing" features in Samsung Keyboard settings might be workaround.

Flags: needinfo?(m_kato)
See Also: → 2035193
Status: NEW → RESOLVED
Closed: 7 days ago
Resolution: --- → FIXED
Target Milestone: --- → 153 Branch

The patch landed in nightly and beta is affected.
:m_kato, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(m_kato)

To add to comment 13, please also include a release uplift request. Depending on the risk, we should include this in a Fx151 dot release.

This is a regression by bug 2012938.

Android IME (InputConnection) often requests current editable text
by synchronous. But Gecko has its on content process, so we have two
data for Java side (ShadowText) and content side (CurrentText). This
is synchronous when Gecko notifies IME of text/selection changes.

After bug 2012938 fix, it doesn't notify Gecko of IME composing range
during batch mode to avoid unnecessary selection changes. After ending
batch mode, we will send current composing ranges. Without text changes,
IME content observer doesn't notify widget of any changes. So calling
onIMESynchronized causes unexpected text/selection changes. Then text
transaction is broken.

So we shouldn't call it and not sync shadow text on ending batch mode.

Original Revision: https://phabricator.services.mozilla.com/D300235

Attachment #9589985 - Flags: approval-mozilla-beta?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: When inputting any string on Samsung Keyboard, inputting text may be corrupted such as text is duplicated.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: This is a regression by bug 2012938. This fix removes unnecessary code to sync android's text.
  • String changes made/needed?: No
  • Is Android affected?: yes

firefox-release Uplift Approval Request

  • User impact if declined/Reason for urgency: When inputting any string on Samsung Keyboard, inputting text may be corrupted such as text is duplicated.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: This is a regression by bug 2012938. This fix removes unnecessary code to sync android's text.
  • String changes made/needed?: No
  • Is Android affected?: yes
Attachment #9589986 - Flags: approval-mozilla-release?

This is a regression by bug 2012938.

Android IME (InputConnection) often requests current editable text
by synchronous. But Gecko has its on content process, so we have two
data for Java side (ShadowText) and content side (CurrentText). This
is synchronous when Gecko notifies IME of text/selection changes.

After bug 2012938 fix, it doesn't notify Gecko of IME composing range
during batch mode to avoid unnecessary selection changes. After ending
batch mode, we will send current composing ranges. Without text changes,
IME content observer doesn't notify widget of any changes. So calling
onIMESynchronized causes unexpected text/selection changes. Then text
transaction is broken.

So we shouldn't call it and not sync shadow text on ending batch mode.

Original Revision: https://phabricator.services.mozilla.com/D300235

Flags: in-testsuite+
Attachment #9589985 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Flags: needinfo?(m_kato)

This issue is verified as fixed on Firefox for Android Nightly 153 (2026-05-27) and Firefox 152 beta 4 under Samsung S24 Ultra (Android 16) and Huawei MediaPad T5 (Android 8). Confirming that the signin flow works without issues on the top 10 most visited sites.

Attachment #9589986 - Flags: approval-mozilla-release? → approval-mozilla-release+
Duplicate of this bug: 2035193
See Also: 2035193
QA Whiteboard: [qa-triage-done-c153/b152]

Verified as fixed on Firefox RC 151.0.3 with Asus Zenfone 9 ( Android 13) and Lenovo Yoga Tab 11 (Android 12).

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: