Closed Bug 1633621 Opened 4 years ago Closed 4 years ago

scryfall.com - Unable to type

Categories

(GeckoView :: General, defect, P3)

77 Branch
Unspecified
Android

Tracking

(Webcompat Priority:?, firefox75 wontfix, firefox76 wontfix, firefox77 wontfix, firefox78 wontfix, firefox79 fixed, firefox80 fixed)

RESOLVED FIXED
mozilla80
Webcompat Priority ?
Tracking Status
firefox75 --- wontfix
firefox76 --- wontfix
firefox77 --- wontfix
firefox78 --- wontfix
firefox79 --- fixed
firefox80 --- fixed

People

(Reporter: karlcow, Assigned: m_kato)

References

()

Details

(Whiteboard: [geckoview:m79][geckoview:m80])

Attachments

(1 file)

Steps to Reproduce:

  1. On the advanced search page, https://scryfall.com/advanced scroll down to the "Sets" section.
  2. Tap on the first input that says "Enter the set name or choose from the list". A list of the available sets sppears - these work fine; ignore these.
  3. Tap on the input again to allow searching via text.
  4. Attempt to enter a phrase (e.g. "Secret"). The letters either do not appear, or appear in the wrong order.

Notes:

  • This issue seems to apply to all instances of this "text input / dropdown hybrid" component on the page.
  • This component works in Chrome, although it is worth noting that you can't type quickly to search; you must pause between typing each letter - if you don't, some of the letters do not appear and appear to be being "skipped" (however, they do not appear in the wrong order).
    Screenshot

Browser Versions:

  • Fennec Nightly (68.0a1) with no Add-ons
  • Fenix Nightly (74.0, Thursday 1/23)

see a log of the events
https://github.com/webcompat/web-bugs/issues/47822#issuecomment-619770448

Assignee: nobody → m_kato
Component: Keyboards and IME → General
Product: Firefox for Android → GeckoView
Version: Firefox 77 → 77 Branch
Severity: -- → S4
Severity: S4 → S2

Emily, Makoto, could we have an update on this bug wrt our upcoming releases? Thanks

Flags: needinfo?(m_kato)
Flags: needinfo?(etoop)

(In reply to Pascal Chevrel:pascalc from comment #1)

Emily, Makoto, could we have an update on this bug wrt our upcoming releases? Thanks

I am working this for GV79. This is a kind of web compat issue.

Flags: needinfo?(m_kato)

This issue is that web site wants to commit IME/predict string per input. They seem to use blur() and focus() to commit it. Even using Chrome, input is too slow due to it. GeckoView cannot remove/clear internal predict string by it. But I need investigate why.

But this approach of this site isn't good since software keyboard can have multiple state by tap count (1 tap is a, 2 tap is b and etc). When using its keyboard, user cannot input expected character well.

Whiteboard: [geckoview:m79]

If client script wants to commit composition string per input, it sometimes
use the following script.

let input = document.getElementById('input');
input.addEventListener('input', () => {
  input.blur();
  input.focus();
});

Since blur will commit composition string, this script can commit text. But
since Gecko has an optimization for this situation, focus won't be lost
completely.

Although GeckoView synchronizes Java text and selection with Gecko text when
getting focus, this sample may be failed due to timing issue. blur tries to
commit string, but result is never returned since focus is lost as temporary
(although text is finally committed in Gecko.). Then, GeckoView are waiting
for result that is never returned forever, So this synchronization is failed.

When getting focus again, we should synchronize it at force.

Flags: needinfo?(etoop)
Whiteboard: [geckoview:m79] → [geckoview:m79][geckoview:m80]
Pushed by m_kato@ga2.so-net.ne.jp:
https://hg.mozilla.org/integration/autoland/rev/7ec6ab6d8056
Synchronize Java text and Gecko text at force when getting focus. r=geckoview-reviewers,agi
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla80

Please nominate this for Beta approval when you get a chance.

Flags: needinfo?(m_kato)

Comment on attachment 9157556 [details]
Bug 1633621 - Synchronize Java text and Gecko text at force when getting focus.

Beta/Release Uplift Approval Request

  • User impact if declined: Web developer often use a hack to commit composition string per input like the following script.
let input = document.getElementById('input');
input.addEventListener('input', () => {
  input.blur();
  input.focus();
});

When web site uses this script, Fenix (GeckoView) cannot input expected text. (ex. caret position is always reset at head per input).

  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: Yes
  • If yes, steps to reproduce: 1. On the advanced search page, https://scryfall.com/advanced scroll down to the "Sets" section.
  1. Tap on the first input that says "Enter the set name or choose from the list". A list of the available sets sppears - these work fine; ignore these.
  2. Tap on the input again to allow searching via text.
  3. Attempt to enter a phrase (e.g. "Secret"). The letters either do not appear, or appear in the wrong order.
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): When getting focus (calling element.focus()), we always reset and re-initialize all input data and caret position.
  • String changes made/needed: No
Flags: needinfo?(m_kato)
Attachment #9157556 - Flags: approval-mozilla-beta?
Flags: qe-verify+
QA Whiteboard: [qa-triaged]

Comment on attachment 9157556 [details]
Bug 1633621 - Synchronize Java text and Gecko text at force when getting focus.

Approved for 79.0b8/GV79.

Attachment #9157556 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

Verified as fixed on the latest Nightly 109.0a1 from 22/11 with Sony Xperia (Android 6.0.1). The letters appear correctly.

Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: