Last Comment Bug 431480 - Build IA2 Proxy DLL, include it in installer, and dynamically set it up when Firefox starts to allow NVDA to run from a USB stick
: Build IA2 Proxy DLL, include it in installer, and dynamically set it up when ...
Status: RESOLVED WONTFIX
: access
Product: Core
Classification: Components
Component: Disability Access APIs (show other bugs)
: Trunk
: x86 Windows XP
: -- normal (vote)
: mozilla1.9
Assigned To: Nobody; OK to take it and work on it
:
Mentors:
Depends on:
Blocks: fox3access
  Show dependency treegraph
 
Reported: 2008-04-29 22:53 PDT by Marco Zehe (:MarcoZ) on PTO until August 15
Modified: 2008-07-22 22:54 PDT (History)
6 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
load ia2 wip (4.93 KB, patch)
2008-05-14 01:39 PDT, alexander :surkov
no flags Details | Diff | Splinter Review
load ia2 dll (5.68 KB, patch)
2008-05-14 02:30 PDT, alexander :surkov
no flags Details | Diff | Splinter Review

Description Marco Zehe (:MarcoZ) on PTO until August 15 2008-04-29 22:53:43 PDT
The details are in this Linux Foundation bug report: http://bugs.linux-foundation.org/show_bug.cgi?id=125, and in these two posts on the IA2 mailing list:
https://lists.linux-foundation.org/pipermail/accessibility-ia2/2008-March/000452.html
and
https://lists.linux-foundation.org/pipermail/accessibility-ia2/2008-March/000453.html.

Basically, we need to perform these steps to make NVDA support Firefox from a USB stick (thumb drive):
1. Build the proxy DLL from our copy of the IA2 IDLs, meaning create another build step.
2. Make sure that DLL gets copied to the Firefox 3 directory upon installation.
3. Loading the DLL and registering the classes at startup, and cleaning up at shutdown. For this, since it is in-process, no administrative privileges are required.
Comment 1 James Teh [:Jamie] 2008-04-30 01:21:11 PDT
Note that this is not specific to NVDA portability. It is necessary to allow any assistive technology running from a USB stick to utilise Firefox's IAccessible2 support. Currently, NVDA and Accessibility Probe would be the only beneficiaries of this, but there may be other products in future. It will also allow IAccessible2 support to work for portable versions of Firefox.
Comment 2 alexander :surkov 2008-04-30 02:22:02 PDT
Would be nice to get exact steps to check the future patch work

