• R/O
  • HTTP
  • SSH
  • HTTPS

clientJs: コミット

クライアント側 js 開発用


コミットメタ情報

リビジョン61e9c5db117630b7c51fb9d7d43eebe8a71b7666 (tree)
日時2015-06-20 19:13:44
作者itozyun <itozyun@user...>
コミッターitozyun

ログメッセージ

Version 0.6.164, fix gadget proxy for X.XHR.

変更サマリ

差分

--- 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 ){
3535 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode[ '_rawObject' ];
3636 remove = true;
3737 } else {
38- if( XnodeOrImageElemOrSrc.constructor === X.Node ){
38+ if( XnodeOrImageElemOrSrc.constructor === Node ){
3939 xnode = XnodeOrImageElemOrSrc;
4040 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )[ '_rawObject' ] : xnode[ '_rawObject' ];
4141 } else
--- 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 ){
238238 if( X_NET_completePhase === 1 )
239239 this[ 'unlisten' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch )
240240 [ 'dispatch' ]( X_EVENT_COMPLETE );
241+ this.kill();//test
241242 X_NET_shiftQueue();
242243 X_Pair_release( this );
243244 X_NET_completePhase = 0;
--- 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' ],
2828
2929 X_NET_GIMR_IMAGE_URL = 'img/opacity0.gif',
3030
31- X_NET_GIMR_detection = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ),
31+ // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js
32+ X_NET_GIMR_maxQueryLength = X_UA[ 'IE' ] ? 2000 : 6000,
3233
33- X_NET_GIMR_gadgetIframe,
34+ X_NET_GIMR_detection = new Function( 'f,j,i', 'for(j=f.length;j;)try{i=f[--j];return i.location.hash}catch(e){}' ),
3435
35- X_NET_GIMR_requestOptions,
36+ X_NET_GIMR_requestBatches,
3637
3738 X_NET_GIMR_requestOriginal,
3839
@@ -46,7 +47,7 @@ var X_NET_GIMR_canUse = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
4647
4748
4849 function X_NET_GIMR_detectImageOverIframe(){
49- var raw = X_NET_GIMR_gadgetIframe[ '_rawObject' ],
50+ var raw = this[ '_rawObject' ],
5051 iwin, ret, n, error, data = null, zero, e;
5152
5253 if( raw ){
@@ -60,9 +61,9 @@ function X_NET_GIMR_detectImageOverIframe(){
6061 //console.log( '' + ret );
6162
6263 switch( X_NET_GIMR_phase ){
63- case 0 : // init
64- // TODO 分割
65- iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent( X_JSON_stringify( X_NET_GIMR_requestOptions ) );
64+ case 0 : // makeRequest
65+ iwin.location.href = X_NET_GIMR_GADGET_URL + '#' + X_NET_GIMR_requestBatches.shift();
66+ if( X_NET_GIMR_requestBatches.length ) return; //TODO boost
6667 break;
6768
6869 case 1 : // after makeRequest > :ok 待ち
@@ -87,7 +88,7 @@ function X_NET_GIMR_detectImageOverIframe(){
8788 X_NET_GIMR_isReceiveBatches = --n;
8889 iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;
8990 // speedup
90- X_NET_GIMR_timerID = X_Timer_add( 16, 0, X_NET_GIMR_detectImageOverIframe );
91+ X_NET_GIMR_timerID = X_Timer_add( 16, 0, this, X_NET_GIMR_detectImageOverIframe );
9192 return X_Callback_UN_LISTEN;
9293 } else {
9394 X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( ret );
@@ -126,7 +127,7 @@ function X_NET_GIMR_detectImageOverIframe(){
126127
127128 e[ 'headers' ] = ret[ 'headers' ];
128129
129- X_NET_GIMRWrapper[ 'asyncDispatch' ]( e);
130+ X_NET_GIMRWrapper[ 'asyncDispatch' ]( e );
130131
131132 //console.dir( e );
132133
@@ -148,15 +149,32 @@ function X_Net_GIMR_decodeLocationHash( str ){
148149 };
149150
150151 X_TEMP.X_Net_GIMR_init = function(){
151- // TODO extend NinjaIframe
152152 X_NET_GIMRWrapper = X_Class_override(
153- X_EventDispatcher(),
154- X_TEMP.X_Net_GIMR_props
155- );
153+ X_Node_systemNode
154+ .create( 'iframe', {
155+ className : 'hidden-iframe',
156+ name : X_NET_GIMR_iframeName,
157+ id : X_NET_GIMR_iframeName,
158+ src : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent(
159+ X_JSON_stringify( {
160+ 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ),
161+ 'len' : X_NET_GIMR_maxQueryLength,
162+ 'itvl' : 333,
163+ 'gck' : X_UA[ 'Gecko' ] ? 1 : 0
164+ } )
165+ ),
166+ scrolling : 'no',
167+ allowtransparency : 'no',
168+ frameborder : 0,
169+ tabindex : -1
170+ }),
171+ X_TEMP.X_Net_GIMR_props );
156172
157173 delete X_TEMP.X_Net_GIMR_init;
158174 delete X_TEMP.X_Net_GIMR_props;
159175
176+ X_NET_GIMR_requestBatches = [];
177+
160178 return X_NET_GIMRWrapper;
161179 };
162180
@@ -167,77 +185,50 @@ X_TEMP.X_Net_GIMR_props = {
167185 _onloadCount : 0,
168186
169187 load : function( obj ){
170- var k, v;
188+ var req = {},
189+ k, max, sendStr, l, str;
171190 //createURL
172- if( !X_NET_GIMR_gadgetIframe ){
173- X_NET_GIMR_gadgetIframe = X_Node_systemNode
174- .create( 'iframe', {
175- className : 'hidden-iframe',
176- name : X_NET_GIMR_iframeName,
177- id : X_NET_GIMR_iframeName,
178- src : X_NET_GIMR_GADGET_URL + '#' + encodeURIComponent(
179- X_JSON_stringify( {
180- 'img' : X_URL_toAbsolutePath( X_NET_GIMR_IMAGE_URL ),
181- // https://code.google.com/p/xssinterface/source/browse/trunk/js/xssinterface.js
182- 'len' : X_UA[ 'IE' ] ? 2000 : 6000,
183- 'itvl' : 333
184- } )
185- ),
186- scrolling : 'no',
187- allowtransparency : 'no',
188- frameborder : 0,
189- tabindex : -1
190- } );
191+
192+ X_NET_GIMR_requestOriginal = obj;
193+
194+ for( k in obj ){
195+ switch( k ){
196+ case 'url' :
197+ case 'postdata' :
198+ case 'method' :
199+ case 'dataType' :
200+ case 'headers' :
201+ case 'cashe' :
202+ req[ k ] = obj[ k ];
203+ break;
204+ };
191205 };
192206
193- X_NET_GIMR_timerID = X_Timer_add( 333, 0, X_NET_GIMR_detectImageOverIframe );
207+ max = X_NET_GIMR_maxQueryLength - X_NET_GIMR_GADGET_URL.length - 5;
194208
195- X_NET_GIMR_requestOriginal = X_Object_deepCopy( obj );
196-
197- //console.dir( obj );
209+ sendStr = X_JSON_stringify( req );
198210
199- X_NET_GIMR_requestOptions = {
200- 'CONTENT_TYPE' : 'TEXT',
201- 'GET_FULL_HEADERS' : true,
202- 'REFRESH_INTERVAL' : 0,
203- 'url' : obj[ 'url' ]
211+ while( sendStr.length ){
212+ l = max;
213+ str = encodeURIComponent( sendStr.substr( 0, l ) );
214+ while( max < str.length ){
215+ l = l * ( 2 + l / str.length ) / 3 | 0;
216+ str = encodeURIComponent( sendStr.substr( 0, l ) );
217+ //console.log( l );
218+ };
219+ X_NET_GIMR_requestBatches.push( str );
220+ sendStr = sendStr.substr( l );
221+ str = '';
204222 };
205223
206- for( k in obj ){
207- if( v = '' + obj[ k ] ){
208- switch( k ){
209- case 'postdata' :
210- X_NET_GIMR_requestOptions[ 'POST_DATA' ] = v;
211- break;
212- case 'method' :
213- X_NET_GIMR_requestOptions[ 'METHOD' ] = v;
214- break;
215- case 'dataType' :
216- // TEXT 以外は無視される?
217- switch( v = v.toUpperCase() ){
218- case 'TEXT' :
219- case 'JSON' :
220- X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v;
221- break;
222- case 'DOM' :
223- case 'HTML' :
224- case 'HTM' :
225- case 'XML' :
226- X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = 'DOM';
227- break;
228- //case 'FEED' :
229- };
230- break;
231- case 'headers' :
232- X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ k ];
233- break;
234- case 'cashe' :
235- X_NET_GIMR_requestOptions[ 'REFRESH_INTERVAL' ] = 3600;
236- break;
237- };
238- };
224+ sendStr = '';
225+
226+ if( 1 < X_NET_GIMR_requestBatches.length ){
227+ X_NET_GIMR_requestBatches[ 0 ] = X_NET_GIMR_requestBatches.length + ':' + X_NET_GIMR_requestBatches[ 0 ];
239228 };
240229
230+ X_NET_GIMR_timerID = X_Timer_add( 333, 0, this, X_NET_GIMR_detectImageOverIframe );
231+
241232 this._busy = true;
242233 },
243234
--- 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({
2828 'clientSecret' : 'xxxxxxxx',
2929 'authorizeEndpoint' : 'https://accounts.google.com/o/oauth2/auth',
3030 'tokenEndpoint' : 'https://accounts.google.com/o/oauth2/token',
31- 'redirectURI' : X.URL.cleanup( document.location.href ), // 専用の軽量ページを用意してもよいが、現在のアドレスでも可能
31+ 'redirectURI' : X.URL.cleanup( document.location.href ), // 専用の軽量ページを用意してもよいが、現在のアドレスでも可能, gif は?
3232 'scopes' : [ 'https://www.googleapis.com/auth/blogger' ],
3333 'refreshMargin' : 300000,
3434 // canuse
@@ -239,7 +239,7 @@ function X_Net_OAuth2_detectAuthPopup(){
239239 X_NET_OAUTH2_authorizationWindow = null;
240240 X_NET_OAUTH2_authorizationTimerID = 0;
241241
242- return X_Callback_UN_LISTEN;
242+ return X_Callback_UN_LISTEN;
243243 };
244244 };
245245
旧リポジトリブラウザで表示