| <!doctype html> |
| <!-- |
| @WAIT-FOR:Done |
| --> |
| <body> |
| <table> |
| <thead> |
| <tr> |
| <th>Header 1</th> |
| <th>Header 2</th> |
| </tr> |
| </thead> |
| <tbody hidden> |
| </tbody> |
| <tfoot> |
| </tfoot> |
| </table> |
| |
| <script> |
| function addRow(container) { |
| let row = document.createElement('tr'); |
| container.appendChild(row); |
| for (let j = 0; j < 100; j++) { |
| let cell = document.createElement('td'); |
| cell.innerHTML = Math.random(); |
| row.appendChild(cell); |
| cell.tabIndex = -1; |
| } |
| } |
| |
| setTimeout(() => { |
| // Now add a bunch of rows to the tbody, which is hidden. |
| // Every one of those added cells changes its tabIndex, which |
| // triggers a call to MarkAXObjectDirty on a node that's not |
| // included in the accessibility tree. That caused a bug where |
| // all of the real nodes of the table keep getting re-serialized. |
| // This is now caught by a DCHECK in BrowserAccessibilityManager |
| // that an AXTreeUpdate shouldn't be larger than the resulting tree. |
| for (let i = 0; i < 10; i++) { |
| addRow(document.querySelector('tbody')); |
| } |
| |
| // Finally, clear out all of those extra rows and finish |
| // the test. |
| setTimeout(() => { |
| document.querySelector('tbody').innerHTML = ''; |
| let done = document.createElement('div'); |
| done.innerHTML = 'Done'; |
| document.body.appendChild(done); |
| }, 10); |
| }, 10); |
| </script> |
| </body> |