chromium/third_party/blink/web_tests/hittesting/inline-with-clip-path.html

<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/ahem.js"></script>
<style>
    #referenceClipPath {
        -webkit-clip-path: url(#referenceClipPathTopLeft);
        clip-path: url(#referenceClipPathTopLeft);
        font-size: 100px;
        font-family: Ahem;
        color: blue;
    }
    #referenceClipPath:hover {
        color: green;
    }
    #shapeClipPath {
        -webkit-clip-path: polygon(0% 0%, 100% 100%, 100% 0%);
        clip-path: polygon(0% 0%, 100% 100%, 100% 0%);
        font-size: 100px;
        font-family: Ahem;
        color: purple;
    }
    #shapeClipPath:hover {
        color: orange;
    }
</style>
<p>Inline hit testing should not include clipped-out regions.</p>
<svg width="0" height="0">
    <defs>
        <clipPath id="referenceClipPathTopLeft" clipPathUnits="objectBoundingBox">
            <path id="path" d="M 0 0 L 100 100 L 100 0Z" />
        </clipPath>
    </defs>
</svg>
<span id="referenceClipPath">a</span>
<span id="shapeClipPath">a</span>
<div id="console"></div>
<script>
test(function(t)
{
    // Check that a reference clip path affects hit testing for inlines.
    // (25,75) is outside the triangular clip path, (75,25) is inside it.
    var referenceClipPathRect = referenceClipPath.getBoundingClientRect();
    assert_not_equals(document.elementFromPoint(referenceClipPathRect.left + 25, referenceClipPathRect.top + 75).id, "referenceClipPath");
    assert_equals(document.elementFromPoint(referenceClipPathRect.left + 75, referenceClipPathRect.top + 25).id, "referenceClipPath");

    // Check that a shape clip path affects hit testing for inlines.
    // (25,75) is outside the triangular clip path, (75,25) is inside it.
    var shapeClipPathRect = shapeClipPath.getBoundingClientRect();
    assert_not_equals(document.elementFromPoint(shapeClipPathRect.left + 25, shapeClipPathRect.top + 75).id, "shapeClipPath");
    assert_equals(document.elementFromPoint(shapeClipPathRect.left + 75, shapeClipPathRect.top + 25).id, "shapeClipPath");
}, "Inline hit testing should not include clipped-out regions.");
</script>