| OLD | NEW | 
|   1 <!DOCTYPE html> |   1 <!DOCTYPE html> | 
|   2  |   2  | 
|   3 <style> |   3 <style> | 
|   4     /* Must be positioned absolute or static, must have margins to push it out v
    iew. */ |   4     /* Must be positioned absolute or static, must have margins to push it out v
    iew. */ | 
|   5     .positioned { |   5     .positioned { | 
|   6         position: absolute; |   6         position: absolute; | 
|   7         margin-top: 100%; |   7         margin-top: 100%; | 
|   8     } |   8     } | 
|   9  |   9  | 
|  10     /* Any kind of quote will do, can be either :before or :after */ |  10     /* Any kind of quote will do, can be either :before or :after */ | 
|  11     .positioned:before, |  11     .positioned:before, | 
|  12     .focusable:before { |  12     .focusable:before { | 
|  13         content: open-quote; |  13         content: open-quote; | 
|  14     } |  14     } | 
|  15 </style> |  15 </style> | 
|  16  |  16  | 
|  17 <p>Bug 109616 - ASSERT(!layoutObject()->needsLayout()) when calling Element::foc
    us() with generated content</p> |  17 <p>Bug 109616 - ASSERT(!layoutObject()->needsLayout()) when calling Element::foc
    us() with generated content</p> | 
|  18  |  18  | 
|  19 <!-- |  19 <!-- | 
|  20     This is testing a case where LayoutQuote::updateDepth would mark the LayoutQ
    uote |  20     This is testing a case where LayoutQuote (anonymous)::updateDepth would mark
     the LayoutQuote (anonymous) | 
|  21     and its ancestors as needing layout in the middle of a layout of its ancesto
    r. |  21     and its ancestors as needing layout in the middle of a layout of its ancesto
    r. | 
|  22     When its ancestor finishes the layout it will mark itself and the ancestors |  22     When its ancestor finishes the layout it will mark itself and the ancestors | 
|  23     farther up as no longer needing layout. The end result is some subtree |  23     farther up as no longer needing layout. The end result is some subtree | 
|  24     needing layout, but the LayoutView and possibly other ancestors of the subtr
    ee |  24     needing layout, but the LayoutView and possibly other ancestors of the subtr
    ee | 
|  25     not needing layout. |  25     not needing layout. | 
|  26  |  26  | 
|  27     ex. |  27     ex. | 
|  28  |  28  | 
|  29     LayoutView <- !needsLayout |  29     LayoutView <- !needsLayout | 
|  30         \ |  30         \ | 
|  31        LayoutBlockFlow (.focusable) <- needsLayout |  31        LayoutBlockFlow (.focusable) <- needsLayout | 
|  32             \ |  32             \ | 
|  33              LayoutBlockFlow (generated content) <- needsLayout |  33              LayoutBlockFlow (generated content) <- needsLayout | 
|  34                 \ |  34                 \ | 
|  35                  LayoutQuote <- needsLayout |  35                  LayoutQuote (anonymous) <- needsLayout | 
|  36 --> |  36 --> | 
|  37  |  37  | 
|  38 <div class="positioned"></div> |  38 <div class="positioned"></div> | 
|  39 <div class="focusable" tabindex="1"></div> |  39 <div class="focusable" tabindex="1"></div> | 
|  40  |  40  | 
|  41 <script> |  41 <script> | 
|  42     if (window.testRunner) |  42     if (window.testRunner) | 
|  43         testRunner.dumpAsText(); |  43         testRunner.dumpAsText(); | 
|  44     // .focusable still needs layout at this point, but LayoutView doesn't |  44     // .focusable still needs layout at this point, but LayoutView doesn't | 
|  45     // think any descendants need layout. |  45     // think any descendants need layout. | 
|  46     document.querySelector('.focusable').focus(); |  46     document.querySelector('.focusable').focus(); | 
|  47 </script> |  47 </script> | 
| OLD | NEW |