зеркало из https://github.com/mozilla/gecko-dev.git
Bug 586961. Direct accesskey clicks on label to correct controlled element. r=neil a=betaN
This commit is contained in:
Родитель
37b6b36e3c
Коммит
184d7ad27d
|
@ -90,6 +90,7 @@ _TEST_FILES = \
|
|||
test_bug547996-1.html \
|
||||
test_bug547996-2.xhtml \
|
||||
test_bug556493.html \
|
||||
test_bug586961.xul \
|
||||
$(NULL)
|
||||
|
||||
#bug 585630
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
<?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=586961
|
||||
-->
|
||||
<window title="Mozilla Bug 586961"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<title>Test for Bug 586961</title>
|
||||
<script type="application/javascript" src="/MochiKit/packed.js" />
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"/>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"/>
|
||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=586961">Mozilla Bug 586961</a>
|
||||
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<box onclick="clicked(event)">
|
||||
<label id="controllabel" control="controlbutton" accesskey="k" value="Click here" />
|
||||
<button id="controlbutton" label="Button" />
|
||||
</box>
|
||||
|
||||
<script class="testbody" type="application/javascript;version=1.7"><![CDATA[
|
||||
|
||||
/** Test for Bug 586961 **/
|
||||
|
||||
function clicked(event) {
|
||||
is(event.target.id, "controlbutton", "Accesskey was directed to controlled element.");
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
function test() {
|
||||
var accessKeyDetails = (navigator.platform.indexOf("Mac") >= 0) ?
|
||||
{ ctrlKey : true } :
|
||||
{ altKey : true, shiftKey: true };
|
||||
synthesizeKey("k", accessKeyDetails);
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
SimpleTest.waitForFocus(test, window);
|
||||
|
||||
]]></script>
|
||||
|
||||
</window>
|
|
@ -672,7 +672,7 @@ nsXULElement::PerformAccesskey(PRBool aKeyCausesActivation,
|
|||
!frame->AreAncestorViewsVisible())
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIDOMXULElement> elm(do_QueryInterface(content));
|
||||
nsXULElement* elm = FromContent(content);
|
||||
if (elm) {
|
||||
// Define behavior for each type of XUL element.
|
||||
nsIAtom *tag = content->Tag();
|
||||
|
@ -682,7 +682,7 @@ nsXULElement::PerformAccesskey(PRBool aKeyCausesActivation,
|
|||
nsCOMPtr<nsIDOMElement> element;
|
||||
// for radio buttons, focus the radiogroup instead
|
||||
if (tag == nsGkAtoms::radio) {
|
||||
nsCOMPtr<nsIDOMXULSelectControlItemElement> controlItem(do_QueryInterface(elm));
|
||||
nsCOMPtr<nsIDOMXULSelectControlItemElement> controlItem(do_QueryInterface(content));
|
||||
if (controlItem) {
|
||||
PRBool disabled;
|
||||
controlItem->GetDisabled(&disabled);
|
||||
|
@ -701,7 +701,7 @@ nsXULElement::PerformAccesskey(PRBool aKeyCausesActivation,
|
|||
}
|
||||
}
|
||||
if (aKeyCausesActivation && tag != nsGkAtoms::textbox && tag != nsGkAtoms::menulist) {
|
||||
ClickWithInputSource(nsIDOMNSMouseEvent::MOZ_SOURCE_KEYBOARD);
|
||||
elm->ClickWithInputSource(nsIDOMNSMouseEvent::MOZ_SOURCE_KEYBOARD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
Загрузка…
Ссылка в новой задаче