| Index: remoting/webapp/crd/js/activation_handler.js
|
| diff --git a/remoting/webapp/crd/js/activation_handler.js b/remoting/webapp/crd/js/activation_handler.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cbb74de7ff58c842a9e740f4a8cd711a3a0196e9
|
| --- /dev/null
|
| +++ b/remoting/webapp/crd/js/activation_handler.js
|
| @@ -0,0 +1,72 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/** @suppress {duplicate} */
|
| +var remoting = remoting || {};
|
| +
|
| +(function(){
|
| +
|
| +'use strict';
|
| +
|
| +/** @type {string} */
|
| +var NEW_WINDOW_MENU_ID_ = 'new-window';
|
| +
|
| +/**
|
| + * A class that handles application activation.
|
| + *
|
| + * @param {base.IPC} ipc
|
| + * @param {remoting.V2AppLauncher} appLauncher
|
| + * @constructor
|
| + */
|
| +remoting.ActivationHandler = function (ipc, appLauncher) {
|
| + /**
|
| + * @type {remoting.V2AppLauncher}
|
| + * @private
|
| + */
|
| + this.appLauncher_ = appLauncher;
|
| +
|
| + chrome.contextMenus.create({
|
| + id: NEW_WINDOW_MENU_ID_,
|
| + contexts: ['launcher'],
|
| + title: chrome.i18n.getMessage(/*i18n-content*/'NEW_WINDOW')
|
| + });
|
| +
|
| + chrome.contextMenus.onClicked.addListener(this.onContextMenu_.bind(this));
|
| + chrome.app.runtime.onLaunched.addListener(this.onLaunched_.bind(this));
|
| + ipc.register(remoting.ActivationHandler.IPC.RELAUNCH,
|
| + appLauncher.restart.bind(appLauncher));
|
| +};
|
| +
|
| +/** @enum {string} */
|
| +remoting.ActivationHandler.IPC = {
|
| + RELAUNCH: 'remoting.ActivationHandler.restart'
|
| +};
|
| +
|
| +/**
|
| + * @param {OnClickData} info
|
| + * @private
|
| + */
|
| +remoting.ActivationHandler.prototype.onContextMenu_ = function(info) {
|
| + if (info.menuItemId == 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
|
| + */
|
| +remoting.ActivationHandler.prototype.onLaunched_ = function() {
|
| + var windows = chrome.app.window.getAll();
|
| + if (windows.length >= 1) {
|
| + windows[windows.length - 1].focus();
|
| + } else {
|
| + this.appLauncher_.launch();
|
| + }
|
| +};
|
| +
|
| +})();
|
|
|