<!DOCTYPE html>
<html>
<head>
    <title>Touch Adjustment : Handle long press on a shadow DOM element - bug 96313</title>
    <script src="../resources/js-test-pre.js"></script>
    <script src="resources/touchadjustment.js"></script>
    <style>
        #sandbox {
            background: #00f;
            position: absolute;
            top: 0px;
            left: 0px;
            width: 100px;
            height: 100px;
        }
        #description {
          margin-top: 110px;
        }
    </style>
</head>

<body>

<div id="sandbox"></div>
<p id='description'></p>
<div id='console'></div>

<script>
    var sandbox = document.getElementById('sandbox');

    function addShadowDOM() {
        var targetDiv = document.getElementById("sandbox");
        var root = internals.ensureShadowRoot(targetDiv);
        var shadowDiv = document.createElement("div");
        shadowDiv.style.width = "20px";
        shadowDiv.style.height = "20px";
        shadowDiv.style.background = "#ff0";
        shadowDiv.style.position = "absolute";
        shadowDiv.style.right = "10px";
        shadowDiv.style.top = "10px";
        root.appendChild(shadowDiv);
    }

    function runTests()
    {
        if (window.testRunner && window.internals && internals.touchNodeAdjustedToBestContextMenuNode && internals.ensureShadowRoot) {
            description('Test touch adjustment for context-menu gestures on a shadow-DOM element.');
            addShadowDOM();
            // Test that a long press centered on a shadow-DOM element does not crash.
            testTouchPointContextMenu(touchPoint(80, 20, 10), null);
        }
    }
    runTests();
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
