|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=429659 |
|
5 --> |
|
6 <head> |
|
7 <title>nsIAccessibleImage chrome tests</title> |
|
8 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> |
|
9 |
|
10 <script type="application/javascript" |
|
11 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
12 |
|
13 <script type="application/javascript" |
|
14 src="common.js"></script> |
|
15 <script type="application/javascript" |
|
16 src="role.js"></script> |
|
17 <script type="application/javascript" |
|
18 src="attributes.js"></script> |
|
19 |
|
20 <script type="application/javascript"> |
|
21 function testCoordinates(aID, aAcc, aWidth, aHeight) |
|
22 { |
|
23 var screenX = {}, screenY = {}, windowX = {}, windowY = {}, parentX = {}, |
|
24 parentY = {}; |
|
25 |
|
26 // get screen coordinates. |
|
27 aAcc.getImagePosition( |
|
28 nsIAccessibleCoordinateType.COORDTYPE_SCREEN_RELATIVE, |
|
29 screenX, screenY); |
|
30 // get window coordinates. |
|
31 aAcc.getImagePosition( |
|
32 nsIAccessibleCoordinateType.COORDTYPE_WINDOW_RELATIVE, |
|
33 windowX, windowY); |
|
34 // get parent related coordinates. |
|
35 aAcc.getImagePosition( |
|
36 nsIAccessibleCoordinateType.COORDTYPE_PARENT_RELATIVE, |
|
37 parentX, parentY); |
|
38 // XXX For linked images, a negative parentY value is returned, and the |
|
39 // screenY coordinate is the link's screenY coordinate minus 1. |
|
40 // Until this is fixed, set parentY to -1 if it's negative. |
|
41 if (parentY.value < 0) |
|
42 parentY.value = -1; |
|
43 |
|
44 // See if asking image for child at image's screen coordinates gives |
|
45 // correct accessible. getChildAtPoint operates on screen coordinates. |
|
46 var tempAcc = null; |
|
47 try { |
|
48 tempAcc = aAcc.getChildAtPoint(screenX.value, screenY.value); |
|
49 } catch(e) {} |
|
50 is(tempAcc, aAcc, |
|
51 "Wrong accessible returned for position of " + aID + "!"); |
|
52 |
|
53 // get image's parent. |
|
54 var imageParentAcc = null; |
|
55 try { |
|
56 imageParentAcc = aAcc.parent; |
|
57 } catch(e) {} |
|
58 ok(imageParentAcc, "no parent accessible for " + aID + "!"); |
|
59 |
|
60 if (imageParentAcc) { |
|
61 // See if parent's screen coordinates plus image's parent relative |
|
62 // coordinates equal to image's screen coordinates. |
|
63 var parentAccX = {}, parentAccY = {}, parentAccWidth = {}, |
|
64 parentAccHeight = {}; |
|
65 imageParentAcc.getBounds(parentAccX, parentAccY, parentAccWidth, |
|
66 parentAccHeight); |
|
67 is(parentAccX.value + parentX.value, screenX.value, |
|
68 "Wrong screen x coordinate for " + aID + "!"); |
|
69 // XXX see bug 456344 is(parentAccY.value + parentY.value, screenY.value, |
|
70 // "Wrong screen y coordinate for " + aID + "!"); |
|
71 } |
|
72 |
|
73 var width = {}, height = {}; |
|
74 aAcc.getImageSize(width, height); |
|
75 is(width.value, aWidth, "Wrong width for " + aID + "!"); |
|
76 is(height.value, aHeight, "wrong height for " + aID + "!"); |
|
77 } |
|
78 |
|
79 function testThis(aID, aSRC, aWidth, aHeight, |
|
80 aActionCount, aActionNames) |
|
81 { |
|
82 var acc = getAccessible(aID, [nsIAccessibleImage]); |
|
83 if (!acc) |
|
84 return; |
|
85 |
|
86 // Test role |
|
87 testRole(aID, ROLE_GRAPHIC); |
|
88 |
|
89 // test coordinates and size |
|
90 testCoordinates(aID, acc, aWidth, aHeight); |
|
91 |
|
92 // bug 429659: Make sure the SRC attribute is set for any image |
|
93 var attributes = {"src": aSRC}; |
|
94 testAttrs(acc, attributes, true); |
|
95 |
|
96 if (aActionCount) { |
|
97 is(acc.actionCount, aActionCount, |
|
98 "Wrong number of actions for " + aID + "!"); |
|
99 |
|
100 for (index = 0; index < aActionNames.length; index++) |
|
101 is(acc.getActionName(index), aActionNames[index], |
|
102 "Wrong action name for " + aID + ", index " + index +"!"); |
|
103 } |
|
104 } |
|
105 |
|
106 function doTest() |
|
107 { |
|
108 // Test non-linked image |
|
109 testThis("nonLinkedImage", "moz.png", 89, 38); |
|
110 |
|
111 // Test linked image |
|
112 testThis("linkedImage", "moz.png", 89, 38); |
|
113 |
|
114 // Image with long desc |
|
115 var actionNamesArray = new Array("showlongdesc"); |
|
116 testThis("longdesc", "moz.png", 89, 38, 1, |
|
117 actionNamesArray); |
|
118 |
|
119 // Image with click and long desc |
|
120 actionNamesArray = null; |
|
121 actionNamesArray = new Array("click", "showlongdesc"); |
|
122 testThis("clickAndLongdesc", "moz.png", |
|
123 89, 38, 2, actionNamesArray); |
|
124 |
|
125 // Image with click |
|
126 actionNamesArray = null; |
|
127 actionNamesArray = new Array("click"); |
|
128 testThis("click", "moz.png", |
|
129 89, 38, 1, actionNamesArray); |
|
130 |
|
131 // Image with long desc |
|
132 actionNamesArray = null; |
|
133 actionNamesArray = new Array("showlongdesc"); |
|
134 testThis("longdesc2", "moz.png", |
|
135 89, 38, 1, actionNamesArray); |
|
136 |
|
137 SimpleTest.finish(); |
|
138 } |
|
139 |
|
140 SimpleTest.waitForExplicitFinish(); |
|
141 addA11yLoadEvent(doTest); |
|
142 </script> |
|
143 </head> |
|
144 <body> |
|
145 |
|
146 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=429659">Mozilla Bug 429659</a> |
|
147 <a target="_blank" |
|
148 href="https://bugzilla.mozilla.org/show_bug.cgi?id=652635" |
|
149 title="fall back missing @longdesc to aria-describedby pointing to a href"> |
|
150 Mozilla Bug 652635 |
|
151 </a> |
|
152 |
|
153 <p id="display"></p> |
|
154 <div id="content" style="display: none"></div> |
|
155 <pre id="test"> |
|
156 </pre> |
|
157 |
|
158 <br>Simple image:<br> |
|
159 <img id="nonLinkedImage" src="moz.png"/> |
|
160 <br>Linked image:<br> |
|
161 <a href="http://www.mozilla.org"><img id="linkedImage" src="moz.png"></a> |
|
162 <br>Image with longdesc:<br> |
|
163 <img id="longdesc" src="moz.png" longdesc="longdesc_src.html" |
|
164 alt="Image of Mozilla logo"/> |
|
165 <br>Image with click and longdesc:<br> |
|
166 <img id="clickAndLongdesc" src="moz.png" longdesc="longdesc_src.html" |
|
167 alt="Another image of Mozilla logo" onclick="alert('Clicked!');"/> |
|
168 |
|
169 <br>image described by a link to be treated as longdesc<br> |
|
170 <img id="longdesc2" src="moz.png" aria-describedby="describing_link" |
|
171 alt="Second Image of Mozilla logo"/> |
|
172 <a id="describing_link" href="longdesc_src.html">link to description of image</a> |
|
173 |
|
174 <br>Image with click:<br> |
|
175 <img id="click" src="moz.png" |
|
176 alt="A third image of Mozilla logo" onclick="alert('Clicked, too!');"/> |
|
177 |
|
178 </body> |
|
179 </html> |