gecko/dom/events/test/test_bug409604.html
Robert O'Callahan eacbf18e37 Bug 946065. Part 5: Move content/events to dom/ and flatten away 'src' directory. r=Ms2ger
--HG--
rename : content/events/src/DOMWheelEvent.cpp => dom/events/DOMWheelEvent.cpp
rename : content/events/src/DOMWheelEvent.h => dom/events/DOMWheelEvent.h
rename : content/events/src/EventTarget.cpp => dom/events/EventTarget.cpp
rename : content/events/public/EventTarget.h => dom/events/EventTarget.h
rename : content/events/public/MutationEvent.h => dom/events/MutationEvent.h
rename : content/events/src/PointerEvent.cpp => dom/events/PointerEvent.cpp
rename : content/events/src/PointerEvent.h => dom/events/PointerEvent.h
rename : content/events/src/SpeechRecognitionError.cpp => dom/events/SpeechRecognitionError.cpp
rename : content/events/src/SpeechRecognitionError.h => dom/events/SpeechRecognitionError.h
rename : content/events/src/TextComposition.cpp => dom/events/TextComposition.cpp
rename : content/events/src/TextComposition.h => dom/events/TextComposition.h
rename : content/events/src/Touch.cpp => dom/events/Touch.cpp
rename : content/events/src/Touch.h => dom/events/Touch.h
rename : content/events/crashtests/104310-1.html => dom/events/crashtests/104310-1.html
rename : content/events/crashtests/116206-1.html => dom/events/crashtests/116206-1.html
rename : content/events/crashtests/135345-1.html => dom/events/crashtests/135345-1.html
rename : content/events/crashtests/422009-1.xhtml => dom/events/crashtests/422009-1.xhtml
rename : content/events/crashtests/457776-1.html => dom/events/crashtests/457776-1.html
rename : content/events/crashtests/496308-1.html => dom/events/crashtests/496308-1.html
rename : content/events/crashtests/682637-1.html => dom/events/crashtests/682637-1.html
rename : content/events/crashtests/crashtests.list => dom/events/crashtests/crashtests.list
rename : content/events/crashtests/eventctor-nulldictionary.html => dom/events/crashtests/eventctor-nulldictionary.html
rename : content/events/crashtests/eventctor-nullstorage.html => dom/events/crashtests/eventctor-nullstorage.html
rename : content/events/crashtests/recursive-DOMNodeInserted.html => dom/events/crashtests/recursive-DOMNodeInserted.html
rename : content/events/crashtests/recursive-onload.html => dom/events/crashtests/recursive-onload.html
rename : content/events/src/moz.build => dom/events/moz.build
rename : content/events/src/nsAsyncDOMEvent.cpp => dom/events/nsAsyncDOMEvent.cpp
rename : content/events/public/nsAsyncDOMEvent.h => dom/events/nsAsyncDOMEvent.h
rename : content/events/src/nsContentEventHandler.cpp => dom/events/nsContentEventHandler.cpp
rename : content/events/src/nsContentEventHandler.h => dom/events/nsContentEventHandler.h
rename : content/events/src/nsDOMAnimationEvent.cpp => dom/events/nsDOMAnimationEvent.cpp
rename : content/events/src/nsDOMAnimationEvent.h => dom/events/nsDOMAnimationEvent.h
rename : content/events/src/nsDOMBeforeUnloadEvent.cpp => dom/events/nsDOMBeforeUnloadEvent.cpp
rename : content/events/src/nsDOMBeforeUnloadEvent.h => dom/events/nsDOMBeforeUnloadEvent.h
rename : content/events/src/nsDOMClipboardEvent.cpp => dom/events/nsDOMClipboardEvent.cpp
rename : content/events/src/nsDOMClipboardEvent.h => dom/events/nsDOMClipboardEvent.h
rename : content/events/src/nsDOMCommandEvent.cpp => dom/events/nsDOMCommandEvent.cpp
rename : content/events/src/nsDOMCommandEvent.h => dom/events/nsDOMCommandEvent.h
rename : content/events/src/nsDOMCompositionEvent.cpp => dom/events/nsDOMCompositionEvent.cpp
rename : content/events/src/nsDOMCompositionEvent.h => dom/events/nsDOMCompositionEvent.h
rename : content/events/src/nsDOMDataContainerEvent.cpp => dom/events/nsDOMDataContainerEvent.cpp
rename : content/events/src/nsDOMDataContainerEvent.h => dom/events/nsDOMDataContainerEvent.h
rename : content/events/src/nsDOMDataTransfer.cpp => dom/events/nsDOMDataTransfer.cpp
rename : content/events/src/nsDOMDataTransfer.h => dom/events/nsDOMDataTransfer.h
rename : content/events/src/nsDOMDeviceMotionEvent.cpp => dom/events/nsDOMDeviceMotionEvent.cpp
rename : content/events/src/nsDOMDeviceMotionEvent.h => dom/events/nsDOMDeviceMotionEvent.h
rename : content/events/src/nsDOMDragEvent.cpp => dom/events/nsDOMDragEvent.cpp
rename : content/events/src/nsDOMDragEvent.h => dom/events/nsDOMDragEvent.h
rename : content/events/src/nsDOMEvent.cpp => dom/events/nsDOMEvent.cpp
rename : content/events/src/nsDOMEvent.h => dom/events/nsDOMEvent.h
rename : content/events/src/nsDOMEventTargetHelper.cpp => dom/events/nsDOMEventTargetHelper.cpp
rename : content/events/src/nsDOMEventTargetHelper.h => dom/events/nsDOMEventTargetHelper.h
rename : content/events/src/nsDOMFocusEvent.cpp => dom/events/nsDOMFocusEvent.cpp
rename : content/events/src/nsDOMFocusEvent.h => dom/events/nsDOMFocusEvent.h
rename : content/events/public/nsDOMKeyNameList.h => dom/events/nsDOMKeyNameList.h
rename : content/events/src/nsDOMKeyboardEvent.cpp => dom/events/nsDOMKeyboardEvent.cpp
rename : content/events/src/nsDOMKeyboardEvent.h => dom/events/nsDOMKeyboardEvent.h
rename : content/events/src/nsDOMMessageEvent.cpp => dom/events/nsDOMMessageEvent.cpp
rename : content/events/src/nsDOMMessageEvent.h => dom/events/nsDOMMessageEvent.h
rename : content/events/src/nsDOMMouseEvent.cpp => dom/events/nsDOMMouseEvent.cpp
rename : content/events/src/nsDOMMouseEvent.h => dom/events/nsDOMMouseEvent.h
rename : content/events/src/nsDOMMouseScrollEvent.cpp => dom/events/nsDOMMouseScrollEvent.cpp
rename : content/events/src/nsDOMMouseScrollEvent.h => dom/events/nsDOMMouseScrollEvent.h
rename : content/events/src/nsDOMMutationEvent.cpp => dom/events/nsDOMMutationEvent.cpp
rename : content/events/src/nsDOMMutationEvent.h => dom/events/nsDOMMutationEvent.h
rename : content/events/src/nsDOMNotifyAudioAvailableEvent.cpp => dom/events/nsDOMNotifyAudioAvailableEvent.cpp
rename : content/events/src/nsDOMNotifyAudioAvailableEvent.h => dom/events/nsDOMNotifyAudioAvailableEvent.h
rename : content/events/src/nsDOMNotifyPaintEvent.cpp => dom/events/nsDOMNotifyPaintEvent.cpp
rename : content/events/src/nsDOMNotifyPaintEvent.h => dom/events/nsDOMNotifyPaintEvent.h
rename : content/events/src/nsDOMScrollAreaEvent.cpp => dom/events/nsDOMScrollAreaEvent.cpp
rename : content/events/src/nsDOMScrollAreaEvent.h => dom/events/nsDOMScrollAreaEvent.h
rename : content/events/src/nsDOMSimpleGestureEvent.cpp => dom/events/nsDOMSimpleGestureEvent.cpp
rename : content/events/src/nsDOMSimpleGestureEvent.h => dom/events/nsDOMSimpleGestureEvent.h
rename : content/events/src/nsDOMTextEvent.cpp => dom/events/nsDOMTextEvent.cpp
rename : content/events/src/nsDOMTextEvent.h => dom/events/nsDOMTextEvent.h
rename : content/events/src/nsDOMTouchEvent.cpp => dom/events/nsDOMTouchEvent.cpp
rename : content/events/src/nsDOMTouchEvent.h => dom/events/nsDOMTouchEvent.h
rename : content/events/src/nsDOMTransitionEvent.cpp => dom/events/nsDOMTransitionEvent.cpp
rename : content/events/src/nsDOMTransitionEvent.h => dom/events/nsDOMTransitionEvent.h
rename : content/events/src/nsDOMUIEvent.cpp => dom/events/nsDOMUIEvent.cpp
rename : content/events/src/nsDOMUIEvent.h => dom/events/nsDOMUIEvent.h
rename : content/events/src/nsDOMXULCommandEvent.cpp => dom/events/nsDOMXULCommandEvent.cpp
rename : content/events/src/nsDOMXULCommandEvent.h => dom/events/nsDOMXULCommandEvent.h
rename : content/events/src/nsEventDispatcher.cpp => dom/events/nsEventDispatcher.cpp
rename : content/events/public/nsEventDispatcher.h => dom/events/nsEventDispatcher.h
rename : content/events/src/nsEventListenerManager.cpp => dom/events/nsEventListenerManager.cpp
rename : content/events/src/nsEventListenerManager.h => dom/events/nsEventListenerManager.h
rename : content/events/src/nsEventListenerService.cpp => dom/events/nsEventListenerService.cpp
rename : content/events/src/nsEventListenerService.h => dom/events/nsEventListenerService.h
rename : content/events/public/nsEventNameList.h => dom/events/nsEventNameList.h
rename : content/events/src/nsEventStateManager.cpp => dom/events/nsEventStateManager.cpp
rename : content/events/src/nsEventStateManager.h => dom/events/nsEventStateManager.h
rename : content/events/public/nsEventStates.h => dom/events/nsEventStates.h
rename : content/events/public/nsIEventListenerService.idl => dom/events/nsIEventListenerService.idl
rename : dom/base/nsIJSEventListener.h => dom/events/nsIJSEventListener.h
rename : content/events/src/nsIMEStateManager.cpp => dom/events/nsIMEStateManager.cpp
rename : content/events/src/nsIMEStateManager.h => dom/events/nsIMEStateManager.h
rename : content/events/public/nsIPrivateTextEvent.h => dom/events/nsIPrivateTextEvent.h
rename : content/events/public/nsIPrivateTextRange.h => dom/events/nsIPrivateTextRange.h
rename : dom/src/events/nsJSEventListener.cpp => dom/events/nsJSEventListener.cpp
rename : dom/src/events/nsJSEventListener.h => dom/events/nsJSEventListener.h
rename : content/events/src/nsPaintRequest.cpp => dom/events/nsPaintRequest.cpp
rename : content/events/src/nsPaintRequest.h => dom/events/nsPaintRequest.h
rename : content/events/src/nsPrivateTextRange.cpp => dom/events/nsPrivateTextRange.cpp
rename : content/events/src/nsPrivateTextRange.h => dom/events/nsPrivateTextRange.h
rename : content/events/public/nsVKList.h => dom/events/nsVKList.h
rename : content/events/test/bug226361_iframe.xhtml => dom/events/test/bug226361_iframe.xhtml
rename : content/events/test/bug299673.js => dom/events/test/bug299673.js
rename : content/events/test/bug322588-popup.html => dom/events/test/bug322588-popup.html
rename : content/events/test/bug415498-doc1.html => dom/events/test/bug415498-doc1.html
rename : content/events/test/bug415498-doc2.html => dom/events/test/bug415498-doc2.html
rename : content/events/test/bug426082.html => dom/events/test/bug426082.html
rename : content/events/test/bug457672.html => dom/events/test/bug457672.html
rename : content/events/test/bug591249_iframe.xul => dom/events/test/bug591249_iframe.xul
rename : content/events/test/bug602962.xul => dom/events/test/bug602962.xul
rename : content/events/test/bug656379-1.html => dom/events/test/bug656379-1.html
rename : content/events/test/chrome.ini => dom/events/test/chrome.ini
rename : content/events/test/empty.js => dom/events/test/empty.js
rename : content/events/test/file_bug679494.html => dom/events/test/file_bug679494.html
rename : content/events/test/mochitest.ini => dom/events/test/mochitest.ini
rename : content/events/test/test_addEventListenerExtraArg.html => dom/events/test/test_addEventListenerExtraArg.html
rename : content/events/test/test_all_synthetic_events.html => dom/events/test/test_all_synthetic_events.html
rename : content/events/test/test_bug226361.xhtml => dom/events/test/test_bug226361.xhtml
rename : content/events/test/test_bug238987.html => dom/events/test/test_bug238987.html
rename : content/events/test/test_bug288392.html => dom/events/test/test_bug288392.html
rename : content/events/test/test_bug299673-1.html => dom/events/test/test_bug299673-1.html
rename : content/events/test/test_bug299673-2.html => dom/events/test/test_bug299673-2.html
rename : content/events/test/test_bug322588.html => dom/events/test/test_bug322588.html
rename : content/events/test/test_bug328885.html => dom/events/test/test_bug328885.html
rename : content/events/test/test_bug336682.js => dom/events/test/test_bug336682.js
rename : content/events/test/test_bug336682_1.html => dom/events/test/test_bug336682_1.html
rename : content/events/test/test_bug336682_2.xul => dom/events/test/test_bug336682_2.xul
rename : content/events/test/test_bug367781.html => dom/events/test/test_bug367781.html
rename : content/events/test/test_bug368835.html => dom/events/test/test_bug368835.html
rename : content/events/test/test_bug379120.html => dom/events/test/test_bug379120.html
rename : content/events/test/test_bug391568.xhtml => dom/events/test/test_bug391568.xhtml
rename : content/events/test/test_bug402089.html => dom/events/test/test_bug402089.html
rename : content/events/test/test_bug405632.html => dom/events/test/test_bug405632.html
rename : content/events/test/test_bug409604.html => dom/events/test/test_bug409604.html
rename : content/events/test/test_bug412567.html => dom/events/test/test_bug412567.html
rename : content/events/test/test_bug415498.xul => dom/events/test/test_bug415498.xul
rename : content/events/test/test_bug422132.html => dom/events/test/test_bug422132.html
rename : content/events/test/test_bug426082.html => dom/events/test/test_bug426082.html
rename : content/events/test/test_bug427537.html => dom/events/test/test_bug427537.html
rename : content/events/test/test_bug428988.html => dom/events/test/test_bug428988.html
rename : content/events/test/test_bug432698.html => dom/events/test/test_bug432698.html
rename : content/events/test/test_bug443985.html => dom/events/test/test_bug443985.html
rename : content/events/test/test_bug447736.html => dom/events/test/test_bug447736.html
rename : content/events/test/test_bug448602.html => dom/events/test/test_bug448602.html
rename : content/events/test/test_bug450876.html => dom/events/test/test_bug450876.html
rename : content/events/test/test_bug456273.html => dom/events/test/test_bug456273.html
rename : content/events/test/test_bug457672.html => dom/events/test/test_bug457672.html
rename : content/events/test/test_bug489671.html => dom/events/test/test_bug489671.html
rename : content/events/test/test_bug493251.html => dom/events/test/test_bug493251.html
rename : content/events/test/test_bug502818.html => dom/events/test/test_bug502818.html
rename : content/events/test/test_bug508479.html => dom/events/test/test_bug508479.html
rename : content/events/test/test_bug517851.html => dom/events/test/test_bug517851.html
rename : content/events/test/test_bug534833.html => dom/events/test/test_bug534833.html
rename : content/events/test/test_bug545268.html => dom/events/test/test_bug545268.html
rename : content/events/test/test_bug547996-1.html => dom/events/test/test_bug547996-1.html
rename : content/events/test/test_bug547996-2.xhtml => dom/events/test/test_bug547996-2.xhtml
rename : content/events/test/test_bug556493.html => dom/events/test/test_bug556493.html
rename : content/events/test/test_bug563329.html => dom/events/test/test_bug563329.html
rename : content/events/test/test_bug574663.html => dom/events/test/test_bug574663.html
rename : content/events/test/test_bug586961.xul => dom/events/test/test_bug586961.xul
rename : content/events/test/test_bug591249.xul => dom/events/test/test_bug591249.xul
rename : content/events/test/test_bug591815.html => dom/events/test/test_bug591815.html
rename : content/events/test/test_bug593959.html => dom/events/test/test_bug593959.html
rename : content/events/test/test_bug602962.xul => dom/events/test/test_bug602962.xul
rename : content/events/test/test_bug603008.html => dom/events/test/test_bug603008.html
rename : content/events/test/test_bug605242.html => dom/events/test/test_bug605242.html
rename : content/events/test/test_bug607464.html => dom/events/test/test_bug607464.html
rename : content/events/test/test_bug613634.html => dom/events/test/test_bug613634.html
rename : content/events/test/test_bug615597.html => dom/events/test/test_bug615597.html
rename : content/events/test/test_bug617528.xul => dom/events/test/test_bug617528.xul
rename : content/events/test/test_bug624127.html => dom/events/test/test_bug624127.html
rename : content/events/test/test_bug635465.html => dom/events/test/test_bug635465.html
rename : content/events/test/test_bug641477.html => dom/events/test/test_bug641477.html
rename : content/events/test/test_bug648573.html => dom/events/test/test_bug648573.html
rename : content/events/test/test_bug650493.html => dom/events/test/test_bug650493.html
rename : content/events/test/test_bug656379-1.html => dom/events/test/test_bug656379-1.html
rename : content/events/test/test_bug656379-2.html => dom/events/test/test_bug656379-2.html
rename : content/events/test/test_bug656954.html => dom/events/test/test_bug656954.html
rename : content/events/test/test_bug659071.html => dom/events/test/test_bug659071.html
rename : content/events/test/test_bug659350.html => dom/events/test/test_bug659350.html
rename : content/events/test/test_bug662678.html => dom/events/test/test_bug662678.html
rename : content/events/test/test_bug667612.html => dom/events/test/test_bug667612.html
rename : content/events/test/test_bug667919-1.html => dom/events/test/test_bug667919-1.html
rename : content/events/test/test_bug679494.xul => dom/events/test/test_bug679494.xul
rename : content/events/test/test_bug689564.html => dom/events/test/test_bug689564.html
rename : content/events/test/test_bug698929.html => dom/events/test/test_bug698929.html
rename : content/events/test/test_bug741666.html => dom/events/test/test_bug741666.html
rename : content/events/test/test_bug742376.html => dom/events/test/test_bug742376.html
rename : content/events/test/test_bug812744.html => dom/events/test/test_bug812744.html
rename : content/events/test/test_bug822898.html => dom/events/test/test_bug822898.html
rename : content/events/test/test_bug847597.html => dom/events/test/test_bug847597.html
rename : content/events/test/test_bug855741.html => dom/events/test/test_bug855741.html
rename : content/events/test/test_bug864040.html => dom/events/test/test_bug864040.html
rename : content/events/test/test_bug930374-chrome.html => dom/events/test/test_bug930374-chrome.html
rename : content/events/test/test_bug930374-content.html => dom/events/test/test_bug930374-content.html
rename : content/events/test/test_bug944011.html => dom/events/test/test_bug944011.html
rename : content/events/test/test_bug944847.html => dom/events/test/test_bug944847.html
rename : content/events/test/test_bug946632.html => dom/events/test/test_bug946632.html
rename : content/events/test/test_clickevent_on_input.html => dom/events/test/test_clickevent_on_input.html
rename : content/events/test/test_continuous_wheel_events.html => dom/events/test/test_continuous_wheel_events.html
rename : content/events/test/test_dblclick_explicit_original_target.html => dom/events/test/test_dblclick_explicit_original_target.html
rename : content/events/test/test_dom_keyboard_event.html => dom/events/test/test_dom_keyboard_event.html
rename : content/events/test/test_dom_mouse_event.html => dom/events/test/test_dom_mouse_event.html
rename : content/events/test/test_dom_wheel_event.html => dom/events/test/test_dom_wheel_event.html
rename : content/events/test/test_draggableprop.html => dom/events/test/test_draggableprop.html
rename : content/events/test/test_dragstart.html => dom/events/test/test_dragstart.html
rename : content/events/test/test_eventctors.html => dom/events/test/test_eventctors.html
rename : content/events/test/test_eventctors.xul => dom/events/test/test_eventctors.xul
rename : content/events/test/test_focus_disabled.html => dom/events/test/test_focus_disabled.html
rename : content/events/test/test_messageEvent.html => dom/events/test/test_messageEvent.html
rename : content/events/test/test_moz_mouse_pixel_scroll_event.html => dom/events/test/test_moz_mouse_pixel_scroll_event.html
rename : content/events/test/test_wheel_default_action.html => dom/events/test/test_wheel_default_action.html
rename : content/events/test/window_bug493251.html => dom/events/test/window_bug493251.html
rename : content/events/test/window_bug617528.xul => dom/events/test/window_bug617528.xul
rename : content/events/test/window_bug659071.html => dom/events/test/window_bug659071.html
rename : content/events/test/window_wheel_default_action.html => dom/events/test/window_wheel_default_action.html
extra : rebase_source : 5eb1db8f1791b8842ddc683e3c0ea13e4e3a933b
2014-01-10 16:03:25 +13:00

