rx-player 3.26.3-dev.2022021400 → 3.27.0-dev.20220317
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/FILES.md +5 -4
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
- package/dist/_esm5.processed/compat/browser_detection.js +4 -2
- package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
- package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +21 -22
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
- package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
- package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
- package/dist/_esm5.processed/compat/event_listeners.js +2 -1
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
- package/dist/_esm5.processed/config.d.ts +166 -1080
- package/dist/_esm5.processed/config.js +17 -1119
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
- package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
- package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
- package/dist/_esm5.processed/core/api/index.d.ts +2 -1
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +2 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
- package/dist/_esm5.processed/core/api/option_utils.js +19 -6
- package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
- package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
- package/dist/_esm5.processed/core/api/public_api.js +72 -33
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -49
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +25 -65
- package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
- package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
- package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
- package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
- package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +119 -241
- package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
- package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +4 -2
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
- package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
- package/dist/_esm5.processed/core/init/types.d.ts +2 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
- package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +2 -2
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
- package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
- package/dist/_esm5.processed/default_config.d.ts +1114 -0
- package/dist/_esm5.processed/default_config.js +1145 -0
- package/dist/_esm5.processed/experimental/index.d.ts +2 -0
- package/dist/_esm5.processed/experimental/index.js +2 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
- package/dist/_esm5.processed/features/features_object.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
- package/dist/_esm5.processed/features/list/eme.js +5 -5
- package/dist/_esm5.processed/features/types.d.ts +3 -3
- package/dist/_esm5.processed/manifest/manifest.d.ts +1 -14
- package/dist/_esm5.processed/manifest/manifest.js +10 -74
- package/dist/_esm5.processed/manifest/representation.d.ts +35 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +87 -75
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/public_types.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +3 -0
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
- package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/smooth/pipelines.js +68 -10
- package/dist/_esm5.processed/transports/types.d.ts +22 -0
- package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
- package/dist/_esm5.processed/utils/deep_merge.js +53 -0
- package/dist/_esm5.processed/utils/reference.d.ts +29 -0
- package/dist/_esm5.processed/utils/reference.js +72 -24
- package/dist/_esm5.processed/utils/request/fetch.js +1 -2
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
- package/dist/_esm5.processed/utils/task_canceller.js +3 -3
- package/dist/rx-player.js +5002 -3033
- package/dist/rx-player.min.js +1 -1
- package/dummy +1 -0
- package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
- package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
- package/package.json +32 -34
- package/scripts/build/templates/experimental/index.d.ts +16 -0
- package/scripts/build/templates/experimental/index.js +16 -0
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
- package/src/compat/browser_detection.ts +4 -2
- package/src/compat/eme/close_session.ts +90 -56
- package/src/compat/eme/custom_media_keys/index.ts +21 -38
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
- package/src/compat/eme/generate_key_request.ts +25 -33
- package/src/compat/eme/load_session.ts +29 -31
- package/src/compat/event_listeners.ts +2 -1
- package/src/compat/should_favour_custom_safari_EME.ts +5 -2
- package/src/config.ts +17 -1210
- package/src/core/README.md +1 -1
- package/src/core/abr/bandwidth_estimator.ts +4 -4
- package/src/core/abr/network_analyzer.ts +5 -6
- package/src/core/api/__tests__/get_player_state.test.ts +3 -3
- package/src/core/api/__tests__/option_utils.test.ts +17 -17
- package/src/core/api/get_player_state.ts +1 -1
- package/src/core/api/index.ts +3 -0
- package/src/core/api/option_utils.ts +37 -20
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +151 -111
- package/src/core/decrypt/README.md +22 -0
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +31 -93
- package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
- package/src/core/decrypt/clear_on_stop.ts +48 -0
- package/src/core/decrypt/content_decryptor.ts +1158 -0
- package/src/core/decrypt/create_or_load_session.ts +130 -0
- package/src/core/decrypt/create_session.ts +175 -0
- package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
- package/src/core/{eme → decrypt}/find_key_system.ts +112 -122
- package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
- package/src/core/decrypt/get_media_keys.ts +145 -0
- package/src/core/{eme → decrypt}/index.ts +11 -8
- package/src/core/decrypt/init_media_keys.ts +51 -0
- package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
- package/src/core/decrypt/set_server_certificate.ts +104 -0
- package/src/core/{eme → decrypt}/types.ts +128 -258
- package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
- package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
- package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
- package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
- package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
- package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
- package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
- package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
- package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
- package/src/core/decrypt/utils/key_session_record.ts +175 -0
- package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
- package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
- package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
- package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
- package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +4 -4
- package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- package/src/core/init/.initialize_media_source.ts.un~ +0 -0
- package/src/core/init/get_initial_time.ts +2 -1
- package/src/core/init/initialize_directfile.ts +17 -20
- package/src/core/init/initialize_media_source.ts +42 -105
- package/src/core/init/link_drm_and_content.ts +176 -0
- package/src/core/init/manifest_update_scheduler.ts +5 -3
- package/src/core/init/stall_avoider.ts +6 -5
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
- package/src/core/init/types.ts +1 -39
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -4
- package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
- package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
- package/src/core/stream/events_generators.ts +9 -4
- package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
- package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/period_stream.ts +5 -2
- package/src/core/stream/representation/force_garbage_collection.ts +2 -2
- package/src/core/stream/representation/get_buffer_status.ts +28 -16
- package/src/core/stream/representation/get_needed_segments.ts +124 -28
- package/src/core/stream/representation/get_segment_priority.ts +1 -2
- package/src/core/stream/representation/push_media_segment.ts +3 -2
- package/src/core/stream/representation/representation_stream.ts +30 -7
- package/src/core/stream/types.ts +1 -1
- package/src/default_config.ts +1241 -0
- package/src/experimental/index.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +2 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
- package/src/features/__tests__/initialize_features.test.ts +2 -2
- package/src/features/features_object.ts +1 -1
- package/src/features/initialize_features.ts +1 -1
- package/src/features/list/__tests__/eme.test.ts +5 -5
- package/src/features/list/eme.ts +5 -5
- package/src/features/types.ts +3 -10
- package/src/manifest/manifest.ts +6 -76
- package/src/manifest/representation.ts +36 -3
- package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +109 -64
- package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -2
- package/src/parsers/manifest/smooth/create_parser.ts +1 -0
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
- package/src/public_types.ts +5 -1
- package/src/transports/dash/image_pipelines.ts +3 -0
- package/src/transports/dash/segment_parser.ts +5 -0
- package/src/transports/dash/text_parser.ts +8 -0
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/smooth/pipelines.ts +22 -9
- package/src/transports/types.ts +22 -0
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- package/src/utils/deep_merge.ts +46 -0
- package/src/utils/reference.ts +116 -23
- package/src/utils/request/fetch.ts +1 -2
- package/src/utils/request/xhr.ts +2 -1
- package/src/utils/rx-from_cancellable_promise.ts +7 -2
- package/src/utils/task_canceller.ts +6 -4
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
- package/dist/_esm5.processed/core/eme/create_session.js +0 -126
- package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
- package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
- package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
- package/dist/_esm5.processed/core/eme/find_key_system.js +0 -253
- package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
- package/dist/_esm5.processed/core/eme/get_session.js +0 -68
- package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
- package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
- package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
- package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
- package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
- package/src/core/eme/README.md +0 -26
- package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
- package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
- package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
- package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
- package/src/core/eme/clear_eme_session.ts +0 -62
- package/src/core/eme/create_session.ts +0 -187
- package/src/core/eme/dispose_eme.ts +0 -25
- package/src/core/eme/dispose_media_keys.ts +0 -46
- package/src/core/eme/eme_manager.ts +0 -387
- package/src/core/eme/get_media_keys.ts +0 -141
- package/src/core/eme/get_session.ts +0 -135
- package/src/core/eme/init_media_keys.ts +0 -106
- package/src/core/eme/set_server_certificate.ts +0 -115
- package/src/core/eme/utils/close_session.ts +0 -113
- package/src/core/eme/utils/init_data_store.ts +0 -234
- package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
- package/src/core/init/create_eme_manager.ts +0 -95
|
@@ -28,10 +28,9 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
28
28
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
29
|
};
|
|
30
30
|
})();
|
|
31
|
-
import { merge as observableMerge, Subject, takeUntil, } from "rxjs";
|
|
32
31
|
import EventEmitter from "../../../utils/event_emitter";
|
|
32
|
+
import noop from "../../../utils/noop";
|
|
33
33
|
import PPromise from "../../../utils/promise";
|
|
34
|
-
import * as events from "../../event_listeners";
|
|
35
34
|
import getWebKitFairplayInitData from "../get_webkit_fairplay_initdata";
|
|
36
35
|
import { WebKitMediaKeysConstructor, } from "./webkit_media_keys_constructor";
|
|
37
36
|
/**
|
|
@@ -74,52 +73,39 @@ var WebkitMediaKeySession = /** @class */ (function (_super) {
|
|
|
74
73
|
function WebkitMediaKeySession(mediaElement, keyType, serverCertificate) {
|
|
75
74
|
var _this = _super.call(this) || this;
|
|
76
75
|
_this._serverCertificate = serverCertificate;
|
|
77
|
-
_this._closeSession$ = new Subject();
|
|
78
76
|
_this._videoElement = mediaElement;
|
|
79
77
|
_this._keyType = keyType;
|
|
78
|
+
_this._unbindSession = noop;
|
|
79
|
+
_this._closeSession = noop; // Just here to make TypeScript happy
|
|
80
80
|
_this.closed = new PPromise(function (resolve) {
|
|
81
|
-
_this._closeSession
|
|
81
|
+
_this._closeSession = resolve;
|
|
82
82
|
});
|
|
83
83
|
_this.keyStatuses = new Map();
|
|
84
84
|
_this.expiration = NaN;
|
|
85
|
-
_this.
|
|
86
|
-
|
|
87
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
88
|
-
if (_this._nativeSession === undefined ||
|
|
89
|
-
_this._nativeSession.update === undefined ||
|
|
90
|
-
typeof _this._nativeSession.update !== "function") {
|
|
91
|
-
return reject("Unavailable WebKit key session.");
|
|
92
|
-
}
|
|
93
|
-
try {
|
|
94
|
-
var uInt8Arraylicense = void 0;
|
|
95
|
-
if (license instanceof ArrayBuffer) {
|
|
96
|
-
uInt8Arraylicense = new Uint8Array(license);
|
|
97
|
-
}
|
|
98
|
-
else if (license instanceof Uint8Array) {
|
|
99
|
-
uInt8Arraylicense = license;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
uInt8Arraylicense = new Uint8Array(license.buffer);
|
|
103
|
-
}
|
|
104
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
105
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
106
|
-
resolve(_this._nativeSession.update(uInt8Arraylicense));
|
|
107
|
-
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
reject(err);
|
|
111
|
-
}
|
|
112
|
-
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
113
|
-
});
|
|
85
|
+
_this._onEvent = function (evt) {
|
|
86
|
+
_this.trigger(evt.type, evt);
|
|
114
87
|
};
|
|
115
88
|
return _this;
|
|
116
89
|
}
|
|
117
|
-
WebkitMediaKeySession.prototype.
|
|
90
|
+
WebkitMediaKeySession.prototype.update = function (license) {
|
|
118
91
|
var _this = this;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
92
|
+
return new PPromise(function (resolve, reject) {
|
|
93
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
94
|
+
if (_this._nativeSession === undefined ||
|
|
95
|
+
_this._nativeSession.update === undefined ||
|
|
96
|
+
typeof _this._nativeSession.update !== "function") {
|
|
97
|
+
return reject("Unavailable WebKit key session.");
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
102
|
+
resolve(_this._nativeSession.update(license));
|
|
103
|
+
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
reject(err);
|
|
107
|
+
}
|
|
108
|
+
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
123
109
|
});
|
|
124
110
|
};
|
|
125
111
|
WebkitMediaKeySession.prototype.generateRequest = function (_initDataType, initData) {
|
|
@@ -144,7 +130,7 @@ var WebkitMediaKeySession = /** @class */ (function (_super) {
|
|
|
144
130
|
if (keySession === undefined || keySession === null) {
|
|
145
131
|
throw new Error("Impossible to get the key sessions");
|
|
146
132
|
}
|
|
147
|
-
_this.
|
|
133
|
+
_this._listenEvent(keySession);
|
|
148
134
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
149
135
|
_this._nativeSession = keySession;
|
|
150
136
|
resolve();
|
|
@@ -153,8 +139,8 @@ var WebkitMediaKeySession = /** @class */ (function (_super) {
|
|
|
153
139
|
WebkitMediaKeySession.prototype.close = function () {
|
|
154
140
|
var _this = this;
|
|
155
141
|
return new PPromise(function (resolve, reject) {
|
|
156
|
-
_this.
|
|
157
|
-
_this._closeSession
|
|
142
|
+
_this._unbindSession();
|
|
143
|
+
_this._closeSession();
|
|
158
144
|
if (_this._nativeSession === undefined) {
|
|
159
145
|
reject("No session to close.");
|
|
160
146
|
return;
|
|
@@ -183,6 +169,22 @@ var WebkitMediaKeySession = /** @class */ (function (_super) {
|
|
|
183
169
|
enumerable: false,
|
|
184
170
|
configurable: true
|
|
185
171
|
});
|
|
172
|
+
WebkitMediaKeySession.prototype._listenEvent = function (session) {
|
|
173
|
+
var _this = this;
|
|
174
|
+
this._unbindSession(); // If previous session was linked
|
|
175
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
176
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
177
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
178
|
+
["keymessage", "message", "keyadded", "ready", "keyerror", "error"]
|
|
179
|
+
.forEach(function (evt) { return session.addEventListener(evt, _this._onEvent); });
|
|
180
|
+
this._unbindSession = function () {
|
|
181
|
+
["keymessage", "message", "keyadded", "ready", "keyerror", "error"]
|
|
182
|
+
.forEach(function (evt) { return session.removeEventListener(evt, _this._onEvent); });
|
|
183
|
+
};
|
|
184
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
185
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
186
|
+
/* eslint-enable @typescript-eslint/no-unsafe-call */
|
|
187
|
+
};
|
|
186
188
|
return WebkitMediaKeySession;
|
|
187
189
|
}(EventEmitter));
|
|
188
190
|
var WebKitCustomMediaKeys = /** @class */ (function () {
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Observable } from "rxjs";
|
|
17
16
|
import { ICustomMediaKeySession } from "./custom_media_keys";
|
|
18
17
|
/**
|
|
19
18
|
* Modify "initialization data" sent to a `generateKeyRequest` EME call to
|
|
@@ -52,6 +51,6 @@ export declare function patchInitData(initData: Uint8Array): Uint8Array;
|
|
|
52
51
|
* "encrypted" event for the corresponding request.
|
|
53
52
|
* @param {string} sessionType - Type of session you want to generate. Consult
|
|
54
53
|
* EME Specification for more information on session types.
|
|
55
|
-
* @returns {
|
|
54
|
+
* @returns {Promise} - Emit when done. Errors if fails.
|
|
56
55
|
*/
|
|
57
|
-
export default function generateKeyRequest(session: MediaKeySession | ICustomMediaKeySession, initializationDataType: string | undefined, initializationData: Uint8Array):
|
|
56
|
+
export default function generateKeyRequest(session: MediaKeySession | ICustomMediaKeySession, initializationDataType: string | undefined, initializationData: Uint8Array): Promise<unknown>;
|
|
@@ -13,11 +13,9 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { catchError, defer as observableDefer, } from "rxjs";
|
|
17
16
|
import log from "../../log";
|
|
18
17
|
import { getNextBoxOffsets } from "../../parsers/containers/isobmff";
|
|
19
18
|
import { be4toi, concat, } from "../../utils/byte_parsing";
|
|
20
|
-
import castToObservable from "../../utils/cast_to_observable";
|
|
21
19
|
import { PSSH_TO_INTEGER } from "./constants";
|
|
22
20
|
/**
|
|
23
21
|
* Modify "initialization data" sent to a `generateKeyRequest` EME call to
|
|
@@ -122,32 +120,30 @@ export function patchInitData(initData) {
|
|
|
122
120
|
* "encrypted" event for the corresponding request.
|
|
123
121
|
* @param {string} sessionType - Type of session you want to generate. Consult
|
|
124
122
|
* EME Specification for more information on session types.
|
|
125
|
-
* @returns {
|
|
123
|
+
* @returns {Promise} - Emit when done. Errors if fails.
|
|
126
124
|
*/
|
|
127
125
|
export default function generateKeyRequest(session, initializationDataType, initializationData) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
126
|
+
log.debug("Compat: Calling generateRequest on the MediaKeySession");
|
|
127
|
+
var patchedInit;
|
|
128
|
+
try {
|
|
129
|
+
patchedInit = patchInitData(initializationData);
|
|
130
|
+
}
|
|
131
|
+
catch (_e) {
|
|
132
|
+
patchedInit = initializationData;
|
|
133
|
+
}
|
|
134
|
+
var initDataType = initializationDataType !== null && initializationDataType !== void 0 ? initializationDataType : "";
|
|
135
|
+
return session.generateRequest(initDataType, patchedInit)
|
|
136
|
+
.catch(function (error) {
|
|
137
|
+
if (initDataType !== "" || !(error instanceof TypeError)) {
|
|
138
|
+
throw error;
|
|
136
139
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
// a rejected promise with a TypeError in that case).
|
|
146
|
-
// Retry with a default "cenc" value for initialization data type if
|
|
147
|
-
// we're in that condition.
|
|
148
|
-
log.warn("Compat: error while calling `generateRequest` with an empty " +
|
|
149
|
-
"initialization data type. Retrying with a default \"cenc\" value.", error);
|
|
150
|
-
return castToObservable(session.generateRequest("cenc", patchedInit));
|
|
151
|
-
}));
|
|
140
|
+
// On newer EME versions of the specification, the initialization data
|
|
141
|
+
// type given to generateRequest cannot be an empty string (it returns
|
|
142
|
+
// a rejected promise with a TypeError in that case).
|
|
143
|
+
// Retry with a default "cenc" value for initialization data type if
|
|
144
|
+
// we're in that condition.
|
|
145
|
+
log.warn("Compat: error while calling `generateRequest` with an empty " +
|
|
146
|
+
"initialization data type. Retrying with a default \"cenc\" value.", error);
|
|
147
|
+
return session.generateRequest("cenc", patchedInit);
|
|
152
148
|
});
|
|
153
149
|
}
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Observable } from "rxjs";
|
|
17
16
|
import { ICustomMediaKeySession } from "./custom_media_keys";
|
|
18
17
|
/**
|
|
19
18
|
* Load a persistent session, based on its `sessionId`, on the given
|
|
@@ -29,4 +28,4 @@ import { ICustomMediaKeySession } from "./custom_media_keys";
|
|
|
29
28
|
* @param {string} sessionId
|
|
30
29
|
* @returns {Observable}
|
|
31
30
|
*/
|
|
32
|
-
export default function loadSession(session: MediaKeySession | ICustomMediaKeySession, sessionId: string):
|
|
31
|
+
export default function loadSession(session: MediaKeySession | ICustomMediaKeySession, sessionId: string): Promise<boolean>;
|
|
@@ -13,11 +13,44 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
27
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
+
function step(op) {
|
|
30
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
+
while (_) try {
|
|
32
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
33
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
+
switch (op[0]) {
|
|
35
|
+
case 0: case 1: t = op; break;
|
|
36
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
+
default:
|
|
40
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
+
if (t[2]) _.ops.pop();
|
|
45
|
+
_.trys.pop(); continue;
|
|
46
|
+
}
|
|
47
|
+
op = body.call(thisArg, _);
|
|
48
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
import PPromise from "pinkie";
|
|
17
53
|
import log from "../../log";
|
|
18
|
-
import castToObservable from "../../utils/cast_to_observable";
|
|
19
|
-
import tryCatch from "../../utils/rx-try_catch";
|
|
20
|
-
import { onKeyStatusesChange$ } from "../event_listeners";
|
|
21
54
|
var EME_WAITING_DELAY_LOADED_SESSION_EMPTY_KEYSTATUSES = 100;
|
|
22
55
|
/**
|
|
23
56
|
* Load a persistent session, based on its `sessionId`, on the given
|
|
@@ -34,17 +67,35 @@ var EME_WAITING_DELAY_LOADED_SESSION_EMPTY_KEYSTATUSES = 100;
|
|
|
34
67
|
* @returns {Observable}
|
|
35
68
|
*/
|
|
36
69
|
export default function loadSession(session, sessionId) {
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
return
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
71
|
+
var isLoaded;
|
|
72
|
+
return __generator(this, function (_a) {
|
|
73
|
+
switch (_a.label) {
|
|
74
|
+
case 0:
|
|
75
|
+
log.info("Compat/DRM: Load persisted session", sessionId);
|
|
76
|
+
return [4 /*yield*/, session.load(sessionId)];
|
|
77
|
+
case 1:
|
|
78
|
+
isLoaded = _a.sent();
|
|
79
|
+
if (!isLoaded || session.keyStatuses.size > 0) {
|
|
80
|
+
return [2 /*return*/, isLoaded];
|
|
81
|
+
}
|
|
82
|
+
// A browser race condition can exist, seen for example in some
|
|
83
|
+
// Chromium/Chrome versions where the `keyStatuses` property from a loaded
|
|
84
|
+
// MediaKeySession would not be populated directly as the load answer but
|
|
85
|
+
// asynchronously after.
|
|
86
|
+
return [2 /*return*/, new PPromise(function (resolve) {
|
|
87
|
+
session.addEventListener("keystatuseschange", resolveWithLoadedStatus);
|
|
88
|
+
var timeout = setTimeout(resolveWithLoadedStatus, EME_WAITING_DELAY_LOADED_SESSION_EMPTY_KEYSTATUSES);
|
|
89
|
+
function resolveWithLoadedStatus() {
|
|
90
|
+
cleanUp();
|
|
91
|
+
resolve(isLoaded);
|
|
92
|
+
}
|
|
93
|
+
function cleanUp() {
|
|
94
|
+
clearTimeout(timeout);
|
|
95
|
+
session.removeEventListener("keystatuseschange", resolveWithLoadedStatus);
|
|
96
|
+
}
|
|
97
|
+
})];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
50
101
|
}
|
|
@@ -24,7 +24,6 @@ import isNonEmptyString from "../utils/is_non_empty_string";
|
|
|
24
24
|
import isNode from "./is_node";
|
|
25
25
|
import shouldFavourCustomSafariEME from "./should_favour_custom_safari_EME";
|
|
26
26
|
var BROWSER_PREFIXES = ["", "webkit", "moz", "ms"];
|
|
27
|
-
var INACTIVITY_DELAY = config.INACTIVITY_DELAY;
|
|
28
27
|
var pixelRatio = isNode ||
|
|
29
28
|
window.devicePixelRatio == null ||
|
|
30
29
|
window.devicePixelRatio === 0 ? 1 :
|
|
@@ -140,6 +139,7 @@ function visibilityChange() {
|
|
|
140
139
|
* @returns {Observable}
|
|
141
140
|
*/
|
|
142
141
|
function isPageActive() {
|
|
142
|
+
var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
|
|
143
143
|
return visibilityChange().pipe(switchMap(function (x) {
|
|
144
144
|
if (!x) {
|
|
145
145
|
return observableOf(x).pipe(delay(INACTIVITY_DELAY));
|
|
@@ -195,6 +195,7 @@ function onPictureInPictureEvent$(elt) {
|
|
|
195
195
|
* @returns {Observable}
|
|
196
196
|
*/
|
|
197
197
|
function isVideoVisible(pip$) {
|
|
198
|
+
var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
|
|
198
199
|
return observableCombineLatest([visibilityChange(), pip$]).pipe(switchMap(function (_a) {
|
|
199
200
|
var isVisible = _a[0], pip = _a[1];
|
|
200
201
|
if (pip.isEnabled || isVisible) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { isSafariDesktop, isSafariMobile, } from "./browser_detection";
|
|
17
17
|
import { WebKitMediaKeysConstructor, } from "./eme/custom_media_keys/webkit_media_keys_constructor";
|
|
18
18
|
/**
|
|
19
19
|
* On Safari 12.1, it seems that since fairplay CDM implementation
|
|
@@ -23,5 +23,5 @@ import { WebKitMediaKeysConstructor, } from "./eme/custom_media_keys/webkit_medi
|
|
|
23
23
|
* @returns {boolean}
|
|
24
24
|
*/
|
|
25
25
|
export default function shouldFavourCustomSafariEME() {
|
|
26
|
-
return
|
|
26
|
+
return (isSafariDesktop || isSafariMobile) && WebKitMediaKeysConstructor !== undefined;
|
|
27
27
|
}
|