summaryrefslogtreecommitdiff
path: root/tests/test_tools/selenium/core/scripts/injection.html
diff options
context:
space:
mode:
authorxue <>2006-09-30 18:40:40 +0000
committerxue <>2006-09-30 18:40:40 +0000
commit1c32172efb18e8d08ea483e2460813670ebfe1a5 (patch)
tree8420f9e53eaba35d7b4822fac823197254f0d131 /tests/test_tools/selenium/core/scripts/injection.html
parent6b1d87352911e43672b46b7a65a3c90dd8e5b8b1 (diff)
merge from 3.0 branch till 1451.
Diffstat (limited to 'tests/test_tools/selenium/core/scripts/injection.html')
-rw-r--r--tests/test_tools/selenium/core/scripts/injection.html72
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>