394 lines
16 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=409604
-->
<head>
<title>Test for Bug 409604</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body id="body">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=409604">Mozilla Bug 409604</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 409604 **/
var modifier = SpecialPowers.Ci.nsIDOMEvent.ALT_MASK |
SpecialPowers.Ci.nsIDOMEvent.SHIFT_MASK;
var expectedFocus = "a,c,d,e,f,g,h,i,j,k,l,m,n,p,x,y";
// XXX the "map" test is causing trouble, see bug 433089
var focusArray = expectedFocus.split(",");
var unfocusableElementId = "invalid";
var unfocusableTags = [
{tag: "abbr", content: "text", attribs: {title: "something"}},
{tag: "acronym", content: "text", attribs: {title: "something"}},
{tag: "address", content: "text"},
{tag: "b", content: "text"},
{tag: "bdo", content: "text"},
{tag: "big", content: "text"},
{tag: "blockquote", content: "text"},
{tag: "caption", content: "text", parent: "table", where: "first"},
{tag: "cite", content: "text"},
{tag: "code", content: "text"},
{tag: "dd", content: "text", parent: "dl"},
{tag: "del", content: "text"},
{tag: "dfn", content: "text", attribs: {title: "something"}},
{tag: "div", content: "text"},
{tag: "dl", content: "<dd>text</dd>", parent: "dl"},
{tag: "dt", content: "text", parent: "dl"},
{tag: "em", content: "text"},
{tag: "fieldset", content: "text"},
{tag: "form", content: "text", attribs: {action: "any.html"}},
{tag: "h1", content: "text"},
{tag: "h2", content: "text"},
{tag: "h3", content: "text"},
{tag: "h4", content: "text"},
{tag: "h5", content: "text"},
{tag: "h6", content: "text"},
{tag: "hr"},
{tag: "i", content: "text"},
{tag: "img", attribs: {src: "any.png", alt: "image"}},
{tag: "ins", content: "text"},
{tag: "kbd", content: "text"},
{tag: "li", content: "text", parent: "ol"},
{tag: "li", content: "text", parent: "ul"},
{tag: "noscript", content: "text"},
{tag: "ol", content: "<li>text</li>"},
{tag: "optgroup", content: "<option>text</option>", attribs: {label: "some label"}, parent: "select"},
{tag: "option", content: "text", parent: "select"},
{tag: "p", content: "text"},
{tag: "pre", content: "text"},
{tag: "q", content: "text"},
{tag: "samp", content: "text"},
{tag: "small", content: "text"},
{tag: "span", content: "text"},
{tag: "strong", content: "text"},
{tag: "sub", content: "text"},
{tag: "sup", content: "text"},
{tag: "tt", content: "text"},
{tag: "ul", content: "<li>text</li>"},
{tag: "var", content: "text"}
];
var invalidElements = [
"body",
"col",
"colgroup",
// XXX the "map" test is causing trouble, see bug 433089
// "map",
"table",
"tbody",
"td",
"tfoot",
"th",
"thead",
"tr"
];
// ui.key.contentAccess must be set to value 5 before running the test.
function setOrRestoreContentAccess(newValue) {
if (!newValue) {
SpecialPowers.clearUserPref("ui.key.contentAccess");
} else {
SpecialPowers.setIntPref("ui.key.contentAccess", newValue);
}
}
function handleFocus(e) {
ok("accessKey" in e, "(focus) accesskey property not found on element");
var expected = focusArray.shift();
// "k" and "n" are a special cases because the element receiving the focus
// is not the element which has the accesskey.
if (expected == "k" || expected == "n") {
ok(e.value == "test for label", "(focus) unexpected element: " + e.value +
" expected: " + "test for label");
// "l" is a special case because the element receiving the focus is not
// the element which has the accesskey.
} else if (expected == "l") {
ok(e.value == "test for legend", "(focus) unexpected element: " + e.value +
" expected: " + "test for legend");
} else {
ok(expected == e.accessKey, "(focus) unexpected element: " + e.accessKey +
" expected: " + expected);
}
}
function handleClick(e) {
ok("accessKey" in e, "(click) accesskey property not found on element");
}
function handleInvalid(e) {
ok("accessKey" in e, "(invalid) accesskey property not found on element");
ok(false, "(invalid) accesskey should not have any effect on this element: " +
e.localName);
}
function pressAccessKey(key) {
var utils = SpecialPowers.DOMWindowUtils;
utils.sendKeyEvent("keydown", key, key, modifier);
utils.sendKeyEvent("keypress", key, key, modifier);
utils.sendKeyEvent("keyup", key, key, modifier);
}
function testFocusableElements() {
for (var code = "a".charCodeAt(0); code <= "y".charCodeAt(0); ++ code) {
// XXX the "map" test is causing trouble, see bug 433089
if (code == "b".charCodeAt(0))
continue;
pressAccessKey(code);
}
ok(focusArray.length == 0, "(focus) unhandled elements remaining: " + focusArray.join(","));
}
function createUnfocusableElement(elem, accesskey) {
ok("tag" in elem, "invalid object passed to createUnfocusableElement: " + elem.toString());
var e = document.createElement(elem.tag);
if ("content" in elem) {
e.innerHTML = elem.content;
}
if ("attribs" in elem) {
for (var attr in elem.attribs) {
e.setAttribute(attr, elem.attribs[attr]);
}
}
e.setAttribute("accesskey", accesskey);
e.setAttribute("onclick", "handleClick(event.target); event.preventDefault();");
e.setAttribute("onfocus", "handleInvalid(event.target);");
var parent = null;
var elementToInsert = null;
if ("parent" in elem) {
parent = document.getElementById(elem.parent);
elementToInsert = e;
} else {
parent = document.getElementById("tbody");
elementToInsert = document.createElement("tr");
var td = document.createElement("td");
td.textContent = elem.tag;
elementToInsert.appendChild(td);
td = document.createElement("td");
td.appendChild(e);
elementToInsert.appendChild(td);
}
ok(parent != null, "parent element not specified for element: " + elem.tag);
ok(elementToInsert != null, "elementToInsert not specified for element: " + elem.tag);
elementToInsert.setAttribute("id", unfocusableElementId);
if ("where" in elem) {
if (elem.where == "first") {
parent.insertBefore(elementToInsert, parent.firstChild);
} else {
ok(false, "invalid where value specified for element: " + elem.tag);
}
} else {
parent.appendChild(elementToInsert);
}
}
function destroyUnfocusableElement() {
var el = document.getElementById(unfocusableElementId);
ok(el != null, "unfocusable element not found");
el.parentNode.removeChild(el);
ok(document.getElementById(unfocusableElementId) == null, "unfocusable element not properly removed");
}
function testUnfocusableElements() {
var i, e;
for (i = 0; i < unfocusableTags.length; ++ i) {
createUnfocusableElement(unfocusableTags[i], "z");
pressAccessKey("z".charCodeAt(0));
destroyUnfocusableElement();
}
for (i = 0; i < invalidElements.length; ++ i) {
e = document.getElementById(invalidElements[i]);
ok(e != null, "element with ID " + invalidElements[i] + " not found");
e.setAttribute("accesskey", "z");
e.setAttribute("onclick", "handleClick(event.target); event.preventDefault();");
e.setAttribute("onfocus", "handleInvalid(event.target);");
pressAccessKey("z".charCodeAt(0));
e.removeAttribute("accesskey");
e.removeAttribute("onclick");
e.removeAttribute("onfocus");
}
}
function start() {
testFocusableElements();
testUnfocusableElements();
setOrRestoreContentAccess(0);
SimpleTest.finish();
}
function doTest() {
setOrRestoreContentAccess(5);
setTimeout(start, 100);
}
SimpleTest.waitForExplicitFinish();
addLoadEvent(doTest);
</script>
</pre>
<table id="table">
<thead id="thead">
<tr id="tr"><th id="th">Test header</th><th></th></tr>
</thead>
<tfoot id="tfoot">
<tr><td id="td">Test footer</td><td></td></tr>
</tfoot>
<tbody id="tbody">
<colgroup id="colgroup">
<col id="col"></col>
<col></col>
</colgroup>
<tr>
<td>a</td><td><a href="#" onclick="handleClick(event.target); return false;" accesskey="a" onfocus="handleFocus(event.target);">test link"</a></td>
</tr>
<!-- the "map" test is causing trouble, see bug 433089
<tr>
<td>area</td><td><img src="about:logo" width="300" height="236" usemap="#map">
<map id="map" name="map"><area shape="rect" coords="0,0,82,126" href="#"
onclick="handleClick(event.target); return false;" accesskey="b"></map>
</td>
</tr>
-->
<tr>
<td>button</td><td><button onclick="handleClick(event.target);" accesskey="c" onfocus="handleFocus(event.target);">test button"</button></td>
</tr>
<tr>
<td>input type="text"</td><td><input type="text" value="" onclick="handleClick(event.target);" onfocus="handleFocus(event.target);" accesskey="d"></td>
</tr>
<tr>
<td>input type="button"</td><td><input type="button" value="type='button'" onclick="handleClick(event.target);" onfocus="handleFocus(event.target);" accesskey="e"></td>
</tr>
<tr>
<td>input type="checkbox"</td><td><input type="checkbox" onclick="handleClick(event.target);" onfocus="handleFocus(event.target)" accesskey="f"></td>
</tr>
<tr>
<td>input type="radio"</td><td><input type="radio" name="radio" onclick="handleClick(event.target);" onfocus="handleFocus(event.target);" accesskey="g"></td>
</tr>
<tr>
<td>input type="password"</td><td><input type="password" onclick="handleClick(event.target);" onfocus="handleFocus(event.target);" accesskey="h"></td>
</tr>
<tr>
<td>input type="submit"</td><td><input type="submit" value="type='submit'" onclick="handleClick(event.target); return false;"
onfocus="handleFocus(event.target);" accesskey="i"></td>
</tr>
<tr>
<td>input type="reset"</td><td><input type="submit" value="type='reset'" onclick="handleClick(event.target);"
onfocus="handleFocus(event.target);" accesskey="j"></td>
</tr>
<tr>
<td>label</td><td><label accesskey="k" onclick="handleClick(event.target);" onfocus="handleInvalid(event.target);">test label
<input type="text" value="test for label" onfocus="handleFocus(event.target);" onclick="handleClick(event.target);"></label></td>
</tr>
<tr>
<td>legend</td><td><fieldset><legend accesskey="l">test legend</legend>
<input type="text" value="test for legend" onfocus="handleFocus(event.target);" onclick="handleClick(event.target);" ></fieldset></td>
</tr>
<tr>
<td>textarea</td><td><textarea onfocus="handleFocus(event.target);" onclick="handleClick(event.target);" accesskey="m">test text</textarea></td>
</tr>
<tr>
<td>label (label invisible)</td><td><label for="txt1" accesskey="n" style="display:none"
onclick="handleClick(event.target);" onfocus="handleInvalid(event.target);">test label</label>
<input type="text" id="txt1" value="test for label" onclick="handleClick(event.target);" onfocus="handleFocus(event.target);"></td>
</tr>
<tr>
<td>label (control invisible)</td><td><label for="txt2" accesskey="o"
onclick="handleClick(event.target);" onfocus="handleInvalid(event.target);">test label</label>
<input type="text" id="txt2" value="test for label" onclick="handleClick(event.target);"
onfocus="handleInvalid(event.target);" style="display:none"></td>
</tr>
<tr>
<td>select</td>
<td>
<select onclick="handleClick(event.target);" onfocus="handleFocus(event.target)" accesskey="p"><option>option</option></select>
</td>
</tr>
<tr>
<td>object</td>
<td>
<object onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="q">an object</object>
</td>
</tr>
<tr>
<td>a without href</td>
<td>
<a onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="r">an object</object>
</td>
</tr>
<tr>
<td>disabled button</td>
<td>
<button disabled="" onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="s">disabled</button>
</td>
</tr>
<tr>
<td>disabled input</td>
<td>
<input disabled="" onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="t"></input>
</td>
</tr>
<tr>
<td>hidden input</td>
<td>
<input type="hidden" onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="u">disabled</input>
</td>
</tr>
<tr>
<td>disabled select</td>
<td>
<select disabled onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="v">
<option>disabled</option>
</select>
</td>
</tr>
<tr>
<td>disabled textarea</td>
<td>
<textarea disabled onclick="handleClick(event.target);" onfocus="handleInvalid(event.target)" accesskey="w">disabled</textarea>
</td>
</tr>
<tr>
<td>scrollable div(focusable)</td>
<td>
<div onclick="handleClick(event.target);" onfocus="handleFocus(event.target)" accesskey="x" style="height: 50px; overflow: auto;">
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy
dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy
dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy
dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog.
</div>
</td>
</tr>
<tr>
<td>contenteditable div(focusable)</td>
<td>
<div onclick="handleClick(event.target);" onfocus="handleFocus(event.target)" accesskey="y" contenteditable="true">
Test text.....
</div>
</td>
</tr>
</tbody>
</table>
<dl id="dl"></dl>
<ul id="ul"></ul>
<ol id="ol"></ol>
<select id="select"></select>
</body>
</html>