Closed Bug 1731003 Opened 8 months ago Closed 8 months ago

RemoteAccessible shouldn't try to call methods on a COM proxy if the cache is enabled


(Core :: Disability Access APIs, defect)




94 Branch
Tracking Status
firefox94 --- fixed


(Reporter: Jamie, Assigned: Jamie)


(Blocks 1 open bug)



(1 file)

On Windows, the cache is all or nothing. When it's disabled, we get COM proxies from the content process and everything uses those. When the cache is enabled, we don't get COM proxies from the content process and we can only use the cache.

  1. Currently, methods (Name, Description, etc.) in RemoteAccessible fall back to the COM proxy if mCachedFields is null.
  2. But even when the cache is enabled, mCachedFields can be null if there were no cache-worthy fields for this Accessible.
  3. In that case, we'll try to fall back to the COM proxy, which will end up returning the MsaaAccessible from our process.
  4. We'll then call the COM method on that MsaaAccessible; get_accName, get_accDescription, etc.
  5. Because the cache is enabled, that method will call RemoteAccessible::Name, RemoteAccessible::Description, etc., taking us back to point 1.
  6. Infinite recursion ensues, culminating in a spectacular crash.

Instead, these RemoteAccessible methods should check whether the cache is enabled. If it is, they should use the RemoteAccessibleBase method (regardless of mCachedFields). If not, they should always use the COM proxy.

If the cache is enabled, we don't have COM proxies from the content process.

Pushed by
RemoteAccessible: Don't try to use the COM proxy at all if the cache is enabled, even if mCachedFields is null. r=eeejay
Closed: 8 months ago
Resolution: --- → FIXED
Target Milestone: --- → 94 Branch
See Also: → 1735706
You need to log in before you can comment on or make changes to this bug.