Thanks Alex (and Jamie), I offer two choices, and in both cases using IDL like our recently added IATable2::selectedRows/Columns/Cells. I like the first choice better because it offers a very simple method for the case that will be used 99% of the time. The second choice is the one Jamie proposed.
1) // Fetch one target, even if there is more than one. HRESULT IAccessible2_2::relationTargetOfType ( [in] BSTR type, [out, retvalue] IUnknown **target ) and // Fetch all targets HRESULT IAccessible2_2::relationTargetsOfType ( [in] BSTR type, [out, size_is(,*nTargets)] IUnknown ***targets, [out, retval] long *nTargets ) 2) // Fetch either one or all targets depending on the maxTargets parameter. // Typically maxTargets will be 1 but if maxTargets is 0 the server will return all available targets, using nTargets to indicate how many were returned. HRESULT IAccessible2_2::relationTargetsOfType ( [in] BSTR type, [in] long maxTargets, [out, size_is(,*nTargets)] IUnknown ***targets, [out, retval] long *nTargets ) That maxTargets parameter could be a boolean but as a long it provides the option of asking for the first n targets. In both cases the server would allocate the array, using CoTaskMemAlloc. The client would use CoTaskMemFree to free the array. Pete On 3/5/12 10:25 PM, Alexander Surkov wrote: > Basically that's what Jamie said. We need to make sure the server > doesn't do extra work when nobody needs it. So I'm fine with Jamie > proposal to pass the desired targets amount. > Alex. > > On Tue, Mar 6, 2012 at 1:19 PM, Alexander Surkov > <[email protected]> wrote: >> ARIA tends to expose multiple targets especially stuffs like >> aria-labelledby. I don't have statistics though. But the point is if >> AT needs only one targets then the server shouldn't spend a time to >> check whether there are other targets. In other words we can end up >> with single target but the server can do a lot of computation to >> figure out this. >> >> Thank you. >> Alex. >> >> >> On Tue, Mar 6, 2012 at 6:31 AM, James Teh <[email protected]> wrote: >>> On 6/03/2012 7:20 AM, Pete Brunet wrote: >>>> Jamie, Since the server allocates the array, are there any issues for AT >>>> regarding the method I proposed? >>> Not directly for ATs. However, fetching multiple targets might be expensive >>> and slow on the server side; if I recall correctly, Alex has concurred with >>> this. Obviously, if the server is slow, the client slows down too. The idea >>> was to allow clients who only want one target to just fetch one target >>> without incurring a performance penalty on the server side. >>> >>> Alex, how often are there actually multiple targets for a single relation in >>> Mozilla itself? >>> >>> >>> Jamie >>> >>> -- >>> James Teh >>> Director, NV Access Limited >>> Email: [email protected] >>> Web site: http://www.nvaccess.org/ >>> Phone: +61 7 5667 8372 >>> _______________________________________________ >>> Accessibility-ia2 mailing list >>> [email protected] >>> https://lists.linuxfoundation.org/mailman/listinfo/accessibility-ia2 > _______________________________________________ > Accessibility-ia2 mailing list > [email protected] > https://lists.linuxfoundation.org/mailman/listinfo/accessibility-ia2 > -- *Pete Brunet* a11ysoft - Accessibility Architecture and Development (512) 467-4706 (work), (512) 689-4155 (cell) Skype: pete.brunet IM: ptbrunet (AOL, Google), [email protected] (MSN) http://www.a11ysoft.com/about/ Ionosphere: WS4G
_______________________________________________ Accessibility-ia2 mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/accessibility-ia2
