Closed Bug 1886937 Opened 7 months ago Closed 6 months ago

[UIA] Figure out how to block UIA instantiation with native UIA implementation

Categories

(Core :: Disability Access APIs, task)

Desktop
Windows
task

Tracking

()

RESOLVED FIXED
127 Branch
Tracking Status
firefox127 --- fixed

People

(Reporter: Jamie, Assigned: Jamie)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

I hooked up our new native UIA implementation in bug 1886371. However, it bypasses LazyInstantiator and instantiates the a11y engine immediately because LazyInstantiator doesn't support UIA. We need to find some way to ensure that the a11y client block list still works.

I'm working on supporting UIA in LazyInstantiator. I have a working proof of concept locally that I need to polish up.

I originally thought i was going to need to block a bunch of QueryInterface calls, but it seems that's not necessary. However, since these IIDs can be tricky to find, just in case it's useful for future reference, here's the code I had:

static const GUID kUnsupportedInterfaces[] = {
  IID_IAccIdentity,
  // IRawElementProviderComponent
  { 0x62F62F5A, 0x5EC0, 0x48F5, {0xA0, 0x32, 0x78, 0x34, 0x45, 0xDF, 0x9A, 0x89}},
  // Unknown
  {0xA3D361A2, 0x2919, 0x42A1, {0xB3, 0xDD, 0x65, 0x95, 0xB4, 0x32, 0xF2, 0xDD}},
};
...
for (const GUID& unsupported: kUnsupportedInterfaces) {
  if (aIID == unsupported) {
    return E_NOINTERFACE;
  }
}

This allows UIA client detection and blocking to work with the native UIA implementation.

Pushed by jteh@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/0beadc50afd8 Support UIA in LazyInstantiator. r=nlapre
Status: NEW → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → 127 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: