nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.06k stars 625 forks source link

Lookup error and COM Error when focusing certain edit fields. #13260

Open derekriemer opened 2 years ago

derekriemer commented 2 years ago

Steps to reproduce:

  1. Open calendar.google.com.
  2. Open the create event page, tab to the start date, nuke the text in the start date.
  3. Type a date like jan 21, 2022.

Actual behavior:

Errors in the log.

Expected behavior:

NVDA should read information field.

System configuration

NVDA installed/portable/running from source:

installed

NVDA version:

alpha-24501,b45926cd

Windows version:

Version 1909 (OS Build 18363.2037)

Name and version of other software in use when reproducing the issue:

Google Chrome

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

didn't occur on previous alfas as of 3 weeks ago.

If NVDA add-ons are disabled, is your problem still occurring?

yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

derekriemer commented 2 years ago
Input: kb(laptop):n
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2States (11:25:08.457) - MainThread (15548):
could not get IAccessible2 states
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 1750, in _get_IA2States
  File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__
_ctypes.COMError: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (11:25:08.458) - MainThread (15548):
IAccessibleObject.attributes COMError (-2147467259, 'Unspecified error', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:25:08.460) - MainThread (15548):
accRole failed: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
ERROR - eventHandler.executeEvent (11:25:08.471) - MainThread (15548):
error executing event: caret on <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionEditorIa2WebIAccessible object at 0x089FBEB0> with extra args of {}
Traceback (most recent call last):
  File "eventHandler.pyc", line 284, in executeEvent
  File "eventHandler.pyc", line 98, in __init__
  File "eventHandler.pyc", line 107, in next
  File "browseMode.pyc", line 1322, in event_caret
  File "eventHandler.pyc", line 107, in next
  File "NVDAObjects\behaviors.pyc", line 196, in event_caret
  File "NVDAObjects\IAccessible\__init__.pyc", line 1603, in event_caret
  File "NVDAObjects\__init__.pyc", line 1242, in event_caret
  File "review.pyc", line 174, in handleCaretMove
  File "documentBase.pyc", line 22, in makeTextInfo
  File "NVDAObjects\IAccessible\ia2TextMozilla.pyc", line 120, in __init__
  File "NVDAObjects\IAccessible\ia2TextMozilla.pyc", line 232, in _findContentDescendant
  File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__
_ctypes.COMError: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IO - inputCore.InputManager.executeGesture (11:25:09.473) - winInputHook (13324):
Input: kb(laptop):NVDA+f1
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:25:09.486) - MainThread (15548):
accRole failed: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2Attributes (11:25:09.487) - MainThread (15548):
IAccessibleObject.attributes COMError (-2147467259, 'Unspecified error', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IA2States (11:25:09.489) - MainThread (15548):
could not get IAccessible2 states
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 1750, in _get_IA2States
  File "monkeyPatches\comtypesMonkeyPatches.pyc", line 32, in __call__
_ctypes.COMError: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
DEBUG - gui.contextHelp.bindHelpEvent (11:25:09.502) - MainThread (15548):
Did context help binding for LogViewer
feerrenrut commented 2 years ago

I can reproduce this in Edge Version 97.0.1072.62 The error code -2147467259 is E_FAIL (0x80004005L).

Dev info

Developer info for navigator object:
name: None
role: Role.UNKNOWN
roleText: None
states: State.DEFUNCT
isFocusable: False
hasFocus: False
Python object: <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionEditorIa2WebIAccessible object at 0x0862DFB0>
Python class mro: (<class 'NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionEditorIa2WebIAccessible'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.IAccessible.ia2Web.Editor'>, <class 'NVDAObjects.IAccessible.ia2Web.Ia2Web'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.DocumentWithTableNavigation'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <class 'garbageHandler.TrackedObject'>, <class 'object'>)
description: None
location: None
value: None
appModule: <'appModuleHandler' (appName 'msedge', process ID 4052) at address 69373d0>
appModule.productName: 'Microsoft Edge'
appModule.productVersion: '97.0.1072.62'
TextInfo: <class 'NVDAObjects.IAccessible.ia2TextMozilla.MozillaCompoundTextInfo'>
windowHandle: 7864994
windowClassName: 'Chrome_RenderWidgetHostHWND'
windowControlID: 400425376
windowStyle: 1445986304
extendedWindowStyle: 32
windowThreadID: 14332
windowText: 'Chrome Legacy Window'
displayText: exception: cannot unpack non-iterable NoneType object
IAccessibleObject: <POINTER(IAccessible2) ptr=0x744f9ac at 84a9e90>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=7864994, objectID=-4, childID=-1753809
IAccessible accName: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible accRole: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible accState: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible accDescription: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible accValue: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible2 windowHandle: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible2 uniqueID: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible2 role: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible2 states: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))
IAccessible2 attributes: exception: (-2147467259, 'Unspecified error', (None, None, None, 0, None))

I can't reproduce this with "accessibility viewer".

feerrenrut commented 2 years ago

@derekriemer It seems Chrome only returns E_FAIL rather than a specific error code. In this case, I assume that when the element receives focus it is being replaced, and NVDA is still querying the old object.

feerrenrut commented 2 years ago

Similar, but unrelated concerns for Firefox. Some information there is helpful background here: https://github.com/nvaccess/nvda/issues/13244

mzanm commented 2 years ago

this is similar to #13223, I'm getting the same error on google search box in chrome/edge 97 and also expand/collapse buttons when they are activated.

michaelDCurran commented 2 years ago

When typing into the focused date field, the date field accessible becomes defunct and many method calls on this accessible return E_FAIL. In other words, this accessible no longer represents a live element in the Chrome document. Perhaps because that element has been removed. We receive several accessibility events for this field, such as an IA2_TEXT_CARET_MOVED, an EVENT_OBJECT_SELECTION, and EVENT_OBJECT_VALUECHANGE. However, we never receive an EVENT_OBJECT_GAINFOCUS on this or a new accessible. But because this was the accessible with focus, and it has since died, NVDA is unable to do anything useful with the focus, until a new (live) accessible has been focused. If Google Calendar / Chrome is removing the focused control and replacing it, it must fire EVENT_OBJECT_GAINFOCUS on the new accessible replacing the removed element. It is possible we may be supposed to do something with the EVENT_OBJECT_SELECTION, I'm not sure if perhaps it might be trying to convey a dropdown, or perhaps the popup calendar table date picker thingy. But even if it was, focus must always be valid. So at very least, either that element should not be removed, or a gainFocus event should be fired on a new accessible for the date field.

michaelDCurran commented 2 years ago

I verified that no gainFocus event was ever received by NVDA from Chrome by switching NVDA's log level to debug, enabling MSAA in the Debug logging list of NVDA's advanced settings panel, typing into the date field, pressing an arrow key to cause the NVDA error, and then reviewing the log output.

Adriani90 commented 1 year ago

Should we fill a bug with Chromium to generally request that either EVENT_OBJECT_GAINFOCUS should always be fired on the same live accessible when it is removed and restored, or EVENT_OBJECT_GAINFOCUS on the new live accessible when the previous one has been removed?