OSDN Git Service

Version 0.6.164, fix gadget proxy for X.XHR.
authoritozyun <itozyun@user.sourceforge.jp>
Sat, 20 Jun 2015 10:13:44 +0000 (19:13 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Sat, 20 Jun 2015 10:13:44 +0000 (19:13 +0900)
0.6.x/js/05_util/03_XUtilImage.js
0.6.x/js/06_net/00_XNet.js
0.6.x/js/06_net/05_XXHRGadget.js
0.6.x/js/06_net/10_XOAuth2.js

index a9dcd7f..958a0e7 100644 (file)
@@ -35,7 +35,7 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
                img    = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode[ '_rawObject' ];\r
                remove = true;\r
        } else {\r
-               if( XnodeOrImageElemOrSrc.constructor === X.Node ){\r
+               if( XnodeOrImageElemOrSrc.constructor === Node ){\r
                        xnode = XnodeOrImageElemOrSrc;\r
                        img   = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )[ '_rawObject' ] : xnode[ '_rawObject' ];\r
                } else\r
index 6bacae7..fa1a6d4 100644 (file)
@@ -238,6 +238,7 @@ function X_NET_proxyDispatch( e ){
                                if( X_NET_completePhase === 1 )\r
                                        this[ 'unlisten' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch )\r
                                                [ 'dispatch' ]( X_EVENT_COMPLETE );\r
+                               this.kill();//test\r
                                X_NET_shiftQueue();\r
                                X_Pair_release( this );\r
                                X_NET_completePhase = 0;\r
index 8e8386c..d65f2c0 100644 (file)
@@ -28,11 +28,12 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
        \r
        X_NET_GIMR_IMAGE_URL      = 'img/opacity0.gif',\r
        \r
-       X_NET_GIMR_detection      = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ),\r
+       // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js\r
+       X_NET_GIMR_maxQueryLength = X_UA[ 'IE' ] ? 2000 : 6000,\r
        \r
-       X_NET_GIMR_gadgetIframe,\r
+       X_NET_GIMR_detection      = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ),\r
        \r
-       X_NET_GIMR_requestOptions,\r
+       X_NET_GIMR_requestBatches,\r
        \r
        X_NET_GIMR_requestOriginal,\r
        \r
