com.garmin.gwt.communicator.client.util.BrowserDetect.java Source code

Java tutorial

Introduction

Here is the source code for com.garmin.gwt.communicator.client.util.BrowserDetect.java

Source

package com.garmin.gwt.communicator.client.util;

/*
 * #%L
 * GWT Garmin API - Core API
 * %%
 * Copyright (C) 2012 - 2013 GWT Garmin API
 * %%
 * 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.
 * #L%
 */

import com.google.gwt.core.client.JavaScriptObject;

/**
 * Inlining of BrowserDetect from <a href="http://developer.garmin.com/web/communicator-api/documentation/symbols/_global_.html#BrowserSupport">_global</a>
 * so that it is not needed. <br>
 * Garmin took this from <a href="Found at http://www.quirksmode.org/js/detect.html">BrowserDetect</a>
 * 
 * @author Joseph Lust
 * 
 */
public final class BrowserDetect extends JavaScriptObject {
    /**
     * See {@link #newInstance()}
     */
    protected BrowserDetect() {
    }

    /**
     * Insert the BrowserDetect class into the window<br>
     * Skips if already defined
     */
    public final static void insertScript() {
        addToWindow();
    }

    /**
     * A hack, just insert into page unless already present
     */
    private static final native void addToWindow() /*-{
                                                   if(!$wnd.BrowserDetect) {
                                                   $wnd.BrowserDetect = {
                                                   init: function () {
                                                   this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
                                                   this.version = this.searchVersion(navigator.userAgent)
                                                   || this.searchVersion(navigator.appVersion)
                                                   || "an unknown version";
                                                   this.OS = this.searchString(this.dataOS) || "an unknown OS";
                                                   },
                                                   searchString: function (data) {
                                                   for (var i=0;i<data.length;i++)   {
                                                   var dataString = data[i].string;
                                                   var dataProp = data[i].prop;
                                                   this.versionSearchString = data[i].versionSearch || data[i].identity;
                                                   if (dataString) {
                                                   if (dataString.indexOf(data[i].subString) != -1)
                                                   return data[i].identity;
                                                   }
                                                   else if (dataProp)
                                                   return data[i].identity;
                                                   }
                                                   },
                                                   searchVersion: function (dataString) {
                                                   var index = dataString.indexOf(this.versionSearchString);
                                                   if (index == -1) return;
                                                   return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
                                                   },
                                                   dataBrowser: [
                                                   {    string: navigator.userAgent,
                                                   subString: "OmniWeb",
                                                   versionSearch: "OmniWeb/",
                                                   identity: "OmniWeb"
                                                   },
                                                   {
                                                   string: navigator.vendor,
                                                   subString: "Apple",
                                                   identity: "Safari"
                                                   },
                                                   {
                                                   prop: window.opera,
                                                   identity: "Opera"
                                                   },
                                                   {
                                                   string: navigator.vendor,
                                                   subString: "iCab",
                                                   identity: "iCab"
                                                   },
                                                   {
                                                   string: navigator.vendor,
                                                   subString: "KDE",
                                                   identity: "Konqueror"
                                                   },
                                                   {
                                                   string: navigator.userAgent,
                                                   subString: "Firefox",
                                                   identity: "Firefox"
                                                   },
                                                   {
                                                   string: navigator.vendor,
                                                   subString: "Camino",
                                                   identity: "Camino"
                                                   },
                                                   {      // for newer Netscapes (6+)
                                                   string: navigator.userAgent,
                                                   subString: "Netscape",
                                                   identity: "Netscape"
                                                   },
                                                   {
                                                   string: navigator.userAgent,
                                                   subString: "MSIE",
                                                   identity: "Explorer",
                                                   versionSearch: "MSIE"
                                                   },
                                                   {
                                                   string: navigator.userAgent,
                                                   subString: "Gecko",
                                                   identity: "Mozilla",
                                                   versionSearch: "rv"
                                                   },
                                                   {       // for older Netscapes (4-)
                                                   string: navigator.userAgent,
                                                   subString: "Mozilla",
                                                   identity: "Netscape",
                                                   versionSearch: "Mozilla"
                                                   }
                                                   ],
                                                   dataOS : [
                                                   {
                                                   string: navigator.platform,
                                                   subString: "Win",
                                                   identity: "Windows"
                                                   },
                                                   {
                                                   string: navigator.platform,
                                                   subString: "Mac",
                                                   identity: "Mac"
                                                   },
                                                   {
                                                   string: navigator.platform,
                                                   subString: "Linux",
                                                   identity: "Linux"
                                                   }
                                                   ]
                                                       
                                                   };
                                                   }
                                                   $wnd.BrowserDetect.init();
                                                   }-*/;

}