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

Unified Diff: remoting/webapp/base/js/message_window.js

Issue 1139543002: [Chromoting] Show any startup errors in the LoadingWindow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge 'show' and 'update' window commands Created 5 years, 7 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
Index: remoting/webapp/base/js/message_window.js
diff --git a/remoting/webapp/base/js/message_window.js b/remoting/webapp/base/js/message_window.js
index f110e6f659a6162dd852f061f2497cb45bd0187d..2292f28e537a6198fcb213479a5f4ae69d5b4500 100644
--- a/remoting/webapp/base/js/message_window.js
+++ b/remoting/webapp/base/js/message_window.js
@@ -44,19 +44,16 @@ MessageWindowImpl.prototype.sendReply_ = function(
};
/**
- * Initializes the button with the label and the click handler.
+ * Updates the button label text.
* Hides the button if the label is null or undefined.
*
* @param{HTMLElement} button
* @param{?string} label
- * @param{Function} clickHandler
* @private
*/
-MessageWindowImpl.prototype.initButton_ =
- function(button, label, clickHandler) {
+MessageWindowImpl.prototype.updateButton_ = function(button, label) {
if (label) {
button.innerText = label;
- button.addEventListener('click', clickHandler, false);
}
button.hidden = !Boolean(label);
};
@@ -69,86 +66,87 @@ MessageWindowImpl.prototype.initButton_ =
* @private
*/
MessageWindowImpl.prototype.onMessage_ = function(event) {
- switch (event.data['command']) {
- case 'show':
- // Validate the message.
- var messageId = /** @type {number} */ (event.data['id']);
- var title = /** @type {string} */ (event.data['title']);
- var message = /** @type {string} */ (event.data['message']);
- var infobox = /** @type {string} */ (event.data['infobox']);
- var buttonLabel = /** @type {string} */ (event.data['buttonLabel']);
- /** @type {string} */
- var cancelButtonLabel = (event.data['cancelButtonLabel']);
- var showSpinner = /** @type {boolean} */ (event.data['showSpinner']);
- if (typeof(messageId) != 'number' ||
- typeof(title) != 'string' ||
- typeof(message) != 'string' ||
- typeof(infobox) != 'string' ||
- typeof(buttonLabel) != 'string' ||
- typeof(showSpinner) != 'boolean') {
- console.log('Bad show message:', event.data);
- break;
- }
-
- // Set the dialog text.
- var button = document.getElementById('button-primary');
- var cancelButton = document.getElementById('button-secondary');
- var messageDiv = document.getElementById('message');
- var infoboxDiv = document.getElementById('infobox');
-
- document.getElementById('title').innerText = title;
- document.querySelector('title').innerText = title;
- messageDiv.innerHTML = message;
-
- if (showSpinner) {
- messageDiv.classList.add('waiting');
- messageDiv.classList.add('prominent');
- }
- if (infobox != '') {
- infoboxDiv.innerText = infobox;
- } else {
- infoboxDiv.hidden = true;
- }
-
- this.initButton_(
- button,
- buttonLabel,
- this.sendReply_.bind(this, event.source, messageId, 1));
-
- this.initButton_(
- cancelButton,
- cancelButtonLabel,
- this.sendReply_.bind(this, event.source, messageId, 0));
-
- var buttonToFocus = (cancelButtonLabel) ? cancelButton : button;
- buttonToFocus.focus();
-
- // Add a close handler in case the window is closed without clicking one
- // of the buttons. This will send a 0 as the result.
- // Note that when a button is pressed, this will result in sendReply_
- // being called multiple times (once for the button, once for close).
- chrome.app.window.current().onClosed.addListener(
- this.sendReply_.bind(this, event.source, messageId, 0));
-
- base.resizeWindowToContent();
- chrome.app.window.current().show();
- break;
-
- case 'update_message':
- var message = /** @type {string} */ (event.data['message']);
- if (typeof(message) != 'string') {
- console.log('Bad update_message message:', event.data);
- break;
- }
-
- var messageDiv = document.getElementById('message');
- messageDiv.innerText = message;
-
- base.resizeWindowToContent(true);
- break;
-
- default:
- console.error('Unexpected message:', event.data);
+ var command = /** @type {string} */ (event.data['command']);
+ if (command !== 'show' && command !== 'update') {
+ console.error('Unexpected message: ' + command);
+ return;
+ }
+
+ // Validate the message.
+ var messageId = /** @type {number} */ (event.data['id']);
+ var title = /** @type {string} */ (event.data['title']);
+ var message = /** @type {string} */ (event.data['message']);
+ var infobox = /** @type {string} */ (event.data['infobox']);
+ var buttonLabel = /** @type {string} */ (event.data['buttonLabel']);
+ var cancelButtonLabel = /** @type {string} */
+ (event.data['cancelButtonLabel']);
+ var showSpinner = /** @type {boolean} */ (event.data['showSpinner']);
+
+ // For the 'show' command, these values are required; whereas they are
+ // all optional for the 'update' command.
Jamie 2015/05/11 22:54:53 I think we should do the type check regardless. Fo
garykac 2015/05/13 22:05:27 The same needs to be done for cancelButtonLabel (w
+ if (command === 'show') {
+ if (typeof(messageId) !== 'number' ||
+ typeof(title) !== 'string' ||
+ typeof(message) !== 'string' ||
+ typeof(infobox) !== 'string' ||
+ typeof(buttonLabel) !== 'string' ||
+ typeof(showSpinner) !== 'boolean') {
+ console.log('Bad show message: ' + event.data);
+ return;
+ }
+ }
+
+ var button = document.getElementById('button-primary');
+ var cancelButton = document.getElementById('button-secondary');
+ var messageDiv = document.getElementById('message');
+ var infoboxDiv = document.getElementById('infobox');
+
+ if (typeof(title) === 'string') {
+ document.getElementById('title').innerText = title;
+ document.querySelector('title').innerText = title;
+ }
+ if (typeof(message) === 'string') {
+ messageDiv.innerText = message;
+ }
+ if (typeof(infobox) === 'string') {
+ if (infobox != '') {
+ infoboxDiv.innerText = infobox;
+ } else {
+ infoboxDiv.hidden = true;
+ }
+ }
+ if (typeof(showSpinner) === 'boolean') {
+ if (showSpinner) {
+ messageDiv.classList.add('waiting');
+ messageDiv.classList.add('prominent');
+ } else {
+ messageDiv.classList.remove('waiting');
+ messageDiv.classList.remove('prominent');
+ }
+ }
+ this.updateButton_(button, buttonLabel);
+ this.updateButton_(cancelButton, cancelButtonLabel);
+
+ base.resizeWindowToContent();
+
+ if (command === 'show') {
+ // Set up clickhandlers for the buttons.
Jamie 2015/05/11 22:54:53 s/clickhandlers/click-handlers/
garykac 2015/05/13 22:05:27 Done.
+ button.addEventListener(
+ 'click', this.sendReply_.bind(this, event.source, messageId, 1), false);
+ cancelButton.addEventListener(
+ 'click', this.sendReply_.bind(this, event.source, messageId, 0), false);
Jamie 2015/05/11 22:54:53 Optional: Consider moving the event handlers to th
garykac 2015/05/13 22:05:27 That doesn't feel like it belongs in this cl. It
Jamie 2015/05/13 23:43:17 Acknowledged.
+
+ var buttonToFocus = (cancelButtonLabel) ? cancelButton : button;
+ buttonToFocus.focus();
+
+ // Add a close handler in case the window is closed without clicking one
+ // of the buttons. This will send a 0 as the result.
+ // Note that when a button is pressed, this will result in sendReply_
+ // being called multiple times (once for the button, once for close).
+ chrome.app.window.current().onClosed.addListener(
+ this.sendReply_.bind(this, event.source, messageId, 0));
+
+ chrome.app.window.current().show();
}
};
« no previous file with comments | « remoting/webapp/app_remoting/js/app_remoting_activity.js ('k') | remoting/webapp/base/js/message_window_helper.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698