зеркало из https://github.com/mozilla/pjs.git
224 строки
8.4 KiB
HTML
224 строки
8.4 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 type="application/javascript" src="chrome://mochikit/content/MochiKit/packed.js"></script>
|
|
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
|
|
<script type="application/javascript">
|
|
const nsIAccessibleImage = Components.interfaces.nsIAccessibleImage;
|
|
const nsIAccessibleCoordinateType =
|
|
Components.interfaces.nsIAccessibleCoordinateType;
|
|
|
|
var gAccRetrieval;
|
|
|
|
function testCoordinates(aID, aAcc, aWidth, aHeight)
|
|
{
|
|
var screenX = {}, screenY = {}, windowX = {}, windowY = {}, parentX = {},
|
|
parentY = {};
|
|
|
|
var imageAcc = null;
|
|
try {
|
|
imageAcc = aAcc.QueryInterface(nsIAccessibleImage);
|
|
} catch(e) {}
|
|
ok(imageAcc, "no image interface for " + aID + "!");
|
|
|
|
if (!imageAcc)
|
|
return;
|
|
|
|
// get screen coordinates.
|
|
imageAcc.getImagePosition(
|
|
nsIAccessibleCoordinateType.COORDTYPE_SCREEN_RELATIVE,
|
|
screenX, screenY);
|
|
// get window coordinates.
|
|
imageAcc.getImagePosition(
|
|
nsIAccessibleCoordinateType.COORDTYPE_WINDOW_RELATIVE,
|
|
windowX, windowY);
|
|
// get parent related coordinates.
|
|
imageAcc.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 = imageAcc.getChildAtPoint(screenX.value, screenY.value);
|
|
} catch(e) {}
|
|
is(tempAcc, imageAcc,
|
|
"Wrong accessible returned for position of " + aID + "!");
|
|
|
|
// get image's parent.
|
|
var imageParentAcc = null;
|
|
try {
|
|
imageParentAcc = imageAcc.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 width = {}, height = {};
|
|
imageAcc.getImageSize(width, height);
|
|
is(width.value, aWidth, "Wrong width for " + aID + "!");
|
|
is(height.value, aHeight, "wrong height for " + aID + "!");
|
|
}
|
|
|
|
function testThis(aID, aName, aSRC, aWidth, aHeight,
|
|
aNumActions, aActionNames)
|
|
{
|
|
var elem = document.getElementById(aID);
|
|
var acc;
|
|
try {
|
|
acc = gAccRetrieval.getAccessibleFor(elem);
|
|
} catch(e) {}
|
|
ok(acc, "No accessible for " + aID + "!");
|
|
|
|
if (!acc)
|
|
return;
|
|
|
|
is(acc.name, aName, "wrong name for " + aID + "!");
|
|
|
|
// test coordinates and size
|
|
testCoordinates(aID, acc, aWidth, aHeight);
|
|
|
|
// bug 429659: Make sure the SRC attribute is set for any image
|
|
var attributes;
|
|
try {
|
|
attributes = acc.attributes;
|
|
} catch(e) {}
|
|
ok(attributes, "no attributes on " + aID + "!");
|
|
is(attributes.getStringProperty("src"), aSRC,
|
|
"no correct src attribute for " + aID + "!");
|
|
|
|
if (aNumActions) {
|
|
is(acc.numActions, aNumActions,
|
|
"Wrong number of actions for " + aID + "!");
|
|
|
|
for (index = 0; index < aActionNames.length; index++) {
|
|
is(acc.getActionName(index), aActionNames[index],
|
|
"Wrong action name for " + aID + ", index " + index +"!");
|
|
}
|
|
}
|
|
}
|
|
|
|
function doTest()
|
|
{
|
|
gAccRetrieval = Components.classes["@mozilla.org/accessibleRetrieval;1"].
|
|
getService(Components.interfaces.nsIAccessibleRetrieval);
|
|
|
|
// Test non-linked image
|
|
testThis("nonLinkedImage", null, "moz.png", 89, 38);
|
|
|
|
// Test linked image
|
|
testThis("linkedImage", null, "moz.png", 93, 42);
|
|
|
|
// Test non-linked image with alt attribute
|
|
testThis("nonLinkedImageWithAlt", "MoFo", "moz.png", 89, 38);
|
|
|
|
// Test linked image with alt attribute
|
|
testThis("linkedImageWithAlt", "MoFo link", "moz.png", 93, 42);
|
|
|
|
// Test non-linked image with title attribute
|
|
testThis("nonLinkedImageWithTitle", "MoFo logo", "moz.png", 89, 38);
|
|
|
|
// Test linked image with title attribute
|
|
testThis("linkedImageWithTitle", "Link to MoFo", "moz.png", 93, 42);
|
|
|
|
// Test simple image with empty alt attribute
|
|
testThis("nonLinkedImageEmptyAlt", "", "moz.png", 89, 38);
|
|
|
|
// Test linked image with empty alt attribute
|
|
testThis("linkedImageEmptyAlt", "", "moz.png", 93, 42);
|
|
|
|
// Test simple image with empty alt attribute and title
|
|
testThis("nonLinkedImageEmptyAltAndTitle", "MozillaFoundation", "moz.png", 89, 38);
|
|
|
|
// Test linked image with empty alt attribute and title
|
|
testThis("linkedImageEmptyAltAndTitle", "Link to Mozilla Foundation", "moz.png", 93, 42);
|
|
|
|
// Image with long desc
|
|
var actionNamesArray = new Array("showlongdesc");
|
|
testThis("longdesc", "Image of Mozilla logo", "moz.png", 89, 38, 1,
|
|
actionNamesArray);
|
|
|
|
// Image with click and long desc
|
|
actionNamesArray = null;
|
|
actionNamesArray = new Array("click", "showlongdesc");
|
|
testThis("clickAndLongdesc", "Another image of Mozilla logo", "moz.png",
|
|
89, 38, 2, actionNamesArray);
|
|
|
|
// Image with click
|
|
actionNamesArray = null;
|
|
actionNamesArray = new Array("click");
|
|
testThis("click", "A third image of Mozilla logo", "moz.png",
|
|
89, 38, 1, actionNamesArray);
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
addLoadEvent(doTest);
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=429659">Mozilla Bug 429659</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>Simple image with alt:<br>
|
|
<img id="nonLinkedImageWithAlt" src="moz.png" alt="MoFo"/>
|
|
<br>Linked image with alt:<br>
|
|
<a href="http://www.mozilla.org"><img id="linkedImageWithAlt" src="moz.png" alt="MoFo link"/></a>
|
|
<br>Simple image with title:<br>
|
|
<img id="nonLinkedImageWithTitle" src="moz.png" title="MoFo logo"/>
|
|
<br>Linked image with title:<br>
|
|
<a href="http://www.mozilla.org"><img id="linkedImageWithTitle" src="moz.png" title="Link to MoFo"/></a>
|
|
<br>Simple image with empty alt:<br>
|
|
<img id="nonLinkedImageEmptyAlt" src="moz.png" alt=""/>
|
|
<br>Linked image with empty alt:<br>
|
|
<a href="http://www.mozilla.org"><img id="linkedImageEmptyAlt" src="moz.png" alt=""/></a>
|
|
<br>Simple image with empty alt and title:<br>
|
|
<img id="nonLinkedImageEmptyAltAndTitle" src="moz.png" alt="" title="MozillaFoundation"/>
|
|
<br>Linked image with empty alt and title:<br>
|
|
<a href="http://www.mozilla.org"><img id="linkedImageEmptyAltAndTitle" src="moz.png" alt=""
|
|
title="Link to Mozilla Foundation"/></a>
|
|
<br>Image with longdesc:<br>
|
|
<img id="longdesc" 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 with click:<br>
|
|
<img id="click" src="moz.png"
|
|
alt="A third image of Mozilla logo" onclick="alert('Clicked, too!');"/>
|
|
</body>
|
|
</html>
|