@@ -370,6 +370,60 @@ describe('Player', () => {
370370 expect ( streamingEngine . unloadTextStream ) . not . toHaveBeenCalled ( ) ;
371371 } ) ;
372372 } ) ;
373+
374+ describe ( 'when config.streaming.preferNativeHls is set to true' , ( ) => {
375+ beforeEach ( ( ) => {
376+ shaka . media . ManifestParser . registerParserByMime (
377+ 'application/x-mpegurl' ,
378+ ( ) => new shaka . test . FakeManifestParser ( manifest ) ) ;
379+ } ) ;
380+
381+ afterEach ( ( ) => {
382+ shaka . media . ManifestParser . unregisterParserByMime (
383+ 'application/x-mpegurl' ) ;
384+ video . canPlayType . calls . reset ( ) ;
385+ } ) ;
386+
387+ it ( 'only applies to HLS streams' , async ( ) => {
388+ video . canPlayType . and . returnValue ( 'maybe' ) ;
389+ spyOn ( shaka . util . Platform , 'anyMediaElement' ) . and . returnValue ( video ) ;
390+ spyOn ( shaka . util . Platform , 'supportsMediaSource' ) . and . returnValue ( true ) ;
391+ spyOn ( shaka . util . Platform , 'isApple' ) . and . returnValue ( false ) ;
392+ // Make sure player.load() resolves for src=
393+ spyOn ( shaka . util . MediaReadyState , 'waitForReadyState' ) . and . callFake (
394+ ( mediaElement , readyState , eventManager , callback ) => {
395+ callback ( ) ;
396+ } ) ;
397+
398+ player . configure ( {
399+ streaming : {
400+ preferNativeHls : true ,
401+ useNativeHlsOnSafari : false ,
402+ } ,
403+ } ) ;
404+
405+ await player . load ( fakeManifestUri , undefined , 'application/x-mpegurl' ) ;
406+
407+ expect ( player . getLoadMode ( ) ) . toBe ( shaka . Player . LoadMode . SRC_EQUALS ) ;
408+ } ) ;
409+
410+ it ( 'does not apply to non-HLS streams' , async ( ) => {
411+ video . canPlayType . and . returnValue ( 'maybe' ) ;
412+ spyOn ( shaka . util . Platform , 'supportsMediaSource' ) . and . returnValue ( true ) ;
413+ spyOn ( shaka . util . Platform , 'isApple' ) . and . returnValue ( false ) ;
414+
415+ player . configure ( {
416+ streaming : {
417+ preferNativeHls : true ,
418+ useNativeHlsOnSafari : false ,
419+ } ,
420+ } ) ;
421+
422+ await player . load ( fakeManifestUri , 0 , fakeMimeType ) ;
423+
424+ expect ( player . getLoadMode ( ) ) . toBe ( shaka . Player . LoadMode . MEDIA_SOURCE ) ;
425+ } ) ;
426+ } ) ;
373427 } ) ; // describe('load/unload')
374428
375429 describe ( 'getConfiguration' , ( ) => {
0 commit comments