io-xdr.js revision 6b6f2217c4e0974457d8dba44d52c30b2f543956
/**
* Extends the IO base class to provide an alternate, Flash transport, for making
* cross-domain requests.
* @module io
* @submodule io-xdr
*/
/**
* @event io:xdrReady
* @description This event is fired by YUI.io when the specified transport is
* ready for use.
* @type Event Custom
*/
var E_XDR_READY = 'io:xdrReady',
/**
* @description Object that stores callback handlers for cross-domain requests
* when using Flash as the transport.
*
* @property _fn
* @private
* @static
* @type object
*/
_fn = {},
/**
* @description Map of transaction state used when XDomainRequest is the
* XDR transport.
*
* @property _rS
* @private
* @static
* @type object
*/
_rS = {};
/**
* @description Method that creates the Flash transport swf.
*
* @method _swf
* @private
* @static
* @param {string} uri - location of io.swf.
* @param {string} yid - YUI instance id.
* @return void
*/
var o = '<object id="yuiIoSwf" type="application/x-shockwave-flash" data="' +
uri + '" width="0" height="0">' +
'<param name="allowScriptAccess" value="always">' +
'</object>',
c.innerHTML = o;
}
/**
* @description Sets event handlers for XDomainRequest transactions.
*
* @method _xdr
* @private
* @static
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {object} c - configuration object for the transaction.
* @return void
*/
function _xdr(o, c) {
o.c.onload = function() {
};
o.c.onerror = function() {
};
if (c.timeout) {
o.c.ontimeout = function() {
};
}
}
/**
* @description Creates a response object for XDR transactions, for success
* and failure cases.
*
* @method _data
* @private
* @static
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {boolean} isFlash - True if Flash was used as the transport.
* @param {boolean} isXML - True if the response data are XML.
*
* @return object
*/
if (!o.status) {
}
else {
}
}
/**
* @description Method for intiating an XDR transaction abort.
*
* @method _abort
* @private
* @static
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {object} c - configuration object for the transaction.
*/
function _abort(o, c) {
}
/**
* @description Method for determining if an XDR transaction has completed
* and all data are received.
*
* @method _isInProgress.
* @private
* @static
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {object} c - configuration object for the transaction.
*/
function _isInProgress(o, t) {
}
/**
* @description Map of io transports.
*
* @property _transport
* @private
* @static
* @type object
*/
_transport: {},
/**
* @description Method for accessing the transport's interface for making a
* cross-domain transaction.
*
* @method _xdr
* @private
* @static
* @param {string} uri - qualified path to transaction resource.
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {object} c - configuration object for the transaction.
*/
};
// These nodes do not need to be serialized across Flash's
// ExternalInterface. Doing so will result in exceptions.
c.context = null;
c.form = null;
}
else if (window.XDomainRequest) {
_xdr(o, c);
}
return {
abort: function() {
return o.c ? _abort(o, c) : false;
},
isInProgress: function() {
}
}
},
/**
* @description Response controller for cross-domain requests when using the
* Flash transport or IE8's XDomainRequest object.
*
* @method xdrResponse
* @private
* @static
* @param {object} o - Transaction object generated by _create() in io-base.
* @param {object} c - configuration object for the transaction.
* @param {string} e - Event name
* @return object
*/
xdrResponse: function(o, c, e) {
var m, fn,
if (isFlash) {
m = _fn || {};
if (fn) {
}
}
if (e === ('abort' || 'timeout')) {
o.status = e;
}
switch (e) {
case 'start':
break;
case 'success':
break;
case 'timeout':
case 'abort':
case 'failure':
break;
}
},
/**
* @description Fires event "io:xdrReady"
*
* @method xdrReady
* @private
* @static
* @param {number} id - transaction id
* @param {object} c - configuration object for the transaction.
*
* @return void
*/
},
/**
* @description Method to initialize the desired transport.
*
* @method transport
* @public
* @static
* @param {object} o - object of transport configurations.
* @return void
*/
transport: function(o) {
}
});