| <!DOCTYPE html> |
| <html> |
| <style> |
| .colContainer { -webkit-column-count: 0; } |
| .absolutePosition { position: absolute; } |
| .colSpanAll { -webkit-column-span: all; } |
| .transformed { -webkit-transform: rotate(45deg); } |
| .hidden { display:none; } |
| .normal { display:block;} |
| </style> |
| <script> |
| |
| window.onload = function() { |
| columnContainerBlock = document.createElement('div'); |
| columnContainerBlock.setAttribute('class', 'colContainer'); |
| document.documentElement.appendChild(columnContainerBlock); |
| |
| splitBlockParent = document.createElement('div'); |
| splitBlockParent.setAttribute('class', 'transformed'); |
| columnContainerBlock.appendChild(splitBlockParent); |
| |
| splitFlowDt = document.createElement('dt'); |
| splitBlockParent.appendChild(splitFlowDt); |
| |
| positionedDiv = document.createElement('div'); |
| positionedDiv.setAttribute('class', 'absolutePosition'); |
| splitBlockParent.appendChild(positionedDiv); |
| |
| columnSpan = document.createElement('col'); |
| columnSpan.setAttribute('class', 'colSpanAll'); |
| splitFlowDt.appendChild(columnSpan); // Inserting the col inside the dt causes it to get split. |
| document.documentElement.offsetHeight; |
| |
| splitFlowDt.setAttribute('class', 'hidden'); // This removes the split dt and the col from the render tree. |
| document.documentElement.offsetHeight; |
| |
| splitFlowDt.setAttribute('class', 'normal'); // Re-adding the dt causes the flow to split again. |
| document.documentElement.offsetHeight; |
| |
| splitBlockParent.removeChild(positionedDiv); // Remove the positioned object from the tree. |
| document.documentElement.offsetHeight; |
| |
| splitBlockParent.removeChild(splitFlowDt); // Ensure the node with the bad positioned object list gets layout. |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| } |
| </script> |
| <body> |
| PASS if no assert or crash in debug |
| </body> |
| </html> |