Keyboard does not open for an OneDrive Excel table
Categories
(GeckoView :: IME, defect)
Tracking
(firefox122 wontfix, firefox123 wontfix, firefox124 wontfix, firefox125 fixed)
People
(Reporter: hypopheralcus-firefox, Assigned: m_kato)
References
(Regression)
Details
(Keywords: regression, Whiteboard: [qa-triaged])
Attachments
(3 files)
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Steps to reproduce:
I opened a Microsoft OneDrive Excel table in Firefox and tried to edit a cell.
There are two ways to reproduce the issue:
- I double-clicked on a cell.
- I long-clicked on a cell and a context menu with "Edit" appeared. Then I clicked on "Edit".
Here is the OneDrive Excel table I used for the test:
https://onedrive.live.com/edit?id=FF5BBCE839DDDDFF!108&resid=FF5BBCE839DDDDFF!108&ithint=file%2cxlsx&authkey=!AF4W8-6OX8O-XE8&wdo=2&cid=ff5bbce839ddddff
I could reproduce the issue with:
Firefox 121.0 (Build #2015991663)
Firefox Nightly 123.0a1 (Build #2015995367)
Xiaomi Redmi Note 11 Pro 5G
Android 13 TKQ1.221114.001
Firefox 120.1.1 (Build #2015990546)
WIKO Y80
Android 9
Actual results:
In both cases the keyboard did not open.
Expected results:
The keyboard should open and allow editing the cell, like it does on Google Chrome (Android).
Updated•4 months ago
|
Comment 1•4 months ago
|
||
The severity field is not set for this bug.
:m_kato, could you have a look please?
For more information, please visit BugBot documentation.
Comment 2•4 months ago
|
||
Thank you for your report! I was able to reproduce this issue on the latest Nghtly 123.0a1 from 22.01.2024 with Motorola G9 plus (Android 11).
Assignee | ||
Updated•4 months ago
|
Assignee | ||
Comment 3•4 months ago
|
||
Hmm, interesting. When using RDM mode on Firefox desktop (macOS), IME isn't turned on.
When using Android version with external Keyboard, IME isn't turned on too.
I guess that <textarea id="m_excelWebRenderer_ewaCtl_gridKeyboardInput">
element in <div id="gridKeyboardContentEditable">
doesn't use on Firefox/Android. gridKeyboardContentEditable
has a lot of event listeners for key, IME, focus, touch and etc, so hardware keyboard (without IME) will work.
Assignee | ||
Comment 4•4 months ago
|
||
02-01 22:41:54.997 3821 3836 I Gecko : [Child 3821: Main Thread]: D/IMEContentObserver 0x72a6dc15cc10 BeginDocumentUpdate(), HasAddedNodesDuringDocumentChange()=false
02-01 22:41:54.997 3821 3836 I Gecko : [Child 3821: Main Thread]: D/IMEContentObserver 0x72a6dc15cc10 EndDocumentUpdate(), HasAddedNodesDuringDocumentChange()=false
02-01 22:41:54.997 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager MaybeOnEditableStateDisabled(aPresContext=0x72a6dea67000, aElement=0x72a6e4431ee0), sFocusedPresContext=0x72a6dea67000 (available: true), sFocusedElement=0x72a6e4431ee0, sTextInputHandlingWidget=0x72a6df32b000 (available: true), sActiveIMEContentObserver=0x72a6dc15cc10, sIsGettingNewIMEState=false
02-01 22:41:54.997 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager GetNewIMEState(aPresContext=0x72a6dea67000, aElement=0x72a6e4431ee0), sInstalledMenuKeyboardListener=false
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: D/IMEStateManager GetNewIMEState() returns { mEnabled=DISABLED, mOpen=DONT_CHANGE_OPEN_STATE }
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager DestroyIMEContentObserver(), destroying the active IMEContentObserver...
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEContentObserver 0x72a6dc15cc10 NotifyIMEOfBlur(), sending NOTIFY_IME_OF_BLUR
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager NotifyIME(aNotification={ mMessage=NOTIFY_IME_OF_BLUR }, aWidget=0x72a6df32b000, aBrowserParent=0x0), sFocusedIMEWidget=0x72a6df32b000, BrowserParent::GetFocused()=0x0, sFocusedIMEBrowserParent=0x0, aBrowserParent == BrowserParent::GetFocused()=true, aBrowserParent == sFocusedIMEBrowserParent=true, CanSendNotificationToWidget()=true
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: D/IMEContentObserver 0x72a6dc15cc10 NotifyIMEOfBlur(), sent NOTIFY_IME_OF_BLUR
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager SetIMEState(aState={ mEnabled=DISABLED, mOpen=DONT_CHANGE_OPEN_STATE }, nsPresContext=0x72a6dea67000, aElement=0x72a6e4431ee0 (BrowserParent=0x0), aWidget=0x72a6df32b000, aAction={ mCause=CAUSE_UNKNOWN, mFocusChange=FOCUS_NOT_CHANGED }, aOrigin=ORIGIN_CONTENT)
02-01 22:41:54.998 3821 3836 I Gecko : [Child 3821: Main Thread]: I/IMEStateManager SetInputContext(aWidget=0x72a6df32b000, aInputContext={ mIMEState={ mEnabled=DISABLED, mOpen=DONT_CHANGE_OPEN_STATE }, mOrigin=ORIGIN_CONTENT, mHTMLInputType="", mHTMLInputMode="", mActionHint="", mAutocapitalize="", mIsPrivateBrowsing=false }, aAction={ mCause=CAUSE_UNKNOWN_DURING_NON_KEYBOARD_INPUT, mAction=FOCUS_NOT_CHANGED }), BrowserParent::GetFocused()=0x0
02-01 22:41:54.998 3633 3649 I Gecko : [Parent 3633: Main Thread]: I/IMEStateManager SetInputContextForChildProcess(aBrowserParent=0x72a6e10bae00, aInputContext={ mIMEState={ mEnabled=DISABLED, mOpen=DONT_CHANGE_OPEN_STATE }, mOrigin=ORIGIN_CONTENT, mHTMLInputType="", mHTMLInputMode="", mActionHint="", mAutocapitalize="", mIsPrivateBrowsing=false } , aAction={ mCause=CAUSE_UNKNOWN_DURING_NON_KEYBOARD_INPUT, mAction=FOCUS_NOT_CHANGED }), sFocusedPresContext=0x72a6e2d4e100 (available: true), sTextInputHandlingWidget=0x72a6e0808c00 (available: true), BrowserParent::GetFocused()=0x72a6e10bae00, sInstalledMenuKeyboardListener=false
02-01 22:41:54.998 3633 3649 I Gecko : [Parent 3633: Main Thread]: I/IMEStateManager SetInputContext(aWidget=0x72a6e0808c00, aInputContext={ mIMEState={ mEnabled=DISABLED, mOpen=DONT_CHANGE_OPEN_STATE }, mOrigin=ORIGIN_CONTENT, mHTMLInputType="", mHTMLInputMode="", mActionHint="", mAutocapitalize="", mIsPrivateBrowsing=false }, aAction={ mCause=CAUSE_UNKNOWN_DURING_NON_KEYBOARD_INPUT, mAction=FOCUS_NOT_CHANGED }), BrowserParent::GetFocused()=0x72a6e10bae00
Assignee | ||
Comment 5•4 months ago
|
||
Desktop version doesn't change contenteditable attribute into focused element. But mobile version changes contenteditable attribute when losting focus.
Assignee | ||
Updated•4 months ago
|
Assignee | ||
Comment 6•4 months ago
|
||
Assignee | ||
Comment 7•4 months ago
|
||
I guess that this is regression by bug 1807495. IME focus isn;t set on this situation. Having SelectionAncestorLimiter?
Comment 8•4 months ago
|
||
Set release status flags based on info from the regressing bug 1807495
Sounds like there is a case which we need to kick a pseudo focus change for IMEStateManager
and HTMLEditor
...
Assignee | ||
Comment 10•4 months ago
•
|
||
FocusedElementOrDocumentBecomesNotEditable
will callHTMLEditor::OnBlur
. But since we have focused element, we don't callEditorBase::FinalizeSelection
. (If HTML has one contenteditable element only,FinalizeSelection
will be called by tear down editor.).IMEStateManager::OnFocusInEditor
uses previousIMEState
(sTextInputHandlingWidget->GetInputContext().mIMEState
). Current (by contenteditable=true) state should get from parameter'saElement
.- Geckoview doesn't have spell checker, we should ignore error by
GetInlineSpellChecker
inDeferredContentEditableCountChange
.
Assignee | ||
Comment 11•4 months ago
|
||
Updated•4 months ago
|
Updated•3 months ago
|
Comment 12•3 months ago
|
||
Set release status flags based on info from the regressing bug 1807495
Assignee | ||
Comment 13•3 months ago
|
||
Assignee | ||
Comment 14•3 months ago
|
||
Assignee | ||
Comment 15•3 months ago
|
||
When focused element becomes editable by contentedtiable=true
, IME
content observer isn't created on some situations. Then IME focus isn't
set.
At first, when focused element becomes non-editable,
FocusedElementOrDocumentBecomesNotEditable
will destroy IME content
observer, but editor might not be destroyed completely since HTML content
has multiple contenteditable
and has focus.
Then, when focused element becomes editable again,
FocusedElementOrDocumentBecomesEditable
will check selection ancestor
limit, but since editor isn't destroyed by previous contenteditable
change, we already have this limit. Then we don't create IME content
observer.
So we should set current IME state and create IME content observer when
becoming editable.
Comment 16•3 months ago
|
||
Pushed by m_kato@ga2.so-net.ne.jp: https://hg.mozilla.org/integration/autoland/rev/6a713f90fba6 Part 1. Ignore error of GetInlineSpellCheckek. r=masayuki https://hg.mozilla.org/integration/autoland/rev/945aa6c8a8ad Part 2. IME focus should be updated when focused element becomes editable. r=masayuki
Comment 17•3 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/6a713f90fba6
https://hg.mozilla.org/mozilla-central/rev/945aa6c8a8ad
Assignee | ||
Comment 18•3 months ago
|
||
I think this is risk to uplift this.
Description
•