X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F06_net%2F00_XNet.js;h=90693963a7b992dd65e4e0d73dccea361c80d8ee;hb=4e4ab3be10850546063d4a4b93250ed142bb8cd2;hp=fc5dc58674270d8c38ddcfaab65fbdef0efd54d5;hpb=2612dc17dae6ba790807049d2587e8a2910007cc;p=pettanr%2FclientJs.git
diff --git a/0.6.x/js/06_net/00_XNet.js b/0.6.x/js/06_net/00_XNet.js
index fc5dc58..9069396 100644
--- a/0.6.x/js/06_net/00_XNet.js
+++ b/0.6.x/js/06_net/00_XNet.js
@@ -7,25 +7,25 @@
/**
- *
busy() ã¡ã½ããã ããæã¤ãéä¿¡ç¨ã®ããããã£ã¯ X.Pair ã«ãã£ã¦é è½ãããã
+ *
state() ã¡ã½ããã ããæã¤ãéä¿¡ç¨ã®ããããã£ã¯ X.Pair ã«ãã£ã¦é è½ããã¦ãã¾ãã
*
éä¿¡ã®ãã£ã³ã»ã«
- * kill() ã§éä¿¡å¾
ã¡ä¸ã¯ãã£ã³ã»ã«&ç ´æ£ãéä¿¡ä¸ã®å ´åã¯éä¿¡ã®ä¸æ&ç ´æ£ãè¡ããSUCCESS, ERROR, TIMEOUT ã¤ãã³ã以é㯠kill() ã¯ç¡è¦ãããã
+ *
kill() ã§éä¿¡å¾
ã¡ä¸ã¯ãã£ã³ã»ã«&ç ´æ£ãéä¿¡ä¸ã®å ´åã¯éä¿¡ã®ä¸æ&ç ´æ£ãè¡ãã
*
ã¤ãã³ã
*
* - X.Event.PROGRESS
- éä¿¡é²è¡ç¶æ³
*
- X.Event.SUCCESS
- éä¿¡æå
- *
- X.Event.ERROR
- éä¿¡ã¨ã©ã¼
- *
- X.Event.TIMEOUT
- éä¿¡ã¿ã¤ã ã¢ã¦ã
- *
- X.Event.CANCELED
- éä¿¡ã®ã¦ã¼ã¶ã¼ãããã°ã©ã ã«ãããã£ã³ã»ã«
- *
- X.Event.COMPLETE
- éä¿¡å®äºãSUCCESS, ERROR, TIMEOUT, CANCELED å¾ã«çºçã
+ *
- X.Event.ERROR
- éä¿¡ã¨ã©ã¼ãã¿ã¤ã ã¢ã¦ãã®å ´åãe.timeout == true ã§åããã
+ *
- X.Event.CANCELED
- éä¿¡ã®ã¦ã¼ã¶ã¼ãããã°ã©ã ã«ãããã£ã³ã»ã«ãSUCCESS, ERROR, COMPLETE å¾ã« kill()ãã¦ãCANCELEDã¯å¼ã°ãã¾ããã
+ *
- X.Event.COMPLETE
- éä¿¡å®äºãSUCCESS, ERROR, CANCELED å¾ã«çºçã
*
* X.Net ã¤ã³ã¹ã¿ã³ã¹ã¯ COMPLETE å¾ã«èªåã§ç ´æ£ãããã
*
å¿
é ããããã£
*
* - url
- URL
- *
- type
- 'xhr', 'jsonp', 'image', 'img'
+ *
- type
- 'xhr', 'jsonp', 'form', 'image', 'img'
*
- xhr
- URL { url : 'hoge', type : 'xhr' } ã®çç¥å½¢
*
- jsonp
- URL { url : 'hoge', type : 'jsonp' } ã®çç¥å½¢
+ *
- form
- URL { url : 'hoge', type : 'form' } ã®çç¥å½¢
*
- image, img
- URL { url : 'hoge', type : 'image' } ã®çç¥å½¢
*
* XHR ç¨ããããã£
@@ -51,7 +51,16 @@
* paramsurl ãã©ã¡ã¼ã¿ã object ã§æ¸¡ããã¨ãåºæ¥ãã
* callbackNamecallback(json) ã³ã¼ã«ããã¯åãåºå®ããã¦ããéã«æå®ãã¾ã㯠&callback=hoge 以å¤ã®ååã§ã³ã¼ã«ããã¯ãæå®ããå ´åã« params 㨠callbackName ã«æ¸ãã¦ãããurl ãã©ã¡ã¼ã¿ã« callback ãç¡ããcallbackName ããªãå ´åããã¬ã¼ã ã¯ã¼ã¯å
ã§èªåã§è¨å®ããã
* charsetãã¼ã¸ã¨ç°ãªãjsonpãèªã¿è¾¼ãå ´åã«æå® 'EUC-JP', 'Shift-JIS' ç script ã¿ã°ã® charset ã«å
¥ããhttps://code.google.com/p/ajaxzip3/issues/detail?id=5
- * useFireWallç°ãªããã¡ã¤ã³ã« jsonp ãèªã¿è¾¼ãã å¾ãxdomain iframe éä¿¡ã使ã£ã¦ãã¼ã¿ãåãåããä¸æ£ãªã³ã¼ãã®å®è¡ãé²ããã¨ãåºæ¥ããæªå®è£
+ * useFireWallç°ãªããã¡ã¤ã³ã« jsonp ãèªã¿è¾¼ãã å¾ãxdomain iframe éä¿¡ã使ã£ã¦ãã¼ã¿ãåãåããä¸æ£ãªã³ã¼ãã®å®è¡ãé²ããã¨ãåºæ¥ã(ã¯ã)ãæªå®è£
+ *
+ *
+ * Form ç¨ããããã£
+ *
+ * - method
- 'GET' or 'POST'
+ *
- params
- ãã©ã¡ã¼ã¿ object 㯠input ã¿ã°ã® name & value ã«å±éããããobject ãå
¥ãåã«ãããã¨ã¯ã§ããªãã
+ *
- target
- '_self', '_parent', '_top' ã®å ´åããã¼ã¸ããé¢è±ãããtarget ãæå®ããåä¸ãã¡ã¤ã³ã®å ´å response ã« body.innerHTML ãè¿ããTODO X.Window
+ *
- timeout
- ms ã¿ã¤ã ã¢ã¦ãæéãçç¥å¯è½
+ *
- charset
- æªå®è£
*
*
* @alias X.Net
@@ -73,7 +82,7 @@
* var net = X.Net( { jsonp : urlString, params : params, callbackName : callbackName, charset : charset, useFireWall : false } );
*
* // Form
- * var net = X.Net( { form : urlString, method : 'POST', target : '_self', params : {} } ); // _self, _parent, _top ã®å ´åããã¼ã¸ããé¢è±ãã
+ * var net = X.Net( { form : urlString, method : 'POST', target : '_self', params : {} } );
*
* // Image preload & getSize
* var net = X.Net( { image : src, sizeDetection : true } );
@@ -84,9 +93,6 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
'X.Net',
X_Class.NONE,
{
- 'netType' : '',
- 'netName' : '',
- 'netVersion' : 0,
'Constructor' : function( urlOrObject, opt_options ){
var opt, url, type, auth;
@@ -152,8 +158,8 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
opt[ 'auth' ] = auth; // auth 㯠deep copy ãããã¨ã¾ãã
};
- // params ã url ã«è¿½å
- if( opt[ 'params' ] ){
+ // params ã url ã«è¿½å ä½ã form ã¯é¤ã
+ if( opt[ 'params' ] && type !== X_NET_TYPE_FORM ){
url = X_URL_create( url, opt[ 'params' ] );
delete opt[ 'params' ];
};
@@ -163,14 +169,14 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
// XDomain ä¸å¯ -> Flash, Gears, Silverlight, canUseGadget ãªã gadget ã«åæ¿?
// PUT DELETE UPDATE ä¸å¯ -> Flash, Gears, Silverlight, canUseGadget ãªã gadget ã«åæ¿?
- // xãããã³ã« 㪠binary ã®ãã¼ã -> gadget å
㧠proxyURL ã«ãã XHR
+ // xãããã³ã«(X_URL_isSameProtocol) 㪠binary ã®ãã¼ã -> gadget å
㧠proxyURL ã«ãã XHR
// or X_EVENT_ERROR
opt[ 'dataType' ] = opt[ 'dataType' ] || X_URL_getEXT( url );
};
opt.netType = type;
- opt[ 'url' ] = url;
+ opt[ 'url' ] = url;
X_Pair_create( this, opt );
@@ -179,13 +185,15 @@ X[ 'Net' ] = X_EventDispatcher[ 'inherits' ](
X_NET_QUEUE_LIST[ X_NET_QUEUE_LIST.length ] = this;
!X_NET_currentQueue && X_NET_shiftQueue();
},
-
+
/**
- * ç¾å¨éä¿¡ä¸ãï¼èª¿ã¹ããfalse ã®å ´åãéä¿¡ã®é çªå¾
ã¡ããéä¿¡ãçµäºãã¦ããã
- * @alias Net.prototype.busy
+ * ç¾å¨ã®ç¶æ
ã1:é çªå¾
ã¡, 2:éä¿¡ä¸, 3:éä¿¡å®äºãã§ã¼ãº
+ * @alias Net.prototype.state
*/
- 'busy' : function(){
- return this === X_NET_currentQueue && X_NET_currentWrapper._busy;
+ 'state' : function(){
+ return this === X_NET_currentQueue ?
+ ( X_NET_completePhase ? 3 : 2 ) :
+ 0 <= X_NET_QUEUE_LIST.indexOf( this ) ? 1 : 0;
}
}
);
@@ -213,11 +221,11 @@ var X_NET_TYPE_XHR = 1,
X_NET_QUEUE_LIST = [],
- X_NET_XHRWrapper,
- X_NET_JSONPWrapper,
- X_NET_FormWrapper,
- X_NET_ImageWrapper,
- X_NET_GIMRWrapper,
+ X_XHR,
+ X_JSONP,
+ X_FormSender,
+ X_ImgLoader,
+ X_GadgetXHR,
X_NET_currentWrapper,
X_NET_currentQueue,
@@ -230,13 +238,17 @@ function X_NET_proxyDispatch( e ){
switch( e.type ){
case X_EVENT_KILL_INSTANCE :
if( this === X_NET_currentQueue && X_NET_completePhase ){
+ if( X_NET_completePhase === 1 ){
+ this[ 'unlisten' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch )
+ [ 'dispatch' ]( X_EVENT_COMPLETE );
+ };
+ X_NET_shiftQueue( true );
X_Pair_release( this );
- X_NET_shiftQueue();
- X_NET_completePhase = false;
+ X_NET_completePhase = 0;
} else
if( this === X_NET_currentQueue ){
X_NET_currentWrapper.cancel();
- X_NET_shiftQueue();
+ X_NET_shiftQueue( true );
flag = true;
} else
if( ( i = X_NET_QUEUE_LIST.indexOf( this ) ) !== -1 ){
@@ -258,41 +270,45 @@ function X_NET_proxyDispatch( e ){
if( e.status === 401 ){
if( auth = X_Pair_get( this )[ 'auth' ] ){
X_Pair_get( auth ).onAuthError( auth, e );
+ // TODO ç ´æ£ããªãã§å¾
æ©ã
};
};
case X_EVENT_SUCCESS :
- X_NET_completePhase = true;
- this
- [ 'listenOnce' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch )
- [ 'asyncDispatch' ]( e );
- this[ 'asyncDispatch' ]( 32, { type : X_EVENT_COMPLETE, 'lastEventType' : e.type } );
+ X_NET_completePhase = 1;
+ this[ 'listenOnce' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch )
+ [ 'asyncDispatch' ]( 32, { type : X_EVENT_COMPLETE, 'lastEventType' : e.type } );
+
+ this[ 'asyncDispatch' ]( e );
break;
case X_EVENT_COMPLETE :
- X_Pair_release( this );
- X_NET_shiftQueue();
- X_NET_completePhase = false;
- this[ 'unlisten' ]( X_EVENT_KILL_INSTANCE, X_NET_proxyDispatch );
+ X_NET_completePhase = 2;
this[ 'kill' ]();
break;
};
};
-function X_NET_shiftQueue(){
- var auth, authSettings;
+// TODO _busy 㯠X.Net ã§è§¦ã.
+function X_NET_shiftQueue( currentKilled ){
+ var q, auth, authSettings;
if( X_NET_currentQueue ){
- if( X_NET_currentWrapper._busy ) return;
+ if( !currentKilled ) return;
+
X_NET_currentWrapper
[ 'unlisten' ]( [ X_EVENT_PROGRESS, X_EVENT_SUCCESS, X_EVENT_ERROR ], X_NET_currentQueue, X_NET_proxyDispatch )
.reset();
+
X_NET_currentQueue = X_NET_currentWrapper = X_NET_currentData = null;
};
+ console.log( 'â â ------------ X_NET_shiftQueue ' + X_NET_QUEUE_LIST.length );
+
if( !X_NET_QUEUE_LIST.length ) return;
- X_NET_currentQueue = X_NET_QUEUE_LIST.shift();
+
+ X_NET_currentQueue = q = X_NET_QUEUE_LIST.shift();
X_NET_currentData = X_Pair_get( X_NET_currentQueue );
switch( X_NET_currentData.netType ){
@@ -302,13 +318,13 @@ function X_NET_shiftQueue(){
// force 'gadget', 'flash'
switch( X_NET_currentData[ 'test' ] ){
case 'gadget' :
- X_NET_currentWrapper = X_NET_GIMRWrapper || X_TEMP.X_Net_GIMR_init();
+ X_NET_currentWrapper = X_GadgetXHR || X_TEMP.X_GadgetXHR_init();
break;
case 'flash' :
break;
default :
- X_NET_currentWrapper = X_NET_XHRWrapper || X_TEMP.X_Net_XHR_init();
+ X_NET_currentWrapper = X_XHR || X_TEMP.X_XHR_init();
};
@@ -319,12 +335,18 @@ function X_NET_shiftQueue(){
case 0 :
case 1 :
case 2 :
- if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_Callback_PREVENT_DEFAULT ) ){
- authSettings.lazyReq = X_NET_currentQueue;
+ if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_CALLBACK_PREVENT_DEFAULT ) ){
+ // event å
㧠kill ããã¦ããªããã¨ã確èª
+ if( X_NET_currentQueue === q ){
+ authSettings.lazyRequests = authSettings.lazyRequests || [];
+ authSettings.lazyRequests.indexOf( q ) === -1 && authSettings.lazyRequests.push( q );
+ X_NET_currentQueue = null;
+ X_NET_shiftQueue();
+ };
+ } else {
+ X_NET_currentQueue === q && q[ 'kill' ]();
};
- X_NET_currentQueue = null;
- X_NET_shiftQueue();
- break;
+ return;
case 3 : // refresh token
X_NET_QUEUE_LIST.push( X_NET_currentQueue );
X_NET_currentQueue = null;
@@ -335,13 +357,13 @@ function X_NET_shiftQueue(){
};
break;
case X_NET_TYPE_JSONP :
- X_NET_currentWrapper = X_NET_JSONPWrapper || X_TEMP.X_NET_JSONP_init();
+ X_NET_currentWrapper = X_JSONP || X_TEMP.X_JSONP_init();
break;
case X_NET_TYPE_FORM :
- X_NET_currentWrapper = X_NET_FormWrapper || X_TEMP.X_NET_Form_init();
+ X_NET_currentWrapper = X_FormSender || X_TEMP.X_FormSender_init();
break;
case X_NET_TYPE_IMAGE :
- X_NET_currentWrapper = X_NET_ImageWrapper || X_TEMP.X_NET_Image_init();
+ X_NET_currentWrapper = X_ImgLoader || X_TEMP.X_ImgLoader_init();
break;
};