/javascript/src/test/resources/com/google/test/metric/javascript/browser_debug.js
http://testability-explorer.googlecode.com/ · JavaScript · 156 lines · 100 code · 14 blank · 42 comment · 15 complexity · 255d461d28082557220353b2aa286d28 MD5 · raw file
- /*
- Copyright (c) 2004-2005, The Dojo Foundation
- All Rights Reserved.
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
- http://dojotoolkit.org/community/licensing.shtml
- */
- dojo.hostenv.loadedUris.push("../src/bootstrap1.js");
- dojo.hostenv.loadedUris.push("../src/hostenv_browser.js");
- dojo.hostenv.loadedUris.push("../src/bootstrap2.js");
- function removeComments(contents){
- contents = new String((!contents) ? "" : contents);
- // clobber all comments
- contents = contents.replace( /^(.*?)\/\/(.*)$/mg , "$1");
- contents = contents.replace( /(\n)/mg , "__DOJONEWLINE");
- contents = contents.replace( /\/\*(.*?)\*\//g , "");
- return contents.replace( /__DOJONEWLINE/mg , "\n");
- }
- dojo.hostenv.getRequiresAndProvides = function(contents){
- // FIXME: should probably memoize this!
- if(!contents){ return []; }
- // check to see if we need to load anything else first. Ugg.
- var deps = [];
- var tmp;
- RegExp.lastIndex = 0;
- var testExp = /dojo.(hostenv.loadModule|hosetnv.require|require|requireIf|hostenv.conditionalLoadModule|hostenv.startPackage|hostenv.provide|provide)\([\w\W]*?\)/mg;
- while((tmp = testExp.exec(contents)) != null){
- deps.push(tmp[0]);
- }
- return deps;
- }
- dojo.hostenv.getDelayRequiresAndProvides = function(contents){
- // FIXME: should probably memoize this!
- if(!contents){ return []; }
- // check to see if we need to load anything else first. Ugg.
- var deps = [];
- var tmp;
- RegExp.lastIndex = 0;
- var testExp = /dojo.(requireAfterIf|requireAfter)\([\w\W]*?\)/mg;
- while((tmp = testExp.exec(contents)) != null){
- deps.push(tmp[0]);
- }
- return deps;
- }
- /*
- dojo.getNonExistantDescendants = function(objpath){
- var ret = [];
- // fast path for no periods
- if(typeof objpath != "string"){ return dj_global; }
- if(objpath.indexOf('.') == -1){
- if(dj_undef(objpath, dj_global)){
- ret.push[objpath];
- }
- return ret;
- }
- var syms = objpath.split(/\./);
- var obj = dj_global;
- for(var i=0;i<syms.length;++i){
- if(dj_undef(syms[i], obj)){
- for(var j=i; j<syms.length; j++){
- ret.push(syms.slice(0, j+1).join("."));
- }
- break;
- }
- }
- return ret;
- }
- */
- dojo.clobberLastObject = function(objpath){
- if(objpath.indexOf('.') == -1){
- if(!dj_undef(objpath, dj_global)){
- delete dj_global[objpath];
- }
- return true;
- }
- var syms = objpath.split(/\./);
- var base = dojo.evalObjPath(syms.slice(0, -1).join("."), false);
- var child = syms[syms.length-1];
- if(!dj_undef(child, base)){
- // alert(objpath);
- delete base[child];
- return true;
- }
- return false;
- }
- var removals = [];
- function zip(arr){
- var ret = [];
- var seen = {};
- for(var x=0; x<arr.length; x++){
- if(!seen[arr[x]]){
- ret.push(arr[x]);
- seen[arr[x]] = true;
- }
- }
- return ret;
- }
- // over-write dj_eval to prevent actual loading of subsequent files
- var old_dj_eval = dj_eval;
- dj_eval = function(){ return true; }
- dojo.hostenv.oldLoadUri = dojo.hostenv.loadUri;
- dojo.hostenv.loadUri = function(uri){
- if(dojo.hostenv.loadedUris[uri]){
- return;
- }
- try{
- var text = this.getText(uri, null, true);
- var requires = dojo.hostenv.getRequiresAndProvides(text);
- eval(requires.join(";"));
- dojo.hostenv.loadedUris.push(uri);
- dojo.hostenv.loadedUris[uri] = true;
- var delayRequires = dojo.hostenv.getDelayRequiresAndProvides(text);
- eval(delayRequires.join(";"));
- }catch(e){
- alert(e);
- }
- return true;
- }
- dojo.hostenv.writeIncludes = function(){
- for(var x=removals.length-1; x>=0; x--){
- dojo.clobberLastObject(removals[x]);
- }
- var depList = [];
- var seen = {};
- for(var x=0; x<dojo.hostenv.loadedUris.length; x++){
- var curi = dojo.hostenv.loadedUris[x];
- // dojo.debug(curi);
- if(!seen[curi]){
- seen[curi] = true;
- depList.push(curi);
- }
- }
- dojo.hostenv._global_omit_module_check = true;
- for(var x=3; x<depList.length; x++){
- document.write("<script type='text/javascript' src='"+depList[x]+"'></script>");
- }
- document.write("<script type='text/javascript'>dojo.hostenv._global_omit_module_check = false;</script>");
- dj_eval = old_dj_eval;
- }