Re: Firefox 4 beta 8 -> get_accChild() returns E_INVALIDARG

Sylvain <[email protected]> Mon, 10 Jan 2011 22:56:51 -0800 (PST)
Newsgroups gmane.comp.mozilla.accessibility
Organization http://groups.google.com
Message-ID <f70163d4-a66a-4651-8dbd-770f30fd6024@i41g2000vbn.googlegroups.com>
Hi Alexander,

Here is the html page: www.swsso.fr/demo/

If you explore this page with a tool such as inspect32.exe (free
Microsoft tool), you can see that the content window has 6 childs.
The first 5 childs are <BR> objects.
The 6th is a form object. Inspect32 succeeds getting this object
because it uses accNavigate method.

I would like to get this object with a simple loop form 1 to 6
invoking the get_accChild() method:
- 1 to 5 returns OK (<BR> objects).
- 6 returns E_INVALID_ARG.

Hope this helps.

Thank you.

Sylvain

On 11 jan, 04:06, Alexander Surkov <[email protected]> wrote:
> Hi, Sylvain.
>
> I could suppose beta 6 and beta 8 expose different accessible trees
> making your code fail. As David said we need a test case to see what
> happens. I don't really think it's trivial as you assumed.
>
> Thank you.
> Alex.
>
>
>
>
>
>
>
> On Mon, Jan 10, 2011 at 10:08 PM, Sylvain <[email protected]> wrote:
> > Hi all,
>
> > This code was OK on beta 6, but fails on beta 8 (not tested on beta
> > 7). This code simply tries to get the first child of an object:
>
> > hr=AccessibleObjectFromWindow(w,(DWORD)OBJID_CLIENT,IID_IAccessible,
> > (void**)&pTopAccessible);
> > hr=pTopAccessible->accNavigate(0x1009,vtStart,&vtResult); //
> > NAVRELATION_EMBEDS = 0x1009
> > pIDispatch=(IDispatch*)vtResult.lVal;
> > hr=pIDispatch->QueryInterface(IID_IAccessible, (void**)&pAccessible);
> > hr=pAccessible->get_accChildCount(&lCount);
> > //  ==> value of lCount is 6 in my example
> > vtChild.vt=VT_I4;
> > vtChild.lVal=1;
> > hr=pAccessible->get_accChild(vtChild,&pIDispatch); => hr=S_OK
> > ...
> > vtChild.lVal=6;
> > hr=pAccessible->get_accChild(vtChild,&pIDispatch); => hr=E_INVALIDARG!
>
> > Do you have an idea? Not sure, but I guess there is a bug in the
> > Firefox code: I suppose there is a test like this in the
> > get_accChild() method:
> > if (vtChild.lVal >= lCount) return E_INVALIDARG; // where lCount is
> > the number of childs.
> > As the childs are 1 based and not 0 based, the right code should be:
> > if (vtChild.lVal > lCount) return E_INVALIDARG; // where lCount is the
> > number of childs.
>
> > Thanks!
>
> > Sylvain
> > _______________________________________________
> > dev-accessibility mailing list
> > [email protected]
> >https://lists.mozilla.org/listinfo/dev-accessibility