
package com.smartgwt.client.docs;

/**
 * <h3>Platform Dependencies</h3>
 * Client-side processing of web services, XML parsing, and some UI loading mechanisms rely on a
 * native in-browser XML parser and/or the XMLHttpRequest object - one or both of which will not
 * be available if the end user disables ActiveX support in Internet Explorer.  Note that these
 * features do not require plugins or downloads of any kind - IE simply exposes certain built-in
 * functionality like the XML parser and XMLHttpRequest through the ActiveX interface.  Disabling
 * ActiveX also disables all browser plugins such as Flash, Java, SVG, etc. <p> Barring ActiveX
 * being disabled, the XMLHttpRequest object is available to Smart GWT on all supported browsers
 * and an XML parser is available on all supported browsers except Safari versions prior to 3.0.3.
 * <p> Smart GWT client-server communication is not affected by the lack of an XML parser or the
 * XMLHttpRequest object, but the <code>xmlHttpRequest</code> transport will not be available if
 * the XMLHttpRequest object is not available.  Instead, the <code>hiddenFrame</code> or the
 * <code>scriptInclude</code> transports are used for client-server communication. <p> <b><u>XML
 * Parser</u></b> <p> If an XML Parser is not available to Smart GWT, all client-side web service
 * bindings and related methods will be unavailable.  Turning off ActiveX disables integration
 * paths 2 and 3 in the diagram below.  If you want to bind to web services and require deployment
 * to IE without ActiveX (or you need to support Safari pre 3.0.3), you'll need to do all XML
 * processing on the server and use either the Smart GWT DSRequest or JSON operation pathways
 * (integration paths 1 and 4 in the diagram below).  See the discussion in {@link
 * com.smartgwt.client.docs.ClientServerIntegration} for more information on the integration paths
 * shown in the diagram below. <p> You call {@link
 * com.smartgwt.client.data.XMLTools#nativeXMLAvailable XMLTools.nativeXMLAvailable()} to check
 * for the availability of a native XML parser at runtime. <p> <img src="skin/ds_bindings.png"
 * width=763 height=475> <p> <b><u>XMLHttpRequest</u></b> <p> The XMLHttpRequest object is used
 * for the <code>xmlHttpRequest</code> {@link com.smartgwt.client.types.RPCTransport}. Safari,
 * Mozilla, Firefox, and IE 7 provide a native XMLHttpRequest implementation that is not affected
 * by ActiveX being disabled (although the native IE 7 implementation can still be explicitly
 * disabled by the end user).  IE 5.5 and IE 6.0 rely on the ActiveX bridge to support
 * XMLHttpRequest, so if ActiveX is disabled in these browsers, XMLHttpRequest will not be
 * available. <p> The lack of the XMLHttpRequest objects affects UI loading features like {@link
 * com.smartgwt.client.widgets.ViewLoader}, and {@link com.smartgwt.client.widgets.HTMLFlow} when
 * used in remote loading mode (via {@link com.smartgwt.client.widgets.HTMLFlow#getContentsURL
 * HTMLFlow.contentsURL}, {@link com.smartgwt.client.widgets.HTMLFlow#setContentsURL
 * HTMLFlow.setContentsURL()}, but does not affect the typical client/server communication
 * pathways (integration paths 1 and 5 in the diagram above). <p> Also affected are low level
 * features {@link com.smartgwt.client.rpc.RPCRequest#getServerOutputAsString
 * RPCRequest.serverOutputAsString}, {@link com.smartgwt.client.rpc.RPCRequest#getEvalResult
 * RPCRequest.evalResult}, and {@link com.smartgwt.client.rpc.RPCResponse#getHttpResponseCode
 * RPCResponse.httpResponseCode}. <p> In all of the above cases, it is possible to use the
 * <code>hiddenFrame</code> transport to support these features when XMLHttpRequest is not
 * available.  Smart GWT will automatically send the request using the <code>hiddenFrame</code>
 * transport when it detects that XMLHttpRequest is unavailable.  To support the above features,
 * you'll need to use the RPCManager APIs on the server to send back the data that would normally
 * be returned by XMLHttpRequest.  Since XMLHttpRequest cannot target URLs outside of the current
 * domain, this strategy applies also to using the above features with cross-domain URLs. <p> You
 * can call {@link com.smartgwt.client.rpc.RPCManager#xmlHttpRequestAvailable
 * RPCManager.xmlHttpRequestAvailable()} to check for the availability of XMLHttpRequest at
 * runtime.
 */
public interface PlatformDependencies {
}
