gecko/content/xul/document/test/test_bug199692.xul

98 lines
3.7 KiB
XML

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=199692
-->
<window title="Test for Bug 199692"
id="test_bug199692_xul"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="anon">
<content>
<xul:label id="anon-label" value="ANON"/>
</content>
</binding>
</bindings>
<body id="body" xmlns="http://www.w3.org/1999/xhtml">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=199692">Mozilla Bug 199692</a>
<vbox id="content" style="position: relative;"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<xul:label id="non-anon-label" value="a textbox!:" control="textbox"/>
<xul:textbox id="textbox" multiline="true" rows="4" />
<xul:radiogroup style="outline: 2px solid orange;">
<xul:radio id="unselected-radio" label="Orange" style="outline: 2px solid red;"/>
<xul:radio id="selected-radio" label="Violet" selected="true"/>
<xul:radio id="disabled-radio" label="Yellow" disabled="true"/>
</xul:radiogroup>
<hbox id="bound" style="-moz-binding:url('#anon'); border: 2px solid green;"></hbox>
</vbox>
<pre id="test">
<script class="testbody" type="text/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Before onload, XUL docs have no root frame.
is(document.elementFromPoint(10,10), null,
"Calls to elementFromPoint before onload should return null");
var d = 10;
function middle(e) {
return { "x": e.boxObject.x + e.boxObject.width/2,
"y": e.boxObject.y + e.boxObject.height/2 };
}
function lower_right(e) {
return { "x": e.boxObject.x + e.boxObject.width - d,
"y": e.boxObject.y + e.boxObject.height - d };
}
function upper_left(e) {
return { "x": e.boxObject.x + d,
"y": e.boxObject.y + d };
}
function scrollbar_button(e) { // a bit down from upper right
return { "x": e.boxObject.x + e.boxObject.width - d,
"y": e.boxObject.y + d + 15 };
}
function test(ptFunc, id, message) {
var pt = ptFunc($(id));
var e = document.elementFromPoint(pt.x, pt.y);
ok(e != null, message + " (returned null)");
is(e.id, id, message);
}
function do_test() {
// Avoid hardcoding x,y pixel values, to better deal with differing default
// font sizes or other layout defaults.
test(middle, 'textbox', "Point within textbox should return textbox element");
test(lower_right, 'textbox', "Point on textbox's scrollbar should return textbox element");
test(scrollbar_button, 'textbox', "Point on textbox's scrollbar button should return textbox element");
test(middle, 'non-anon-label', "Point on label should return label");
test(upper_left, 'bound', "Point on XBL content should return element with -moz-binding style");
SimpleTest.finish();
}
$("textbox").setAttribute("value",
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet " +
"lorem ipsum dolor sit amet "); // force scrollbars to appear
addLoadEvent(do_test);
]]>
</script>
</pre>
</body>
</window>