<!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();
        }

        if (window.internals)
            internals.setTransientActivationDuration(0.01); // Use very short 10ms transient activation duration for testing.
    
        let write = (message) => output.innerHTML += (message + "<br>");

        function runTest()
        {
            document.getElementById("target").addEventListener("click", () => {
                fetch("../files/resources/abe.png").then(() => {
                    // Cause the transient activation to expire with a setTimeout.
                    setTimeout(() => {
                        navigator.share({ title: "Example Page", url: "url", text: "text" }).then((result) => {
                            write("FAIL: Share sheet invoked.");
                            testRunner.notifyDone();
                        }, (exception) => {
                            write("PASS: Share promise was rejected: " + exception);
                            testRunner.notifyDone();
                        });
                    }, 100);
                }, (exception) => {
                    write("FAIL: Fetch promise was rejected");
                    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>

