| 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() { |
| 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() { |
| 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 |