зеркало из https://github.com/mozilla/gecko-dev.git
6d32b64ab0
The window message we previously hooked no longer gets sent and the associated shared memory no longer seems to be created either. Also, we don't seem to be notified about the load of UIAutomationCore.dll until after it has already instantiated a11y, which is obviously too late for us to hook anything. Instead, we block UIA instantiation via LazyInstantiator, just as we do for MSAA/IA2: 1. Refactor CompatibilityUIA so that rather than being called by a hook, it simply allows the caller to query the process ids of any UIA clients. 2. CompatibilityUIA now searches handles in our process for named pipes created by UIA for communication with the remote process and then uses GetNamedPipeServerProcessId to get the process id on the other end of each pipe. 3. Refactor LazyInstantiator so that it first tries to get the MSAA/IA2 client process id, then calls CompatibilityUIA to get any UIA client process ids. 4. LazyInstantiator now handles setting the instantiator and blocking of clients for UIA as well as MSAA/IA2 using the same code. 5. Because UIA client detection can be expensive if clients repeatedly query us, cache the result. Reset that cache only when one of our windows comes to the foreground. Differential Revision: https://phabricator.services.mozilla.com/D181958 |
||
---|---|---|
.. | ||
android | ||
aom | ||
atk | ||
base | ||
basetypes | ||
docs | ||
generic | ||
html | ||
interfaces | ||
ipc | ||
mac | ||
other | ||
tests | ||
windows | ||
xpcom | ||
xul | ||
moz.build |