From: itozyun Date: Sat, 20 Jun 2015 10:13:44 +0000 (+0900) Subject: Version 0.6.164, fix gadget proxy for X.XHR. X-Git-Url: http://git.osdn.jp/view?p=pettanr%2FclientJs.git;a=commitdiff_plain;h=61e9c5db117630b7c51fb9d7d43eebe8a71b7666 Version 0.6.164, fix gadget proxy for X.XHR. --- diff --git a/0.6.x/js/05_util/03_XUtilImage.js b/0.6.x/js/05_util/03_XUtilImage.js index a9dcd7f..958a0e7 100644 --- a/0.6.x/js/05_util/03_XUtilImage.js +++ b/0.6.x/js/05_util/03_XUtilImage.js @@ -35,7 +35,7 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){ img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode[ '_rawObject' ]; remove = true; } else { - if( XnodeOrImageElemOrSrc.constructor === X.Node ){ + if( XnodeOrImageElemOrSrc.constructor === Node ){ xnode = XnodeOrImageElemOrSrc; img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )[ '_rawObject' ] : xnode[ '_rawObject' ]; } else diff --git a/0.6.x/js/06_net/00_XNet.js b/0.6.x/js/06_net/00_XNet.js index 6bacae7..fa1a6d4 100644 --- a/0.6.x/js/06_net/00_XNet.js +++ b/0.6.x/js/06_net/00_XNet.js @@ -238,6 +238,7 @@ function X_NET_proxyDispatch( e ){ if( X_NET_completePhase === 1 ) this[ 'unlisten' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch ) [ 'dispatch' ]( X_EVENT_COMPLETE ); + this.kill();//test X_NET_shiftQueue(); X_Pair_release( this ); X_NET_completePhase = 0; diff --git a/0.6.x/js/06_net/05_XXHRGadget.js b/0.6.x/js/06_net/05_XXHRGadget.js index 8e8386c..d65f2c0 100644 --- a/0.6.x/js/06_net/05_XXHRGadget.js +++ b/0.6.x/js/06_net/05_XXHRGadget.js @@ -28,11 +28,12 @@ var X_NET_GIMR_canUse = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ], X_NET_GIMR_IMAGE_URL = 'img/opacity0.gif', - X_NET_GIMR_detection = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ), + // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js + X_NET_GIMR_maxQueryLength = X_UA[ 'IE' ] ? 2000 : 6000, - X_NET_GIMR_gadgetIframe, + X_NET_GIMR_detection = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ), - X_NET_GIMR_requestOptions, + X_NET_GIMR_requestBatches, X_NET_GIMR_requestOriginal, @@ -46,7 +47,7 @@ var X_NET_GIMR_canUse = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ], function X_NET_GIMR_detectImageOverIframe(){ - var raw = X_NET_GIMR_gadgetIframe[ '_rawObject' ], + var raw = this[ '_rawObject' ], iwin, ret, n, error, data = null, zero, e; if( raw ){ @@ -60,9 +61,9 @@ function X_NET_GIMR_detectImageOverIframe(){ //console.log( '' + ret ); switch( X_NET_GIMR_phase ){ - case 0 : // init - // TODO 分割 - iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( X_JSON_stringify( X_NET_GIMR_requestOptions ) ); + case 0 : // makeRequest + iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + X_NET_GIMR_requestBatches.shift(); + if( X_NET_GIMR_requestBatches.length ) return; //TODO boost break; case 1 : // after makeRequest > :ok 待ち @@ -87,7 +88,7 @@ function X_NET_GIMR_detectImageOverIframe(){ X_NET_GIMR_isReceiveBatches = --n; iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches; // speedup - X_NET_GIMR_timerID = X_Timer_add( 16, 0, X_NET_GIMR_detectImageOverIframe ); + X_NET_GIMR_timerID = X_Timer_add( 16, 0, this, X_NET_GIMR_detectImageOverIframe ); return X_Callback_UN_LISTEN; } else { X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( ret ); @@ -126,7 +127,7 @@ function X_NET_GIMR_detectImageOverIframe(){ e[ 'headers' ] = ret[ 'headers' ]; - X_NET_GIMRWrapper[ 'asyncDispatch' ]( e); + X_NET_GIMRWrapper[ 'asyncDispatch' ]( e ); //console.dir( e ); @@ -148,15 +149,32 @@ function X_Net_GIMR_decodeLocationHash( str ){ }; X_TEMP.X_Net_GIMR_init = function(){ - // TODO extend NinjaIframe X_NET_GIMRWrapper = X_Class_override( - X_EventDispatcher(), - X_TEMP.X_Net_GIMR_props - ); + X_Node_systemNode + .create( 'iframe', { + className : 'hidden-iframe', + name : X_NET_GIMR_iframeName, + id : X_NET_GIMR_iframeName, + src : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( + X_JSON_stringify( { + 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ), + 'len' : X_NET_GIMR_maxQueryLength, + 'itvl' : 333, + 'gck' : X_UA[ 'Gecko' ] ? 1 : 0 + } ) + ), + scrolling : 'no', + allowtransparency : 'no', + frameborder : 0, + tabindex : -1 + }), + X_TEMP.X_Net_GIMR_props ); delete X_TEMP.X_Net_GIMR_init; delete X_TEMP.X_Net_GIMR_props; + X_NET_GIMR_requestBatches = []; + return X_NET_GIMRWrapper; }; @@ -167,77 +185,50 @@ X_TEMP.X_Net_GIMR_props = { _onloadCount : 0, load : function( obj ){ - var k, v; + var req = {}, + k, max, sendStr, l, str; //createURL - if( !X_NET_GIMR_gadgetIframe ){ - X_NET_GIMR_gadgetIframe = X_Node_systemNode - .create( 'iframe', { - className : 'hidden-iframe', - name : X_NET_GIMR_iframeName, - id : X_NET_GIMR_iframeName, - src : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( - X_JSON_stringify( { - 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ), - // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js - 'len' : X_UA[ 'IE' ] ? 2000 : 6000, - 'itvl' : 333 - } ) - ), - scrolling : 'no', - allowtransparency : 'no', - frameborder : 0, - tabindex : -1 - } ); + + X_NET_GIMR_requestOriginal = obj; + + for( k in obj ){ + switch( k ){ + case 'url' : + case 'postdata' : + case 'method' : + case 'dataType' : + case 'headers' : + case 'cashe' : + req[ k ] = obj[ k ]; + break; + }; }; - X_NET_GIMR_timerID = X_Timer_add( 333, 0, X_NET_GIMR_detectImageOverIframe ); + max = X_NET_GIMR_maxQueryLength - X_NET_GIMR_GADGET_URL.length - 5; - X_NET_GIMR_requestOriginal = X_Object_deepCopy( obj ); - - //console.dir( obj ); + sendStr = X_JSON_stringify( req ); - X_NET_GIMR_requestOptions = { - 'CONTENT_TYPE' : 'TEXT', - 'GET_FULL_HEADERS' : true, - 'REFRESH_INTERVAL' : 0, - 'url' : obj[ 'url' ] + while( sendStr.length ){ + l = max; + str = encodeURIComponent( sendStr.substr( 0, l ) ); + while( max < str.length ){ + l = l * ( 2 + l / str.length ) / 3 | 0; + str = encodeURIComponent( sendStr.substr( 0, l ) ); + //console.log( l ); + }; + X_NET_GIMR_requestBatches.push( str ); + sendStr = sendStr.substr( l ); + str = ''; }; - for( k in obj ){ - if( v = '' + obj[ k ] ){ - switch( k ){ - case 'postdata' : - X_NET_GIMR_requestOptions[ 'POST_DATA' ] = v; - break; - case 'method' : - X_NET_GIMR_requestOptions[ 'METHOD' ] = v; - break; - case 'dataType' : - // TEXT 以外は無視される? - switch( v = v.toUpperCase() ){ - case 'TEXT' : - case 'JSON' : - X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v; - break; - case 'DOM' : - case 'HTML' : - case 'HTM' : - case 'XML' : - X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = 'DOM'; - break; - //case 'FEED' : - }; - break; - case 'headers' : - X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ k ]; - break; - case 'cashe' : - X_NET_GIMR_requestOptions[ 'REFRESH_INTERVAL' ] = 3600; - break; - }; - }; + sendStr = ''; + + if( 1 < X_NET_GIMR_requestBatches.length ){ + X_NET_GIMR_requestBatches[ 0 ] = X_NET_GIMR_requestBatches.length + ':' + X_NET_GIMR_requestBatches[ 0 ]; }; + X_NET_GIMR_timerID = X_Timer_add( 333, 0, this, X_NET_GIMR_detectImageOverIframe ); + this._busy = true; }, diff --git a/0.6.x/js/06_net/10_XOAuth2.js b/0.6.x/js/06_net/10_XOAuth2.js index c4f92b2..5bb2c1c 100644 --- a/0.6.x/js/06_net/10_XOAuth2.js +++ b/0.6.x/js/06_net/10_XOAuth2.js @@ -28,7 +28,7 @@ oauth2 = X.OAuth2({ 'clientSecret' : 'xxxxxxxx', 'authorizeEndpoint' : 'https://accounts.google.com/o/oauth2/auth', 'tokenEndpoint' : 'https://accounts.google.com/o/oauth2/token', - 'redirectURI' : X.URL.cleanup( document.location.href ), // 専用の軽量ページを用意してもよいが、現在のアドレスでも可能 + 'redirectURI' : X.URL.cleanup( document.location.href ), // 専用の軽量ページを用意してもよいが、現在のアドレスでも可能, gif は? 'scopes' : [ 'https://www.googleapis.com/auth/blogger' ], 'refreshMargin' : 300000, // canuse @@ -239,7 +239,7 @@ function X_Net_OAuth2_detectAuthPopup(){ X_NET_OAUTH2_authorizationWindow = null; X_NET_OAUTH2_authorizationTimerID = 0; - return X_Callback_UN_LISTEN; + return X_Callback_UN_LISTEN; }; };