/* * Copyright 2010 Google 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. */ package elemental.client; import elemental.dom.Document; import elemental.html.Window; import elemental.js.JsBrowser; /** * Entry-point for getting the access to browser globals. */ public class Browser { /** * Provides limited user agent information for the current browser. The API is * structured such that info can either be determined at runtime or * constrained at compile time through GWT permutations. * * TODO(knorton): Add the gwt.xml file that enables permutations. */ public interface Info { /** * Indicates whether the browser is a supported version of Gecko. */ boolean isGecko(); /** * Indicates whether the platform is Linux. */ boolean isLinux(); /** * Indicates whether the platform is Macintosh. */ boolean isMac(); /** * Indicates whether the browser is one of the supported browsers. */ boolean isSupported(); /** * Indicates whether the browser is a supported version of WebKit. */ boolean isWebKit(); /** * Indicates whether the platform is Windows. */ boolean isWindows(); } /** * Decodes a URI as specified in the ECMA-262, 5th edition specification, * section 15.1.3.1. * * @see "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" */ public static native String decodeURI(String encodedURI) /*-{ return decodeURI(encodedURI); }-*/; /** * Encodes a URI compoment as specified in the ECMA-262, 5th edition specification, * section 15.1.3.1. * * @see "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" */ public static native String decodeURIComponent(String encodedUriComponent) /*-{ return decodeURIComponent(encodedUriComponent); }-*/; /** * Encodes a URI as specified in the ECMA-262, 5th edition specification, * section 15.1.3.1. * * @see "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" */ public static native String encodeURI(String uri) /*-{ return encodeURI(uri); }-*/; /** * Encodes a URI component as specified in the ECMA-262, 5th edition specification, * section 15.1.3.1. * * @see "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" */ public static native String encodeURIComponent(String uriComponent) /*-{ return encodeURIComponent(uriComponent); }-*/; /** * Gets the document within which this script is running. */ public static Document getDocument() { return JsBrowser.getDocument(); } /** * Gets information about the current browser. */ public static Info getInfo() { return JsBrowser.getInfo(); } /** * Gets the window within which this script is running. */ public static Window getWindow() { return JsBrowser.getWindow(); } // Non-instantiable. private Browser() { } }