From c361080be8e4275d4b74a79193f02e0cf25b0348 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 Mar 2017 14:20:03 +0100 Subject: [PATCH 1/9] Use monospace font for unhandled errors The browsers uses crude layout formatting that expects this. --- app/error-handler.js | 12 +----------- app/styles/base.css | 6 ++++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/app/error-handler.js b/app/error-handler.js index 30f77068..ecfb2b0d 100644 --- a/app/error-handler.js +++ b/app/error-handler.js @@ -6,16 +6,6 @@ (function(){ "use strict"; - function convertNewlines(msg, parentElem) { - const lines = msg.split("\n"); - lines.forEach(function (line) { - parentElem.appendChild(document.createElement("br")); - parentElem.appendChild(document.createTextNode(line)); - }); - parentElem.removeChild(parentElem.firstChild); - return parentElem; - } - // Fallback for all uncought errors function handleError (event, err) { try { @@ -28,7 +18,7 @@ var div = document.createElement("div"); div.classList.add('noVNC_message'); - convertNewlines(event.message, div); + div.appendChild(document.createTextNode(event.message)); msg.appendChild(div); if (event.filename !== undefined && event.lineno !== undefined && event.colno !== undefined) { diff --git a/app/styles/base.css b/app/styles/base.css index 62a06287..f7c5de4b 100644 --- a/app/styles/base.css +++ b/app/styles/base.css @@ -231,7 +231,6 @@ select:active { text-align: center; font-weight: bold; - word-wrap: break-word; color: #fff; border-radius: 10px; @@ -251,6 +250,8 @@ select:active { #noVNC_fallback_errormsg .noVNC_message { display: inline-block; text-align: left; + font-family: monospace; + white-space: pre-wrap; } #noVNC_fallback_error .noVNC_location { @@ -264,7 +265,8 @@ select:active { margin: 10px; font-size: 0.8em; text-align: left; - white-space: pre; + font-family: monospace; + white-space: pre-wrap; border: 1px solid rgba(0, 0, 0, 0.5); background: rgba(0, 0, 0, 0.2); } From 13c558e3a0d9a56db98923ce3f08310ae1852bf7 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 Mar 2017 14:21:29 +0100 Subject: [PATCH 2/9] Limit fallback error width to window width Change the layout a bit to make sure the entire message can be read. --- app/styles/base.css | 24 +++++++++++++----------- vnc.html | 10 ++++++---- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/styles/base.css b/app/styles/base.css index f7c5de4b..ce31cf7e 100644 --- a/app/styles/base.css +++ b/app/styles/base.css @@ -216,19 +216,22 @@ select:active { */ #noVNC_fallback_error { - position: fixed; z-index: 1000; - left: 50%; - transform: translate(-50%, -50px); + visibility: hidden; +} +#noVNC_fallback_error.noVNC_open { + visibility: visible; +} + +#noVNC_fallback_error > div { + max-width: 90%; + padding: 15px; + transition: 0.5s ease-in-out; - visibility: hidden; + transform: translateY(-50px); opacity: 0; - top: 60px; - padding: 15px; - width: auto; - text-align: center; font-weight: bold; color: #fff; @@ -237,9 +240,8 @@ select:active { box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5); background: rgba(200,55,55,0.8); } -#noVNC_fallback_error.noVNC_open { - transform: translate(-50%, 0); - visibility: visible; +#noVNC_fallback_error.noVNC_open > div { + transform: translateY(0); opacity: 1; } diff --git a/vnc.html b/vnc.html index 02fe5c69..b96b0aa1 100644 --- a/vnc.html +++ b/vnc.html @@ -72,10 +72,12 @@ -
-
noVNC encountered an error:
-
-
+
+
+
noVNC encountered an error:
+
+
+
From 5da03103a35d1d441648cb98ceba1409ba695696 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 Mar 2017 14:22:15 +0100 Subject: [PATCH 3/9] ErrorEvent.error isn't always set It's not just a matter of the browser lacking support. --- app/error-handler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/error-handler.js b/app/error-handler.js index ecfb2b0d..1ec75881 100644 --- a/app/error-handler.js +++ b/app/error-handler.js @@ -29,7 +29,7 @@ msg.appendChild(div); } - if ((err !== undefined) && + if (err && (err.stack !== undefined)) { div = document.createElement("div"); div.className = 'noVNC_stack'; From 732233eda0817dd611dda16e430375be116edfcf Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 Mar 2017 15:44:30 +0100 Subject: [PATCH 4/9] Handle partial error location information We might not get line or column number, but the file is still useful information. --- app/error-handler.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/error-handler.js b/app/error-handler.js index 1ec75881..99c2bd38 100644 --- a/app/error-handler.js +++ b/app/error-handler.js @@ -21,11 +21,17 @@ div.appendChild(document.createTextNode(event.message)); msg.appendChild(div); - if (event.filename !== undefined && event.lineno !== undefined && event.colno !== undefined) { + if (event.filename) { div = document.createElement("div"); div.className = 'noVNC_location'; - const text = event.filename + ":" + event.lineno + ":" + event.colno; - div.appendChild(document.createTextNode(text)); + var text = event.filename; + if (event.lineno !== undefined) { + text += ":" + event.lineno; + if (event.colno !== undefined) { + text += ":" + event.colno; + } + } + div.appendChild(document.createTextNode(text)); msg.appendChild(div); } From 36653517a52f2ea3341f2e6be46a394240ae9d0d Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 Mar 2017 15:46:05 +0100 Subject: [PATCH 5/9] Use common code to handle Promise errors --- .../dist/browser-es-module-loader.js | 51 +++++++------------ .../src/browser-es-module-loader.js | 51 +++++++------------ 2 files changed, 38 insertions(+), 64 deletions(-) diff --git a/vendor/browser-es-module-loader/dist/browser-es-module-loader.js b/vendor/browser-es-module-loader/dist/browser-es-module-loader.js index f191d1a5..9ff4f159 100644 --- a/vendor/browser-es-module-loader/dist/browser-es-module-loader.js +++ b/vendor/browser-es-module-loader/dist/browser-es-module-loader.js @@ -1169,6 +1169,23 @@ var loader; //