I'm going to start with Windows, but I'm keeping ATK in mind as I work on this. One challenge I'm not sure how to address is the IAccessible2 proxy. Thankfully, Windows 10 and later register this system wide, so we can probably deal with this problem later. However, this doesn't include interfaces added to IAccessible2 more recently; e.g. IAccessibleTextSelectionContainer. We won't be able to test those unless we register our own updated proxy. There are a few solutions here: 1. Build this and have it registered for the system (or for the user) on CI machines. Keeping that up to date seems like it might be messy. 2. Build this in Mozilla central and somehow have CI register it for the user before running the tests. 3. Build this in Mozilla central and have the Python harness register it for the user when it starts. I don't love this because it could leave registry keys around if the test exits abnormally, which might be bad on local machines. 4. Build this in Mozilla central. Do what NVDA does and register it in the Python process, as well as injecting an in-process dll into Firefox which also registers it there. This is going to be quite a bit of work, but it does avoid messing with the registry. I'd really prefer to avoid this just because of the complexity. For this bug, I'm going to rely on the proxy bundled with Windows, knowing that we can't support more recent interfaces for now.
Bug 1852190 Comment 2 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
I'm going to start with Windows, but I'm keeping ATK in mind as I work on this. One challenge I'm not sure how to address is the IAccessible2 proxy. Thankfully, Windows 10 and later register this system wide, so we can probably deal with this problem later. However, this doesn't include interfaces added to IAccessible2 more recently; e.g. IAccessibleTextSelectionContainer. We won't be able to test those unless we register our own updated proxy. There are a few solutions here: 1. Build this and have it registered in the system registry (or the user registry) on CI machines. Keeping that up to date seems like it might be messy. 2. Build this in Mozilla central and somehow have CI add it to the user registry before running the tests. 3. Build this in Mozilla central and have the Python harness add it to the user registry when it starts and remove it when it stops. I don't love this because it could leave registry keys around if the test exits abnormally, which might be bad on local machines. 4. Build this in Mozilla central. Do what NVDA does and register it in the Python process, as well as injecting an in-process dll into Firefox which also registers it there. This is going to be quite a bit of work, but it does avoid messing with the registry. I'd really prefer to avoid this just because of the complexity. For this bug, I'm going to rely on the proxy bundled with Windows, knowing that we can't support more recent interfaces for now.