| Index: remoting/webapp/crd/js/background.js
|
| diff --git a/remoting/webapp/crd/js/background.js b/remoting/webapp/crd/js/background.js
|
| index 03ec6ef49319f8c473001029cbadc0ea27608e03..f3d5bea5c98d5ece80db81bb4df89631552f72fc 100644
|
| --- a/remoting/webapp/crd/js/background.js
|
| +++ b/remoting/webapp/crd/js/background.js
|
| @@ -7,33 +7,58 @@ var remoting = remoting || {};
|
|
|
| (function(){
|
|
|
| -/** @param {remoting.AppLauncher} appLauncher */
|
| -function initializeAppV2(appLauncher) {
|
| - /** @type {string} */
|
| - var kNewWindowId = 'new-window';
|
| -
|
| - /** @param {OnClickData} info */
|
| - function onContextMenu(info) {
|
| - if (info.menuItemId == kNewWindowId) {
|
| - appLauncher.launch();
|
| - }
|
| - }
|
| +/**
|
| + * A class that handles application activation.
|
| + *
|
| + * @param {remoting.AppLauncher} appLauncher
|
| + * @constructor
|
| + */
|
| +function ActivationHandler(appLauncher) {
|
| + /**
|
| + * @type {remoting.AppLauncher}
|
| + * @private
|
| + */
|
| + this.appLauncher_ = appLauncher;
|
|
|
| - function initializeContextMenu() {
|
| - chrome.contextMenus.create({
|
| - id: kNewWindowId,
|
| - contexts: ['launcher'],
|
| - title: chrome.i18n.getMessage(/*i18n-content*/'NEW_WINDOW')
|
| - });
|
| - chrome.contextMenus.onClicked.addListener(onContextMenu);
|
| - }
|
| + chrome.contextMenus.create({
|
| + id: ActivationHandler.NEW_WINDOW_MENU_ID_,
|
| + contexts: ['launcher'],
|
| + title: chrome.i18n.getMessage(/*i18n-content*/'NEW_WINDOW')
|
| + });
|
|
|
| - initializeContextMenu();
|
| - chrome.app.runtime.onLaunched.addListener(
|
| - appLauncher.launch.bind(appLauncher)
|
| - );
|
| + chrome.contextMenus.onClicked.addListener(this.onContextMenu_.bind(this));
|
| + chrome.app.runtime.onLaunched.addListener(this.onLaunched_.bind(this));
|
| }
|
|
|
| +/** @type {string} */
|
| +ActivationHandler.NEW_WINDOW_MENU_ID_ = 'new-window';
|
| +
|
| +/**
|
| + * @param {OnClickData} info
|
| + * @private
|
| + */
|
| +ActivationHandler.prototype.onContextMenu_ = function(info) {
|
| + if (info.menuItemId == ActivationHandler.NEW_WINDOW_MENU_ID_) {
|
| + this.appLauncher_.launch();
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * Called when the App is activated (e.g. from the Chrome App Launcher). It
|
| + * creates a new window if there are no existing ones. Otherwise, it will put
|
| + * focus on the last window created.
|
| + *
|
| + * @private
|
| + */
|
| +ActivationHandler.prototype.onLaunched_ = function() {
|
| + var windows = chrome.app.window.getAll();
|
| + if (windows.length >= 1) {
|
| + windows[windows.length - 1].focus();
|
| + } else {
|
| + this.appLauncher_.launch();
|
| + }
|
| +};
|
| +
|
| /**
|
| * The background service is responsible for listening to incoming connection
|
| * requests from Hangouts and the webapp.
|
| @@ -61,8 +86,7 @@ function initializeBackgroundService(appLauncher) {
|
|
|
| function main() {
|
| if (base.isAppsV2()) {
|
| - var appLauncher = new remoting.V2AppLauncher();
|
| - initializeAppV2(appLauncher);
|
| + new ActivationHandler(new remoting.V2AppLauncher());
|
| }
|
| }
|
|
|
|
|