OLD | NEW |
---|---|
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 * Interface abstracting the Application functionality. | 7 * Interface abstracting the Application functionality. |
8 */ | 8 */ |
9 | 9 |
10 'use strict'; | 10 'use strict'; |
11 | 11 |
12 /** @suppress {duplicate} */ | 12 /** @suppress {duplicate} */ |
13 var remoting = remoting || {}; | 13 var remoting = remoting || {}; |
14 | 14 |
15 /** | 15 /** |
16 * @type {base.EventSourceImpl} An event source object for handling global | |
17 * events. This is an interim hack. Eventually, we should move | |
18 * functionalities away from the remoting namespace and into smaller objects. | |
19 */ | |
20 remoting.testEvents; | |
21 | |
22 /** | |
16 * @constructor | 23 * @constructor |
17 */ | 24 */ |
18 remoting.Application = function() { | 25 remoting.Application = function() { |
19 // Create global factories. | 26 // Create global factories. |
20 remoting.ClientPlugin.factory = new remoting.DefaultClientPluginFactory(); | 27 remoting.ClientPlugin.factory = new remoting.DefaultClientPluginFactory(); |
21 remoting.SessionConnector.factory = | 28 remoting.SessionConnector.factory = |
22 new remoting.DefaultSessionConnectorFactory(); | 29 new remoting.DefaultSessionConnectorFactory(); |
23 | 30 |
24 /** @protected {remoting.Application.Mode} */ | 31 /** @protected {remoting.Application.Mode} */ |
25 this.connectionMode_ = remoting.Application.Mode.ME2ME; | 32 this.connectionMode_ = remoting.Application.Mode.ME2ME; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
73 | 80 |
74 /** | 81 /** |
75 * Initialize the application and register all event handlers. After this | 82 * Initialize the application and register all event handlers. After this |
76 * is called, the app is running and waiting for user events. | 83 * is called, the app is running and waiting for user events. |
77 */ | 84 */ |
78 remoting.Application.prototype.start = function() { | 85 remoting.Application.prototype.start = function() { |
79 // TODO(garykac): This should be owned properly rather than living in the | 86 // TODO(garykac): This should be owned properly rather than living in the |
80 // global 'remoting' namespace. | 87 // global 'remoting' namespace. |
81 remoting.settings = new remoting.Settings(); | 88 remoting.settings = new remoting.Settings(); |
82 | 89 |
83 remoting.initGlobalObjects(); | 90 this.initGlobalObjects_(); |
84 remoting.initIdentity(); | 91 remoting.initIdentity(); |
85 | 92 |
86 this.initApplication_(); | 93 this.initApplication_(); |
87 | 94 |
88 var that = this; | 95 var that = this; |
89 remoting.identity.getToken().then( | 96 remoting.identity.getToken().then( |
90 this.startApplication_.bind(this) | 97 this.startApplication_.bind(this) |
91 ).catch(function(/** !remoting.Error */ error) { | 98 ).catch(function(/** !remoting.Error */ error) { |
92 if (error.hasTag(remoting.Error.Tag.CANCELLED)) { | 99 if (error.hasTag(remoting.Error.Tag.CANCELLED)) { |
93 that.exitApplication_(); | 100 that.exitApplication_(); |
94 } else { | 101 } else { |
95 that.signInFailed_(error); | 102 that.signInFailed_(error); |
96 } | 103 } |
97 }); | 104 }); |
98 }; | 105 }; |
99 | 106 |
107 /** @private */ | |
108 remoting.Application.prototype.initGlobalObjects_ = function() { | |
kelvinp
2015/04/16 18:13:01
previously remoting.initGlobalObjects()
| |
109 if (base.isAppsV2()) { | |
110 var htmlNode = /** @type {HTMLElement} */ (document.body.parentNode); | |
111 htmlNode.classList.add('apps-v2'); | |
112 } | |
113 | |
114 console.log(this.getExtensionInfo()); | |
115 l10n.localize(); | |
116 var sandbox = | |
117 /** @type {HTMLIFrameElement} */ (document.getElementById('wcs-sandbox')); | |
118 remoting.wcsSandbox = new remoting.WcsSandboxContainer(sandbox.contentWindow); | |
119 remoting.initModalDialogs(); | |
120 | |
121 remoting.testEvents = new base.EventSourceImpl(); | |
122 /** @enum {string} */ | |
123 remoting.testEvents.Names = { | |
124 uiModeChanged: 'uiModeChanged' | |
125 }; | |
126 remoting.testEvents.defineEvents(base.values(remoting.testEvents.Names)); | |
127 }; | |
128 | |
129 /** | |
130 * @return {string} Information about the current extension. | |
131 */ | |
132 remoting.Application.prototype.getExtensionInfo = function() { | |
kelvinp
2015/04/16 18:13:01
previously remoting.getExtensionInfo()
| |
133 var v2OrLegacy = base.isAppsV2() ? " (v2)" : " (legacy)"; | |
134 var manifest = chrome.runtime.getManifest(); | |
135 if (manifest && manifest.version) { | |
136 var name = this.getApplicationName(); | |
137 return name + ' version: ' + manifest.version + v2OrLegacy; | |
138 } else { | |
139 return 'Failed to get product version. Corrupt manifest?'; | |
140 } | |
141 }; | |
142 | |
100 /** | 143 /** |
101 * These functions must be overridden in the subclass. | 144 * These functions must be overridden in the subclass. |
102 */ | 145 */ |
103 | 146 |
104 /** @return {string} */ | 147 /** @return {string} */ |
105 remoting.Application.prototype.getApplicationName = function() { | 148 remoting.Application.prototype.getApplicationName = function() { |
106 base.debug.assert(false, 'Subclass must override'); | 149 base.debug.assert(false, 'Subclass must override'); |
107 }; | 150 }; |
108 | 151 |
109 /** | 152 /** |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 */ | 222 */ |
180 remoting.ApplicationInterface.prototype.startApplication_ = function(token) {}; | 223 remoting.ApplicationInterface.prototype.startApplication_ = function(token) {}; |
181 | 224 |
182 /** | 225 /** |
183 * Close down the application before exiting. | 226 * Close down the application before exiting. |
184 */ | 227 */ |
185 remoting.ApplicationInterface.prototype.exitApplication_ = function() {}; | 228 remoting.ApplicationInterface.prototype.exitApplication_ = function() {}; |
186 | 229 |
187 /** @type {remoting.Application} */ | 230 /** @type {remoting.Application} */ |
188 remoting.app = null; | 231 remoting.app = null; |
OLD | NEW |