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


Copy link

@jcsteh 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.

Copy link

@NSoiffer NSoiffer commented Jul 25, 2017

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 jcsteh commented Jul 27, 2017

Copy link

@NSoiffer NSoiffer commented Sep 20, 2017

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 michaelDCurran commented Sep 20, 2017

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