Changeset 133248 in webkit


Ignore:
Timestamp:
Nov 1, 2012 6:19:02 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Fix assertion failure in RenderGeometryMap::absoluteRect when frame scale != 1.0
https://bugs.webkit.org/show_bug.cgi?id=100912

Patch by Tien-Ren Chen <trchen@chromium.org> on 2012-11-01
Reviewed by Simon Fraser.

Frame scale will add transformation to RenderView, so fixed position doesn't
get propagated up to the viewport by RenderGeometryMap. This is handled
correctly in RenderView::mapLocalToContainer, causing the assertion to fail.
This patch corrects RenderGeometryMap::mapToAbsolute to handle the RenderView
transformation case.

A layout test is added to catch this issue. The test will crash debug build
without this patch.

Source/WebCore:

Test: compositing/geometry/fixed-position-composited-page-scale-scroll.html

  • rendering/RenderGeometryMap.cpp:

(WebCore::RenderGeometryMap::mapToAbsolute):

LayoutTests:

  • compositing/geometry/fixed-position-composited-page-scale-scroll-expected.txt: Added.
  • compositing/geometry/fixed-position-composited-page-scale-scroll.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r133245 r133248  
     12012-11-01  Tien-Ren Chen  <trchen@chromium.org>
     2
     3        Fix assertion failure in RenderGeometryMap::absoluteRect when frame scale != 1.0
     4        https://bugs.webkit.org/show_bug.cgi?id=100912
     5
     6        Reviewed by Simon Fraser.
     7
     8        Frame scale will add transformation to RenderView, so fixed position doesn't
     9        get propagated up to the viewport by RenderGeometryMap. This is handled
     10        correctly in RenderView::mapLocalToContainer, causing the assertion to fail.
     11        This patch corrects RenderGeometryMap::mapToAbsolute to handle the RenderView
     12        transformation case.
     13
     14        A layout test is added to catch this issue. The test will crash debug build
     15        without this patch.
     16
     17
     18        * compositing/geometry/fixed-position-composited-page-scale-scroll-expected.txt: Added.
     19        * compositing/geometry/fixed-position-composited-page-scale-scroll.html: Added.
     20
    1212012-11-01  Simon Fraser  <simon.fraser@apple.com>
    222
  • trunk/Source/WebCore/ChangeLog

    r133244 r133248  
     12012-11-01  Tien-Ren Chen  <trchen@chromium.org>
     2
     3        Fix assertion failure in RenderGeometryMap::absoluteRect when frame scale != 1.0
     4        https://bugs.webkit.org/show_bug.cgi?id=100912
     5
     6        Reviewed by Simon Fraser.
     7
     8        Frame scale will add transformation to RenderView, so fixed position doesn't
     9        get propagated up to the viewport by RenderGeometryMap. This is handled
     10        correctly in RenderView::mapLocalToContainer, causing the assertion to fail.
     11        This patch corrects RenderGeometryMap::mapToAbsolute to handle the RenderView
     12        transformation case.
     13
     14        A layout test is added to catch this issue. The test will crash debug build
     15        without this patch.
     16
     17        Test: compositing/geometry/fixed-position-composited-page-scale-scroll.html
     18
     19        * rendering/RenderGeometryMap.cpp:
     20        (WebCore::RenderGeometryMap::mapToAbsolute):
     21
    1222012-11-01  Adam Barth  <abarth@webkit.org>
    223
  • trunk/Source/WebCore/rendering/RenderGeometryMap.cpp

    r131111 r133248  
    105105        // for fixed descendants, which prevents the propagation of 'fixed'
    106106        // unless the layer itself is also fixed position.
    107         if (currentStep.m_hasTransform && !currentStep.m_isFixedPosition)
     107        if (i && currentStep.m_hasTransform && !currentStep.m_isFixedPosition)
    108108            inFixed = false;
    109109        else if (currentStep.m_isFixedPosition)
Note: See TracChangeset for help on using the changeset viewer.