Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build and register ISimpleDOM proxy ourselves (AKA fix broken math in Firefox/Chrome on some systems) #7308

jcsteh opened this issue Jun 21, 2017 · 4 comments · Fixed by #7535
feature/math p3 z 2017webfix (archived)


Copy link

jcsteh commented Jun 21, 2017

Steps to reproduce:

  1. Open this URL in Firefox or Chrome: data:text/html,<math><mi>x</mi></math>
  2. Use the cursor keys to read the document.

Expected behavior:

"x" should be reported.

Actual behavior:

On some systems/builds of software, nothing is reported and the following is logged:

DEBUGWARNING - NVDAObjects.IAccessible.ia2Web.Math._get_mathMl (11:45:38.736):
Error retrieving math. Not supported in this browser or ISimpleDOM COM proxy not registered.
Traceback (most recent call last):
  File "NVDAObjects\IAccessible\ia2Web.pyc", line 63, in _get_mathMl
  File "comtypes\__init__.pyc", line 1078, in QueryInterface
COMError: (-2147467262, 'No such interface supported', (None, None, None, 0, None))

Additional info:

This occurs when the 32 bit and/or 64 bit ISimpleDOM COM proxy is not registered. (For 64 bit browsers, we need both.) This can happen for several reasons:

  1. 64 bit builds of Firefox don't install the 32 bit proxy. This will only become more prevalent as more users migrate to 64 bit builds.
  2. I suspect (but am not certain) that Chrome doesn't ever install the proxy, regardless of bitness.
  3. If you uninstall a Mozilla app while other Mozilla apps are still installed, that might unregister the proxy.
  4. Possibly other obscure edge cases I haven't thought of.

The key point is that we simply cannot rely on this being installed correctly. Instead, we should build it and register it ourselves using CoRegisterClassObject/CoRegisterPSClsid as we do for IAccessible2 (see installIA2Support in nvdaHelper/remote/IA2Support.cpp).

P2 because this breaks math support for Firefox and Chrome for an increasing number of users.

@jcsteh jcsteh added z 2017webfix (archived) feature/math p3 labels Jun 21, 2017
Copy link

Would a 64-bit build of MathPlayer be a better solution for you? Or is this a problem you need to solve for other reasons also?

Copy link
Contributor Author

jcsteh commented Jul 27, 2017 via email

Copy link

I'm not 100% clear on whether this means that NVDA works with MathML in 64-bit FireFox and 64-bit Chrome. It sounds like the problems with the proxies was fixed, but I didn't see anything in the comments saying that math was tested with 64 bit versions of the browsers. Is it fixed, or should I open a new issue?

Copy link

michaelDCurran commented Sep 20, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment