зеркало из https://github.com/mozilla/gecko-dev.git
199 строки
7.0 KiB
HTML
199 строки
7.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=429659
|
|
-->
|
|
<head>
|
|
<title>nsIAccessibleImage chrome tests</title>
|
|
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
|
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
|
|
<script type="application/javascript"
|
|
src="common.js"></script>
|
|
<script type="application/javascript"
|
|
src="role.js"></script>
|
|
<script type="application/javascript"
|
|
src="attributes.js"></script>
|
|
<script type="application/javascript"
|
|
src="layout.js"></script>
|
|
|
|
<script type="application/javascript">
|
|
function testCoordinates(aID, aAcc, aWidth, aHeight) {
|
|
var screenX = {}, screenY = {}, windowX = {}, windowY = {}, parentX = {},
|
|
parentY = {};
|
|
|
|
// get screen coordinates.
|
|
aAcc.getImagePosition(
|
|
nsIAccessibleCoordinateType.COORDTYPE_SCREEN_RELATIVE,
|
|
screenX, screenY);
|
|
// get window coordinates.
|
|
aAcc.getImagePosition(
|
|
nsIAccessibleCoordinateType.COORDTYPE_WINDOW_RELATIVE,
|
|
windowX, windowY);
|
|
// get parent related coordinates.
|
|
aAcc.getImagePosition(
|
|
nsIAccessibleCoordinateType.COORDTYPE_PARENT_RELATIVE,
|
|
parentX, parentY);
|
|
// XXX For linked images, a negative parentY value is returned, and the
|
|
// screenY coordinate is the link's screenY coordinate minus 1.
|
|
// Until this is fixed, set parentY to -1 if it's negative.
|
|
if (parentY.value < 0)
|
|
parentY.value = -1;
|
|
|
|
// See if asking image for child at image's screen coordinates gives
|
|
// correct accessible. getChildAtPoint operates on screen coordinates.
|
|
var tempAcc = null;
|
|
try {
|
|
tempAcc = aAcc.getChildAtPoint(screenX.value, screenY.value);
|
|
} catch (e) {}
|
|
is(tempAcc, aAcc,
|
|
"Wrong accessible returned for position of " + aID + "!");
|
|
|
|
// get image's parent.
|
|
var imageParentAcc = null;
|
|
try {
|
|
imageParentAcc = aAcc.parent;
|
|
} catch (e) {}
|
|
ok(imageParentAcc, "no parent accessible for " + aID + "!");
|
|
|
|
if (imageParentAcc) {
|
|
// See if parent's screen coordinates plus image's parent relative
|
|
// coordinates equal to image's screen coordinates.
|
|
var parentAccX = {}, parentAccY = {}, parentAccWidth = {},
|
|
parentAccHeight = {};
|
|
imageParentAcc.getBounds(parentAccX, parentAccY, parentAccWidth,
|
|
parentAccHeight);
|
|
is(parentAccX.value + parentX.value, screenX.value,
|
|
"Wrong screen x coordinate for " + aID + "!");
|
|
// XXX see bug 456344 is(parentAccY.value + parentY.value, screenY.value,
|
|
// "Wrong screen y coordinate for " + aID + "!");
|
|
}
|
|
|
|
var [expected_w, expected_h] = CSSToDevicePixels(window, aWidth, aHeight);
|
|
var width = {}, height = {};
|
|
aAcc.getImageSize(width, height);
|
|
is(width.value, expected_w, "Wrong width for " + aID + "!");
|
|
is(height.value, expected_h, "wrong height for " + aID + "!");
|
|
}
|
|
|
|
function testThis(aID, aSRC, aWidth, aHeight,
|
|
aActionCount, aActionNames) {
|
|
var acc = getAccessible(aID, [nsIAccessibleImage]);
|
|
if (!acc)
|
|
return;
|
|
|
|
// Test role
|
|
testRole(aID, ROLE_GRAPHIC);
|
|
|
|
// test coordinates and size
|
|
testCoordinates(aID, acc, aWidth, aHeight);
|
|
|
|
// bug 429659: Make sure the SRC attribute is set for any image
|
|
var attributes = {"src": aSRC};
|
|
testAttrs(acc, attributes, true);
|
|
|
|
var actionCount = aActionCount || 0;
|
|
is(acc.actionCount, actionCount,
|
|
"Wrong number of actions for " + aID + "!");
|
|
if (actionCount) {
|
|
for (let index = 0; index < aActionNames.length; index++) {
|
|
is(acc.getActionName(index), aActionNames[index],
|
|
"Wrong action name for " + aID + ", index " + index + "!");
|
|
}
|
|
}
|
|
}
|
|
|
|
function doTest() {
|
|
// Test non-linked image
|
|
testThis("nonLinkedImage", "moz.png", 89, 38);
|
|
|
|
// Test linked image
|
|
var actionNamesArray = ["jump"];
|
|
testThis("linkedImage", "moz.png", 89, 38, 1,
|
|
actionNamesArray);
|
|
|
|
// Image with long desc
|
|
actionNamesArray = ["showlongdesc"];
|
|
testThis("longdesc", "moz.png", 89, 38, 1,
|
|
actionNamesArray);
|
|
|
|
// Image with invalid url in long desc
|
|
testThis("invalidLongdesc", "moz.png", 89, 38, 0);
|
|
|
|
// Image with click and long desc
|
|
actionNamesArray = null;
|
|
actionNamesArray = ["click", "showlongdesc"];
|
|
testThis("clickAndLongdesc", "moz.png",
|
|
89, 38, 2, actionNamesArray);
|
|
|
|
// Image with click
|
|
actionNamesArray = null;
|
|
actionNamesArray = ["click"];
|
|
testThis("click", "moz.png",
|
|
89, 38, 1, actionNamesArray);
|
|
|
|
// Image with long desc
|
|
actionNamesArray = null;
|
|
actionNamesArray = ["showlongdesc"];
|
|
testThis("longdesc2", "moz.png",
|
|
89, 38, 1, actionNamesArray);
|
|
|
|
// Image described by HTML:a@href with whitespaces
|
|
actionNamesArray = null;
|
|
actionNamesArray = ["showlongdesc"];
|
|
testThis("longdesc3", "moz.png",
|
|
89, 38, 1, actionNamesArray);
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
addA11yLoadEvent(doTest);
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=429659">Mozilla Bug 429659</a>
|
|
<a target="_blank"
|
|
href="https://bugzilla.mozilla.org/show_bug.cgi?id=652635"
|
|
title="fall back missing @longdesc to aria-describedby pointing to a href">
|
|
Mozilla Bug 652635
|
|
</a>
|
|
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none"></div>
|
|
<pre id="test">
|
|
</pre>
|
|
|
|
<br>Simple image:<br>
|
|
<img id="nonLinkedImage" src="moz.png"/>
|
|
<br>Linked image:<br>
|
|
<a href="http://www.mozilla.org"><img id="linkedImage" src="moz.png"></a>
|
|
<br>Image with longdesc:<br>
|
|
<img id="longdesc" src="moz.png" longdesc="longdesc_src.html"
|
|
alt="Image of Mozilla logo"/>
|
|
<br>Image with invalid url in longdesc:<br>
|
|
<img id="invalidLongdesc" src="moz.png" longdesc="longdesc src.html"
|
|
alt="Image of Mozilla logo"/>
|
|
<br>Image with click and longdesc:<br>
|
|
<img id="clickAndLongdesc" src="moz.png" longdesc="longdesc_src.html"
|
|
alt="Another image of Mozilla logo" onclick="alert('Clicked!');"/>
|
|
|
|
<br>image described by a link to be treated as longdesc<br>
|
|
<img id="longdesc2" src="moz.png" aria-describedby="describing_link"
|
|
alt="Second Image of Mozilla logo"/>
|
|
<a id="describing_link" href="longdesc_src.html">link to description of image</a>
|
|
|
|
<br>Image described by a link to be treated as longdesc with whitespaces<br>
|
|
<img id="longdesc3" src="moz.png" aria-describedby="describing_link2"
|
|
alt="Second Image of Mozilla logo"/>
|
|
<a id="describing_link2" href="longdesc src.html">link to description of image</a>
|
|
|
|
<br>Image with click:<br>
|
|
<img id="click" src="moz.png"
|
|
alt="A third image of Mozilla logo" onclick="alert('Clicked, too!');"/>
|
|
|
|
</body>
|
|
</html>
|