Re: Firefox 4 beta 8 -> get_accChild() returns E_INVALIDARG
Alexander Surkov <[email protected]> Tue, 11 Jan 2011 15:05:55 +0800
| Newsgroups | gmane.comp.mozilla.accessibility |
|---|---|
| Message-ID | <[email protected]> |
Hi, Sylvain. Indices are zero-based, though if 5th is BR then there's still a problem. I'll take a look. Thank you. Alex. On Tue, Jan 11, 2011 at 2:56 PM, Sylvain <[email protected]> wrote: > 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 > > _______________________________________________ > dev-accessibility mailing list > [email protected] > https://lists.mozilla.org/listinfo/dev-accessibility >