bug 1109891 - part 2 - Allow mGeckoAccessible to store pointers to proxies and do some trivial cleanup r=tbsaunde

This commit is contained in:
Lorien Hu 2015-05-22 11:04:47 -04:00 committed by Trevor Saunders
parent 4a201434bb
commit 706b320072
3 changed files with 12 additions and 12 deletions

View File

@ -31,12 +31,15 @@ GetNativeFromGeckoAccessible(mozilla::a11y::Accessible* aAccessible)
return native;
}
// This is OR'd with the Accessible owner to indicate the wrap-ee is a proxy.
static const uintptr_t IS_PROXY = 1;
@interface mozAccessible : NSObject <mozAccessible>
{
/**
* Weak reference; it owns us.
*/
mozilla::a11y::AccessibleWrap* mGeckoAccessible;
uintptr_t mGeckoAccessible;
/**
* Strong ref to array of children

View File

@ -65,7 +65,7 @@ GetClosestInterestingAccessible(id anObject)
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
if ((self = [super init])) {
mGeckoAccessible = geckoAccessible;
mGeckoAccessible = reinterpret_cast<uintptr_t>(geckoAccessible);
mRole = geckoAccessible->Role();
}
@ -86,7 +86,11 @@ GetClosestInterestingAccessible(id anObject)
- (mozilla::a11y::AccessibleWrap*)getGeckoAccessible
{
return mGeckoAccessible;
// Check if mGeckoAccessible points at a proxy
if (mGeckoAccessible & IS_PROXY)
return nil;
return reinterpret_cast<AccessibleWrap*>(mGeckoAccessible);
}
#pragma mark -
@ -236,7 +240,6 @@ GetClosestInterestingAccessible(id anObject)
- (id)accessibilityHitTest:(NSPoint)point
{
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (!accWrap)
return nil;
@ -282,7 +285,6 @@ GetClosestInterestingAccessible(id anObject)
- (id)accessibilityFocusedUIElement
{
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (!accWrap)
return nil;
@ -304,7 +306,6 @@ GetClosestInterestingAccessible(id anObject)
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
AccessibleWrap* accWrap = [self getGeckoAccessible];
Accessible* accessibleParent = accWrap->GetUnignoredParent();
if (accessibleParent) {
id nativeParent = GetNativeFromGeckoAccessible(accessibleParent);
@ -348,7 +349,6 @@ GetClosestInterestingAccessible(id anObject)
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (mChildren || !accWrap->AreChildrenCached())
return mChildren;
@ -408,7 +408,6 @@ GetClosestInterestingAccessible(id anObject)
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (!accWrap)
return nil;
@ -669,7 +668,7 @@ struct RoleDescrComparator
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
AccessibleWrap* accWrap = static_cast<AccessibleWrap*>([self getGeckoAccessible]);
AccessibleWrap* accWrap = [self getGeckoAccessible];
// Get a pointer to the native window (NSWindow) we reside in.
NSWindow *nativeWindow = nil;
@ -711,7 +710,7 @@ struct RoleDescrComparator
[self invalidateChildren];
mGeckoAccessible = nullptr;
mGeckoAccessible = 0;
NS_OBJC_END_TRY_ABORT_BLOCK;
}

View File

@ -499,7 +499,6 @@ ToNSString(id aValue)
- (NSString*)text
{
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (!accWrap)
return nil;
@ -509,7 +508,6 @@ ToNSString(id aValue)
- (long)textLength
{
AccessibleWrap* accWrap = [self getGeckoAccessible];
if (!accWrap)
return 0;