<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->

<html>
<meta name="viewport" content="initial-scale=5, width=device-width">
<head>

    <script src="../../resources/ui-helper.js"></script>
    <script>
        
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }
    
        let write = (message) => output.innerHTML += (message + "<br>");

        function runTest()
        {
            document.getElementById("target").addEventListener("click", () => {
                navigator.share({ text: "text" }).then((result) => {
                    write("PASS: Share sheet invoked.");
                    testRunner.notifyDone();
                });    
            });
            
            UIHelper.setShareSheetCompletesImmediatelyWithResolution(true).then(() => {
                UIHelper.activateAt(50, 50);
            });
        }

    </script>
    <style>
        #target {
            height: 100px;
            width: 100px;
            background-color: silver;
        }
    </style>
</head>
<body onload="runTest()">
<pre id="output"></pre>
<button id="target">
</button>

</body>
</html>

