OSDN Git Service

Version 0.6.167, add X.Audio.canPlay.
authoritozyun <itozyun@user.sourceforge.jp>
Sun, 28 Jun 2015 21:47:15 +0000 (06:47 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Sun, 28 Jun 2015 21:47:15 +0000 (06:47 +0900)
0.6.x/js/01_core/11_XClosure.js
0.6.x/js/01_core/15_XEventDispatcher.js
0.6.x/js/06_net/01_XNetXHR.js
0.6.x/js/06_net/10_XOAuth2.js
0.6.x/js/07_audio/00_XAudio.js
0.6.x/js/07_audio/01_XWebAudio.js
0.6.x/js/07_audio/02_XHTMLAudio.js
0.6.x/js/07_audio/03_XSilverlightAudio.js

index c9338f1..5d90451 100644 (file)
@@ -150,7 +150,7 @@ function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){
 function X_Callback_actualClosure( obj ){\r
        return function(){\r
                if( arguments[ 0 ] === X_Closure_COMMAND_BACK ) return obj;\r
-               if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return obj.proxy( obj, arguments );\r
+               if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return obj.proxy && obj.proxy( obj, arguments );\r
        };\r
 };\r
 \r
index 22142fe..aceaca5 100644 (file)
@@ -695,6 +695,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                                default :\r
                                        if( raw.attachEvent ){\r
                                                raw.detachEvent( 'on' + type, that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+                                               console.log( 'raw rmEvent ' + type );\r
                                        } else {\r
                                                raw[ 'on' + type ] = X_emptyFunction;\r
                                                raw[ 'on' + type ] = '';\r
index f6b8357..265cc79 100644 (file)
@@ -487,7 +487,7 @@ X_TEMP.X_Net_XHR_params = {
                                        case 'timeout' : // Gecko 12.0 https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests\r
                                                X_NET_XHRWrapper._busy  = false;\r
                                                X_NET_XHRWrapper._error = !!X_UA[ 'Gecko' ];\r
-                                               X_NET_XHRWrapper[ 'asyncDispatch' ]( { type :X_EVENT_ERROR, 'timeout' : true } );\r
+                                               X_NET_XHRWrapper[ 'asyncDispatch' ]( { type :X_EVENT_ERROR, 'timeout' : true, status : 408 } );\r
                                                break;\r
                                };\r
                        },\r
@@ -498,7 +498,7 @@ X_TEMP.X_Net_XHR_params = {
 \r
                                if( live || raw.readyState < 3 ){\r
                                        this._busy = false;\r
-                                       live && this[ 'asyncDispatch' ]( { type : X_EVENT_ERROR, 'timeout' : true } );\r
+                                       live && this[ 'asyncDispatch' ]( { type : X_EVENT_ERROR, 'timeout' : true, status : 408 } );\r
                                };\r
                                this._timerID = 0;\r
                        },\r
index fb9206a..63e220d 100644 (file)
@@ -167,7 +167,14 @@ X[ 'OAuth2' ] = X_EventDispatcher[ 'inherits' ](
                         * アクセストークンのリフレッシュ。
                         */
                        'refreshToken' : function(){
-                               var pair = X_Pair_get( this );
+                               var pair = X_Pair_get( this ),
+                                       refreshToken = X_OAuth2_getRefreshToken( this );
+                               
+                               if( !refreshToken ){
+                                       pair.oauth2State = 0;
+                                       this[ 'asyncDispatch' ]( X_EVENT_NEED_AUTH );
+                                       return;
+                               };
                                
                                if( pair.net ) return;
                                
@@ -184,7 +191,7 @@ X[ 'OAuth2' ] = X_EventDispatcher[ 'inherits' ](
                                                'client_id'     : pair[ 'clientID' ],
                                                'client_secret' : pair[ 'clientSecret' ],
                                                'grant_type'    : 'refresh_token',
-                                               'refresh_token' : X_OAuth2_getRefreshToken( this )
+                                               'refresh_token' : refreshToken
                                        }),
                                        'dataType' : 'json',
                                        'headers'  : {
index 017f79e..c0a39d8 100644 (file)
 \r
 var X_Audio_BACKENDS     = []; // Array.<Hash>\r
 \r
+X_TEMP.onSystemReady.push(\r
+       function(){\r
+               var canPlay = X[ 'Audio' ][ 'canPlay' ] = {},\r
+                       i = X_Audio_BACKENDS.length;\r
+               for( ; i; ){\r
+                       X_Object_override( canPlay, X_Audio_BACKENDS[ --i ].canPlay );\r
+               };\r
+       });\r
+\r
 /**\r
  * <p>複数のバックエンドから、与えられた音声を再生可能なものを見つけ、音声を再生します。\r
  * <p>HTMLAudio の動作・機能がブラウザ毎にバラバラなのに業を煮やし、メソッドやイベントは独自に定義しています。\r
@@ -163,9 +172,6 @@ X[ 'Audio' ] = X_EventDispatcher[ 'inherits' ](
        }\r
 );\r
 \r
-// TODO\r
-X[ 'Audio' ][ 'canPlay' ] = {};\r
-\r
 function X_Audio_handleEvent( e ){\r
        var backend;\r
        \r
index 56fdc2e..db538e4 100644 (file)
@@ -348,6 +348,8 @@ if( X_Audio_WebAudio_context ){
                {
                        backendName : 'Web Audio',
 
+                       canPlay : {}, // TODO HTMLAudio と同じ
+
                        // 
                        detect : function( proxy, source, ext ){
                                proxy[ 'asyncDispatch' ]( { type : X_EVENT_COMPLETE, canPlay : X_Audio_codecs[ ext ] } );
index 3e84d3d..b15b064 100644 (file)
@@ -452,6 +452,8 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
        X_Audio_BACKENDS.push(\r
                {\r
                        backendName : 'HTML Audio',\r
+                       \r
+                       canPlay : X_Audio_codecs,\r
                /*\r
                 * HTML5 の audio 要素と video 要素でサポートされているメディアフォーマット\r
                 * https://developer.mozilla.org/ja/docs/Web/HTML/Supported_media_formats\r
index a12ee10..501326d 100644 (file)
@@ -397,6 +397,12 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
        X_Audio_BACKENDS.push( {\r
                backendName : 'Silverlight Audio',\r
 \r
+               canPlay : {\r
+                       'mp3' : true,\r
+                       'wma' : true,\r
+                       'wav' : true\r
+               },\r
+\r
                detect : function( proxy, source, ext ){\r
                        var ok = ext === 'mp3' || ext === 'wma' || ext === 'wav';\r
                        proxy[ 'asyncDispatch' ]( { type : X_EVENT_COMPLETE, canPlay : ok } );                          \r