summaryrefslogtreecommitdiff
path: root/lib/dojo/_base/_loader/loader_debug.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/_base/_loader/loader_debug.js')
-rw-r--r--lib/dojo/_base/_loader/loader_debug.js123
1 files changed, 75 insertions, 48 deletions
diff --git a/lib/dojo/_base/_loader/loader_debug.js b/lib/dojo/_base/_loader/loader_debug.js
index a28040f58..fa26d8efb 100644
--- a/lib/dojo/_base/_loader/loader_debug.js
+++ b/lib/dojo/_base/_loader/loader_debug.js
@@ -5,55 +5,82 @@
*/
-if(!dojo._hasResource["dojo._base._loader.loader_debug"]){
-dojo._hasResource["dojo._base._loader.loader_debug"]=true;
+if(!dojo._hasResource["dojo._base._loader.loader_debug"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base._loader.loader_debug"] = true;
dojo.provide("dojo._base._loader.loader_debug");
-dojo.nonDebugProvide=dojo.provide;
-dojo.provide=function(_1){
-var _2=dojo["_xdDebugQueue"];
-if(_2&&_2.length>0&&_1==_2["currentResourceName"]){
-if(dojo.isAIR){
-window.setTimeout(function(){
-dojo._xdDebugFileLoaded(_1);
-},1);
-}else{
-window.setTimeout(dojo._scopeName+"._xdDebugFileLoaded('"+_1+"')",1);
-}
-}
-return dojo.nonDebugProvide.apply(dojo,arguments);
-};
-dojo._xdDebugFileLoaded=function(_3){
-if(!dojo._xdDebugScopeChecked){
-if(dojo._scopeName!="dojo"){
-window.dojo=window[dojo.config.scopeMap[0][1]];
-window.dijit=window[dojo.config.scopeMap[1][1]];
-window.dojox=window[dojo.config.scopeMap[2][1]];
-}
-dojo._xdDebugScopeChecked=true;
-}
-var _4=dojo._xdDebugQueue;
-if(_3&&_3==_4.currentResourceName){
-_4.shift();
-}
-if(_4.length==0){
-dojo._xdWatchInFlight();
-}
-if(_4.length==0){
-_4.currentResourceName=null;
-for(var _5 in dojo._xdInFlight){
-if(dojo._xdInFlight[_5]===true){
-return;
-}
-}
-dojo._xdNotifyLoaded();
-}else{
-if(_3==_4.currentResourceName){
-_4.currentResourceName=_4[0].resourceName;
-var _6=document.createElement("script");
-_6.type="text/javascript";
-_6.src=_4[0].resourcePath;
-document.getElementsByTagName("head")[0].appendChild(_6);
+
+//Override dojo.provide, so we can trigger the next
+//script tag for the next local module. We can only add one
+//at a time because there are browsers that execute script tags
+//in the order that the code is received, and not in the DOM order.
+dojo.nonDebugProvide = dojo.provide;
+
+dojo.provide = function(resourceName){
+ var dbgQueue = dojo["_xdDebugQueue"];
+ if(dbgQueue && dbgQueue.length > 0 && resourceName == dbgQueue["currentResourceName"]){
+ //Set a timeout so the module can be executed into existence. Normally the
+ //dojo.provide call in a module is the first line. Don't want to risk attaching
+ //another script tag until the current one finishes executing.
+ if(dojo.isAIR){
+ window.setTimeout(function(){dojo._xdDebugFileLoaded(resourceName);}, 1);
+ }else{
+ window.setTimeout(dojo._scopeName + "._xdDebugFileLoaded('" + resourceName + "')", 1);
+ }
+ }
+
+ return dojo.nonDebugProvide.apply(dojo, arguments);
}
+
+dojo._xdDebugFileLoaded = function(resourceName){
+
+ if(!dojo._xdDebugScopeChecked){
+ //If using a scoped dojo, we need to expose dojo as a real global
+ //for the debugAtAllCosts stuff to work.
+ if(dojo._scopeName != "dojo"){
+ window.dojo = window[dojo.config.scopeMap[0][1]];
+ window.dijit = window[dojo.config.scopeMap[1][1]];
+ window.dojox = window[dojo.config.scopeMap[2][1]];
+ }
+
+ dojo._xdDebugScopeChecked = true;
+ }
+
+ var dbgQueue = dojo._xdDebugQueue;
+
+ if(resourceName && resourceName == dbgQueue.currentResourceName){
+ dbgQueue.shift();
+ }
+
+ if(dbgQueue.length == 0){
+ //Check for more modules that need debug loading.
+ //dojo._xdWatchInFlight will add more things to the debug
+ //queue if they just recently loaded but it was not detected
+ //between the dojo._xdWatchInFlight intervals.
+ dojo._xdWatchInFlight();
+ }
+
+ if(dbgQueue.length == 0){
+ dbgQueue.currentResourceName = null;
+
+ //Make sure nothing else is in flight.
+ //If something is still in flight, then it still
+ //needs to be added to debug queue after it loads.
+ for(var param in dojo._xdInFlight){
+ if(dojo._xdInFlight[param] === true){
+ return;
+ }
+ }
+
+ dojo._xdNotifyLoaded();
+ }else{
+ if(resourceName == dbgQueue.currentResourceName){
+ dbgQueue.currentResourceName = dbgQueue[0].resourceName;
+ var element = document.createElement("script");
+ element.type = "text/javascript";
+ element.src = dbgQueue[0].resourcePath;
+ document.getElementsByTagName("head")[0].appendChild(element);
+ }
+ }
}
-};
+
}