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

Side by Side Diff: remoting/webapp/background/message_window_manager.js

Issue 493813002: Show MessageWindow from the background page (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix license header Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 'use strict';
6
7 /** @suppress {duplicate} */
8 var remoting = remoting || {};
9
10 /**
11 * Namespace for window manager functions.
12 * @type {Object}
13 */
14 remoting.MessageWindowManager = {};
15
16 /**
17 * Mapping from window id to corresponding MessageWindow.
18 *
19 * @type {Object.<number, remoting.MessageWindow>}
20 * @private
21 */
22 remoting.MessageWindowManager.messageWindows_ = {};
23
24 /**
25 * The next window id to auto-assign.
26 * @type {number}
27 * @private
28 */
29 remoting.MessageWindowManager.nextId_ = 1;
30
31 /**
32 * @param {remoting.MessageWindow} window The window to associate
33 * with the window id.
34 * @return {number} The window id.
35 */
36 remoting.MessageWindowManager.addMessageWindow = function(window) {
37 var id = ++remoting.MessageWindowManager.nextId_;
38 remoting.MessageWindowManager.messageWindows_[id] = window;
39 return id;
40 };
41
42 /**
43 * @param {number} id The window id.
44 * @return {remoting.MessageWindow}
45 */
46 remoting.MessageWindowManager.getMessageWindow = function(id) {
47 return remoting.MessageWindowManager.messageWindows_[id];
48 };
49
50 /**
51 * @param {number} id The window id to delete.
52 */
53 remoting.MessageWindowManager.deleteMessageWindow = function(id) {
54 delete remoting.MessageWindowManager.messageWindows_[id];
55 };
56
57 /**
58 * Close all of the registered MessageWindows
59 */
60 remoting.MessageWindowManager.closeAllMessageWindows = function() {
61 /** @type {Array.<remoting.MessageWindow>} */
62 var windows = [];
63 // Make a list of the windows to close.
64 // We don't delete the window directly in this loop because close() can
65 // call deleteMessageWindow which will update messageWindows_.
66 for (var win_id in remoting.MessageWindowManager.messageWindows_) {
67 /** @type {remoting.MessageWindow} */
68 var win = remoting.MessageWindowManager.getMessageWindow(
69 /** @type {number} */(win_id));
70 base.debug.assert(win != null);
71 windows.push(win);
72 }
73 for (var i = 0; i < windows.length; i++) {
74 /** @type {remoting.MessageWindow} */(windows[i]).close();
75 }
76 };
77
78 /**
79 * Dispatch a message box result to the appropriate callback.
80 *
81 * @param {Event} event
82 * @private
83 */
84 remoting.MessageWindowManager.onMessage_ = function(event) {
85 if (typeof(event.data) != 'object') {
86 return;
87 }
88
89 if (event.data['command'] == 'messageWindowResult') {
90 var id = /** @type {number} */ (event.data['id']);
91 var result = /** @type {number} */ (event.data['result']);
92
93 if (typeof(id) != 'number' || typeof(result) != 'number') {
94 console.log('Poorly formatted id or result');
95 return;
96 }
97
98 var messageWindow = remoting.MessageWindowManager.getMessageWindow(id);
99 if (!messageWindow) {
100 console.log('Ignoring unknown message window id:', id);
101 return;
102 }
103
104 messageWindow.handleResult(result);
105 messageWindow.close();
106 }
107 };
108
109
110 window.addEventListener('message', remoting.MessageWindowManager.onMessage_,
111 false);
OLDNEW
« no previous file with comments | « remoting/webapp/background/message_window_helper.js ('k') | remoting/webapp/html/message_window.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698