| OLD | NEW |
| (Empty) |
| 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 * This class implements the functionality that is specific to application | |
| 8 * remoting ("AppRemoting" or AR). | |
| 9 */ | |
| 10 | |
| 11 'use strict'; | |
| 12 | |
| 13 /** @suppress {duplicate} */ | |
| 14 var remoting = remoting || {}; | |
| 15 | |
| 16 /** | |
| 17 * Parameters for the remoting.AppRemoting constructor. | |
| 18 * | |
| 19 * appId: The application ID. If this is not specified than the app id will | |
| 20 * be extracted from the app's manifest. | |
| 21 * | |
| 22 * appCapabilites: Array of application capabilites. | |
| 23 * | |
| 24 * licenseManager: Licence manager for this application. | |
| 25 * | |
| 26 * @typedef {{ | |
| 27 * appId: (string|undefined), | |
| 28 * appCapabilities: (Array<string>|undefined), | |
| 29 * licenseManager: (remoting.LicenseManager|undefined) | |
| 30 * }} | |
| 31 */ | |
| 32 remoting.AppRemotingParams; | |
| 33 | |
| 34 /** | |
| 35 * @param {remoting.AppRemotingParams} args | |
| 36 * @constructor | |
| 37 * @implements {remoting.ApplicationInterface} | |
| 38 * @extends {remoting.Application} | |
| 39 */ | |
| 40 remoting.AppRemoting = function(args) { | |
| 41 base.inherits(this, remoting.Application); | |
| 42 remoting.app = this; | |
| 43 | |
| 44 // Save recent errors for inclusion in user feedback. | |
| 45 remoting.ConsoleWrapper.getInstance().activate( | |
| 46 5, | |
| 47 remoting.ConsoleWrapper.LogType.ERROR, | |
| 48 remoting.ConsoleWrapper.LogType.ASSERT); | |
| 49 | |
| 50 /** @private {remoting.Activity} */ | |
| 51 this.activity_ = null; | |
| 52 | |
| 53 /** @private {string} */ | |
| 54 this.appId_ = (args.appId) ? args.appId : chrome.runtime.id; | |
| 55 | |
| 56 /** @private */ | |
| 57 this.licenseManager_ = (args.licenseManager) ? | |
| 58 args.licenseManager : | |
| 59 new remoting.GaiaLicenseManager(); | |
| 60 | |
| 61 /** @private */ | |
| 62 this.appCapabilities_ = (args.appCapabilities) ? args.appCapabilities : []; | |
| 63 | |
| 64 // This prefix must be added to message window paths so that the HTML | |
| 65 // files can be found in the shared module. | |
| 66 // TODO(garykac) Add support for dev/prod shared modules. | |
| 67 remoting.MessageWindow.htmlFilePrefix = | |
| 68 "_modules/koejkfhmphamcgafjmkellhnekdkopod/"; | |
| 69 }; | |
| 70 | |
| 71 /** | |
| 72 * @return {string} Application Id. | |
| 73 * @override {remoting.ApplicationInterface} | |
| 74 */ | |
| 75 remoting.AppRemoting.prototype.getApplicationId = function() { | |
| 76 return this.appId_; | |
| 77 }; | |
| 78 | |
| 79 /** | |
| 80 * @return {string} Application product name to be used in UI. | |
| 81 * @override {remoting.ApplicationInterface} | |
| 82 */ | |
| 83 remoting.AppRemoting.prototype.getApplicationName = function() { | |
| 84 var manifest = chrome.runtime.getManifest(); | |
| 85 return manifest.name; | |
| 86 }; | |
| 87 | |
| 88 remoting.AppRemoting.prototype.getActivity = function() { | |
| 89 return this.activity_; | |
| 90 }; | |
| 91 | |
| 92 /** | |
| 93 * @param {!remoting.Error} error The failure reason. | |
| 94 * @override {remoting.ApplicationInterface} | |
| 95 */ | |
| 96 remoting.AppRemoting.prototype.signInFailed_ = function(error) { | |
| 97 remoting.MessageWindow.showErrorMessage( | |
| 98 this.getApplicationName(), | |
| 99 chrome.i18n.getMessage(error.getTag())); | |
| 100 }; | |
| 101 | |
| 102 /** | |
| 103 * @override {remoting.ApplicationInterface} | |
| 104 */ | |
| 105 remoting.AppRemoting.prototype.initApplication_ = function() { | |
| 106 remoting.messageWindowManager = new remoting.MessageWindowManager( | |
| 107 /** @type {base.WindowMessageDispatcher} */ | |
| 108 (this.windowMessageDispatcher_)); | |
| 109 }; | |
| 110 | |
| 111 /** | |
| 112 * @param {string} token An OAuth access token. | |
| 113 * @override {remoting.ApplicationInterface} | |
| 114 */ | |
| 115 remoting.AppRemoting.prototype.startApplication_ = function(token) { | |
| 116 var windowShape = new remoting.WindowShape(); | |
| 117 windowShape.updateClientWindowShape(); | |
| 118 var that = this; | |
| 119 | |
| 120 this.licenseManager_.getSubscriptionToken(token).then( | |
| 121 function(/** string*/ subscriptionToken) { | |
| 122 that.activity_ = new remoting.AppRemotingActivity( | |
| 123 that.appCapabilities_, that, windowShape, subscriptionToken, | |
| 124 /** @type {base.WindowMessageDispatcher} */ | |
| 125 (that.windowMessageDispatcher_)); | |
| 126 that.activity_.start(); | |
| 127 }); | |
| 128 }; | |
| 129 | |
| 130 /** | |
| 131 * @override {remoting.ApplicationInterface} | |
| 132 */ | |
| 133 remoting.AppRemoting.prototype.exitApplication_ = function() { | |
| 134 if (this.activity_) { | |
| 135 this.activity_.stop(); | |
| 136 this.activity_.dispose(); | |
| 137 this.activity_ = null; | |
| 138 } | |
| 139 this.closeMainWindow_(); | |
| 140 }; | |
| OLD | NEW |