mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
bug 762876 - fix default orientation of role=scrollbar, and ensure only one of states horizontal or vertical is set r=davidb
This commit is contained in:
parent
24a7ebc815
commit
100d28e792
@ -6,6 +6,7 @@
|
||||
|
||||
#include "ARIAStateMap.h"
|
||||
|
||||
#include "nsARIAMap.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "mozilla/dom/Element.h"
|
||||
@ -221,11 +222,23 @@ aria::MapToState(EStateRule aRule, dom::Element* aElement, PRUint64* aState)
|
||||
|
||||
case eARIAOrientation:
|
||||
{
|
||||
static const EnumTypeData data(
|
||||
nsGkAtoms::aria_orientation, states::HORIZONTAL,
|
||||
&nsGkAtoms::vertical, states::VERTICAL);
|
||||
if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::aria_orientation,
|
||||
NS_LITERAL_STRING("horizontal"), eCaseMatters)) {
|
||||
*aState &= ~states::VERTICAL;
|
||||
*aState |= states::HORIZONTAL;
|
||||
} else if (aElement->AttrValueIs(kNameSpaceID_None,
|
||||
nsGkAtoms::aria_orientation,
|
||||
NS_LITERAL_STRING("vertical"),
|
||||
eCaseMatters)) {
|
||||
*aState &= ~states::HORIZONTAL;
|
||||
*aState |= states::VERTICAL;
|
||||
} else {
|
||||
NS_ASSERTION(!(*aState & (states::HORIZONTAL | states::VERTICAL)),
|
||||
"orientation state on role with default aria-orientation!");
|
||||
*aState |= GetRoleMap(aElement)->Is(nsGkAtoms::scrollbar) ?
|
||||
states::VERTICAL : states::HORIZONTAL;
|
||||
}
|
||||
|
||||
MapEnumType(aElement, aState, data);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -680,10 +680,20 @@ Accessible::NativeState()
|
||||
state |= states::FLOATING;
|
||||
|
||||
// Check if a XUL element has the popup attribute (an attached popup menu).
|
||||
if (mContent->IsXUL())
|
||||
if (mContent->IsXUL()) {
|
||||
if (mContent->HasAttr(kNameSpaceID_None, nsGkAtoms::popup))
|
||||
state |= states::HASPOPUP;
|
||||
|
||||
const nsStyleXUL *xulStyle = frame->GetStyleXUL();
|
||||
if (xulStyle && frame->IsBoxFrame()) {
|
||||
// In XUL all boxes are either vertical or horizontal
|
||||
if (xulStyle->mBoxOrient == NS_STYLE_BOX_ORIENT_VERTICAL)
|
||||
state |= states::VERTICAL;
|
||||
else
|
||||
state |= states::HORIZONTAL;
|
||||
}
|
||||
}
|
||||
|
||||
// Bypass the link states specialization for non links.
|
||||
if (!mRoleMapEntry || mRoleMapEntry->roleRule == kUseNativeRole ||
|
||||
mRoleMapEntry->role == roles::LINK)
|
||||
@ -1510,17 +1520,6 @@ Accessible::State()
|
||||
state |= states::OPAQUE1;
|
||||
}
|
||||
|
||||
const nsStyleXUL *xulStyle = frame->GetStyleXUL();
|
||||
if (xulStyle) {
|
||||
// In XUL all boxes are either vertical or horizontal
|
||||
if (xulStyle->mBoxOrient == NS_STYLE_BOX_ORIENT_VERTICAL) {
|
||||
state |= states::VERTICAL;
|
||||
}
|
||||
else {
|
||||
state |= states::HORIZONTAL;
|
||||
}
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
"Mozilla Foundation", true, 17, 18);
|
||||
is(normalHyperlinkAcc.getURI(0).spec, "http://www.mozilla.org/",
|
||||
"URI wrong for normalHyperlinkElement!");
|
||||
testStates(normalHyperlinkAcc, STATE_LINKED, EXT_STATE_HORIZONTAL);
|
||||
testStates(normalHyperlinkAcc, STATE_LINKED, 0);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// ARIA hyperlink
|
||||
@ -83,7 +83,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
[nsIAccessibleHyperLink]);
|
||||
testThis("AriaHyperlink", ariaHyperlinkAcc, ROLE_LINK, 1,
|
||||
"Mozilla Foundation Home", true, 30, 31);
|
||||
testStates(ariaHyperlinkAcc, STATE_LINKED, EXT_STATE_HORIZONTAL);
|
||||
testStates(ariaHyperlinkAcc, STATE_LINKED, 0);
|
||||
testAction("AriaHyperlink", ariaHyperlinkAcc, "click");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -91,7 +91,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
var invalidAriaHyperlinkAcc = getAccessible("InvalidAriaHyperlink",
|
||||
[nsIAccessibleHyperLink]);
|
||||
is(invalidAriaHyperlinkAcc.valid, false, "Should not be valid!");
|
||||
testStates(invalidAriaHyperlinkAcc, STATE_LINKED, EXT_STATE_HORIZONTAL);
|
||||
testStates(invalidAriaHyperlinkAcc, STATE_LINKED, 0);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// image map and its link children
|
||||
@ -104,9 +104,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
"http://www.bbc.co.uk/radio4/atoz/index.shtml#b", "URI wrong!");
|
||||
is(imageMapHyperlinkAcc.getURI(1).spec,
|
||||
"http://www.bbc.co.uk/radio4/atoz/index.shtml#a", "URI wrong!");
|
||||
testStates(imageMapHyperlinkAcc,
|
||||
(0),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(imageMapHyperlinkAcc, 0, 0);
|
||||
|
||||
var area1 = getAccessible(imageMapHyperlinkAcc.firstChild,
|
||||
[nsIAccessibleHyperLink]);
|
||||
@ -127,9 +125,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
var EmptyHLAcc = getAccessible("emptyLink",
|
||||
[nsIAccessibleHyperLink]);
|
||||
testThis("emptyLink", EmptyHLAcc, ROLE_LINK, 1, null, true, 93, 94);
|
||||
testStates(EmptyHLAcc,
|
||||
(STATE_FOCUSABLE | STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(EmptyHLAcc, (STATE_FOCUSABLE | STATE_LINKED), 0);
|
||||
testAction("emptyLink", EmptyHLAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -140,7 +136,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
"Heise Online", true, 119, 120);
|
||||
is(hyperlinkWithSpanAcc.getURI(0).spec, "http://www.heise.de/",
|
||||
"URI wrong for hyperlinkElementWithSpan!");
|
||||
testStates(hyperlinkWithSpanAcc, STATE_LINKED, EXT_STATE_HORIZONTAL);
|
||||
testStates(hyperlinkWithSpanAcc, STATE_LINKED, 0);
|
||||
testAction("LinkWithSpan", hyperlinkWithSpanAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -149,9 +145,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
[nsIAccessibleHyperLink]);
|
||||
testThis("namedAnchor", namedAnchorAcc, ROLE_LINK, 1,
|
||||
"This should never be of state_linked", true, 196, 197);
|
||||
testStates(namedAnchorAcc,
|
||||
(STATE_SELECTABLE),
|
||||
(EXT_STATE_HORIZONTAL), (STATE_FOCUSABLE | STATE_LINKED));
|
||||
testStates(namedAnchorAcc, STATE_SELECTABLE,
|
||||
0, (STATE_FOCUSABLE | STATE_LINKED));
|
||||
testAction("namedAnchor", namedAnchorAcc, "");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -160,9 +155,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
[nsIAccessibleHyperLink]);
|
||||
testThis("noLink", noLinkAcc, ROLE_LINK, 1,
|
||||
"This should never be of state_linked", true, 254, 255);
|
||||
testStates(noLinkAcc,
|
||||
0,
|
||||
(EXT_STATE_HORIZONTAL), (STATE_FOCUSABLE | STATE_LINKED));
|
||||
testStates(noLinkAcc, 0, 0, (STATE_FOCUSABLE | STATE_LINKED));
|
||||
testAction("noLink", noLinkAcc, "");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -171,9 +164,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
[nsIAccessibleHyperLink]);
|
||||
testThis("linkWithClick", linkWithClickAcc, ROLE_LINK, 1,
|
||||
"This should have state_linked", true, 292, 293);
|
||||
testStates(linkWithClickAcc,
|
||||
(STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(linkWithClickAcc, STATE_LINKED, 0);
|
||||
testAction("linkWithClick", linkWithClickAcc, "click");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -185,9 +176,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
var id = "linkWithTitleNoNameFromSubtree";
|
||||
var linkAcc = getAccessible(id, [nsIAccessibleHyperLink]);
|
||||
testThis(id, linkAcc, ROLE_LINK, 1, "Link with title", true, 344, 345);
|
||||
testStates(linkAcc,
|
||||
(STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(linkAcc, STATE_LINKED, 0);
|
||||
testAction(id, linkAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -197,9 +186,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
linkAcc = getAccessible(id, [nsIAccessibleHyperLink]);
|
||||
testThis(id, linkAcc, ROLE_LINK, 1, "the name from subtree", true, 393,
|
||||
394);
|
||||
testStates(linkAcc,
|
||||
(STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(linkAcc, STATE_LINKED, 0);
|
||||
testAction(id, linkAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -208,9 +195,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
linkAcc = getAccessible(id, [nsIAccessibleHyperLink]);
|
||||
testThis(id, linkAcc, ROLE_LINK, 1, "The title for link", true, 447,
|
||||
448);
|
||||
testStates(linkAcc,
|
||||
(STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(linkAcc, STATE_LINKED, 0);
|
||||
testAction(id, linkAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -219,9 +204,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=418368
|
||||
linkAcc = getAccessible(id, [nsIAccessibleHyperLink]);
|
||||
testThis(id, linkAcc, ROLE_LINK, 1, "Link with label and nested image:",
|
||||
true, 450, 451);
|
||||
testStates(linkAcc,
|
||||
(STATE_LINKED),
|
||||
(EXT_STATE_HORIZONTAL));
|
||||
testStates(linkAcc, STATE_LINKED, 0);
|
||||
testAction(id, linkAcc, "jump");
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
@ -45,7 +45,7 @@
|
||||
testThis("linkedLabel", linkedLabelAcc, ROLE_LINK, 1,
|
||||
"Mozilla Foundation home", "http://www.mozilla.org/", 1, 2,
|
||||
true);
|
||||
testStates(linkedLabelAcc, STATE_LINKED, EXT_STATE_HORIZONTAL);
|
||||
testStates(linkedLabelAcc, STATE_LINKED, 0);
|
||||
|
||||
var labelWithValueAcc = getAccessible("linkLabelWithValue",
|
||||
[nsIAccessibleHyperLink]);
|
||||
|
@ -153,15 +153,15 @@
|
||||
testStates("aria_navigation_anchor", STATE_SELECTABLE);
|
||||
|
||||
// aria-orientation (applied to scrollbar, separator, slider)
|
||||
testStates("aria_scrollbar", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_hscrollbar", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_vscrollbar", 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_separator", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_hseparator", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_vseparator", 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_slider", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_hslider", 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_vslider", 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_scrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_hscrollbar", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_vscrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_separator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_hseparator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_vseparator", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
|
||||
testStates("aria_slider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_hslider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
|
||||
testStates("aria_vslider", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
|
||||
|
||||
// indeterminate ARIA progressbars (no aria-valuenow or aria-valuetext attribute)
|
||||
// should expose mixed state
|
||||
@ -225,6 +225,11 @@
|
||||
title="ARIA undetermined progressmeters should expose mixed state">
|
||||
Mozilla Bug 740851
|
||||
</a>
|
||||
<a target="_blank"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=762876
|
||||
title="fix default horizontal / vertical state of role=scrollbar and ensure only one of horizontal / vertical states is exposed">
|
||||
Mozilla Bug 762876
|
||||
</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
|
Loading…
Reference in New Issue
Block a user