<html>
  <head>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
    <title>
      Test autofill popup window shows at the correct location.
    </title>
  </head>
  <body>
    <h3>Test autofill popup window shows at the correct location.</h3>
    <ol>
      <li> Enter 'Always show bookmarks bar' in the following text input area.</li>
      <li> Enter 'Test' in the text input area.</li>
      <li> Press 'a' and make sure 'Always show bookmarks bar' is shown in autofill popup window.</li>
      <li> Select all with pressing Ctrl-a.</li>
      <li> Press 't' and make sure 'Test' is shown and the popup window location is correct.</li>
    </ol>
    <br>
    <form><input name=q autofocus></form>

    <ol>
      <li> Type the text 'This is really long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long text.' in the following text input area. And press ENTER to submit.</li>
      <li>Return to this page</li>
      <li> Press 'T' and make sure the input text is shown in autofill popup window and it exceeds the width of screen. If your display resolution is very high, and the while text fits in the window, please fill more characters and try again till the text exceeds the width.
      <li> Type the text 'This is short text.' in the following text input area. And press ENTER to submit.</li>
      <li> Press 't' and make sure the input text which you typed in is displayed in autofill popup window.</li>
      <li> Press 'h' and make sure the popup window location is correct.</li>
      <li> Press arrow key down and make sure the popup window text is not broken.</li>
    </ol>
    <br>
    <form><input name=p></form>
  </body>
</html> 
