Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / chrome / test / media_router / resources / common.js
blobef984f07528ff5dee5790d0663c6a5640f1f997c
1 /**
2  * Copyright 2015 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  *
6  * @fileoverview Common APIs for presentation integration tests.
7  *
8  */
10 var startSessionPromise = null;
11 var startedSession = null;
12 var reconnectedSession = null;
13 var presentationUrl = "http://www.google.com/#__testprovider__=true";
14 var startSessionRequest = new PresentationRequest(presentationUrl);
15 var defaultRequestSessionId = null;
17 window.navigator.presentation.defaultRequest = startSessionRequest;
18 window.navigator.presentation.defaultRequest.onsessionconnect = function(e) {
19   defaultRequestSessionId = e.session.id;
22 /**
23  * Waits until one device is available.
24  */
25 function waitUntilDeviceAvailable() {
26   startSessionRequest.getAvailability(presentationUrl).then(
27   function(availability) {
28     console.log('availability ' + availability.value + '\n');
29     if (availability.value) {
30       sendResult(true, '');
31     } else {
32       sendResult(false, 'device unavailable');
33     }
34   }).catch(function(){
35     sendResult(false, 'got error');
36   });
39 /**
40  * Starts session.
41  */
42 function startSession() {
43   startSessionPromise = startSessionRequest.start();
44   console.log('start session');
45   sendResult(true, '');
48 /**
49  * Checks if the session has been started successfully.
50  */
51 function checkSession() {
52   if (!startSessionPromise) {
53     sendResult(false, 'Failed to start session');
54   } else {
55     startSessionPromise.then(function(session) {
56       if(!session) {
57         sendResult(false, 'Failed to start session');
58       } else {
59         // set the new session
60         startedSession = session;
61         sendResult(true, '');
62       }
63     }).catch(function() {
64       // close old session if exists
65       startedSession && startedSession.close();
66       sendResult(false, 'Failed to start session');
67     })
68   }
72 /**
73  * Stops current session.
74  */
75 function stopSession() {
76   if (startedSession) {
77     startedSession.close();
78   }
79   sendResult(true, '');
83 /**
84  * Reconnects to |sessionId| and verifies that it succeeds.
85  * @param {!string} sessionId ID of session to reconnect.
86  */
87 function reconnectSession(sessionId) {
88   var reconnectSessionRequest = new PresentationRequest(presentationUrl);
89   reconnectSessionRequest.reconnect(sessionId).then(function(session) {
90     if (!session) {
91       sendResult(false, 'reconnectSession returned null session');
92     } else {
93       reconnectedSession = session;
94       sendResult(true, '');
95     }
96   }).catch(function(error) {
97     sendResult(false, 'reconnectSession failed: ' + error.message);
98   });
102  * Calls reconnect(sessionId) and verifies that it fails.
103  * @param {!string} sessionId ID of session to reconnect.
104  * @param {!string} expectedErrorMessage
105  */
106 function reconnectSessionAndExpectFailure(sessionId, expectedErrorMessage) {
107   var reconnectSessionRequest = new PresentationRequest(presentationUrl);
108   reconnectSessionRequest.reconnect(sessionId).then(function(session) {
109     sendResult(false, 'reconnect() unexpectedly succeeded.');
110   }).catch(function(error) {
111     if (error.message.indexOf(expectedErrorMessage) > -1) {
112       sendResult(true, '');
113     } else {
114       sendResult(false,
115         'Error message mismatch. Expected: ' + expectedErrorMessage +
116         ', actual: ' + error.message);
117     }
118   });
122  * Sends the test result back to browser test.
123  * @param passed true if test passes, otherwise false.
124  * @param errorMessage empty string if test passes, error message if test
125  *                      fails.
126  */
127 function sendResult(passed, errorMessage) {
128   window.domAutomationController.send(JSON.stringify({
129     passed: passed,
130     errorMessage: errorMessage
131   }));