|
98 | 98 | * HTTP connections timeout, but should not accur in local file system, or it
|
99 | 99 | * is a loading bug by using JavaScript timeout thread).
|
100 | 100 | */
|
101 |
| - |
| 101 | + |
| 102 | +/* |
| 103 | + * The following comments with "#" are special configurations for a much |
| 104 | + * smaller *.js file size. |
| 105 | + * |
| 106 | + * @see net.sf.j2s.lib/src/net/sf/j2s/lib/build/SmartJSCompressor.java |
| 107 | + */ |
102 | 108 | /*-#
|
103 | 109 | # ClazzNode -> $CN$
|
104 | 110 | # ClazzLoader -> $CL$
|
@@ -186,13 +192,18 @@ ClazzLoader.inLoadingThreads = 0;
|
186 | 192 | /* protected */
|
187 | 193 | ClazzLoader.maxLoadingThreads = 6;
|
188 | 194 |
|
| 195 | +ClazzLoader.userAgent = navigator.userAgent.toLowerCase (); |
| 196 | +ClazzLoader.isOpera = (ClazzLoader.userAgent.indexOf ("opera") != -1); |
| 197 | +ClazzLoader.isIE = (ClazzLoader.userAgent.indexOf ("msie") != -1) && !ClazzLoader.isOpera; |
| 198 | +ClazzLoader.isGecko = (ClazzLoader.userAgent.indexOf ("gecko") != -1); |
| 199 | + |
189 | 200 | /*
|
190 | 201 | * Opera has different loading order which will result in performance degrade!
|
191 | 202 | * So just return to single thread loading in Opera!
|
192 | 203 | *
|
193 | 204 | * FIXME: This different loading order also causes bugs in single thread!
|
194 | 205 | */
|
195 |
| -if (navigator.userAgent.toLowerCase ().indexOf ("opera") != -1) { |
| 206 | +if (ClazzLoader.isOpera) { |
196 | 207 | ClazzLoader.maxLoadingThreads = 1;
|
197 | 208 | }
|
198 | 209 |
|
@@ -907,8 +918,7 @@ ClazzLoader.loadScript = function (file) {
|
907 | 918 | }
|
908 | 919 | this.onload = null;
|
909 | 920 | var path = arguments.callee.path;
|
910 |
| - if (!ClazzLoader.innerLoadedScripts[this.src] |
911 |
| - && navigator.userAgent.indexOf("Opera") >= 0) { |
| 921 | + if (!ClazzLoader.innerLoadedScripts[this.src] && ClazzLoader.isOpera) { |
912 | 922 | // Opera will not take another try.
|
913 | 923 | var fss = ClazzLoader.failedScripts;
|
914 | 924 | if (fss[path] == null && ClazzLoader.takeAnotherTry) {
|
@@ -972,7 +982,7 @@ ClazzLoader.loadScript = function (file) {
|
972 | 982 | ClazzLoader.removeScriptNode (this);
|
973 | 983 | };
|
974 | 984 | script.onerror.path = file;
|
975 |
| - if (navigator.userAgent.indexOf("Opera") >= 0) { |
| 985 | + if (ClazzLoader.isOpera) { |
976 | 986 | ClazzLoader.needOnloadCheck = true;
|
977 | 987 | }
|
978 | 988 | } else { // IE
|
@@ -1152,7 +1162,7 @@ ClazzLoader.tryToLoadNext = function (file) {
|
1152 | 1162 | */
|
1153 | 1163 | if (ClazzLoader.lockQueueBe4SWT && ClazzLoader.pkgRefCount != 0
|
1154 | 1164 | && file.lastIndexOf ("package.js") != file.length - 10
|
1155 |
| - && navigator.userAgent.toLowerCase ().indexOf ("gecko") != -1) { |
| 1165 | + && (ClazzLoader.isGecko || ClazzLoader.isIE)) { // No Opera! |
1156 | 1166 | var qbs = ClazzLoader.queueBe4SWT;
|
1157 | 1167 | qbs[qbs.length] = file;
|
1158 | 1168 | return;
|
@@ -1245,12 +1255,13 @@ ClazzLoader.tryToLoadNext = function (file) {
|
1245 | 1255 | if (cq.length != 0) {
|
1246 | 1256 | /* queue must be loaded in order! */
|
1247 | 1257 | n = cq[0]; // popup class from the queue
|
| 1258 | + //alert ("load from queue"); |
| 1259 | + //alert (cq.length + ":" + cq); |
1248 | 1260 | for (var i = 0; i < cq.length - 1; i++) {
|
1249 | 1261 | cq[i] = cq[i + 1];
|
1250 | 1262 | }
|
1251 | 1263 | cq.length--;
|
1252 |
| - |
1253 |
| - //alert ("load from queue"); |
| 1264 | + //log (cq.length + ":" + cq); |
1254 | 1265 | if (!ClazzLoader.loadedScripts[n.path] || cq.length != 0
|
1255 | 1266 | || !ClazzLoader.isLoadingEntryClass
|
1256 | 1267 | || (n.musts != null && n.musts.length != 0)
|
@@ -1779,7 +1790,7 @@ ClazzLoader.checkInteractive = function () {
|
1779 | 1790 | && ss[i].onreadystatechange != null) { // IE
|
1780 | 1791 | ClazzLoader.interactiveScript = ss[i];
|
1781 | 1792 | ClazzLoader.innerLoadedScripts[ss[i].src] = true;
|
1782 |
| - } else if (navigator.userAgent.indexOf("Opera") >= 0) { // Opera |
| 1793 | + } else if (ClazzLoader.isOpera) { // Opera |
1783 | 1794 | if (ss[i].readyState == "loaded"
|
1784 | 1795 | && ss[i].src != null && ss[i].src.length != 0) {
|
1785 | 1796 | ClazzLoader.innerLoadedScripts[ss[i].src] = true;
|
@@ -2053,6 +2064,13 @@ ClazzLoader.queueBe4KeyClazz = new Array ();
|
2053 | 2064 | /* private */
|
2054 | 2065 | /*-# getJ2SLibBase -> gLB #-*/
|
2055 | 2066 | ClazzLoader.getJ2SLibBase = function () {
|
| 2067 | + var o = window["j2s.lib"]; |
| 2068 | + if (o != null) { |
| 2069 | + if (o.base == null) { |
| 2070 | + o.base = "http://archive.java2script.org/"; |
| 2071 | + } |
| 2072 | + return o.base + (o.alias ? o.alias : (o.version ? o.version : "1.0.0")) + "/"; |
| 2073 | + } |
2056 | 2074 | var ss = document.getElementsByTagName ("SCRIPT");
|
2057 | 2075 | for (var i = 0; i < ss.length; i++) {
|
2058 | 2076 | var src = ss[i].src;
|
@@ -2154,23 +2172,32 @@ ClazzLoader.loadClass = function (name, optionalsLoaded, forced, async) {
|
2154 | 2172 | /*-# needBeingQueued -> nQ #-*/
|
2155 | 2173 | var needBeingQueued = false;
|
2156 | 2174 | var qq = ClazzLoader.classQueue;
|
| 2175 | + //error (qq.length + ":" + qq); |
| 2176 | + //error (path); |
2157 | 2177 | for (var i = qq.length - 1; i >= 0; i--) {
|
2158 | 2178 | if (qq[i].status != ClazzNode.STATUS_OPTIONALS_LOADED) {
|
2159 | 2179 | needBeingQueued = true;
|
2160 | 2180 | break;
|
2161 | 2181 | }
|
2162 | 2182 | }
|
2163 |
| - /* |
2164 |
| - if (forced) { |
| 2183 | + if (path.lastIndexOf ("package.js") == path.length - 10) {//forced |
2165 | 2184 | // push class to queue
|
| 2185 | + var inserted = false; |
2166 | 2186 | for (var i = qq.length - 1; i >= 0; i--) {
|
| 2187 | + var name = qq[i].name; |
| 2188 | + if (name.lastIndexOf ("package.js") == name.length - 10) { |
| 2189 | + qq[i + 1] = n; |
| 2190 | + inserted = true; |
| 2191 | + break; |
| 2192 | + } |
2167 | 2193 | qq[i + 1] = qq[i];
|
2168 | 2194 | }
|
2169 |
| - qq[0] = n; |
| 2195 | + if (!inserted) { |
| 2196 | + qq[0] = n; |
| 2197 | + } |
2170 | 2198 | } else {
|
2171 |
| - //*/ |
2172 | 2199 | qq[qq.length] = n;
|
2173 |
| - //} |
| 2200 | + } |
2174 | 2201 | if (!needBeingQueued) { // can be loaded directly
|
2175 | 2202 | /*-# bakEntryClassLoading -> bkECL #-*/
|
2176 | 2203 | var bakEntryClassLoading = false;
|
|
0 commit comments