Bug 933408 - Introduce prefilter transparent. r=surkov

This commit is contained in:
Eitan Isaacson 2013-11-01 14:43:43 -07:00
parent 5538727850
commit d2c8ac7f54
4 changed files with 16 additions and 2 deletions

View File

@ -186,7 +186,7 @@ interface nsIAccessiblePivotObserver : nsISupports
in PivotMoveReason aReason);
};
[scriptable, uuid(366fe92b-44c9-4769-ae40-7c2a075d3b16)]
[scriptable, uuid(4d9c4352-20f5-4c54-9580-0c77bb6b1115)]
interface nsIAccessibleTraversalRule : nsISupports
{
/* Ignore this accessible object */
@ -201,6 +201,7 @@ interface nsIAccessibleTraversalRule : nsISupports
const unsigned long PREFILTER_OFFSCREEN = 0x00000002;
const unsigned long PREFILTER_NOT_FOCUSABLE = 0x00000004;
const unsigned long PREFILTER_ARIA_HIDDEN = 0x00000008;
const unsigned long PREFILTER_TRANSPARENT = 0x00000010;
/**
* Pre-filter bitfield to filter out obviously ignorable nodes and lighten

View File

@ -875,6 +875,15 @@ RuleCache::ApplyFilter(Accessible* aAccessible, uint16_t* aResult)
return NS_OK;
}
}
if ((nsIAccessibleTraversalRule::PREFILTER_TRANSPARENT & mPreFilter) &&
!(state & states::OPAQUE1)) {
nsIFrame* frame = aAccessible->GetFrame();
if (frame->StyleDisplay()->mOpacity == 0.0f) {
*aResult |= nsIAccessibleTraversalRule::FILTER_IGNORE_SUBTREE;
return NS_OK;
}
}
}
if (mAcceptRolesLength > 0) {

View File

@ -5,6 +5,7 @@ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const PREFILTER_INVISIBLE = nsIAccessibleTraversalRule.PREFILTER_INVISIBLE;
const PREFILTER_ARIA_HIDDEN = nsIAccessibleTraversalRule.PREFILTER_ARIA_HIDDEN;
const PREFILTER_TRANSPARENT = nsIAccessibleTraversalRule.PREFILTER_TRANSPARENT;
const FILTER_MATCH = nsIAccessibleTraversalRule.FILTER_MATCH;
const FILTER_IGNORE = nsIAccessibleTraversalRule.FILTER_IGNORE;
const FILTER_IGNORE_SUBTREE = nsIAccessibleTraversalRule.FILTER_IGNORE_SUBTREE;
@ -49,7 +50,7 @@ var ObjectTraversalRule =
return 0;
},
preFilter: PREFILTER_INVISIBLE | PREFILTER_ARIA_HIDDEN,
preFilter: PREFILTER_INVISIBLE | PREFILTER_ARIA_HIDDEN | PREFILTER_TRANSPARENT,
match: function(aAccessible)
{

View File

@ -18,6 +18,9 @@
<a href="#" id="hidden-link">Maybe</a> it was the other <i>George Michael</i>.
You know, the <a href="#">singer-songwriter</a>.
</p>
<p style="opacity: 0;" id="paragraph-4">
This is completely transparent
</p>
<iframe
src="data:text/html,<html><body>An <i>embedded</i> document.</body></html>">
</iframe>