summaryrefslogtreecommitdiff
path: root/tests/test_tools/selenium/core/scripts/selenium-browserdetect.js
diff options
context:
space:
mode:
authorxue <>2006-07-07 14:54:15 +0000
committerxue <>2006-07-07 14:54:15 +0000
commit61bb16ee2e5f0a66234e1575242169a10fde47b5 (patch)
tree3ee24dcc36ceae2c213130df1ea3d5c9fc110a27 /tests/test_tools/selenium/core/scripts/selenium-browserdetect.js
parent7b84938b1b5964f2274d66e28ba17435924ffe35 (diff)
Merge from 3.0 branch till 1253.
Diffstat (limited to 'tests/test_tools/selenium/core/scripts/selenium-browserdetect.js')
-rw-r--r--tests/test_tools/selenium/core/scripts/selenium-browserdetect.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/tests/test_tools/selenium/core/scripts/selenium-browserdetect.js b/tests/test_tools/selenium/core/scripts/selenium-browserdetect.js
new file mode 100644
index 00000000..137a1518
--- /dev/null
+++ b/tests/test_tools/selenium/core/scripts/selenium-browserdetect.js
@@ -0,0 +1,115 @@
+/*
+* Copyright 2004 ThoughtWorks, Inc
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+// Although it's generally better web development practice not to use browser-detection
+// (feature detection is better), the subtle browser differences that Selenium has to
+// work around seem to make it necessary. Maybe as we learn more about what we need,
+// we can do this in a more "feature-centric" rather than "browser-centric" way.
+
+BrowserVersion = function() {
+ this.name = navigator.appName;
+
+ if (window.opera != null)
+ {
+ this.browser = BrowserVersion.OPERA;
+ this.isOpera = true;
+ return;
+ }
+
+ var self = this;
+
+ var checkChrome = function() {
+ var loc = window.document.location.href;
+ try {
+ loc = window.top.document.location.href;
+ } catch (e) {
+ // can't see the top (that means we might be chrome, but it's impossible to be sure)
+ self.isChromeDetectable = "no, top location couldn't be read in this window";
+ }
+
+ if (/^chrome:\/\//.test(loc)) {
+ self.isChrome = true;
+ } else {
+ self.isChrome = false;
+ }
+ }
+
+ if (this.name == "Microsoft Internet Explorer")
+ {
+ this.browser = BrowserVersion.IE;
+ this.isIE = true;
+ if (window.top.SeleniumHTARunner && window.top.document.location.pathname.match(/.hta$/i)) {
+ this.isHTA = true;
+ }
+ if ("0" == navigator.appMinorVersion) {
+ this.preSV1 = true;
+ }
+ return;
+ }
+
+ if (navigator.userAgent.indexOf('Safari') != -1)
+ {
+ this.browser = BrowserVersion.SAFARI;
+ this.isSafari = true;
+ this.khtml = true;
+ return;
+ }
+
+ if (navigator.userAgent.indexOf('Konqueror') != -1)
+ {
+ this.browser = BrowserVersion.KONQUEROR;
+ this.isKonqueror = true;
+ this.khtml = true;
+ return;
+ }
+
+ if (navigator.userAgent.indexOf('Firefox') != -1)
+ {
+ this.browser = BrowserVersion.FIREFOX;
+ this.isFirefox = true;
+ this.isGecko = true;
+ var result = /.*Firefox\/([\d\.]+).*/.exec(navigator.userAgent);
+ if (result)
+ {
+ this.firefoxVersion = result[1];
+ }
+ checkChrome();
+ return;
+ }
+
+ if (navigator.userAgent.indexOf('Gecko') != -1)
+ {
+ this.browser = BrowserVersion.MOZILLA;
+ this.isMozilla = true;
+ this.isGecko = true;
+ checkChrome();
+ return;
+ }
+
+ this.browser = BrowserVersion.UNKNOWN;
+}
+
+BrowserVersion.OPERA = "Opera";
+BrowserVersion.IE = "IE";
+BrowserVersion.KONQUEROR = "Konqueror";
+BrowserVersion.SAFARI = "Safari";
+BrowserVersion.FIREFOX = "Firefox";
+BrowserVersion.MOZILLA = "Mozilla";
+BrowserVersion.UNKNOWN = "Unknown";
+
+browserVersion = new BrowserVersion();
+