<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<div>These lists have a static text role because they have a presentation role.</div>
<ul role="presentation">
    <li>Presentation Item 1</li>
    <li>Presentation Item 2</li>
</ul>

<div>The first list item has a listitem role even if ul has a presentation role because it has an explicit role.</div>
<ul role="presentation">
    <li role="listitem">Explicit Item 1</li>
    <li>Implicit Item 2</li>
</ul>

<div>These two tables have static text roles because they have presentation roles.</div>
<table role="presentation">
    <thead>
    <tr>
       <th>Presentation th</th>
    </tr>
    </thead>
    <tbody>
    <tr>
       <td>Presentation th</td>
    </tr>
    </tbody>
</table>

<table role="presentation">
    <tr>
       <th>Presentation th</th>
    </tr>
</table>

<div>The "Presentation th" has a static text role because it has a presentation role.</div>
<table>
    <tr role="presentation">
       <th>Presentation th</th>
    </tr>
    <tr>
        <td>Normal td</td>
    </tr>
</table>

<div>The row for "Explicit th" has a row role even if table has a presentation role because it has an explicit role.</div>
<table role="presentation">
    <tr role="row">
       <th>Explicit th</th>
    </tr>
    <tr>
       <td>Implicit td</td>
    </tr>
</table>

<div>The menu items except button have a static text role because it has a presentation role and is disabled.<br>
Button has a button role because it has an explicit role.</div>
<menu type="context" role="presentation">
<input type="checkbox" name="vehicle" value="Bike" disabled> I have a bike
<input type="button" role="button" value="Click me" disabled>
<input type="radio" name="gender" value="male" disabled> Male
<input type="radio" name="gender" value="female" disabled> Female
</menu>

<div>The option A has a static text role because it has a presentation role and is disabled.<br>
The option B has option role because it has an explicit role.</div>
<select multiple role="presentation" disabled>
  <option value="A" disabled>A</option>
  <option value="B" disabled role="option">B</option>
</select>

<p>End of test</p>
<p id="description"></p>
<div id="console"></div>
<script>
description("This test make sure that presentation role is inherited to required owned elements.");

if (window.testRunner)
    testRunner.dumpAsText();
if (window.accessibilityController) {
    buildAccessibilityTree(accessibilityController.focusedElement, 0, 1);
}
</script>
