1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri May 23 11:44:38 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri May 23 12:39:26 2014 +0200
1.3 @@ -490,6 +490,15 @@
1.4 + " global.bck2brwsr = function() {\n"
1.5 + " var args = Array.prototype.slice.apply(arguments);\n"
1.6 + " var resources = {};\n"
1.7 + + " function loadExtension(url) {\n"
1.8 + + " var xhr = new XMLHttpRequest();\n"
1.9 + + " xhr.open('GET', url, false);\n"
1.10 + + " xhr.send();\n"
1.11 + + " var script = document.createElement('script');\n"
1.12 + + " script.type = 'text/javascript';\n"
1.13 + + " script.text = xhr.responseText;\n"
1.14 + + " document.getElementsByTagName('head')[0].appendChild(script);\n"
1.15 + + " }\n"
1.16 + " function registerResource(n, a64) {\n"
1.17 + " var str = atob(a64);\n"
1.18 + " var arr = [];\n"
1.19 @@ -525,14 +534,17 @@
1.20 + " for (var i = 0; i < args.length; i++) {\n"
1.21 + " var at = args[i];\n"
1.22 + " var ret;\n"
1.23 - + " if (typeof at === 'function') ret = at(name, skip);\n"
1.24 + + " if (typeof at === 'string' && at.substring(at.length - 3) === '.js') {\n"
1.25 + + " loadExtension(at);\n"
1.26 + + " args[i] = null;\n"
1.27 + + " } else if (typeof at === 'function') ret = at(name, skip);\n"
1.28 + " else {\n"
1.29 + " var cp = vm['org_apidesign_vm4brwsr_ClassPath'];\n"
1.30 + " if (!cp) throw 'Core Java library not registered. Cannot load from ' + at;\n"
1.31 + " ret = cp(false).\n"
1.32 + " loadBytes___3BLjava_lang_String_2Ljava_lang_Object_2II(name, args, i, skip);\n"
1.33 + " }\n"
1.34 - + " if (ret !== null) return ret;\n"
1.35 + + " if (ret) return ret;\n"
1.36 + " }\n"
1.37 + " while (knownExtensions < extensions.length) {\n"
1.38 + " vm['registerResource'] = registerResource;\n"