Friday, June 8, 2012

UIA implementation in Firefox

We decided to start implementation of UI Automation (UIA) in Firefox. Some reasons of doing this:
  • UIA is considered as electronic curb cut effect. For example, it's used by Windows speech recognition and it's critical part to make your application working properly on Windows 8 Metro.
  • MSAA to UIA bridge is not good from performance perspective, for example, Firefox is getting slow when speech recognition is running.
  • By doing UIA Firefox can support Microsoft Narrator what is a plus.
We are going to make the work by parts starting from IAccessibleEx approach. You can watch our meta bug to follow the progress.

Some parts of UIA differs from IAccessible2 API, for example, text support is based on another concept. Thus it's going to take a while before you can try out something. During the implementation stage we think to keep UIA support disabled by default.

If you are contributor and you would like to help us with UIA implementation then you're welcome. You need to do some extra steps to what I wrote previously.
  • Follow these steps to build Firefox on Windows 8. Note, until the mozilla-build release doesn't contain proper scripts you need to obtain them from mozilla-build repo and copy them into your mozilla-build installation folder.
  • Add 'accessible.uia.enabled' pref and set it to true.
  • Check out this bug list to find a bug to work on.

4 comments:

  1. If you aren't yet aware of this project, you should check it out some: http://seleniumhq.org/docs/03_webdriver.html

    Webdriver provides a consistent API for automating most modern browsers.

    ReplyDelete
    Replies
    1. I think I miss the point. You mean should native UIA support in Firefox help to Webdriver since it calls into native browser's automation support?

      Delete
  2. I know it has been a long time, but what is the status of UIA support in Firefox.

    ReplyDelete
  3. It says "Zarro Boogs found", but our UIA implementation is far from being perfect.

    ReplyDelete