Changeset 167215 in webkit


Ignore:
Timestamp:
Apr 14, 2014 12:50:51 AM (10 years ago)
Author:
mihnea@adobe.com
Message:

[CSS Regions] Hit testing doesn't work in video
https://bugs.webkit.org/show_bug.cgi?id=131485

Reviewed by Andrei Bucur.

Source/WebCore:

When hit testing flow thread layer through the region layer,
we have to pass the depth sorting information and take that
into account for the situation in which an ancestor of the region
has preserve-3d transform style.

Test: fast/regions/hit-test-region-preserve3d-container.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestFlowThreadIfRegionForFragments):

  • rendering/RenderLayer.h:

LayoutTests:

  • fast/regions/hit-test-region-preserve3d-container-expected.txt: Added.
  • fast/regions/hit-test-region-preserve3d-container.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r167213 r167215  
     12014-04-14  Mihnea Ovidenie  <mihnea@adobe.com>
     2
     3        [CSS Regions] Hit testing doesn't work in video
     4        https://bugs.webkit.org/show_bug.cgi?id=131485
     5
     6        Reviewed by Andrei Bucur.
     7
     8        * fast/regions/hit-test-region-preserve3d-container-expected.txt: Added.
     9        * fast/regions/hit-test-region-preserve3d-container.html: Added.
     10
    1112014-04-14  Koji Ishii  <kojishi@gmail.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r167211 r167215  
     12014-04-14  Mihnea Ovidenie  <mihnea@adobe.com>
     2
     3        [CSS Regions] Hit testing doesn't work in video
     4        https://bugs.webkit.org/show_bug.cgi?id=131485
     5
     6        Reviewed by Andrei Bucur.
     7
     8        When hit testing flow thread layer through the region layer,
     9        we have to pass the depth sorting information and take that
     10        into account for the situation in which an ancestor of the region
     11        has preserve-3d transform style.
     12
     13        Test: fast/regions/hit-test-region-preserve3d-container.html
     14
     15        * rendering/RenderLayer.cpp:
     16        (WebCore::RenderLayer::hitTestLayer):
     17        (WebCore::RenderLayer::hitTestFlowThreadIfRegionForFragments):
     18        * rendering/RenderLayer.h:
     19
    1202014-04-13  Darin Adler  <darin@apple.com>
    221
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r167196 r167215  
    49314931    }
    49324932
    4933     hitLayer = hitTestFlowThreadIfRegionForFragments(layerFragments, rootLayer, request, result, hitTestRect, hitTestLocation, localTransformState.get(), zOffsetForDescendantsPtr);
     4933    hitLayer = hitTestFlowThreadIfRegionForFragments(layerFragments, rootLayer, request, result, hitTestRect, hitTestLocation,
     4934        localTransformState.get(), zOffsetForDescendantsPtr, zOffset, unflattenedTransformState.get(), depthSortDescendants);
    49344935    if (hitLayer) {
    49354936        if (!depthSortDescendants)
     
    68846885    const HitTestLocation& hitTestLocation,
    68856886    const HitTestingTransformState* transformState,
    6886     double* zOffsetForDescendants)
     6887    double* zOffsetForDescendants, double* zOffset,
     6888    const HitTestingTransformState* unflattenedTransformState, bool depthSortDescendants)
    68876889{
    68886890    if (!renderer().isRenderNamedFlowFragmentContainer())
     
    69286930        hitTestRectInFlowThread.expand(LayoutSize(fabs((double)hitTestOffset.width()), fabs((double)hitTestOffset.height())));
    69296931
    6930         resultLayer = flowThread->layer()->hitTestLayer(flowThread->layer(), 0, newRequest, result, hitTestRectInFlowThread, newHitTestLocation, false, transformState, zOffsetForDescendants);
    6931         if (!resultLayer)
    6932             continue;
     6932        HitTestResult tempResult(result.hitTestLocation());
     6933        RenderLayer* hitLayer = flowThread->layer()->hitTestLayer(flowThread->layer(), 0, newRequest, tempResult, hitTestRectInFlowThread, newHitTestLocation, false, transformState, zOffsetForDescendants);
     6934        if (result.isRectBasedTest())
     6935            result.append(tempResult);
     6936        if (isHitCandidate(hitLayer, depthSortDescendants, zOffset, unflattenedTransformState)) {
     6937            resultLayer = hitLayer;
     6938            if (!result.isRectBasedTest())
     6939                result = tempResult;
     6940            if (!depthSortDescendants)
     6941                break;
     6942        }
    69336943    }
    69346944
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r166634 r167215  
    12311231    RenderLayer* hitTestFlowThreadIfRegionForFragments(const LayerFragments&, RenderLayer*, const HitTestRequest&, HitTestResult&,
    12321232        const LayoutRect&, const HitTestLocation&,
    1233         const HitTestingTransformState*, double*);
     1233        const HitTestingTransformState*, double* zOffsetForDescendants,
     1234        double* zOffset, const HitTestingTransformState* unflattenedTransformState, bool depthSortDescendants);
    12341235    void paintFlowThreadIfRegionForFragments(const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, PaintLayerFlags);
    12351236    void mapLayerClipRectsToFragmentationLayer(RenderNamedFlowFragment*, ClipRects&) const;
Note: See TracChangeset for help on using the changeset viewer.