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

David Bolter <[email protected]> Tue, 11 Jan 2011 10:04:48 -0500
Newsgroups gmane.comp.mozilla.accessibility
Message-ID <[email protected]>
Sylvain,

Thanks very much for reporting this bug to us. Alexander has filed and 
fixed! We'll let you know when the fix has landed in the nightly build.

Cheers,
David

On 11/01/11 1:56 AM, Sylvain 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