@@ -46,7 +47,7 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
 \r
 \r
 function X_NET_GIMR_detectImageOverIframe(){\r
-       var raw = X_NET_GIMR_gadgetIframe[ '_rawObject' ],\r
+       var raw = this[ '_rawObject' ],\r
                iwin, ret, n, error, data = null, zero, e;\r
        \r
        if( raw ){\r
@@ -60,9 +61,9 @@ function X_NET_GIMR_detectImageOverIframe(){
                                //console.log( '' + ret );\r
                                \r
                                switch( X_NET_GIMR_phase ){\r
-                                       case 0 : // init\r
-                                               // TODO 分割\r
-                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( X_JSON_stringify( X_NET_GIMR_requestOptions ) );\r
+                                       case 0 : // makeRequest\r
+                                               iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + X_NET_GIMR_requestBatches.shift();\r
+                                               if( X_NET_GIMR_requestBatches.length ) return; //TODO boost\r
                                                break;\r
                                                \r
                                        case 1 : // after makeRequest > :ok 待ち\r
@@ -87,7 +88,7 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                        X_NET_GIMR_isReceiveBatches = --n;\r
                                                        iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
                                                        // speedup\r
-                                                       X_NET_GIMR_timerID = X_Timer_add( 16, 0, X_NET_GIMR_detectImageOverIframe );\r
+                                                       X_NET_GIMR_timerID = X_Timer_add( 16, 0, this, X_NET_GIMR_detectImageOverIframe );\r
                                                        return X_Callback_UN_LISTEN;\r
                                                } else {\r
                                                        X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( ret );\r
@@ -126,7 +127,7 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                \r
                                                e[ 'headers' ] = ret[ 'headers' ];\r
                                                \r
-                                               X_NET_GIMRWrapper[ 'asyncDispatch' ]( e);\r
+                                               X_NET_GIMRWrapper[ 'asyncDispatch' ]( e );\r
                                                \r
                                                //console.dir( e );\r
 \r
@@ -148,15 +149,32 @@ function X_Net_GIMR_decodeLocationHash( str ){
 };\r
 \r
 X_TEMP.X_Net_GIMR_init = function(){\r
-       // TODO extend NinjaIframe\r
        X_NET_GIMRWrapper = X_Class_override(\r
-                       X_EventDispatcher(),\r
-                       X_TEMP.X_Net_GIMR_props\r
-               );\r
+                       X_Node_systemNode\r
+                               .create( 'iframe', {\r
+                                       className         : 'hidden-iframe',\r
+                                       name              : X_NET_GIMR_iframeName,\r
+                                       id                : X_NET_GIMR_iframeName,\r
+                                       src               : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent(\r
+                                                       X_JSON_stringify( {\r
+                                                               'img'  : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ),\r
+                                                               'len'  : X_NET_GIMR_maxQueryLength,\r
+                                                               'itvl' : 333,\r
+                                                               'gck'  : X_UA[ 'Gecko' ] ? 1 : 0\r
+                                                       } )\r
+                                               ),\r
+                                       scrolling         : 'no',\r
+                                       allowtransparency : 'no',                                       \r
+                                       frameborder       : 0,\r
+                                       tabindex          : -1\r
+                                       }),\r
+                       X_TEMP.X_Net_GIMR_props );\r
        \r
        delete X_TEMP.X_Net_GIMR_init;\r
        delete X_TEMP.X_Net_GIMR_props; \r
        \r
+       X_NET_GIMR_requestBatches = [];\r
+       \r
        return X_NET_GIMRWrapper;\r
 };\r
 \r
@@ -167,77 +185,50 @@ X_TEMP.X_Net_GIMR_props = {
                _onloadCount  : 0,\r
                \r
                load : function( obj ){\r
-                       var k, v;\r
+                       var req = {},\r
+                               k, max, sendStr, l, str;\r
                        //createURL\r
-                       if( !X_NET_GIMR_gadgetIframe ){\r
-                               X_NET_GIMR_gadgetIframe = X_Node_systemNode\r
-                                               .create( 'iframe', {\r
-                                                       className         : 'hidden-iframe',\r
-                                                       name              : X_NET_GIMR_iframeName,\r
-                                                       id                : X_NET_GIMR_iframeName,\r
-                                                       src               : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent(\r
-                                                                       X_JSON_stringify( {\r
-                                                                               'img'  : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ),\r
-                                                                               // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js\r
-                                                                               'len'  : X_UA[ 'IE' ] ? 2000 : 6000,\r
-                                                                               'itvl' : 333\r
-                                                                       } )\r
-                                                               ),\r
-                                                       scrolling         : 'no',\r
-                                                       allowtransparency : 'no',                                       \r
-                                                       frameborder       : 0,\r
-                                                       tabindex          : -1\r
-                                                       } );\r
+\r
+                       X_NET_GIMR_requestOriginal = obj;\r
+                       \r
+                       for( k in obj ){\r
+                               switch( k ){\r
+                                       case 'url' :\r
+                                       case 'postdata' :\r
+                                       case 'method' :\r
+                                       case 'dataType' :\r
+                                       case 'headers' :\r
+                                       case 'cashe' :\r
+                                               req[ k ] = obj[ k ];\r
+                                               break;\r
+                               };\r
                        };\r
                        \r
-                       X_NET_GIMR_timerID = X_Timer_add( 333, 0, X_NET_GIMR_detectImageOverIframe );\r
+                       max = X_NET_GIMR_maxQueryLength - X_NET_GIMR_GADGET_URL.length - 5;\r
                        \r
-                       X_NET_GIMR_requestOriginal = X_Object_deepCopy( obj );\r
-       \r
-                       //console.dir( obj );\r
+                       sendStr = X_JSON_stringify( req );\r
                        \r
-                       X_NET_GIMR_requestOptions = {\r
-                               'CONTENT_TYPE'     : 'TEXT',\r
-                               'GET_FULL_HEADERS' : true,\r
-                               'REFRESH_INTERVAL' : 0,\r
-                               'url'              : obj[ 'url' ]\r
+                       while( sendStr.length ){\r
+                               l   = max;\r
+                               str = encodeURIComponent( sendStr.substr( 0, l ) );\r
+                               while( max < str.length ){\r
+                                       l   = l * ( 2 + l / str.length ) / 3 | 0;\r
+                                       str = encodeURIComponent( sendStr.substr( 0, l ) );\r
+                                       //console.log( l );\r
+                               };\r
+                               X_NET_GIMR_requestBatches.push( str );\r
+                               sendStr = sendStr.substr( l );\r
+                               str = '';\r
                        };\r
                        \r
-                       for( k in obj ){\r
-                               if( v = '' + obj[ k ] ){\r
-                                       switch( k ){\r
-                                               case 'postdata' :\r
-                                                       X_NET_GIMR_requestOptions[ 'POST_DATA' ] = v;\r
-                                                       break;\r
-                                               case 'method' :\r
-                                                       X_NET_GIMR_requestOptions[ 'METHOD' ] = v;\r
-                                                       break;                                  \r
-                                               case 'dataType' :\r
-                                                       // TEXT 以外は無視される?\r
-                                                       switch( v = v.toUpperCase() ){\r
-                                                               case 'TEXT' :\r
-                                                               case 'JSON' :\r
-                                                                       X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v;\r
-                                                                       break;\r
-                                                               case 'DOM'  :\r
-                                                               case 'HTML' :\r
-                                                               case 'HTM'  :\r
-                                                               case 'XML'  :\r
-                                                                       X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = 'DOM';\r
-                                                                       break;\r
-                                                               //case 'FEED' :\r
-                                                       };              \r
-                                                       break;\r
-                                               case 'headers' :\r
-                                                       X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ k ];\r
-                                                       break;\r
-                                               case 'cashe' :\r
-                                                       X_NET_GIMR_requestOptions[ 'REFRESH_INTERVAL' ] = 3600;\r
-                                                       break;\r
-                                       };                                      \r
-                               };\r
+                       sendStr = '';\r
+                       \r
+                       if( 1 < X_NET_GIMR_requestBatches.length ){\r
+                               X_NET_GIMR_requestBatches[ 0 ] = X_NET_GIMR_requestBatches.length + ':' + X_NET_GIMR_requestBatches[ 0 ];       \r
                        };\r
                        \r
+                       X_NET_GIMR_timerID = X_Timer_add( 333, 0, this, X_NET_GIMR_detectImageOverIframe );\r
+                       \r
                        this._busy = true;\r
                },\r
                \r
index c4f92b2..5bb2c1c 100644 (file)
@@ -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;
        };
 };