diff options
Diffstat (limited to 'accessible/tests/mochitest/pivot/test_virtualcursor.html')
-rw-r--r-- | accessible/tests/mochitest/pivot/test_virtualcursor.html | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/accessible/tests/mochitest/pivot/test_virtualcursor.html b/accessible/tests/mochitest/pivot/test_virtualcursor.html new file mode 100644 index 000000000..2fb339964 --- /dev/null +++ b/accessible/tests/mochitest/pivot/test_virtualcursor.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html> +<head> + <title>Tests pivot functionality in virtual cursors</title> + <meta charset="utf-8" /> + <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> + + <script type="application/javascript" + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"> + </script> + <script type="application/javascript" + src="chrome://mochikit/content/chrome-harness.js"> + </script> + + <script type="application/javascript" src="../common.js"></script> + <script type="application/javascript" src="../browser.js"></script> + <script type="application/javascript" src="../events.js"></script> + <script type="application/javascript" src="../role.js"></script> + <script type="application/javascript" src="../states.js"></script> + <script type="application/javascript" src="../pivot.js"></script> + <script type="application/javascript" src="../layout.js"></script> + + <script type="application/javascript"> + var gBrowserWnd = null; + var gQueue = null; + + function doTest() + { + var rootAcc = getAccessible(browserDocument(), [nsIAccessibleDocument]); + ok(rootAcc.virtualCursor, + "root document does not have virtualCursor"); + + var doc = currentTabDocument(); + var docAcc = getAccessible(doc, [nsIAccessibleDocument]); + + // Test that embedded documents have their own virtual cursor. + is(docAcc.childDocumentCount, 1, "Expecting one child document"); + ok(docAcc.getChildDocumentAt(0).virtualCursor, + "child document does not have virtualCursor"); + + gQueue = new eventQueue(); + + gQueue.onFinish = function onFinish() + { + closeBrowserWindow(); + } + + queueTraversalSequence(gQueue, docAcc, HeadersTraversalRule, null, + ['heading-1-1', 'heading-2-1', 'heading-2-2']); + + queueTraversalSequence( + gQueue, docAcc, ObjectTraversalRule, null, + ['Main Title', 'Lorem ipsum ', + 'dolor', ' sit amet. Integer vitae urna leo, id ', + 'semper', ' nulla. ', 'Second Section Title', + 'Sed accumsan luctus lacus, vitae mollis arcu tristique vulputate.', + 'An ', 'embedded', ' document.', 'Hide me', 'Link 1', 'Link 2', + 'Link 3', 'Hello', 'World']); + + // Just a random smoke test to see if our setTextRange works. + gQueue.push( + new setVCRangeInvoker( + docAcc, + getAccessible(doc.getElementById('paragraph-2'), nsIAccessibleText), + [2,6])); + + gQueue.push(new removeVCPositionInvoker( + docAcc, doc.getElementById('hide-me'))); + + gQueue.push(new removeVCRootInvoker( + doc.getElementById('links'))); + + var [x, y] = getBounds(getAccessible(doc.getElementById('heading-1-1'))); + gQueue.push(new moveVCCoordInvoker(docAcc, x + 1, y + 1, true, + HeadersTraversalRule, 'heading-1-1')); + + // Already on the point, so we should not get a move event. + gQueue.push(new moveVCCoordInvoker(docAcc, x + 1, y + 1, true, + HeadersTraversalRule, false)); + + // Attempting a coordinate outside any header, should not move. + gQueue.push(new moveVCCoordInvoker(docAcc, x - 1, y - 1, true, + HeadersTraversalRule, false)); + + // Attempting a coordinate outside any header, should move to null + gQueue.push(new moveVCCoordInvoker(docAcc, x - 1, y - 1, false, + HeadersTraversalRule, null)); + + queueTraversalSequence( + gQueue, docAcc, ObjectTraversalRule, + getAccessible(doc.getElementById('paragraph-1')), + ['Lorem ipsum ', 'dolor', ' sit amet. Integer vitae urna leo, id ', + 'semper', ' nulla. ']); + + gQueue.push(new setModalRootInvoker(docAcc, docAcc.parent, + NS_ERROR_INVALID_ARG)); + + // Put cursor in an ignored subtree + // set isFromUserInput to false, just to test.. + gQueue.push(new setVCPosInvoker(docAcc, null, null, + getAccessible(doc.getElementById("hidden-link")), + false)); + // Next item shoud be outside of that subtree + gQueue.push(new setVCPosInvoker(docAcc, "moveNext", ObjectTraversalRule, "An ")); + + gQueue.invoke(); + } + + SimpleTest.waitForExplicitFinish(); + addLoadEvent(function () { + /* We open a new browser because we need to test with a top-level content + document. */ + openBrowserWindow( + doTest, + getRootDirectory(window.location.href) + "doc_virtualcursor.html"); + }); + </script> +</head> +<body id="body"> + + <a target="_blank" + title="Introduce virtual cursor/soft focus functionality to a11y API" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=698823">Mozilla Bug 698823</a> + <p id="display"></p> + <div id="content" style="display: none"></div> + <pre id="test"> + </pre> +</body> +</html> |