<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
<title>
Test the popup list box's width is rectricted within screen.
</title>
</head>
<body>

<h3>Test left to right popup list box's width is restricted within the left screen.</h3>
<ol>
   <li> Setup dual screens.</li>
   <li> Launch browser and maximize the browser window size in the left screen.</li>
   <li> Enter a very long string into "Left to right" text input box.</li>
   <li> Hit enter. </li>
   <li> Go back and start to enter the same string again.</li>
   <li> Make sure the popup list box's width which suggests the result doesn't exceed the left screen width. </li>
</ol>

<H3>Test right to left popup window width is restricted within the right screen.</H3>
<ol>
   <li> Setup dual screens.</li>
   <li> Launch browser and maximize the browser window size in the right screen.</li>
   <li> Enter a very long string into "Right to Left" text input box.</li>
   <li> Hit enter.</li>
   <li> Go back and start to enter the same string again.</li>
   <li> Make sure the popup list box's width which suggests the result doesn't exceed the right screen width.</li>
</ol>

<br>
<form action="form_action.asp" method="get">
  Left to right <input type="text" name="lname" /><br />
  Right to left <input type="text" name="fname" dir="rtl"/><br />
  <input type="submit" value="Submit" />
</form>

<H3>Test left to right select window width is restricted within the left screen.</H3>
<ol>
   <li> Setup dual screens.</li>
   <li> Launch browser and maximize the browser window size in the left screen.</li>
   <li> Click the following &lt;select&gt; item.</li>
   <li> Make sure the drop-down box width in the following &lt;select&gt; doesn't exceed the left screen width.</li>
</ol>

<select style="width:100px">
<option>Arabic</option>
<option>Hebrew</option>
<option>English (United States)</option>
<option>Chinese (Simplified Chiense)</option>
<option>Japanese (hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge</option>
</select>

<H3>Test right to left select window width is restricted within the right screen.</H3>
<ol>
   <li> Setup dual screens.</li>
   <li> Launch browser and maximize the browser window size in the right screen.</li>
   <li> Click the following &lt;select&gt; item.</li>
   <li> Make sure the drop-down box width in the following &lt;select&gt; doesn't exceed the right screen width.</li>
</ol>

<select dir="rtl" style="width:100px">
<option>Arabic</option>
<option>Hebrew</option>
<option>English (United States)</option>
<option>Chinese (Simplified Chiense)</option>
<option>Japanese (hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge</option>
</select>


</body>
</html>
