<!DOCTYPE html>
<meta charset="utf-8">
<title>[Optional] Starting a presentation from the browser using a default presentation request.</title>
<link rel="author" title="Marius Wessel" href="http://www.fokus.fraunhofer.de">
<link rel="author" title="Tomoyuki Shimizu" href="https://github.com/tomoyukilabs">
<link rel="help" href="http://w3c.github.io/presentation-api/#dom-presentation-defaultrequest">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="common.js"></script>

<p>
    Click the button or the menu item for presentation on your browser (for example, "Cast"), <br>
    to start the manual test, and select a presentation display when prompted to do so.<br>
    The test passes if a "PASS" result appears.
</p>
<p id="notice">
    If your browser does not support <code>defaultRequest</code>, please click this button: <button id="notsupported">Not Supported</button>
</p>

<script>
    // disable the timeout function for the tests
    // and call 'done()' when the tests cases are finished.
    setup({explicit_timeout: true});

    // -----------
    // DOM Element
    // -----------
    var button = document.getElementById('notsupported'),
        notice = document.getElementById('notice');

    // ------------------------------
    // Start New Presentation with
    // 'default request' Test - BEGIN
    // ------------------------------
    async_test(function(t) {
        // clean up the presentation and the instruction notice when the test ends
        var connection;
        t.add_cleanup(function() {
            notice.parentNode.removeChild(notice);
            if(connection)
                connection.terminate();
        });
        // set an event handler to make the test fail when the button is clicked
        button.onclick = t.step_func_done(function() {
            assert_unreached('This browser does not support defaultRequest.');
        });
        // set up a default presentation request
        var request = new PresentationRequest(presentationUrls);
        navigator.presentation.defaultRequest = request;
        request.onconnectionavailable = t.step_func_done(function (evt) {
            connection = evt.connection;
            // check the presentation connection and its attributes
            assert_equals(connection.state, 'connecting', 'The initial state of the presentation connection is "connecting".');
            assert_true(!!connection.id, 'The connection ID is set.');
            assert_equals(typeof connection.id, 'string', 'The connection ID is a string.');
            assert_true(connection instanceof PresentationConnection, 'The connection is an instance of PresentationConnection.');
        });
    });
    // ----------------------------
    // Start New Presentation with
    // 'default request' Test - END
    // ----------------------------
</script>
