diff options
Diffstat (limited to 'tests/test_tools/selenium/core/scripts/injection.html')
-rw-r--r-- | tests/test_tools/selenium/core/scripts/injection.html | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/test_tools/selenium/core/scripts/injection.html b/tests/test_tools/selenium/core/scripts/injection.html new file mode 100644 index 00000000..d41fbe69 --- /dev/null +++ b/tests/test_tools/selenium/core/scripts/injection.html @@ -0,0 +1,72 @@ +<script language="JavaScript"> + if (window["selenium_has_been_loaded_into_this_window"]==null) + { +__SELENIUM_JS__ + +// Some background on the code below: broadly speaking, where we are relative to other windows +// when running in proxy injection mode depends on whether we are in a frame set file or not. +// +// In regular HTML files, the selenium JavaScript is injected into an iframe called "selenium" +// in order to reduce its impact on the JavaScript environment (through namespace pollution, +// etc.). So in regular HTML files, we need to look at the parent of the current window when we want +// a handle to, e.g., the application window. +// +// In frame set files, we can't use an iframe, so we put the JavaScript in the head element and share +// the window with the frame set. So in this case, we need to look at the current window, not the +// parent when looking for, e.g., the application window. (TODO: Perhaps I should have just +// assigned a regular frame for selenium?) +// +BrowserBot.prototype.getContentWindow = function() { + if (window["seleniumInSameWindow"] != null) return window; + return window.parent; +}; + +BrowserBot.prototype.getTargetWindow = function(windowName) { + if (window["seleniumInSameWindow"] != null) return window; + return window.parent; +}; + +BrowserBot.prototype.getCurrentWindow = function() { + if (window["seleniumInSameWindow"] != null) return window; + return window.parent; +}; + +LOG.openLogWindow = function(message, className) { + // disable for now +}; + +BrowserBot.prototype.relayToRC = function(name) { + var object = eval(name); + var s = 'state:' + serializeObject(name, object) + "\n"; + sendToRC(s); +} + +BrowserBot.prototype.relayBotToRC = function(s) { + this.relayToRC("selenium." + s); +} + +function selenium_frameRunTest(oldOnLoadRoutine) { + if (oldOnLoadRoutine) { + eval(oldOnLoadRoutine); + } + runSeleniumTest(); +} + +function seleniumOnLoad() { + injectedSessionId = @SESSION_ID@; + window["selenium_has_been_loaded_into_this_window"] = true; + runSeleniumTest(); +} + +if (window.addEventListener) { + window.addEventListener("load", seleniumOnLoad, false); // firefox +} else if (window.attachEvent){ + window.attachEvent("onload", seleniumOnLoad); // IE +} +else { + throw "causing a JavaScript error to tell the world that I did not arrange to be run on load"; +} + +injectedSessionId = @SESSION_ID@; +} +</script> |