| <html> | 
 | <head> | 
 |   <title>Empty and nested optgroup elements</title> | 
 | </head> | 
 |  | 
 | <body> | 
 |  | 
 | <select> | 
 |   <!-- A div here is invalid. However, both IE and Firefox will walk into it | 
 |        and enumerate the elements inside. --> | 
 |   <div> | 
 |     <option value="1">Item one</option> | 
 |  | 
 |     <!-- this group has no children. We /should/ render it because that matches | 
 |          IE and FireFox. --> | 
 |     <optgroup label="Group one"></optgroup> | 
 |  | 
 |     <!-- this group has a text node child. It should render the same as group one. --> | 
 |     <optgroup label="Group two"> </optgroup> | 
 |  | 
 |     <!-- for an optgroup without a label, IE will show an empty, unselectable row. | 
 |          Firefox doesn't show it. We /do/ show it because someone might be using | 
 |          it as a spacer. --> | 
 |     <!-- Additionally, this has been updated to test the crash fixed in | 
 |          https://bugs.webkit.org/show_bug.cgi?id=26656. When setting the | 
 |          font-size in the <optgroup> to extra large, opening the select element | 
 |          must not leave any unpainted areas of overlapping text. --> | 
 |     <optgroup style="font-size: x-large;"> | 
 |       <option value="2">Item inside an optgroup without a label</option> | 
 |     </optgroup> | 
 |  | 
 |     <!-- for an optgroup with an empty label, IE will show an empty, | 
 |          unselectable row.  Firefox doesn't show it. We /do/ show it because | 
 |          someone might be using it as a spacer. --> | 
 |     <optgroup label=""> | 
 |       <option value="3">Item inside an optgroup with an empty label</option> | 
 |     </optgroup> | 
 |  | 
 |     <div> | 
 |       <option value="4"></option> | 
 |       <optgroup label="Group three"> | 
 |         <option value="5">Item two</option> | 
 |         <!-- nested groups are disallowed by the spec, but IE and Firefox will | 
 |              flatten the tree. We should match them. --> | 
 |         <optgroup label="Nested group 1"></optgroup> | 
 |         <optgroup label="Nested group 2"> | 
 |           <optgroup label="Nested group 3"> | 
 |               <option value="6">Item three</option> | 
 |           </optgroup> | 
 |         </optgroup> | 
 |       </optgroup> | 
 |     </div> | 
 |     <option value="7">Item four</option> | 
 |   </div> | 
 | </select> | 
 |  | 
 | <p>Click on the select element above. When it drops down you should see the following items in the list:</p> | 
 |  | 
 | <ul> | 
 |   <li>Item one</li> | 
 |   <li><b>Group one</b></li> | 
 |   <li><b>Group two</b></li> | 
 |   <li><i>(unselectable, empty row)</i></li> | 
 |   <li>Item inside an optgroup without a label</li> | 
 |   <li><i>(unselectable, empty row)</i></li> | 
 |   <li>Item inside an optgroup with an empty label</li> | 
 |   <li><i>(selectable, empty row)</i></li> | 
 |   <li><b>Group three</b></li> | 
 |   <li>Item two</li> | 
 |   <li><b>Nested group 1</b></li> | 
 |   <li><b>Nested group 2</b></li> | 
 |   <li><b>Nested group 3</b></li> | 
 |   <li>Item three</li> | 
 |   <li>Item four</li> | 
 | </ul> | 
 |  | 
 | <p>The text of the rows of the dropdown must not overlap each other.</p> | 
 |  | 
 | </body> | 
 | </html> |