Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(366)

Unified Diff: remoting/webapp/crd/js/activation_handler.js

Issue 868203002: Handle authentication failures in the v2 app by restarting the app (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/webapp/base/js/auth_init.js ('k') | remoting/webapp/crd/js/app_launcher.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..4cdd8380383757dcd0993a288359f96d29995ce0
--- /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();
+ }
+};
+
+})();
« no previous file with comments | « remoting/webapp/base/js/auth_init.js ('k') | remoting/webapp/crd/js/app_launcher.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698