Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: remoting/webapp/background/it2me_service.js

Issue 473073002: Move hello message from It2MeService to It2MeChannel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address CR feedback Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * It2MeService listens to incoming connections requests from Hangouts 7 * It2MeService listens to incoming connections requests from Hangouts
8 * and the webapp and creates a It2MeHelperChannel between them. 8 * and the webapp and creates a It2MeHelperChannel between them.
9 * It supports multiple helper sessions, but only a single helpee. 9 * It supports multiple helper sessions, but only a single helpee.
10 */ 10 */
(...skipping 17 matching lines...) Expand all
28 /** 28 /**
29 * @type {Array.<remoting.It2MeHelperChannel>} 29 * @type {Array.<remoting.It2MeHelperChannel>}
30 * @private 30 * @private
31 */ 31 */
32 this.helpers_ = []; 32 this.helpers_ = [];
33 33
34 /** @private */ 34 /** @private */
35 this.helpee_ = null; 35 this.helpee_ = null;
36 36
37 this.onWebappConnectRef_ = this.onWebappConnect_.bind(this); 37 this.onWebappConnectRef_ = this.onWebappConnect_.bind(this);
38 this.onMessageExternalRef_ = this.onMessageExternal_.bind(this);
39 this.onConnectExternalRef_ = this.onConnectExternal_.bind(this); 38 this.onConnectExternalRef_ = this.onConnectExternal_.bind(this);
40 }; 39 };
41 40
42 /** @enum {string} */ 41 /** @enum {string} */
43 remoting.It2MeService.ConnectionTypes = { 42 remoting.It2MeService.ConnectionTypes = {
44 HELPER_HANGOUT: 'it2me.helper.hangout', 43 HELPER_HANGOUT: 'it2me.helper.hangout',
45 HELPEE_HANGOUT: 'it2me.helpee.hangout', 44 HELPEE_HANGOUT: 'it2me.helpee.hangout',
46 HELPER_WEBAPP: 'it2me.helper.webapp' 45 HELPER_WEBAPP: 'it2me.helper.webapp'
47 }; 46 };
48 47
49 /** 48 /**
50 * Starts listening to external connection from Hangouts and the webapp. 49 * Starts listening to external connection from Hangouts and the webapp.
51 */ 50 */
52 remoting.It2MeService.prototype.init = function() { 51 remoting.It2MeService.prototype.init = function() {
53 chrome.runtime.onConnect.addListener(this.onWebappConnectRef_); 52 chrome.runtime.onConnect.addListener(this.onWebappConnectRef_);
54 chrome.runtime.onMessageExternal.addListener(this.onMessageExternalRef_);
55 chrome.runtime.onConnectExternal.addListener(this.onConnectExternalRef_); 53 chrome.runtime.onConnectExternal.addListener(this.onConnectExternalRef_);
56 }; 54 };
57 55
58 remoting.It2MeService.prototype.dispose = function() { 56 remoting.It2MeService.prototype.dispose = function() {
59 chrome.runtime.onConnect.removeListener(this.onWebappConnectRef_); 57 chrome.runtime.onConnect.removeListener(this.onWebappConnectRef_);
60 chrome.runtime.onMessageExternal.removeListener(
61 this.onMessageExternalRef_);
62 chrome.runtime.onConnectExternal.removeListener( 58 chrome.runtime.onConnectExternal.removeListener(
63 this.onConnectExternalRef_); 59 this.onConnectExternalRef_);
64 }; 60 };
65 61
66 /** 62 /**
67 * This function is called when a runtime message is received from an external
68 * web page (hangout) or extension.
69 *
70 * @param {{method:string, data:Object.<string,*>}} message
71 * @param {chrome.runtime.MessageSender} sender
72 * @param {function(*):void} sendResponse
73 * @private
74 */
75 remoting.It2MeService.prototype.onMessageExternal_ =
76 function(message, sender, sendResponse) {
77 try {
78 var method = message.method;
79 if (method == 'hello') {
80 // The hello message is used by hangouts to detect whether the app is
81 // installed and what features are supported.
82 sendResponse({
83 method: 'helloResponse',
84 supportedFeatures: ['it2me']
85 });
86 return true;
87 }
88 throw new Error('Unknown method: ' + method);
89 } catch (e) {
90 var error = /** @type {Error} */ e;
91 console.error(error);
92 sendResponse({
93 method: message.method + 'Response',
94 error: error.message
95 });
96 }
97 return false;
98 };
99
100 /**
101 * This function is called when Hangouts connects via chrome.runtime.connect. 63 * This function is called when Hangouts connects via chrome.runtime.connect.
102 * Only web pages that are white-listed in the manifest are allowed to connect. 64 * Only web pages that are white-listed in the manifest are allowed to connect.
103 * 65 *
104 * @param {chrome.runtime.Port} port 66 * @param {chrome.runtime.Port} port
105 * @private 67 * @private
106 */ 68 */
107 remoting.It2MeService.prototype.onConnectExternal_ = function(port) { 69 remoting.It2MeService.prototype.onConnectExternal_ = function(port) {
108 var ConnectionTypes = remoting.It2MeService.ConnectionTypes; 70 var ConnectionTypes = remoting.It2MeService.ConnectionTypes;
109 try { 71 try {
110 switch (port.name) { 72 switch (port.name) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 'Cannot start a helper session while a helpee session is in process.'); 137 'Cannot start a helper session while a helpee session is in process.');
176 port.disconnect(); 138 port.disconnect();
177 } 139 }
178 140
179 console.log('Incoming helper connection from Hangouts'); 141 console.log('Incoming helper connection from Hangouts');
180 var helper = new remoting.It2MeHelperChannel( 142 var helper = new remoting.It2MeHelperChannel(
181 this.appLauncher_, port, this.onHelperChannelDisconnected.bind(this)); 143 this.appLauncher_, port, this.onHelperChannelDisconnected.bind(this));
182 helper.init(); 144 helper.init();
183 this.helpers_.push(helper); 145 this.helpers_.push(helper);
184 }; 146 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698