chromium/third_party/blink/web_tests/images/imagemap-dynamic-area-updates.html

<!DOCTYPE html>
<title>Test that when image map areas have their shape or coordinate dynamically altered, the test region changes.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<img usemap="#m" style="height:400px; width:400px; border:1px solid red; position:absolute; left:0; right:0" >
<map name="m">
<area href="#">
</map>
<script>
test(function() {
    var area = document.querySelector('area');
    function checkPointInArea(shape, coords, x, y, equals) {
        area.setAttribute('shape', shape);
        area.setAttribute('coords', coords);
        equals ? assert_equals(area, document.elementFromPoint(x, y))
               : assert_not_equals(area, document.elementFromPoint(x, y));
    }
    checkPointInArea('default', '', 50, 50, true);
    checkPointInArea('default', '', 50, 50, true);
    checkPointInArea('rect', '0, 0, 100, 100', 50, 50, true);
    checkPointInArea('rect', '0, 0, 100, 100', 150, 150, false);
    checkPointInArea('rect', '200, 200, 300, 300', 50, 50, false);
    checkPointInArea('rect', '200, 200, 300, 300', 250, 250, true);
    checkPointInArea('circle', '100, 100, 50', 100, 100, true);
    checkPointInArea('circle', '100, 100, 50', 120, 100, true);
    checkPointInArea('circle', '100, 100, 50', 200, 100, false);
    checkPointInArea('circle', '300, 300, 50', 100, 100, false);
    checkPointInArea('circle', '300, 300, 50', 300, 300, true);
    checkPointInArea('circle', '300, 300, 50', 320, 300, true);
    checkPointInArea('poly', '100, 100, 200, 100, 200, 200', 150, 150, true);
    checkPointInArea('poly', '100, 100, 200, 100, 200, 200', 100, 150, false);
    checkPointInArea('poly', '100, 100, 200, 100, 200, 200', 300, 300, false);
    checkPointInArea('default', '', 300, 300, true);
});
</script>