Re: Firefox 4 beta 8 -> get_accChild() returns E_INVALIDARG
Alexander Surkov <[email protected]> Tue, 11 Jan 2011 16:03:36 +0800
| Newsgroups | gmane.comp.mozilla.accessibility |
|---|---|
| Message-ID | <[email protected]> |
You're right. As I said I filed bug https://bugzilla.mozilla.org/show_bug.cgi?id=624648 for this issue. Alex. On Tue, Jan 11, 2011 at 3:57 PM, Sylvain WERDEFROY <[email protected]> wrote: > The point is that the behaviour has changed between beta 6 ans 8. > Could you check the get_accChild modifications ? Perhaps I am wrong... > > Sylvain > > Le 11 janv. 2011 à 08:45, Alexander Surkov > <[email protected]> a écrit : > >> Then here's a problem since they are 0-based in Firefox crossplatform layer. >> >> >> On Tue, Jan 11, 2011 at 3:33 PM, Sylvain WERDEFROY >> <[email protected]> wrote: >>> Not sure, but I think indices are 1-based. The zero value is CHILDID_SELF. >>> >>> Sylvain >>> >>> Le 11 janv. 2011 à 08:05, Alexander Surkov >>> <[email protected]> a écrit : >>> >>>> 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 >>>>> >>> >