4 * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
9 , should = require('should');
12 * Generates evn variables for the vm so we can `emulate` a browser.
13 * @returns {Object} evn variables
16 exports.env = function env () {
20 , host: 'www.example.org'
21 , hostname: 'www.example.org'
22 , href: 'http://www.example.org/example/'
23 , pathname: '/example/'
35 userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit'
36 + '/534.27 (KHTML, like Gecko) Chrome/12.0.716.0 Safari/534.27'
37 , appName: 'socket.io'
38 , platform: process.platform
39 , appVersion: process.version
63 // circular references
64 details.window = details.self = details.contentWindow = details;
67 details.Image = details.scrollTo = details.scrollBy = details.scroll =
68 details.resizeTo = details.resizeBy = details.prompt = details.print =
69 details.open = details.moveTo = details.moveBy = details.focus =
70 details.createPopup = details.confirm = details.close = details.blur =
71 details.alert = details.clearTimeout = details.clearInterval =
72 details.setInterval = details.setTimeout = details.XMLHttpRequest =
73 details.getComputedStyle = details.trigger = details.dispatchEvent =
74 details.removeEventListener = details.addEventListener = function(){};
77 details.frames = [details];
80 details.document = details;
81 details.document.domain = details.location.href;
87 * Executes a script in a browser like env and returns
90 * @param {String} contents The script content
91 * @returns {Object} The evaluated script.
94 exports.execute = function execute (contents) {
95 var env = exports.env()
96 , script = vm.createScript(contents);
98 // run the script with `browser like` globals
99 script.runInNewContext(env);