summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html')
-rw-r--r--testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html95
1 files changed, 95 insertions, 0 deletions
diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html b/testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html
new file mode 100644
index 0000000000..c9378c0e68
--- /dev/null
+++ b/testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_success-manual.https.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Checking the chain of events when starting a new presentation</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/#dfn-controlling-user-agent">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="common.js"></script>
+
+<p>Click the button below and select the available presentation display, to start the manual test.</p>
+<button id="presentBtn">Start Presentation Test</button>
+
+
+<script>
+ // description of event order
+ var description = [
+ "Phase #1: Promise is resolved",
+ "Phase #2: 'connectionavailable' event fired",
+ "Phase #3: 'connect' event fired"
+ ];
+ var step = 0;
+
+ // presentation connection
+ var connection;
+
+ // disable the timeout function for the tests
+ setup({explicit_timeout: true});
+
+ // ----------
+ // DOM Object
+ // ----------
+ var presentBtn = document.getElementById("presentBtn");
+
+ // ---------------------------------------------
+ // Start New Presentation Test (success) - begin
+ // ---------------------------------------------
+ presentBtn.onclick = function () {
+ presentBtn.disabled = true;
+ promise_test(function (t) {
+ var phase = -1, actual = -1;
+
+ // increment the count in the actual event order
+ var count = function(evt) { actual++; return evt; };
+ // increment the count in the expected event order and compare it with the actual event order
+ var checkPhase = function(evt) { phase++; assert_equals(description[actual], description[phase], 'Event order is incorrect.'); return evt; };
+
+ var request = new PresentationRequest(presentationUrls);
+ var eventWatcher = new EventWatcher(t, request, 'connectionavailable');
+ var waitConnectionavailable = eventWatcher.wait_for('connectionavailable').then(count).then(function(evt) { connection = connection || evt.connection; return evt; });
+ var waitConnect;
+
+ t.add_cleanup(function() {
+ if(connection)
+ connection.terminate();
+ });
+
+ return request.start().then(count)
+ .then(checkPhase).then(function (c) {
+ // Phase #1: Promise is resolved
+ connection = c;
+
+ // No more user input needed, re-enable timeout
+ t.step_timeout(function() {
+ t.force_timeout();
+ t.done();
+ }, 5000);
+
+ // Check the initial state of the presentation connection
+ assert_equals(connection.state, 'connecting', 'Check the initial state of the presentation connection.');
+ 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.');
+
+ var eventWatcher = new EventWatcher(t, connection, 'connect');
+ waitConnect = eventWatcher.wait_for('connect').then(count);
+
+ return waitConnectionavailable;
+ })
+ .then(checkPhase).then(function (evt) {
+ // Phase #2: "connectionavailable" event fired
+ assert_equals(connection, evt.connection, 'Both Promise from PresentationRequest() and a "connectionavailable" event handler receive the same presentation connection.');
+
+ return waitConnect;
+ })
+ .then(checkPhase).then(function () {
+ // Phase #3: "connect" event fired
+ assert_equals(connection.state, 'connected', 'The state of the presentation connection is "connected" when a "connect" event fires.');
+ });
+ });
+ }
+ // -------------------------------------------
+ // Start New Presentation Test (success) - end
+ // -------------------------------------------
+</script> \ No newline at end of file