summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolly Ross <sross@redhat.com>2016-09-03 13:39:12 -0400
committerSolly Ross <sross@redhat.com>2016-09-14 14:15:19 -0400
commit7938b0f777220393534999e35772fb16c27b766e (patch)
tree230dc0d8b85f8a309e097bdd56543c098cd7cf5d
parent8df31d1bfa96e830f263d6433957ec2c1d0ccf1b (diff)
downloadnovnc-7938b0f777220393534999e35772fb16c27b766e.tar.gz
Clean up Util
This commit removes unused code from Util, and moves the script-loading functionality to WebUtil.
-rw-r--r--app/ui.js5
-rw-r--r--app/webutil.js69
-rw-r--r--core/util.js158
-rw-r--r--tests/input.html22
-rw-r--r--tests/vnc_perf.html2
-rw-r--r--tests/vnc_playback.html2
-rw-r--r--vnc.html1
-rw-r--r--vnc_auto.html3
8 files changed, 87 insertions, 175 deletions
diff --git a/app/ui.js b/app/ui.js
index c8251fb..45aa2ac 100644
--- a/app/ui.js
+++ b/app/ui.js
@@ -25,11 +25,10 @@ var UI;
/* [begin skip-as-module] */
// Load supporting scripts
- Util.load_scripts(
+ WebUtil.load_scripts(
{'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
- "inflator.js", "rfb.js", "keysym.js"],
- '.': ["webutil.js"]});
+ "inflator.js", "rfb.js", "keysym.js"]});
window.onscriptsload = function () { UI.load(); };
/* [end skip-as-module] */
diff --git a/app/webutil.js b/app/webutil.js
index f5f3077..7f234db 100644
--- a/app/webutil.js
+++ b/app/webutil.js
@@ -278,4 +278,73 @@ WebUtil.injectParamIfMissing = function (path, param, value) {
}
};
+// Dynamically load scripts without using document.write()
+// Reference: http://unixpapa.com/js/dyna.html
+//
+// Handles the case where load_scripts is invoked from a script that
+// itself is loaded via load_scripts. Once all scripts are loaded the
+// window.onscriptsloaded handler is called (if set).
+WebUtil.get_include_uri = function (root_dir) {
+ return (typeof INCLUDE_URI !== "undefined") ? INCLUDE_URI + root_dir + '/' : root_dir + '/';
+};
+WebUtil._loading_scripts = [];
+WebUtil._pending_scripts = [];
+WebUtil.load_scripts = function (files_by_dir) {
+ "use strict";
+ var head = document.getElementsByTagName('head')[0], script,
+ ls = WebUtil._loading_scripts, ps = WebUtil._pending_scripts;
+
+ var loadFunc = function (e) {
+ while (ls.length > 0 && (ls[0].readyState === 'loaded' ||
+ ls[0].readyState === 'complete')) {
+ // For IE, append the script to trigger execution
+ var s = ls.shift();
+ //console.log("loaded script: " + s.src);
+ head.appendChild(s);
+ }
+ if (!this.readyState ||
+ (Util.Engine.presto && this.readyState === 'loaded') ||
+ this.readyState === 'complete') {
+ if (ps.indexOf(this) >= 0) {
+ this.onload = this.onreadystatechange = null;
+ //console.log("completed script: " + this.src);
+ ps.splice(ps.indexOf(this), 1);
+
+ // Call window.onscriptsload after last script loads
+ if (ps.length === 0 && window.onscriptsload) {
+ window.onscriptsload();
+ }
+ }
+ }
+ };
+
+ var root_dirs = Object.keys(files_by_dir);
+
+ for (var d = 0; d < root_dirs.length; d++) {
+ var root_dir = root_dirs[d];
+ var files = files_by_dir[root_dir];
+
+ for (var f = 0; f < files.length; f++) {
+ script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.src = WebUtil.get_include_uri(root_dir) + files[f];
+ //console.log("loading script: " + script.src);
+ script.onload = script.onreadystatechange = loadFunc;
+ // In-order script execution tricks
+ if (Util.Engine.trident) {
+ // For IE wait until readyState is 'loaded' before
+ // appending it which will trigger execution
+ // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
+ ls.push(script);
+ } else {
+ // For webkit and firefox set async=false and append now
+ // https://developer.mozilla.org/en-US/docs/HTML/Element/script
+ script.async = false;
+ head.appendChild(script);
+ }
+ ps.push(script);
+ }
+ }
+};
+
/* [module] export default WebUtil; */
diff --git a/core/util.js b/core/util.js
index 1b8744b..3a2d241 100644
--- a/core/util.js
+++ b/core/util.js
@@ -41,93 +41,6 @@ addFunc(Array, 'push32', function (num) {
num & 0xFF);
});
-// IE does not support map (even in IE9)
-//This prototype is provided by the Mozilla foundation and
-//is distributed under the MIT license.
-//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license
-addFunc(Array, 'map', function (fun /*, thisp*/) {
- "use strict";
- var len = this.length;
- if (typeof fun != "function") {
- throw new TypeError();
- }
-
- var res = new Array(len);
- var thisp = arguments[1];
- for (var i = 0; i < len; i++) {
- if (i in this) {
- res[i] = fun.call(thisp, this[i], i, this);
- }
- }
-
- return res;
-});
-
-// IE <9 does not support indexOf
-//This prototype is provided by the Mozilla foundation and
-//is distributed under the MIT license.
-//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license
-addFunc(Array, 'indexOf', function (elt /*, from*/) {
- "use strict";
- var len = this.length >>> 0;
-
- var from = Number(arguments[1]) || 0;
- from = (from < 0) ? Math.ceil(from) : Math.floor(from);
- if (from < 0) {
- from += len;
- }
-
- for (; from < len; from++) {
- if (from in this &&
- this[from] === elt) {
- return from;
- }
- }
- return -1;
-});
-
-// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
-if (!Object.keys) {
- Object.keys = (function () {
- 'use strict';
- var hasOwnProperty = Object.prototype.hasOwnProperty,
- hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
- dontEnums = [
- 'toString',
- 'toLocaleString',
- 'valueOf',
- 'hasOwnProperty',
- 'isPrototypeOf',
- 'propertyIsEnumerable',
- 'constructor'
- ],
- dontEnumsLength = dontEnums.length;
-
- return function (obj) {
- if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
- throw new TypeError('Object.keys called on non-object');
- }
-
- var result = [], prop, i;
-
- for (prop in obj) {
- if (hasOwnProperty.call(obj, prop)) {
- result.push(prop);
- }
- }
-
- if (hasDontEnumBug) {
- for (i = 0; i < dontEnumsLength; i++) {
- if (hasOwnProperty.call(obj, dontEnums[i])) {
- result.push(dontEnums[i]);
- }
- }
- }
- return result;
- };
- })();
-}
-
// PhantomJS 1.x doesn't support bind,
// so leave this in until PhantomJS 2.0 is released
//This prototype is provided by the Mozilla foundation and
@@ -368,77 +281,6 @@ Util.decodeUTF8 = function (utf8string) {
* Cross-browser routines
*/
-
-// Dynamically load scripts without using document.write()
-// Reference: http://unixpapa.com/js/dyna.html
-//
-// Handles the case where load_scripts is invoked from a script that
-// itself is loaded via load_scripts. Once all scripts are loaded the
-// window.onscriptsloaded handler is called (if set).
-Util.get_include_uri = function (root_dir) {
- return (typeof INCLUDE_URI !== "undefined") ? INCLUDE_URI + root_dir + '/' : root_dir + '/';
-};
-Util._loading_scripts = [];
-Util._pending_scripts = [];
-Util.load_scripts = function (files_by_dir) {
- "use strict";
- var head = document.getElementsByTagName('head')[0], script,
- ls = Util._loading_scripts, ps = Util._pending_scripts;
-
- var loadFunc = function (e) {
- while (ls.length > 0 && (ls[0].readyState === 'loaded' ||
- ls[0].readyState === 'complete')) {
- // For IE, append the script to trigger execution
- var s = ls.shift();
- //console.log("loaded script: " + s.src);
- head.appendChild(s);
- }
- if (!this.readyState ||
- (Util.Engine.presto && this.readyState === 'loaded') ||
- this.readyState === 'complete') {
- if (ps.indexOf(this) >= 0) {
- this.onload = this.onreadystatechange = null;
- //console.log("completed script: " + this.src);
- ps.splice(ps.indexOf(this), 1);
-
- // Call window.onscriptsload after last script loads
- if (ps.length === 0 && window.onscriptsload) {
- window.onscriptsload();
- }
- }
- }
- };
-
- var root_dirs = Object.Keys(files_by_dir);
-
- for (var d = 0; d < root_dirs.length; d++) {
- var root_dir = root_dirs[d];
- var files = files_by_dir[root_dir];
-
- for (var f = 0; f < files.length; f++) {
- script = document.createElement('script');
- script.type = 'text/javascript';
- script.src = Util.get_include_uri(root_dir) + files[f];
- //console.log("loading script: " + script.src);
- script.onload = script.onreadystatechange = loadFunc;
- // In-order script execution tricks
- if (Util.Engine.trident) {
- // For IE wait until readyState is 'loaded' before
- // appending it which will trigger execution
- // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
- ls.push(script);
- } else {
- // For webkit and firefox set async=false and append now
- // https://developer.mozilla.org/en-US/docs/HTML/Element/script
- script.async = false;
- head.appendChild(script);
- }
- ps.push(script);
- }
- }
-};
-
-
Util.getPosition = function(obj) {
"use strict";
// NB(sross): the Mozilla developer reference seems to indicate that
diff --git a/tests/input.html b/tests/input.html
index ec3aefe..824a948 100644
--- a/tests/input.html
+++ b/tests/input.html
@@ -44,7 +44,7 @@
function message(str) {
console.log(str);
- cell = $D('messages');
+ cell = document.getElementById('messages');
cell.innerHTML += msg_cnt + ": " + str + newline;
cell.scrollTop = cell.scrollHeight;
msg_cnt++;
@@ -94,23 +94,23 @@
for (b = 0; b < blist.length; b++) {
if (blist[b] === num) {
- $D('button' + blist[b]).style.backgroundColor = "black";
- $D('button' + blist[b]).style.color = "lightgray";
+ document.getElementById('button' + blist[b]).style.backgroundColor = "black";
+ document.getElementById('button' + blist[b]).style.color = "lightgray";
} else {
- $D('button' + blist[b]).style.backgroundColor = "";
- $D('button' + blist[b]).style.color = "";
+ document.getElementById('button' + blist[b]).style.backgroundColor = "";
+ document.getElementById('button' + blist[b]).style.color = "";
}
}
}
window.onload = function() {
- canvas = new Display({'target' : $D('canvas')});
+ canvas = new Display({'target' : document.getElementById('canvas')});
keyboard = new Keyboard({'target': document,
'onKeyPress': rfbKeyPress});
Util.addEvent(document, 'keypress', rawKey);
Util.addEvent(document, 'keydown', rawKey);
Util.addEvent(document, 'keyup', rawKey);
- mouse = new Mouse({'target': $D('canvas'),
+ mouse = new Mouse({'target': document.getElementById('canvas'),
'onMouseButton': mouseButton,
'onMouseMove': mouseMove});
@@ -121,10 +121,10 @@
if ('ontouchstart' in document.documentElement) {
message("Touch device detected");
- $D('button-selection').style.display = "inline";
- $D('button1').onclick = function(){ selectButton(1) };
- $D('button2').onclick = function(){ selectButton(2) };
- $D('button4').onclick = function(){ selectButton(4) };
+ document.getElementById('button-selection').style.display = "inline";
+ document.getElementById('button1').onclick = function(){ selectButton(1) };
+ document.getElementById('button2').onclick = function(){ selectButton(2) };
+ document.getElementById('button4').onclick = function(){ selectButton(4) };
selectButton();
}
diff --git a/tests/vnc_perf.html b/tests/vnc_perf.html
index e6eee6e..021bc4e 100644
--- a/tests/vnc_perf.html
+++ b/tests/vnc_perf.html
@@ -49,7 +49,7 @@
msg("Loading " + fname);
// Load supporting scripts
- Util.load_scripts({
+ WebUtil.load_scripts({
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
"keysymdef.js", "xtscancodes.js", "keyboard.js",
"input.js", "display.js", "rfb.js", "inflator.js"],
diff --git a/tests/vnc_playback.html b/tests/vnc_playback.html
index 168663d..611c371 100644
--- a/tests/vnc_playback.html
+++ b/tests/vnc_playback.html
@@ -59,7 +59,7 @@
if (fname) {
message("Loading " + fname);
// Load supporting scripts
- Util.load_scripts({
+ WebUtil.load_scripts({
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
"keysymdef.js", "xtscancodes.js", "keyboard.js",
"input.js", "display.js", "rfb.js", "inflator.js"],
diff --git a/vnc.html b/vnc.html
index bfc1201..b33b704 100644
--- a/vnc.html
+++ b/vnc.html
@@ -220,6 +220,7 @@
</div>
<!-- begin scripts -->
<script src="core/util.js"></script>
+ <script src="app/webutil.js"></script>
<script src="app/ui.js"></script>
<!-- end scripts -->
diff --git a/vnc_auto.html b/vnc_auto.html
index 6fa3f25..2bb9013 100644
--- a/vnc_auto.html
+++ b/vnc_auto.html
@@ -43,6 +43,7 @@
src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
-->
<script src="core/util.js"></script>
+ <script src="app/webutil.js"></script>
</head>
<body style="margin: 0px;">
@@ -77,7 +78,7 @@
"use strict";
// Load supporting scripts
- Util.load_scripts({
+ WebUtil.load_scripts({
'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
"inflator.js", "rfb.js", "keysym.js"],