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
>