Index: remoting/webapp/crd/js/remoting.js |
diff --git a/remoting/webapp/crd/js/remoting.js b/remoting/webapp/crd/js/remoting.js |
index c2bedd1ddff9465c9e59bc3bb261aa8c1a990fb5..01044a40fd8e42451ca29a879630f68582d47fc1 100644 |
--- a/remoting/webapp/crd/js/remoting.js |
+++ b/remoting/webapp/crd/js/remoting.js |
@@ -17,39 +17,9 @@ var remoting = remoting || {}; |
remoting.testEvents; |
/** |
- * Show the authorization consent UI and register a one-shot event handler to |
- * continue the authorization process. |
- * |
- * @param {function():void} authContinue Callback to invoke when the user |
- * clicks "Continue". |
+ * Initialization tasks that are common to all remoting apps. |
*/ |
-function consentRequired_(authContinue) { |
- /** @type {HTMLElement} */ |
- var dialog = document.getElementById('auth-dialog'); |
- /** @type {HTMLElement} */ |
- var button = document.getElementById('auth-button'); |
- var consentGranted = function(event) { |
- dialog.hidden = true; |
- button.removeEventListener('click', consentGranted, false); |
- authContinue(); |
- remoting.windowShape.updateClientWindowShape(); |
- }; |
- dialog.hidden = false; |
- |
- /** @type {HTMLElement} */ |
- var dialog_border = document.getElementById('auth-dialog-border'); |
- // TODO(garykac): Refactor to remove auth dialog from the main html file |
- // and place in a separate window. |
- remoting.authDialog = new remoting.AuthDialog(dialog_border); |
- remoting.windowShape.addCallback(remoting.authDialog); |
- |
- button.addEventListener('click', consentGranted, false); |
-} |
- |
-/** |
- * Entry point for app initialization. |
- */ |
-remoting.init = function() { |
+remoting.initGlobalObjects = function() { |
if (base.isAppsV2()) { |
var htmlNode = /** @type {HTMLElement} */ (document.body.parentNode); |
htmlNode.classList.add('apps-v2'); |
@@ -65,61 +35,21 @@ remoting.init = function() { |
remoting.SessionConnector.factory = |
new remoting.DefaultSessionConnectorFactory(); |
remoting.settings = new remoting.Settings(); |
+ |
if (base.isAppsV2()) { |
- remoting.identity = new remoting.Identity(consentRequired_); |
remoting.fullscreen = new remoting.FullscreenAppsV2(); |
- remoting.windowFrame = new remoting.WindowFrame( |
- document.getElementById('title-bar')); |
- remoting.optionsMenu = remoting.windowFrame.createOptionsMenu(); |
} else { |
- remoting.oauth2 = new remoting.OAuth2(); |
- if (!remoting.oauth2.isAuthenticated()) { |
- document.getElementById('auth-dialog').hidden = false; |
- } |
- remoting.identity = remoting.oauth2; |
remoting.fullscreen = new remoting.FullscreenAppsV1(); |
- remoting.toolbar = new remoting.Toolbar( |
- document.getElementById('session-toolbar')); |
- remoting.optionsMenu = remoting.toolbar.createOptionsMenu(); |
} |
+ |
remoting.stats = new remoting.ConnectionStats( |
document.getElementById('statistics')); |
remoting.formatIq = new remoting.FormatIq(); |
- remoting.hostList = new remoting.HostList( |
- document.getElementById('host-list'), |
- document.getElementById('host-list-empty'), |
- document.getElementById('host-list-error-message'), |
- document.getElementById('host-list-refresh-failed-button'), |
- document.getElementById('host-list-loading-indicator')); |
+ |
remoting.clipboard = new remoting.Clipboard(); |
var sandbox = /** @type {HTMLIFrameElement} */ |
document.getElementById('wcs-sandbox'); |
remoting.wcsSandbox = new remoting.WcsSandboxContainer(sandbox.contentWindow); |
- var homeFeedback = new remoting.MenuButton( |
- document.getElementById('help-feedback-main')); |
- var toolbarFeedback = new remoting.MenuButton( |
- document.getElementById('help-feedback-toolbar')); |
- remoting.manageHelpAndFeedback( |
- document.getElementById('title-bar')); |
- remoting.manageHelpAndFeedback( |
- document.getElementById('help-feedback-toolbar')); |
- remoting.manageHelpAndFeedback( |
- document.getElementById('help-feedback-main')); |
- |
- /** @param {remoting.Error} error */ |
- var onGetEmailError = function(error) { |
- // No need to show the error message for NOT_AUTHENTICATED |
- // because we will show "auth-dialog". |
- if (error != remoting.Error.NOT_AUTHENTICATED) { |
- remoting.showErrorMessage(error); |
- } |
- } |
- remoting.identity.getEmail(remoting.onEmail, onGetEmailError); |
- |
- remoting.windowShape.updateClientWindowShape(); |
- |
- remoting.showOrHideIT2MeUi(); |
- remoting.showOrHideMe2MeUi(); |
// The plugin's onFocus handler sends a paste command to |window|, because |
// it can't send one to the plugin element itself. |
@@ -128,95 +58,13 @@ remoting.init = function() { |
remoting.initModalDialogs(); |
- isHostModeSupported_().then( |
- /** @param {Boolean} supported */ |
- function(supported){ |
- if (supported) { |
- var noShare = document.getElementById('chrome-os-no-share'); |
- noShare.parentNode.removeChild(noShare); |
- } else { |
- var button = document.getElementById('share-button'); |
- button.disabled = true; |
- } |
- }); |
- |
- /** |
- * @return {Promise} A promise that resolves to the id of the current |
- * containing tab/window. |
- */ |
- var getCurrentId = function () { |
- if (base.isAppsV2()) { |
- return Promise.resolve(chrome.app.window.current().id); |
- } |
- |
- /** |
- * @param {function(*=):void} resolve |
- * @param {function(*=):void} reject |
- */ |
- return new Promise(function(resolve, reject) { |
- /** @param {chrome.Tab} tab */ |
- chrome.tabs.getCurrent(function(tab){ |
- if (tab) { |
- resolve(String(tab.id)); |
- } |
- reject('Cannot retrieve the current tab.'); |
- }); |
- }); |
- }; |
- |
- var onLoad = function() { |
- // Parse URL parameters. |
- var urlParams = getUrlParameters_(); |
- if ('mode' in urlParams) { |
- if (urlParams['mode'] === 'me2me') { |
- var hostId = urlParams['hostId']; |
- remoting.connectMe2Me(hostId); |
- return; |
- } else if (urlParams['mode'] === 'hangout') { |
- /** @param {*} id */ |
- getCurrentId().then(function(id) { |
- /** @type {string} */ |
- var accessCode = urlParams['accessCode']; |
- remoting.ensureSessionConnector_(); |
- remoting.setMode(remoting.AppMode.CLIENT_CONNECTING); |
- remoting.connector.connectIT2Me(accessCode); |
- |
- document.body.classList.add('hangout-remote-desktop'); |
- var senderId = /** @type {string} */ String(id); |
- var hangoutSession = new remoting.HangoutSession(senderId); |
- hangoutSession.init(); |
- }); |
- return; |
- } |
- } |
- // No valid URL parameters, start up normally. |
- remoting.initHomeScreenUi(); |
- } |
- remoting.hostList.load(onLoad); |
- |
- // For Apps v1, check the tab type to warn the user if they are not getting |
- // the best keyboard experience. |
- if (!base.isAppsV2() && !remoting.platformIsMac()) { |
- /** @param {boolean} isWindowed */ |
- var onIsWindowed = function(isWindowed) { |
- if (!isWindowed) { |
- document.getElementById('startup-mode-box-me2me').hidden = false; |
- document.getElementById('startup-mode-box-it2me').hidden = false; |
- } |
- }; |
- isWindowed_(onIsWindowed); |
- } |
- |
remoting.testEvents = new base.EventSource(); |
- |
/** @enum {string} */ |
remoting.testEvents.Names = { |
uiModeChanged: 'uiModeChanged' |
}; |
remoting.testEvents.defineEvents(base.values(remoting.testEvents.Names)); |
- |
- remoting.ClientPlugin.factory.preloadPlugin(); |
-}; |
+} |
/** |
* Returns true if the current platform is fully supported. It's only used when |
@@ -236,97 +84,6 @@ remoting.isMe2MeInstallable = function() { |
} |
/** |
- * Display the user's email address and allow access to the rest of the app, |
- * including parsing URL parameters. |
- * |
- * @param {string} email The user's email address. |
- * @return {void} Nothing. |
- */ |
-remoting.onEmail = function(email) { |
- document.getElementById('current-email').innerText = email; |
- document.getElementById('get-started-it2me').disabled = false; |
- document.getElementById('get-started-me2me').disabled = false; |
-}; |
- |
-/** |
- * initHomeScreenUi is called if the app is not starting up in session mode, |
- * and also if the user cancels pin entry or the connection in session mode. |
- */ |
-remoting.initHomeScreenUi = function() { |
- remoting.hostController = new remoting.HostController(); |
- remoting.setMode(remoting.AppMode.HOME); |
- remoting.hostSetupDialog = |
- new remoting.HostSetupDialog(remoting.hostController); |
- var dialog = document.getElementById('paired-clients-list'); |
- var message = document.getElementById('paired-client-manager-message'); |
- var deleteAll = document.getElementById('delete-all-paired-clients'); |
- var close = document.getElementById('close-paired-client-manager-dialog'); |
- var working = document.getElementById('paired-client-manager-dialog-working'); |
- var error = document.getElementById('paired-client-manager-dialog-error'); |
- var noPairedClients = document.getElementById('no-paired-clients'); |
- remoting.pairedClientManager = |
- new remoting.PairedClientManager(remoting.hostController, dialog, message, |
- deleteAll, close, noPairedClients, |
- working, error); |
- // Display the cached host list, then asynchronously update and re-display it. |
- remoting.updateLocalHostState(); |
- remoting.hostList.refresh(remoting.updateLocalHostState); |
- remoting.butterBar = new remoting.ButterBar(); |
-}; |
- |
-/** |
- * Fetches local host state and updates the DOM accordingly. |
- */ |
-remoting.updateLocalHostState = function() { |
- /** |
- * @param {remoting.HostController.State} state Host state. |
- */ |
- var onHostState = function(state) { |
- if (state == remoting.HostController.State.STARTED) { |
- remoting.hostController.getLocalHostId(onHostId.bind(null, state)); |
- } else { |
- onHostId(state, null); |
- } |
- }; |
- |
- /** |
- * @param {remoting.HostController.State} state Host state. |
- * @param {string?} hostId Host id. |
- */ |
- var onHostId = function(state, hostId) { |
- remoting.hostList.setLocalHostStateAndId(state, hostId); |
- remoting.hostList.display(); |
- }; |
- |
- /** |
- * @param {boolean} response True if the feature is present. |
- */ |
- var onHasFeatureResponse = function(response) { |
- /** |
- * @param {remoting.Error} error |
- */ |
- var onError = function(error) { |
- console.error('Failed to get pairing status: ' + error); |
- remoting.pairedClientManager.setPairedClients([]); |
- }; |
- |
- if (response) { |
- remoting.hostController.getPairedClients( |
- remoting.pairedClientManager.setPairedClients.bind( |
- remoting.pairedClientManager), |
- onError); |
- } else { |
- console.log('Pairing registry not supported by host.'); |
- remoting.pairedClientManager.setPairedClients([]); |
- } |
- }; |
- |
- remoting.hostController.hasFeature( |
- remoting.HostController.Feature.PAIRING_REGISTRY, onHasFeatureResponse); |
- remoting.hostController.getLocalHostState(onHostState); |
-}; |
- |
-/** |
* @return {string} Information about the current extension. |
*/ |
remoting.getExtensionInfo = function() { |