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

Add basic UIA provider to Fabric's CompositionRootView #11129

Merged
merged 9 commits into from
Jan 26, 2023

Conversation

FalseLobster
Copy link
Contributor

@FalseLobster FalseLobster commented Jan 25, 2023

Description

Bootstrap Fabric accessibility & automation by writing a heavily stubbed out UIA provider for the RootView.

  • Does not implement a full accessibility tree
  • Current implementation assumes we're hosted in the playground with an HWND, future work will need to be done to address other hosting situations
  • Future work will be done to create code sharing patterns and generalize application of props and patterns, this just unblocks critical path work

Type of Change

  • New feature (non-breaking change which adds functionality)

Why

Our Fabric implementation is using Comp Visual primitives directly and do not have access to the basic automation peers provided on FrameworkElement/UIElements. This allows us to incrementally begin fleshing out the accessibility story on Fabric by expanding the supported set of props, UIA patterns, and control types required for a prod-ready UI framework.

What

  • CompositionRootAutomationProvider added using the old COM IRawElementProvider... interfaces, mostly stubbed out except for a few methods:
    • get_ProviderOptions
    • get_FragmentRoot correctly returns the root provider
    • get_HostRawElementProvider works for HWND-hosting scenarios
    • GetRuntimeId works for HWND-hosting scenarios
  • CompositionRootAutomationProvider is created and returned when WM_GETOBJECT is sent requesting the UIA provider for our window in the playground.

Testing

No tests were added, I simply hard coded a few props (removed before PR) to verify we can change UIA props on the RootView provider and it shows in AccessibilityInsights correctly.

Microsoft Reviewers: Open in CodeFlow

@FalseLobster FalseLobster requested review from a team as code owners January 25, 2023 22:17
@acoates-ms acoates-ms added the Area: Fabric Support Facebook Fabric label Jan 25, 2023
@FalseLobster FalseLobster added AutoMerge Causes a PR to be automatically merged once all requirements are passed (label drives bot activity) labels Jan 25, 2023
@ghost
Copy link

ghost commented Jan 25, 2023

Hello @FalseLobster!

Because this pull request has the AutoMerge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

Do note that I've been instructed to only help merge pull requests of this repository that have been opened for at least 10 hours, a condition that will be fulfilled in about 8 hours 47 minutes. No worries though, I will be back when the time is right! 😉

p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (@msftbot) and give me an instruction to get started! Learn more here.

@FalseLobster
Copy link
Contributor Author

@msftbot hold this pr for the next 22 hours

@ghost
Copy link

ghost commented Jan 25, 2023

Hello @FalseLobster!

Because you've given me some instructions on how to help merge this pull request, I'll be modifying my merge approach. Here's how I understand your requirements for merging this pull request:

  • I won't merge this pull request until after the UTC date Thu, 26 Jan 2023 21:37:44 GMT, which is in 22 hours

If this doesn't seem right to you, you can tell me to cancel these instructions and use the auto-merge policy that has been configured for this repository. Try telling me "forget everything I just told you".

@FalseLobster FalseLobster merged commit 1278bec into microsoft:main Jan 26, 2023
@jonthysell jonthysell added the New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric label Mar 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Fabric Support Facebook Fabric AutoMerge Causes a PR to be automatically merged once all requirements are passed (label drives bot activity) New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

3 participants