shaka-player 3.3.16 → 3.3.18
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/.github/workflows/build-and-test.yaml +4 -4
- package/.github/workflows/demo-version-index.yaml +6 -0
- package/.github/workflows/selenium-lab-tests.yaml +72 -11
- package/.github/workflows/update-screenshots.yaml +142 -0
- package/CHANGELOG.md +38 -0
- package/demo/common/asset.js +15 -0
- package/demo/common/assets.js +4 -2
- package/demo/common/message_ids.js +1 -0
- package/demo/custom.js +19 -0
- package/demo/locales/en.json +1 -0
- package/demo/locales/source.json +4 -0
- package/demo/main.js +14 -0
- package/dist/demo.compiled.debug.js +146 -144
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +146 -144
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +1 -1
- package/dist/locales.js +28 -28
- package/dist/receiver.compiled.debug.js +15 -15
- package/dist/receiver.compiled.debug.map +2 -2
- package/dist/receiver.compiled.js +15 -15
- package/dist/receiver.compiled.map +2 -2
- package/dist/shaka-player.compiled.d.ts +12 -0
- package/dist/shaka-player.compiled.debug.d.ts +12 -0
- package/dist/shaka-player.compiled.debug.externs.js +4 -0
- package/dist/shaka-player.compiled.debug.js +105 -100
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +4 -0
- package/dist/shaka-player.compiled.js +296 -292
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +12 -0
- package/dist/shaka-player.ui.debug.d.ts +12 -0
- package/dist/shaka-player.ui.debug.externs.js +4 -0
- package/dist/shaka-player.ui.debug.js +119 -114
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +4 -0
- package/dist/shaka-player.ui.js +311 -307
- package/dist/shaka-player.ui.map +3 -3
- package/docs/tutorials/errors.md +94 -0
- package/docs/tutorials/index.json +2 -0
- package/docs/tutorials/widevine-service-certs.md +45 -0
- package/externs/ima.js +9 -0
- package/externs/shaka/text.js +7 -0
- package/lib/ads/client_side_ad_manager.js +6 -3
- package/lib/dash/segment_template.js +17 -5
- package/lib/hls/hls_parser.js +3 -1
- package/lib/media/transmuxer.js +13 -7
- package/lib/media/video_wrapper.js +3 -3
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/player.js +3 -1
- package/lib/polyfill/media_capabilities.js +3 -8
- package/lib/polyfill/mediasource.js +7 -2
- package/lib/text/cue.js +6 -0
- package/lib/text/ui_text_displayer.js +2 -5
- package/lib/text/vtt_text_parser.js +257 -93
- package/lib/util/mime_utils.js +1 -1
- package/lib/util/platform.js +8 -0
- package/lib/util/stream_utils.js +26 -14
- package/package.json +1 -1
- package/support.html +1 -0
- package/test/dash/dash_parser_manifest_unit.js +0 -36
- package/test/polyfill/media_capabilities_unit.js +20 -22
- package/test/test/util/layout_tests.js +433 -0
- package/test/test/util/util.js +0 -120
- package/test/{ui → text}/text_displayer_layout_unit.js +59 -235
- package/test/text/ui_text_displayer_unit.js +2 -4
- package/test/text/vtt_text_parser_unit.js +151 -6
- package/test/text/web_vtt_layout_integration.js +525 -0
|
@@ -570,6 +570,7 @@ describe('VttTextParser', () => {
|
|
|
570
570
|
});
|
|
571
571
|
|
|
572
572
|
it('supports global style blocks', () => {
|
|
573
|
+
const textShadow = '-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black';
|
|
573
574
|
verifyHelper(
|
|
574
575
|
[
|
|
575
576
|
{
|
|
@@ -578,6 +579,7 @@ describe('VttTextParser', () => {
|
|
|
578
579
|
payload: 'Test',
|
|
579
580
|
color: 'cyan',
|
|
580
581
|
fontSize: '10px',
|
|
582
|
+
textShadow: textShadow,
|
|
581
583
|
},
|
|
582
584
|
{
|
|
583
585
|
startTime: 40,
|
|
@@ -585,6 +587,7 @@ describe('VttTextParser', () => {
|
|
|
585
587
|
payload: 'Test2',
|
|
586
588
|
color: 'cyan',
|
|
587
589
|
fontSize: '10px',
|
|
590
|
+
textShadow: textShadow,
|
|
588
591
|
},
|
|
589
592
|
],
|
|
590
593
|
'WEBVTT\n\n' +
|
|
@@ -592,6 +595,7 @@ describe('VttTextParser', () => {
|
|
|
592
595
|
'::cue {\n' +
|
|
593
596
|
'color: cyan;\n'+
|
|
594
597
|
'font-size: 10px;\n'+
|
|
598
|
+
`text-shadow: ${textShadow};\n`+
|
|
595
599
|
'}\n\n' +
|
|
596
600
|
'00:00:20.000 --> 00:00:40.000\n' +
|
|
597
601
|
'Test\n\n' +
|
|
@@ -769,6 +773,41 @@ describe('VttTextParser', () => {
|
|
|
769
773
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
770
774
|
});
|
|
771
775
|
|
|
776
|
+
it('support escaped html payload', () => {
|
|
777
|
+
verifyHelper(
|
|
778
|
+
[
|
|
779
|
+
{
|
|
780
|
+
startTime: 20.1,
|
|
781
|
+
endTime: 40.505,
|
|
782
|
+
payload: '"Test & 1"\u{a0}',
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
startTime: 41,
|
|
786
|
+
endTime: 42,
|
|
787
|
+
payload: '',
|
|
788
|
+
nestedCues: [
|
|
789
|
+
{
|
|
790
|
+
startTime: 41,
|
|
791
|
+
endTime: 42,
|
|
792
|
+
payload: 'Test',
|
|
793
|
+
fontStyle: Cue.fontStyle.ITALIC,
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
startTime: 41,
|
|
797
|
+
endTime: 42,
|
|
798
|
+
payload: '&',
|
|
799
|
+
},
|
|
800
|
+
],
|
|
801
|
+
},
|
|
802
|
+
],
|
|
803
|
+
'WEBVTT\n\n' +
|
|
804
|
+
'00:00:20.100 --> 00:00:40.505\n' +
|
|
805
|
+
'"Test & 1" \n\n' +
|
|
806
|
+
'00:00:41.000 --> 00:00:42.000\n' +
|
|
807
|
+
'<i>Test</i>&',
|
|
808
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
809
|
+
});
|
|
810
|
+
|
|
772
811
|
it('supports specific style blocks', () => {
|
|
773
812
|
verifyHelper(
|
|
774
813
|
[
|
|
@@ -906,25 +945,32 @@ describe('VttTextParser', () => {
|
|
|
906
945
|
{
|
|
907
946
|
startTime: 80,
|
|
908
947
|
endTime: 90,
|
|
909
|
-
payload: '<b><c.lime>Parse fail 1</b></c>',
|
|
948
|
+
payload: '<b><c.lime>Parse fail 1</b></c.lime>',
|
|
910
949
|
nestedCues: [],
|
|
911
950
|
},
|
|
912
951
|
{
|
|
913
952
|
startTime: 90,
|
|
914
953
|
endTime: 100,
|
|
915
|
-
payload: '<c.lime><b>Parse fail 2</c></b>',
|
|
954
|
+
payload: '<c.lime><b>Parse fail 2</c.lime></b>',
|
|
916
955
|
nestedCues: [],
|
|
917
956
|
},
|
|
918
957
|
{
|
|
919
958
|
startTime: 100,
|
|
920
959
|
endTime: 110,
|
|
921
|
-
payload: '
|
|
922
|
-
nestedCues: [
|
|
960
|
+
payload: '',
|
|
961
|
+
nestedCues: [
|
|
962
|
+
{
|
|
963
|
+
startTime: 100,
|
|
964
|
+
endTime: 110,
|
|
965
|
+
payload: 'forward slash 1/2 in text',
|
|
966
|
+
color: '#0F0',
|
|
967
|
+
},
|
|
968
|
+
],
|
|
923
969
|
},
|
|
924
970
|
{
|
|
925
971
|
startTime: 110,
|
|
926
972
|
endTime: 120,
|
|
927
|
-
payload: '<c.lime>less or more < > in text</c>',
|
|
973
|
+
payload: '<c.lime>less or more < > in text</c.lime>',
|
|
928
974
|
nestedCues: [],
|
|
929
975
|
},
|
|
930
976
|
],
|
|
@@ -950,6 +996,53 @@ describe('VttTextParser', () => {
|
|
|
950
996
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
951
997
|
});
|
|
952
998
|
|
|
999
|
+
it('supports voice style blocks', () => {
|
|
1000
|
+
verifyHelper(
|
|
1001
|
+
[
|
|
1002
|
+
{
|
|
1003
|
+
startTime: 20,
|
|
1004
|
+
endTime: 40,
|
|
1005
|
+
payload: '',
|
|
1006
|
+
nestedCues: [
|
|
1007
|
+
{
|
|
1008
|
+
startTime: 20,
|
|
1009
|
+
endTime: 40,
|
|
1010
|
+
payload: 'Test',
|
|
1011
|
+
color: 'cyan',
|
|
1012
|
+
},
|
|
1013
|
+
],
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
startTime: 40,
|
|
1017
|
+
endTime: 50,
|
|
1018
|
+
payload: '',
|
|
1019
|
+
nestedCues: [
|
|
1020
|
+
{
|
|
1021
|
+
startTime: 40,
|
|
1022
|
+
endTime: 50,
|
|
1023
|
+
payload: 'Test',
|
|
1024
|
+
color: 'red',
|
|
1025
|
+
},
|
|
1026
|
+
{
|
|
1027
|
+
startTime: 40,
|
|
1028
|
+
endTime: 50,
|
|
1029
|
+
payload: '2',
|
|
1030
|
+
fontStyle: Cue.fontStyle.ITALIC,
|
|
1031
|
+
},
|
|
1032
|
+
],
|
|
1033
|
+
},
|
|
1034
|
+
],
|
|
1035
|
+
'WEBVTT\n\n' +
|
|
1036
|
+
'STYLE\n' +
|
|
1037
|
+
'::cue(v[voice="Shaka"]) { color: cyan; }\n' +
|
|
1038
|
+
'::cue(v[voice=ShakaBis]) { color: red; }\n\n' +
|
|
1039
|
+
'00:00:20.000 --> 00:00:40.000\n' +
|
|
1040
|
+
'<v Shaka>Test\n\n' +
|
|
1041
|
+
'00:00:40.000 --> 00:00:50.000\n' +
|
|
1042
|
+
'<v ShakaBis>Test</v><i>2</i>',
|
|
1043
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1044
|
+
});
|
|
1045
|
+
|
|
953
1046
|
it('supports default color overriding', () => {
|
|
954
1047
|
verifyHelper(
|
|
955
1048
|
[
|
|
@@ -970,12 +1063,64 @@ describe('VttTextParser', () => {
|
|
|
970
1063
|
],
|
|
971
1064
|
'WEBVTT\n\n' +
|
|
972
1065
|
'STYLE\n' +
|
|
973
|
-
'::cue(bg_blue) { font-size: 10px; background-color: #FF0 }\n\n' +
|
|
1066
|
+
'::cue(.bg_blue) { font-size: 10px; background-color: #FF0 }\n\n' +
|
|
974
1067
|
'00:00:10.000 --> 00:00:20.000\n' +
|
|
975
1068
|
'<c.red.bg_blue>Example 1</c>\n\n',
|
|
976
1069
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
977
1070
|
});
|
|
978
1071
|
|
|
1072
|
+
// https://github.com/shaka-project/shaka-player/issues/4479
|
|
1073
|
+
it('keep styles when there are line breaks', () => {
|
|
1074
|
+
verifyHelper(
|
|
1075
|
+
[
|
|
1076
|
+
{
|
|
1077
|
+
startTime: 10, endTime: 20,
|
|
1078
|
+
payload: '',
|
|
1079
|
+
nestedCues: [
|
|
1080
|
+
{
|
|
1081
|
+
startTime: 10,
|
|
1082
|
+
endTime: 20,
|
|
1083
|
+
payload: '1',
|
|
1084
|
+
color: '#F0F',
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
startTime: 10,
|
|
1088
|
+
endTime: 20,
|
|
1089
|
+
payload: '',
|
|
1090
|
+
lineBreak: true,
|
|
1091
|
+
},
|
|
1092
|
+
{
|
|
1093
|
+
startTime: 10,
|
|
1094
|
+
endTime: 20,
|
|
1095
|
+
payload: '2',
|
|
1096
|
+
color: '#F0F',
|
|
1097
|
+
fontStyle: Cue.fontStyle.ITALIC,
|
|
1098
|
+
},
|
|
1099
|
+
],
|
|
1100
|
+
},
|
|
1101
|
+
],
|
|
1102
|
+
'WEBVTT\n\n' +
|
|
1103
|
+
'00:00:10.000 --> 00:00:20.000\n' +
|
|
1104
|
+
'<c.magenta>1</c><br/><c.magenta><i>2</i></c>\n\n',
|
|
1105
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1106
|
+
});
|
|
1107
|
+
|
|
1108
|
+
it('does not fail on REGION blocks', () => {
|
|
1109
|
+
verifyHelper(
|
|
1110
|
+
[
|
|
1111
|
+
{
|
|
1112
|
+
startTime: 10, endTime: 20,
|
|
1113
|
+
payload: 'test',
|
|
1114
|
+
},
|
|
1115
|
+
],
|
|
1116
|
+
'WEBVTT\n\n' +
|
|
1117
|
+
'REGION\n' +
|
|
1118
|
+
'id:1\n\n' +
|
|
1119
|
+
'00:00:10.000 --> 00:00:20.000\n' +
|
|
1120
|
+
'test\n\n',
|
|
1121
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1122
|
+
});
|
|
1123
|
+
|
|
979
1124
|
/**
|
|
980
1125
|
* @param {!Array} cues
|
|
981
1126
|
* @param {string} text
|