@@ -105,15 +105,6 @@ var LibraryBrowser = {
105
105
106
106
if ( Browser . initted ) return ;
107
107
Browser . initted = true ;
108
-
109
- try {
110
- new Blob ( ) ;
111
- Browser . hasBlobConstructor = true ;
112
- } catch ( e ) {
113
- Browser . hasBlobConstructor = false ;
114
- err ( "warning: no blob constructor, cannot create blobs with mimetypes" ) ;
115
- }
116
- Browser . BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : ( typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : ( ! Browser . hasBlobConstructor ? err ( "warning: no BlobBuilder" ) : null ) ) ;
117
108
Browser . URLObject = typeof window != "undefined" ? ( window . URL ? window . URL : window . webkitURL ) : undefined ;
118
109
if ( ! Module . noImageDecoding && typeof Browser . URLObject == 'undefined' ) {
119
110
err ( "warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available." ) ;
@@ -133,22 +124,10 @@ var LibraryBrowser = {
133
124
return ! Module . noImageDecoding && / \. ( j p g | j p e g | p n g | b m p ) $ / i. test ( name ) ;
134
125
} ;
135
126
imagePlugin [ 'handle' ] = function imagePlugin_handle ( byteArray , name , onload , onerror ) {
136
- var b = null ;
137
- if ( Browser . hasBlobConstructor ) {
138
- try {
139
- b = new Blob ( [ byteArray ] , { type : Browser . getMimetype ( name ) } ) ;
140
- if ( b . size !== byteArray . length ) { // Safari bug #118630
141
- // Safari's Blob can only take an ArrayBuffer
142
- b = new Blob ( [ ( new Uint8Array ( byteArray ) ) . buffer ] , { type : Browser . getMimetype ( name ) } ) ;
143
- }
144
- } catch ( e ) {
145
- warnOnce ( 'Blob constructor present but fails: ' + e + '; falling back to blob builder' ) ;
146
- }
147
- }
148
- if ( ! b ) {
149
- var bb = new Browser . BlobBuilder ( ) ;
150
- bb . append ( ( new Uint8Array ( byteArray ) ) . buffer ) ; // we need to pass a buffer, and must copy the array to get the right data range
151
- b = bb . getBlob ( ) ;
127
+ var b = new Blob ( [ byteArray ] , { type : Browser . getMimetype ( name ) } ) ;
128
+ if ( b . size !== byteArray . length ) { // Safari bug #118630
129
+ // Safari's Blob can only take an ArrayBuffer
130
+ b = new Blob ( [ ( new Uint8Array ( byteArray ) ) . buffer ] , { type : Browser . getMimetype ( name ) } ) ;
152
131
}
153
132
var url = Browser . URLObject . createObjectURL ( b ) ;
154
133
#if ASSERTIONS
@@ -192,56 +171,48 @@ var LibraryBrowser = {
192
171
preloadedAudios [ name ] = new Audio ( ) ; // empty shim
193
172
if ( onerror ) onerror ( ) ;
194
173
}
195
- if ( Browser . hasBlobConstructor ) {
196
- try {
197
- var b = new Blob ( [ byteArray ] , { type : Browser . getMimetype ( name ) } ) ;
198
- } catch ( e ) {
199
- return fail ( ) ;
200
- }
201
- var url = Browser . URLObject . createObjectURL ( b ) ; // XXX we never revoke this!
174
+ var b = new Blob ( [ byteArray ] , { type : Browser . getMimetype ( name ) } ) ;
175
+ var url = Browser . URLObject . createObjectURL ( b ) ; // XXX we never revoke this!
202
176
#if ASSERTIONS
203
- assert ( typeof url == 'string' , 'createObjectURL must return a url as a string' ) ;
177
+ assert ( typeof url == 'string' , 'createObjectURL must return a url as a string' ) ;
204
178
#endif
205
- var audio = new Audio ( ) ;
206
- audio . addEventListener ( 'canplaythrough' , ( ) => finish ( audio ) , false ) ; // use addEventListener due to chromium bug 124926
207
- audio . onerror = function audio_onerror ( event ) {
208
- if ( done ) return ;
209
- err ( 'warning: browser could not fully decode audio ' + name + ', trying slower base64 approach' ) ;
210
- function encode64 ( data ) {
211
- var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' ;
212
- var PAD = '=' ;
213
- var ret = '' ;
214
- var leftchar = 0 ;
215
- var leftbits = 0 ;
216
- for ( var i = 0 ; i < data . length ; i ++ ) {
217
- leftchar = ( leftchar << 8 ) | data [ i ] ;
218
- leftbits += 8 ;
219
- while ( leftbits >= 6 ) {
220
- var curr = ( leftchar >> ( leftbits - 6 ) ) & 0x3f ;
221
- leftbits -= 6 ;
222
- ret += BASE [ curr ] ;
223
- }
224
- }
225
- if ( leftbits == 2 ) {
226
- ret += BASE [ ( leftchar & 3 ) << 4 ] ;
227
- ret += PAD + PAD ;
228
- } else if ( leftbits == 4 ) {
229
- ret += BASE [ ( leftchar & 0xf ) << 2 ] ;
230
- ret += PAD ;
179
+ var audio = new Audio ( ) ;
180
+ audio . addEventListener ( 'canplaythrough' , ( ) => finish ( audio ) , false ) ; // use addEventListener due to chromium bug 124926
181
+ audio . onerror = function audio_onerror ( event ) {
182
+ if ( done ) return ;
183
+ err ( 'warning: browser could not fully decode audio ' + name + ', trying slower base64 approach' ) ;
184
+ function encode64 ( data ) {
185
+ var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' ;
186
+ var PAD = '=' ;
187
+ var ret = '' ;
188
+ var leftchar = 0 ;
189
+ var leftbits = 0 ;
190
+ for ( var i = 0 ; i < data . length ; i ++ ) {
191
+ leftchar = ( leftchar << 8 ) | data [ i ] ;
192
+ leftbits += 8 ;
193
+ while ( leftbits >= 6 ) {
194
+ var curr = ( leftchar >> ( leftbits - 6 ) ) & 0x3f ;
195
+ leftbits -= 6 ;
196
+ ret += BASE [ curr ] ;
231
197
}
232
- return ret ;
233
198
}
234
- audio . src = 'data:audio/x-' + name . substr ( - 3 ) + ';base64,' + encode64 ( byteArray ) ;
235
- finish ( audio ) ; // we don't wait for confirmation this worked - but it's worth trying
236
- } ;
237
- audio . src = url ;
238
- // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
239
- safeSetTimeout ( ( ) => {
240
- finish ( audio ) ; // try to use it even though it is not necessarily ready to play
241
- } , 10000 ) ;
242
- } else {
243
- return fail ( ) ;
244
- }
199
+ if ( leftbits == 2 ) {
200
+ ret += BASE [ ( leftchar & 3 ) << 4 ] ;
201
+ ret += PAD + PAD ;
202
+ } else if ( leftbits == 4 ) {
203
+ ret += BASE [ ( leftchar & 0xf ) << 2 ] ;
204
+ ret += PAD ;
205
+ }
206
+ return ret ;
207
+ }
208
+ audio . src = 'data:audio/x-' + name . substr ( - 3 ) + ';base64,' + encode64 ( byteArray ) ;
209
+ finish ( audio ) ; // we don't wait for confirmation this worked - but it's worth trying
210
+ } ;
211
+ audio . src = url ;
212
+ // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
213
+ safeSetTimeout ( ( ) => {
214
+ finish ( audio ) ; // try to use it even though it is not necessarily ready to play
215
+ } , 10000 ) ;
245
216
} ;
246
217
Module [ 'preloadPlugins' ] . push ( audioPlugin ) ;
247
218
0 commit comments