| <!DOCTYPE html> |
| |
| <meta charset="utf-8"> |
| <title>Establishing a presentation connection</title> |
| <link rel="author" title="Intel" href="http://www.intel.com"> |
| <link rel="author" title="He Yue" href="mailto:yue.he@intel.com"> |
| <link rel="author" title="Tomoyuki Shimizu" href="https://github.com/tomoyukilabs/"> |
| <link rel="help" href="https://w3c.github.io/presentation-api/#establishing-a-presentation-connection"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="common.js"></script> |
| <h2>Description</h2> |
| <p> |
| This test validates that after connection starts,<br/> |
| the onconnect EventHandler is triggered and connection state is connected. |
| </p> |
| <br/> |
| <p>Click the button below to start the test.</p> |
| <button id="presentBtn">Start Presentation Test</button> |
| |
| <script> |
| setup({explicit_timeout: true}); |
| |
| const presentBtn = document.getElementById('presentBtn'); |
| |
| promise_test(t => { |
| const clickWatcher = new EventWatcher(t, presentBtn, 'click'); |
| const request = new PresentationRequest(presentationUrls); |
| let connection; |
| |
| t.add_cleanup(() => { |
| if (connection) { |
| connection.onconnect = () => { connection.terminate(); }; |
| if (connection.state === 'closed') |
| request.reconnect(connection.id); |
| else |
| connection.terminate(); |
| } |
| }); |
| |
| const watchEvent = (obj, watcher, type) => { |
| const watchHandler = new Promise(resolve => { |
| obj['on' + type] = evt => { resolve(evt); }; |
| }); |
| return Promise.all([ watchHandler, watcher.wait_for(type) ]).then(results => { |
| assert_equals(results[0], results[1], 'Both on' + type + ' and addEventListener pass the same event object.'); |
| return results[0]; |
| }); |
| }; |
| |
| return clickWatcher.wait_for('click').then(() => { |
| presentBtn.disabled = true; |
| |
| return request.start(); |
| }).then(c => { |
| // Enable timeout again, cause no user action is needed from here. |
| t.step_timeout(() => { |
| t.force_timeout(); |
| t.done(); |
| }, 5000); |
| |
| connection = c; |
| const eventWatcher = new EventWatcher(t, connection, 'connect'); |
| return watchEvent(connection, eventWatcher, 'connect'); |
| }).then(evt => { |
| assert_true(evt.isTrusted && !evt.bubbles && !evt.cancelable && evt instanceof Event, 'A simple event is fired.'); |
| assert_equals(evt.type, 'connect', 'The event name is "connect".'); |
| assert_equals(evt.target, connection, 'event.target is the presentation connection.'); |
| assert_equals(connection.state, 'connected', 'The presentation connection state is set to "connected".'); |
| }); |
| }); |
| </script> |