summaryrefslogtreecommitdiffstats
path: root/toolkit/components/satchel/test/test_form_autocomplete_with_list.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/satchel/test/test_form_autocomplete_with_list.html')
-rw-r--r--toolkit/components/satchel/test/test_form_autocomplete_with_list.html506
1 files changed, 0 insertions, 506 deletions
diff --git a/toolkit/components/satchel/test/test_form_autocomplete_with_list.html b/toolkit/components/satchel/test/test_form_autocomplete_with_list.html
deleted file mode 100644
index 04fb080c9..000000000
--- a/toolkit/components/satchel/test/test_form_autocomplete_with_list.html
+++ /dev/null
@@ -1,506 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for Form History Autocomplete</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
- <script type="text/javascript" src="satchel_common.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-Form History test: form field autocomplete
-<p id="display"></p>
-
-<!-- we presumably can't hide the content for this test. -->
-<div id="content">
-
- <!-- normal, basic form -->
- <form id="form1" onsubmit="return false;">
- <input list="suggest" type="text" name="field1">
- <button type="submit">Submit</button>
- </form>
-
- <!-- form with autocomplete=off on input -->
- <form id="form3" onsubmit="return false;">
- <input list="suggest" type="text" name="field2" autocomplete="off">
- <button type="submit">Submit</button>
- </form>
-
- <!-- form with autocomplete=off on form -->
- <form id="form4" autocomplete="off" onsubmit="return false;">
- <input list="suggest" type="text" name="field2">
- <button type="submit">Submit</button>
- </form>
-
- <datalist id="suggest">
- <option value="Google" label="PASS1">FAIL</option>
- <option value="Reddit">PASS2</option>
- <option value="final"></option>
- </datalist>
-</div>
-
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-/** Test for Form History autocomplete **/
-
-var input = $_(1, "field1");
-const shiftModifier = Components.interfaces.nsIDOMEvent.SHIFT_MASK;
-
-function setupFormHistory(aCallback) {
- updateFormHistory([
- { op : "remove" },
- { op : "add", fieldname : "field1", value : "historyvalue" },
- { op : "add", fieldname : "field2", value : "othervalue" },
- ], aCallback);
-}
-
-function setForm(value) {
- input.value = value;
- input.focus();
-}
-
-// Restore the form to the default state.
-function restoreForm() {
- setForm("");
-}
-
-// Check for expected form data.
-function checkForm(expectedValue) {
- var formID = input.parentNode.id;
- is(input.value, expectedValue, "Checking " + formID + " input");
-}
-
-var testNum = 0;
-var prevValue;
-var expectingPopup = false;
-
-function expectPopup() {
- info("expecting popup for test " + testNum);
- expectingPopup = true;
-}
-
-function popupShownListener() {
- info("popup shown for test " + testNum);
- if (expectingPopup) {
- expectingPopup = false;
- SimpleTest.executeSoon(runTest);
- }
- else {
- ok(false, "Autocomplete popup not expected during test " + testNum);
- }
-}
-
-registerPopupShownListener(popupShownListener);
-
-/*
-* Main section of test...
-*
-* This is a bit hacky, as many operations happen asynchronously.
-* Various mechanisms call runTests as a result of operations:
-* - set expectingPopup to true, and the next test will occur when the autocomplete popup is shown
-* - call waitForMenuChange(x) to run the next test when the autocomplete popup to have x items in it
-*/
-function runTest() {
- testNum++;
-
- info("Starting test #" + testNum);
-
- switch (testNum) {
- case 1:
- // Make sure initial form is empty.
- checkForm("");
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
- case 2:
- checkMenuEntries(["historyvalue", "PASS1", "PASS2", "final"], testNum);
- // Check first entry
- doKey("down");
- checkForm(""); // value shouldn't update
- doKey("return"); // not "enter"!
- checkForm("historyvalue");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 3:
- // Check second entry
- doKey("down");
- doKey("down");
- doKey("return"); // not "enter"!
- checkForm("Google");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 4:
- // Check third entry
- doKey("down");
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("Reddit");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 5:
- // Check fourth entry
- doKey("down");
- doKey("down");
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("final");
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 6:
- // Delete the first entry (of 3)
- doKey("down");
- doKey("delete", shiftModifier);
- waitForMenuChange(3);
- break;
-
- case 7:
- checkForm("");
- countEntries("field1", "historyvalue",
- function (num) {
- ok(!num, testNum + " checking that form history value was deleted");
- runTest();
- });
- break;
-
- case 8:
- doKey("return");
- checkForm("Google")
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 9:
- // Test deletion
- checkMenuEntries(["PASS1", "PASS2", "final"], testNum);
- // Check the new first entry (of 3)
- doKey("down");
- doKey("return");
- checkForm("Google");
-
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 10:
- // Test autocompletion of datalists with cached results.
- sendString("PAS");
- waitForMenuChange(2);
- break;
-
- case 11:
- // Continuation of test 10
- sendString("S1");
- waitForMenuChange(1);
- break;
-
- case 12:
- doKey("down");
- doKey("return");
- checkForm("Google");
-
- // Trigger autocomplete popup
- // Look at form 3, try to trigger autocomplete popup
- input.value = "";
- input = $_(3, "field2");
- testNum = 99;
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 100:
- checkMenuEntries(["PASS1", "PASS2", "final"], testNum);
- // Check first entry
- doKey("down");
- checkForm(""); // value shouldn't update
- doKey("return"); // not "enter"!
- checkForm("Google");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 101:
- // Check second entry
- doKey("down");
- doKey("down");
- doKey("return"); // not "enter"!
- checkForm("Reddit");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 102:
- // Check third entry
- doKey("down");
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("final");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 103:
- checkMenuEntries(["PASS1", "PASS2", "final"], testNum);
- // Check first entry
- doKey("down");
- checkForm(""); // value shouldn't update
- doKey("return"); // not "enter"!
- checkForm("Google");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 104:
- // Check second entry
- doKey("down");
- doKey("down");
- doKey("return"); // not "enter"!
- checkForm("Reddit");
-
- // Trigger autocomplete popup
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 105:
- // Check third entry
- doKey("down");
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("final");
-
- testNum = 199;
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- // Test dynamic updates.
- // For some reasons, when there is an update of the list, the selection is
- // lost so we need to go down like if we were at the beginning of the list
- // again.
- case 200:
- // Removing the second element while on the first then going down and
- // push enter. Value should be one from the third suggesion.
- doKey("down");
- var datalist = document.getElementById('suggest');
- var toRemove = datalist.children[1]
- datalist.removeChild(toRemove);
-
- SimpleTest.executeSoon(function() {
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("final");
-
- // Restore the element.
- datalist.insertBefore(toRemove, datalist.children[1]);
- expectPopup();
- restoreForm();
- doKey("down");
- });
- break;
-
- case 201:
- // Adding an attribute after the first one while on the first then going
- // down and push enter. Value should be the on from the new suggestion.
- doKey("down");
- datalist = document.getElementById('suggest');
- var added = new Option("Foo");
- datalist.insertBefore(added, datalist.children[1]);
- waitForMenuChange(4);
- break;
-
- case 202:
- doKey("down");
- doKey("down");
- doKey("return");
- checkForm("Foo");
-
- // Remove the element.
- datalist = document.getElementById('suggest');
- datalist.removeChild(datalist.children[1]);
- waitForMenuChange(0);
- break;
-
- case 203:
- // Change the first element value attribute.
- restoreForm();
- datalist = document.getElementById('suggest');
- prevValue = datalist.children[0].value;
- datalist.children[0].value = "foo";
- expectPopup();
- break;
-
- case 204:
- doKey("down");
- doKey("return");
- checkForm("foo");
-
- datalist = document.getElementById('suggest');
- datalist.children[0].value = prevValue;
- waitForMenuChange(0);
- break;
-
- case 205:
- // Change the textContent to update the value attribute.
- restoreForm();
- datalist = document.getElementById('suggest');
- prevValue = datalist.children[0].getAttribute('value');
- datalist.children[0].removeAttribute('value');
- datalist.children[0].textContent = "foobar";
- expectPopup();
- break;
-
- case 206:
- doKey("down");
- doKey("return");
- checkForm("foobar");
-
- datalist = document.getElementById('suggest');
- datalist.children[0].setAttribute('value', prevValue);
- testNum = 299;
- waitForMenuChange(0);
- break;
-
- // Tests for filtering (or not).
- case 300:
- // Filters with first letter of the word.
- restoreForm();
- synthesizeKey("f", {});
- expectPopup();
- break;
-
- case 301:
- doKey("down");
- doKey("return");
- checkForm("final");
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 302:
- // Filter with a letter in the middle of the word.
- synthesizeKey("i", {});
- synthesizeKey("n", {});
- waitForMenuChange(1);
- break;
-
- case 303:
- // Continuation of test 302.
- doKey("down");
- doKey("return");
- checkForm("final");
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 304:
- // Filter is disabled with mozNoFilter.
- input.setAttribute('mozNoFilter', 'true');
- synthesizeKey("f", {});
- waitForMenuChange(3); // no change
- break;
-
- case 305:
- // Continuation of test 304.
- doKey("down");
- doKey("return");
- checkForm("Google");
- input.removeAttribute('mozNoFilter');
- testNum = 399;
- expectPopup();
- restoreForm();
- doKey("down");
- break;
-
- case 400:
- // Check that the input event is fired.
- input.addEventListener("input", function(event) {
- input.removeEventListener("input", arguments.callee, false);
- ok(true, "oninput should have been received");
- ok(event.bubbles, "input event should bubble");
- ok(event.cancelable, "input event should be cancelable");
- checkForm("Google");
- input.blur();
- SimpleTest.finish();
- }, false);
-
- doKey("down");
- checkForm("");
- doKey("return");
- break;
-
- default:
- ok(false, "Unexpected invocation of test #" + testNum);
- SimpleTest.finish();
- return;
- }
-}
-
-function waitForMenuChange(expectedCount) {
- notifyMenuChanged(expectedCount, null, runTest);
-}
-
-function checkMenuEntries(expectedValues, testNumber) {
- var actualValues = getMenuEntries();
- is(actualValues.length, expectedValues.length, testNumber + " Checking length of expected menu");
- for (var i = 0; i < expectedValues.length; i++)
- is(actualValues[i], expectedValues[i], testNumber + " Checking menu entry #"+i);
-}
-
-function startTest() {
- setupFormHistory(runTest);
-}
-
-window.onload = startTest;
-
-SimpleTest.waitForExplicitFinish();
-</script>
-</pre>
-</body>
-</html>