Changeset 257046 in webkit


Ignore:
Timestamp:
Feb 19, 2020 10:41:20 PM (4 years ago)
Author:
commit-queue@webkit.org
Message:

ASSERTION FAILED: roundedIntPoint(LayoutPoint(rendererMappedResult)) == result in WebCore::RenderGeometryMap::mapToContainer
https://bugs.webkit.org/show_bug.cgi?id=151030
<rdar://problem/27711142>

Patch by Jack Lee <Jack Lee> on 2020-02-19
Reviewed by Darin Adler.

Track if m_accumulatedOffset ever becomes saturated, and if so, do not assert on unexpected rendererMappedResult.

Source/WebCore:

Test: fast/layers/geometry-map-saturated-offset-assert.html

  • platform/graphics/LayoutSize.h:

(WebCore::LayoutSize::mightBeSaturated const):

  • rendering/RenderGeometryMap.cpp:

(WebCore::RenderGeometryMap::mapToContainer const):
(WebCore::RenderGeometryMap::stepInserted):
(WebCore::RenderGeometryMap::stepRemoved):

  • rendering/RenderGeometryMap.h:

LayoutTests:

  • fast/layers/geometry-map-saturated-offset-assert-expected.txt: Added.
  • fast/layers/geometry-map-saturated-offset-assert.html: Added.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r257039 r257046  
     12020-02-19  Jack Lee  <shihchieh_lee@apple.com>
     2
     3        ASSERTION FAILED: roundedIntPoint(LayoutPoint(rendererMappedResult)) == result in WebCore::RenderGeometryMap::mapToContainer
     4        https://bugs.webkit.org/show_bug.cgi?id=151030
     5        <rdar://problem/27711142>
     6
     7        Reviewed by Darin Adler.
     8
     9        Track if m_accumulatedOffset ever becomes saturated, and if so, do not assert on unexpected rendererMappedResult.
     10
     11        * fast/layers/geometry-map-saturated-offset-assert-expected.txt: Added.
     12        * fast/layers/geometry-map-saturated-offset-assert.html: Added.
     13
    1142020-02-19  Youenn Fablet  <youenn@apple.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r257039 r257046  
     12020-02-19  Jack Lee  <shihchieh_lee@apple.com>
     2
     3        ASSERTION FAILED: roundedIntPoint(LayoutPoint(rendererMappedResult)) == result in WebCore::RenderGeometryMap::mapToContainer
     4        https://bugs.webkit.org/show_bug.cgi?id=151030
     5        <rdar://problem/27711142>
     6
     7        Reviewed by Darin Adler.
     8
     9        Track if m_accumulatedOffset ever becomes saturated, and if so, do not assert on unexpected rendererMappedResult.
     10
     11        Test: fast/layers/geometry-map-saturated-offset-assert.html
     12
     13        * platform/graphics/LayoutSize.h:
     14        (WebCore::LayoutSize::mightBeSaturated const):
     15        * rendering/RenderGeometryMap.cpp:
     16        (WebCore::RenderGeometryMap::mapToContainer const):
     17        (WebCore::RenderGeometryMap::stepInserted):
     18        (WebCore::RenderGeometryMap::stepRemoved):
     19        * rendering/RenderGeometryMap.h:
     20
    1212020-02-19  Youenn Fablet  <youenn@apple.com>
    222
  • trunk/Source/WebCore/platform/graphics/LayoutSize.h

    r253970 r257046  
    137137    }
    138138
     139    bool mightBeSaturated() const
     140    {
     141        return m_width.mightBeSaturated() || m_height.mightBeSaturated();
     142    }
     143
    139144private:
    140145    LayoutUnit m_width;
  • trunk/Source/WebCore/rendering/RenderGeometryMap.cpp

    r254087 r257046  
    110110        result = p + roundedIntSize(m_accumulatedOffset);
    111111        // Should convert to a LayoutPoint because of the uniqueness of LayoutUnit::round
    112         ASSERT(roundedIntPoint(LayoutPoint(rendererMappedResult)) == result);
     112        ASSERT(m_accumulatedOffsetMightBeSaturated || roundedIntPoint(LayoutPoint(rendererMappedResult)) == result);
    113113    } else {
    114114        TransformState transformState(TransformState::ApplyTransformDirection, p);
     
    266266{
    267267    // RenderView's offset, is only applied when we have fixed-positions.
    268     if (!step.m_renderer->isRenderView())
     268    if (!step.m_renderer->isRenderView()) {
    269269        m_accumulatedOffset += step.m_offset;
     270#if ASSERT_ENABLED
     271        m_accumulatedOffsetMightBeSaturated |= m_accumulatedOffset.mightBeSaturated();
     272#endif
     273    }
    270274
    271275    if (step.m_isNonUniform)
     
    282286{
    283287    // RenderView's offset, is only applied when we have fixed-positions.
    284     if (!step.m_renderer->isRenderView())
     288    if (!step.m_renderer->isRenderView()) {
    285289        m_accumulatedOffset -= step.m_offset;
     290#if ASSERT_ENABLED
     291        m_accumulatedOffsetMightBeSaturated |= m_accumulatedOffset.mightBeSaturated();
     292#endif
     293    }
    286294
    287295    if (step.m_isNonUniform) {
  • trunk/Source/WebCore/rendering/RenderGeometryMap.h

    r222575 r257046  
    131131    LayoutSize m_accumulatedOffset;
    132132    MapCoordinatesFlags m_mapCoordinatesFlags;
     133#if ASSERT_ENABLED
     134    bool m_accumulatedOffsetMightBeSaturated { false };
     135#endif
    133136};
    134137
Note: See TracChangeset for help on using the changeset viewer.