chromium/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/testlib/testlib.js

/*
* Utility functions for script scheduler test
*/
(function(){ /* namespace hiding local variables like arOrderOfAllEvents from global scope */
    window.testlib = {};
    window.eventOrder = [];
    var arNumberOfScriptsParsedPerEvent=[];
    window.log = function (str){
        eventOrder.push(str);
        arNumberOfScriptsParsedPerEvent.push(document.getElementsByTagName('script').length);
    }

    window.testlib.addScript = function(source, attributes, parent, firstInParent,funcPrepare) {
        try{
            parent = parent||document.body;
            var script = document.createElement('script');
            if(funcPrepare) {
                funcPrepare(script);
            }
            if(source)script.appendChild( document.createTextNode(source) );
            for( var name in attributes){
                if(/^on/i.test(name)) {
                    script[name] = attributes[name];
                } else {
                    script.setAttribute(name, attributes[name]);
                }
            }
            if (firstInParent && parent.firstChild) {
                parent.insertBefore(script, parent.firstChild);
            } else {
                parent.appendChild(script);
            }
        } catch(e) {
            log('ERROR when adding script to DOM!');
            alert(e);
        }
        return script;
    }

    window.testlib.urlParam = function(relativeURL) {
        return location.href.replace( /\d*\.html$/, relativeURL);
    }
})();