source: Dev/trunk/src/client/dijit/tests/_testCommon.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 3.5 KB
Line 
1// module:
2//              dijit/tests/_testCommon.js
3// description:
4//              Deprecated, remove in 2.0.   New test files should use boilerplate.html rather than this file,
5//              and non-test files shouldn't be using either.
6
7require([
8        "require",
9        "dojo/_base/array",
10        "dojo/_base/config",
11        "dojo/dom",
12        "dojo/dom-attr",
13        "dojo/dom-class",
14        "dojo/dom-construct",
15        "dojo/_base/kernel",
16        "dojo/_base/lang",
17        "dojo/query",
18        "dojo/ready",
19        "dojo/_base/window"
20], function(require, array, config, dom, domAttr, domClass, domConstruct, kernel, lang, query, ready, win){
21
22        var dir = "",
23                theme = false,
24                themeModule = "dijit",
25                testMode = null,
26                defTheme = "claro",
27                vars={};
28
29        if(window.location.href.indexOf("?") > -1){
30                var str = window.location.href.substr(window.location.href.indexOf("?")+1).split(/#/);
31                var ary  = str[0].split(/&/);
32                for(var i=0; i<ary.length; i++){
33                        var split = ary[i].split("="),
34                                key = split[0],
35                                value = (split[1]||'').replace(/[^\w]/g, "");   // replace() to prevent XSS attack
36                        switch(key){
37                                case "locale":
38                                        // locale string | null
39                                        kernel.locale = config.locale = locale = value;
40                                        break;
41                                case "dir":
42                                        // rtl | null
43                                        document.getElementsByTagName("html")[0].dir = value;
44                                        dir = value;
45                                        break;
46                                case "theme":
47                                        // tundra | soria | nihilo | claro | null
48                                        theme = value;
49                                        break;
50                                case "a11y":
51                                        if(value){ testMode = "dj_a11y"; }
52                                        break;
53                                case "themeModule":
54                                        // moduleName | null
55                                        if(value){ themeModule = value; }
56                        }
57                        vars[key] = value;
58                }
59        }
60        kernel._getVar = function(k, def){      // TODO: not sure what this is
61                return vars[k] || def;
62        };
63
64        // BIDI
65        if(dir == "rtl"){
66                ready(0, function(){
67                        // pretend all the labels are in an RTL language, because
68                        // that affects how they lay out relative to inline form widgets
69                        query("label").attr("dir", "rtl");
70                });
71        }
72
73        // a11y
74        if(testMode){
75                ready(0, function(){
76                        var b = win.body();
77                        if(testMode){
78                                domClass.add(b, testMode);
79                        }
80                });
81        }
82
83        // If URL specifies a non-claro theme then pull in those theme CSS files and modify
84        // <body> to point to that new theme instead of claro.
85        //
86        // Also defer parsing and any dojo.ready() calls that the test file makes
87        // until the CSS has finished loading.
88        if(theme){
89                // Wait until JS modules have finished loading so this doesn't confuse
90                // AMD loader.
91                ready(1, function(){
92                        // Reset <body> to point to the specified theme
93                        var b = win.body();
94                        domClass.replace(b, theme, defTheme);
95
96                        // Remove claro CSS
97                        query('link[href$="claro.css"]').orphan();
98                        query('link[href$="claro/document.css"]').orphan();
99
100                        // Load theme CSS.
101                        // Eventually would like to use [something like]
102                        // https://github.com/unscriptable/curl/blob/master/src/curl/plugin/css.js
103                        // to load the CSS and then know exactly when it finishes loading.
104                        var modules = [
105                                require.toUrl(themeModule+"/themes/"+theme+"/"+theme+".css"),
106                                require.toUrl(themeModule+"/themes/"+theme+"/"+theme+"_rtl.css"),
107                                require.toUrl("dojo/resources/dojo.css")
108                        ];
109                        var head = query("head")[0];
110                        array.forEach(modules, function(css){
111                                if(document.createStyleSheet){
112                                        // For IE
113                                        document.createStyleSheet(css);
114                                }else{
115                                        // For other browsers
116                                        domConstruct.place('<link rel="stylesheet" type="text/css" href="'+css+'"/>',
117                                                head);
118                                }
119                        });
120                });
121                ready(2, function(){
122                        // Delay parsing and other dojo.ready() callbacks (except ones in this file)
123                        // until the injected <link>'s above have finished loading.
124                        require(["dijit/tests/delay!320"]);
125                });
126        }
127});
Note: See TracBrowser for help on using the repository browser.