toolkit/components/satchel/test/test_bug_787624.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <title>Test for Layout of Form History Autocomplete: Bug 787624</title>
     5   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     6   <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
     7   <script type="text/javascript" src="satchel_common.js"></script>
     8   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     9   <style>
    10     .container {
    11         border: 1px solid #333;
    12         width: 80px;
    13         height: 26px;
    14         position: absolute;
    15         z-index: 2;
    16     }
    18     .subcontainer {
    19         width: 100%;
    20         overflow: hidden;
    21     }
    23     .subcontainer input {
    24         width: 120px;
    25         margin: 2px 6px;
    26         padding-right: 4px;
    27         border: none;
    28         height: 22px;
    29         z-index: 1;
    30         outline: 1px dashed #555
    31     }
    32   </style>
    33 </head>
    34 <body>
    35 Form History Layout test: form field autocomplete: Bug 787624
    36 <p id="display"></p>
    38 <!-- we presumably can't hide the content for this test. -->
    39 <div id="content" style="direction: rtl;">
    40   <!-- unused -->
    41   <form id="unused" onsubmit="return false;">
    42     <input  type="text" name="field1" value="unused">
    43   </form>
    45   <!-- normal, basic form -->
    46   <div class="container">
    47     <div class="subcontainer">
    48       <form id="form1" onsubmit="return false;">
    49         <input  type="text" name="field1">
    50         <button type="submit">Submit</button>
    51       </form>
    52     </div>
    53   </div>
    54 </div>
    56 <pre id="test">
    57 <script class="testbody" type="text/javascript">
    59 /** Test for Form History autocomplete Layout: Bug 787624 **/
    61 var autocompletePopup = getAutocompletePopup();
    62 autocompletePopup.style.direction = "ltr";
    64 var input = $_(1, "field1");
    65 var rect = input.getBoundingClientRect();
    67 // Get the form history service
    68 function setupFormHistory() {
    69   updateFormHistory([
    70     { op : "remove" },
    71     { op : "add", fieldname : "field1", value : "value1" },
    72     { op : "add", fieldname : "field1", value : "value2" },
    73   ], function() runTest(1));
    74 }
    76 function checkForm(expectedValue) {
    77   var formID = input.parentNode.id;
    78   if (input.value != expectedValue)
    79     return false;
    81   is(input.value, expectedValue, "Checking " + formID + " input");
    82   return true;
    83 }
    85 function checkPopupOpen(isOpen, expectedIndex) {
    86   var actuallyOpen = autocompletePopup.popupOpen;
    87   var actualIndex = autocompletePopup.selectedIndex;
    88   if (actuallyOpen != isOpen)
    89     return false;
    91   is(actuallyOpen, isOpen, "popup should be " + (isOpen ? "open" : "closed"));
    92   if (isOpen) {
    93     if (actualIndex != expectedIndex)
    94       return false;
    95     is(actualIndex, expectedIndex, "checking selected index");
    96   }
    97   return true;
    98 }
   100 function runTest(testNum) {
   101   ok(true, "Starting test #" + testNum);
   102   var retry = false;
   103   var formOK, popupOK;
   105   switch(testNum) {
   106     //
   107     // Check initial state
   108     //
   109     case 1:
   110       input.value = "";
   111       formOK = checkForm("");
   112       if (!formOK) {
   113         retry = true;
   114         break;
   115       }
   116       is(autocompletePopup.popupOpen, false, "popup should be initially closed");
   117       break;
   119     // try a focus()
   120     case 2:
   121       input.focus();
   122       break;
   123     case 3:
   124       popupOK = checkPopupOpen(false);
   125       formOK = checkForm("");
   126       if (!formOK || !popupOK)
   127         retry = true;
   128       break;
   129     // try a click()
   130     case 4:
   131       input.click();
   132       break;
   133     case 5:
   134       popupOK = checkPopupOpen(false);
   135       formOK = checkForm("");
   136       if (!formOK || !popupOK)
   137         retry = true;
   138       break;
   139     case 6:
   140       // We're privileged for this test, so open the popup.
   141       popupOK = checkPopupOpen(false);
   142       formOK = checkForm("");
   143       if (!formOK || !popupOK)
   144         retry = true;
   145       doKey("down");
   146       break;
   147     case 7:
   148       popupOK = checkPopupOpen(true, -1);
   149       formOK = checkForm("");
   150       if (!formOK || !popupOK)
   151         retry = true;
   152       break;
   153     case 8:
   154       var newRect = input.getBoundingClientRect();
   155       is(newRect.left, rect.left,
   156         "autocomplete popup does not disturb the input position");
   157       is(newRect.top, rect.top,
   158         "autocomplete popup does not disturb the input position");
   159       SimpleTest.finish();
   160       return;
   162     default:
   163       ok(false, "Unexpected invocation of test #" + testNum);
   164       SimpleTest.finish();
   165       return;
   166   }
   168   if (!retry)
   169     testNum++;
   171   setTimeout(runTest, 0, testNum);
   172 }
   174 function startTest() {
   175   setupFormHistory();
   176 }
   178 window.onload = startTest;
   180 SimpleTest.waitForExplicitFinish();
   181 </script>
   182 </pre>
   183 </body>
   184 </html>

mercurial