1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5/**
6 * @fileoverview
7 * Interface abstracting the SessionConnector functionality.
8 */
9
10'use strict';
11
12/** @suppress {duplicate} */
13var remoting = remoting || {};
14
15/**
16 * @interface
17 */
18remoting.SessionConnector = function() {};
19
20/**
21 * Reset the per-connection state so that the object can be re-used for a
22 * second connection. Note the none of the shared WCS state is reset.
23 */
24remoting.SessionConnector.prototype.reset = function() {};
25
26/**
27 * Initiate a Me2Me connection.
28 *
29 * @param {remoting.Host} host The Me2Me host to which to connect.
30 * @param {function(boolean, function(string):void):void} fetchPin Function to
31 *     interactively obtain the PIN from the user.
32 * @param {function(string, string, string,
33 *                  function(string, string): void): void}
34 *     fetchThirdPartyToken Function to obtain a token from a third party
35 *     authenticaiton server.
36 * @param {string} clientPairingId The client id issued by the host when
37 *     this device was paired, if it is already paired.
38 * @param {string} clientPairedSecret The shared secret issued by the host when
39 *     this device was paired, if it is already paired.
40 * @return {void} Nothing.
41 */
42remoting.SessionConnector.prototype.connectMe2Me =
43    function(host, fetchPin, fetchThirdPartyToken,
44             clientPairingId, clientPairedSecret) {};
45
46/**
47 * Update the pairing info so that the reconnect function will work correctly.
48 *
49 * @param {string} clientId The paired client id.
50 * @param {string} sharedSecret The shared secret.
51 */
52remoting.SessionConnector.prototype.updatePairingInfo =
53    function(clientId, sharedSecret) {};
54
55/**
56 * Initiate an IT2Me connection.
57 *
58 * @param {string} accessCode The access code as entered by the user.
59 * @return {void} Nothing.
60 */
61remoting.SessionConnector.prototype.connectIT2Me =
62    function(accessCode) {};
63
64/**
65 * Reconnect a closed connection.
66 *
67 * @return {void} Nothing.
68 */
69remoting.SessionConnector.prototype.reconnect = function() {};
70
71/**
72 * Cancel a connection-in-progress.
73 */
74remoting.SessionConnector.prototype.cancel = function() {};
75
76/**
77 * Get the connection mode (Me2Me or IT2Me)
78 *
79 * @return {remoting.ClientSession.Mode}
80 */
81remoting.SessionConnector.prototype.getConnectionMode = function() {};
82
83/**
84 * Get host ID.
85 *
86 * @return {string}
87 */
88remoting.SessionConnector.prototype.getHostId = function() {};
89
90
91/**
92 * @interface
93 */
94remoting.SessionConnectorFactory = function() {};
95
96/**
97 * @param {HTMLElement} clientContainer Container element for the client view.
98 * @param {function(remoting.ClientSession):void} onConnected Callback on
99 *     success.
100 * @param {function(remoting.Error):void} onError Callback on error.
101 * @param {function(string, string):boolean} onExtensionMessage The handler for
102 *     protocol extension messages. Returns true if a message is recognized;
103 *     false otherwise.
104 * @return {remoting.SessionConnector}
105 */
106remoting.SessionConnectorFactory.prototype.createConnector =
107    function(clientContainer, onConnected, onError, onExtensionMessage) {};
108
109/**
110 * @type {remoting.SessionConnectorFactory}
111 */
112remoting.SessionConnector.factory = null;
113