Skip to content

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
@chiaramooney chiaramooney mentioned this pull request Jul 17, 2023
13 tasks
@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