about item 3) we will load dll but AT may be never ran, is it ok?
Comment 3 Michael Curran 2008-04-30 03:27:34 PDT
(In reply to comment #2)
> Would be nice to get exact steps to check the future patch work
NVDA snapshots (http://www.nvda-project.org/snapshots/) already do their part of the registration. So, once we have a gecko app that does the registration on its side, the steps would be:
1. Grab the latest snapshot of NVDA, must be the portable zip version, not the installer.
2. Make sure that you do not have an ia2 proxy dll currently registered on your system. You may need to regsvr32 /u <ia2proxydllPath> to unregister the last one you registered. Failing that, search your registry for IA2 and delete all registry keys to do with it.
To test you do not have the proxy registered, use a Gecko app that does not have the registration fix, and NVDA should not be able to announce anything in Gecko edit fields as you move the caret around with the keyboard.
3. Running NVDA, start the Gecko app with the registration fix.
4. Focus on a Gecko edit field and try interacting with it, type some text, arrow around it. If the registration worked, NVDA will be able to announce the characters you're moving around.
I am certainly happy to take a look at any try server builds. I am also happy to answer any other questions in regards to the steps I outlined in the Accessibility-IA2 email linked to in this bug's description. Note that there is a full chunk of c++ code in that email which shows how it works.


 
Comment 4 Pete Brunet 2008-04-30 19:28:49 PDT
This info regarding how to build an IA2 proxy DLL may be helpful:  http://bugs.freestandards.org/show_bug.cgi?id=110
Comment 5 alexander :surkov 2008-05-13 23:32:40 PDT
It seems we create proxy DLL but do not put it into the package (see http://lxr.mozilla.org/mozilla/source/accessible/public/ia2). It seems we should register it as well (http://lxr.mozilla.org/mozilla/source/accessible/public/ia2/Makefile.in#132). Though I'm not sure if it is registered when I build firefox itself. This DLL isn't included into the browser package yet (see bug 420508, we could reopen and land that patch). Possibly we should include into another packages (like thunerbird's one) if it's different things.

There is unclear for me issue with DLL loading (https://lists.linux-foundation.org/pipermail/accessibility-ia2/2008-March/000452.html)
Comment 6 alexander :surkov 2008-05-14 00:01:48 PDT
(In reply to comment #5)
 It seems we
> should register it as well
> (http://lxr.mozilla.org/mozilla/source/accessible/public/ia2/Makefile.in#132).
> Though I'm not sure if it is registered when I build firefox itself. This DLL
> isn't included into the browser package yet (see bug 420508, we could reopen
> and land that patch). Possibly we should include into another packages (like
> thunerbird's one) if it's different things.

see also how we register AccessibleMarshal.dll for MSAA and ISimpleDOM interfaces:
http://lxr.mozilla.org/mozilla/search?string=AccessibleMarshal
Comment 7 alexander :surkov 2008-05-14 00:29:05 PDT
(In reply to comment #5)

> There is unclear for me issue with DLL loading
> (https://lists.linux-foundation.org/pipermail/accessibility-ia2/2008-March/000452.html)
> 

OK, I think we can put that code to InitXPAccessibility/ShutdownXPAccessibility of nsAccessNode. That code will be executed once when accessibility is enabled by AT.
Comment 8 alexander :surkov 2008-05-14 01:39:34 PDT
Created attachment 320868 [details] [diff] [review]
load ia2 wip
Comment 9 alexander :surkov 2008-05-14 02:30:09 PDT
Created attachment 320872 [details] [diff] [review]
load ia2 dll

Mick, could you try the patch? If I get right then we put proxy dll into objdir/dist/bin directory but we don't register it. But if you build firefox with this patch and register that dll manually then it should work as you expected. So if that's the thing you wanted then I'll put another patch to register proxy dll by installer.
Comment 10 James Teh [:Jamie] 2008-06-19 01:24:44 PDT
(In reply to comment #9)
> Mick, could you try the patch?
Neither Mick or I have a Mozilla build environment set up at this time. Any chance of a try build?
> If I get right then we put proxy dll into
> objdir/dist/bin directory but we don't register it.
I don't follow. Currently, ia2.dll isn't included with Firefox distributions at all.
> But if you build firefox
> with this patch and register that dll manually then it should work as you
> expected.
The point of this patch is to register the dll with COM dynamically, on-demand, rather than needing to register it at install time. That is, this patch should eliminate the requirement to register it at install time.
> So if that's the thing you wanted then I'll put another patch to
> register proxy dll by installer.
The installer just needs to copy the dll into the correct location. It does not need to register it. Note, however, that the AT either needs to register it dynamically as is done here (NVDA already does this) or it needs to register ia2.dll at install time.
Comment 11 James Teh [:Jamie] 2008-07-22 21:26:00 PDT
It was decided in the 2008/07/08 IAccessible2 meeting that the proxy dll is the responsibility of the AT, even in the case of a portable AT such as NVDA which cannot register the dll in the registry. A portable AT should inject code into the application process to register the proxy dll for that process if required. NVDA now does this. The minutes for the meeting in question are here:
http://www.linuxfoundation.org/en/Accessibility/IAccessible2/Minutes/20080708
A more detailed mailing list post (made just before the final decision) is here:
https://lists.linux-foundation.org/pipermail/accessibility-ia2/2008-July/000527.html

This bug should be closed as wontfix. (I don't have permission to do it myself.)
Comment 12 Marco Zehe (:MarcoZ) on PTO until August 15 2008-07-22 22:54:43 PDT
See comment #11 for reason. Thanks!

Note You need to log in before you can comment on or make changes to this bug.