Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / accessibility / svg-bounds.html
1 <!DOCTYPE HTML>
2 <html>
3 <body>
4 <script src="../resources/js-test.js"></script>
5 <script src="../resources/accessibility-helper.js"></script>
6
7 <div id="container" style="position: relative; top: 100px; left: 600px; width:400px; height: 400px;" role="group" tabindex="0">
8
9 <svg role="group" id="svgroot">
10
11   <circle role="button" aria-label="face" id="face" r="200" cx="200" cy="200" stroke="red" stroke-width="1" fill="yellow" />
12   <ellipse role="button" aria-label="left-eye" id="left-eye" cx="120" cy="180" rx="18" ry="33" fill="black"/>
13   <ellipse role="button" aria-label="right-eye" id="right-eye" cx="280" cy="120" rx="18" ry="33" fill="black"/>
14   <ellipse role="button" aria-label="nose" id="nose" cx="200" cy="220" rx="8" ry="15" fill="black"/>
15   <path role="button" aria-label="smile" id="smile" stroke-width="10" stroke="black" fill="none" stroke-linecap="round" d="M120,280 Q200,330 290,280"/>
16   <text x="150" y="130" fill="red">Test</text>  
17   <image x="20" y="20" width="300" height="80" aria-label="Test Image" xlink:href="resources/cake.png" />
18
19 </svg>
20 </div>
21
22
23 <div id="console"></div>
24 <script>
25
26 description("This test ensures the accessibility bounds of embedded SVG objects are correct.")
27
28 // Return the page's relative coordinates. If we rely on the x() or y() of the accessibility object, then 
29 // accessibility transforms are applied that fail because there is no window available
30 function pageX(element) {
31     return element.clickPointX - element.width/2;
32 }
33
34 function pageY(element) {
35     return element.clickPointY - element.height/2;
36 }
37
38 if (window.testRunner && window.accessibilityController) {
39     var container = accessibilityController.accessibleElementById("svgroot");
40
41     var x = pageX(container) - 1;
42     var y = pageY(container) - 1;
43
44     debug("container location: (" + x + ", " + y + ")");
45
46     var face = container.childAtIndex(0);
47     debug('Face role: ' + face.role);
48     debug('Face label: ' + platformValueForW3CName(face, true));
49     debug('FaceX: ' + (pageX(face) - x));
50     debug('FaceY: ' + Math.abs(pageY(face) - y));
51     debug('<br>');
52
53     var eye = container.childAtIndex(1);
54     debug('Eye role: ' + eye.role);
55     debug('Eye label: ' + platformValueForW3CName(eye, true));
56     debug('EyeX: ' + (pageX(eye) - x));
57     debug('EyeY: ' + Math.abs(pageY(eye) - y));
58     debug('<br>');
59
60     var nose = container.childAtIndex(3);
61     debug('Nose role: ' + nose.role);
62     debug('Nose label: ' + platformValueForW3CName(nose, true));
63     debug('NoseX: ' + (pageX(nose) - x));
64     debug('NoseY: ' + Math.abs(pageY(nose) - y));
65     debug('<br>');
66
67     var mouth = container.childAtIndex(4);
68     debug('Mouth role: ' + mouth.role);
69     debug('Mouth label: ' + platformValueForW3CName(mouth, true));
70     debug('MouthX: ' + (pageX(mouth) - x));
71     debug('MouthY: ' + Math.floor(Math.abs(pageY(mouth) - y)));
72     debug('<br>');
73
74     // Text varies by about 1 - 2 pixels depending on the platform,
75     // so just print the text coordinates divided by 10.
76     var text = container.childAtIndex(5);
77     if (accessibilityController.platformName != "atk")
78         text = text.childAtIndex(0);
79     debug('Text role: ' + text.role);
80     debug('TextX/10: ' + Math.floor((pageX(text) - x) / 10));
81     debug('TextY/10: ' + Math.floor(Math.abs(pageY(text) - y) / 10));
82     debug('<br>');
83
84     var image = container.childAtIndex(6);
85     debug('Image role: ' + image.role);
86     debug('Image label: ' + platformValueForW3CName(image, true));
87     debug('ImageX: ' + (pageX(image) - x));
88     debug('ImageY: ' + Math.abs(pageY(image) - y));
89 }
90
91 </script>
92 </body>
93 </html>
94