shaka-player 3.2.17 → 3.2.19
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/selenium-lab-tests.yaml +22 -0
- package/CHANGELOG.md +27 -0
- package/dist/locales.js +28 -28
- package/dist/shaka-player.compiled.d.ts +5 -0
- package/dist/shaka-player.compiled.debug.d.ts +5 -0
- package/dist/shaka-player.compiled.debug.externs.js +4 -0
- package/dist/shaka-player.compiled.debug.js +93 -87
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +4 -0
- package/dist/shaka-player.compiled.js +258 -255
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +5 -0
- package/dist/shaka-player.ui.debug.d.ts +5 -0
- package/dist/shaka-player.ui.debug.externs.js +4 -0
- package/dist/shaka-player.ui.debug.js +107 -101
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +4 -0
- package/dist/shaka-player.ui.js +271 -267
- package/dist/shaka-player.ui.map +3 -3
- package/externs/shaka/text.js +7 -0
- package/lib/dash/segment_template.js +17 -5
- package/lib/hls/hls_parser.js +1 -1
- package/lib/player.js +7 -1
- package/lib/polyfill/media_capabilities.js +1 -0
- package/lib/text/cue.js +6 -0
- package/lib/text/ui_text_displayer.js +25 -9
- package/lib/text/vtt_text_parser.js +256 -91
- package/lib/text/web_vtt_generator.js +21 -9
- package/lib/util/dom_utils.js +3 -1
- package/lib/util/platform.js +8 -0
- package/lib/util/stream_utils.js +6 -0
- package/package.json +1 -1
- package/support.html +1 -0
- package/test/dash/dash_parser_manifest_unit.js +0 -36
- package/test/player_unit.js +4 -2
- 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 +72 -4
- package/test/text/vtt_text_parser_unit.js +127 -6
- package/test/text/web_vtt_layout_integration.js +528 -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,17 @@ describe('VttTextParser', () => {
|
|
|
769
773
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
770
774
|
});
|
|
771
775
|
|
|
776
|
+
it('support escaped html payload', () => {
|
|
777
|
+
verifyHelper(
|
|
778
|
+
[
|
|
779
|
+
{startTime: 20.1, endTime: 40.505, payload: '"Test & 1"\u{a0}'},
|
|
780
|
+
],
|
|
781
|
+
'WEBVTT\n\n' +
|
|
782
|
+
'00:00:20.100 --> 00:00:40.505\n' +
|
|
783
|
+
'"Test & 1" ',
|
|
784
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
785
|
+
});
|
|
786
|
+
|
|
772
787
|
it('supports specific style blocks', () => {
|
|
773
788
|
verifyHelper(
|
|
774
789
|
[
|
|
@@ -906,25 +921,32 @@ describe('VttTextParser', () => {
|
|
|
906
921
|
{
|
|
907
922
|
startTime: 80,
|
|
908
923
|
endTime: 90,
|
|
909
|
-
payload: '<b><c.lime>Parse fail 1</b></c>',
|
|
924
|
+
payload: '<b><c.lime>Parse fail 1</b></c.lime>',
|
|
910
925
|
nestedCues: [],
|
|
911
926
|
},
|
|
912
927
|
{
|
|
913
928
|
startTime: 90,
|
|
914
929
|
endTime: 100,
|
|
915
|
-
payload: '<c.lime><b>Parse fail 2</c></b>',
|
|
930
|
+
payload: '<c.lime><b>Parse fail 2</c.lime></b>',
|
|
916
931
|
nestedCues: [],
|
|
917
932
|
},
|
|
918
933
|
{
|
|
919
934
|
startTime: 100,
|
|
920
935
|
endTime: 110,
|
|
921
|
-
payload: '
|
|
922
|
-
nestedCues: [
|
|
936
|
+
payload: '',
|
|
937
|
+
nestedCues: [
|
|
938
|
+
{
|
|
939
|
+
startTime: 100,
|
|
940
|
+
endTime: 110,
|
|
941
|
+
payload: 'forward slash 1/2 in text',
|
|
942
|
+
color: '#0F0',
|
|
943
|
+
},
|
|
944
|
+
],
|
|
923
945
|
},
|
|
924
946
|
{
|
|
925
947
|
startTime: 110,
|
|
926
948
|
endTime: 120,
|
|
927
|
-
payload: '<c.lime>less or more < > in text</c>',
|
|
949
|
+
payload: '<c.lime>less or more < > in text</c.lime>',
|
|
928
950
|
nestedCues: [],
|
|
929
951
|
},
|
|
930
952
|
],
|
|
@@ -950,6 +972,53 @@ describe('VttTextParser', () => {
|
|
|
950
972
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
951
973
|
});
|
|
952
974
|
|
|
975
|
+
it('supports voice style blocks', () => {
|
|
976
|
+
verifyHelper(
|
|
977
|
+
[
|
|
978
|
+
{
|
|
979
|
+
startTime: 20,
|
|
980
|
+
endTime: 40,
|
|
981
|
+
payload: '',
|
|
982
|
+
nestedCues: [
|
|
983
|
+
{
|
|
984
|
+
startTime: 20,
|
|
985
|
+
endTime: 40,
|
|
986
|
+
payload: 'Test',
|
|
987
|
+
color: 'cyan',
|
|
988
|
+
},
|
|
989
|
+
],
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
startTime: 40,
|
|
993
|
+
endTime: 50,
|
|
994
|
+
payload: '',
|
|
995
|
+
nestedCues: [
|
|
996
|
+
{
|
|
997
|
+
startTime: 40,
|
|
998
|
+
endTime: 50,
|
|
999
|
+
payload: 'Test',
|
|
1000
|
+
color: 'red',
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
startTime: 40,
|
|
1004
|
+
endTime: 50,
|
|
1005
|
+
payload: '2',
|
|
1006
|
+
fontStyle: Cue.fontStyle.ITALIC,
|
|
1007
|
+
},
|
|
1008
|
+
],
|
|
1009
|
+
},
|
|
1010
|
+
],
|
|
1011
|
+
'WEBVTT\n\n' +
|
|
1012
|
+
'STYLE\n' +
|
|
1013
|
+
'::cue(v[voice="Shaka"]) { color: cyan; }\n' +
|
|
1014
|
+
'::cue(v[voice=ShakaBis]) { color: red; }\n\n' +
|
|
1015
|
+
'00:00:20.000 --> 00:00:40.000\n' +
|
|
1016
|
+
'<v Shaka>Test\n\n' +
|
|
1017
|
+
'00:00:40.000 --> 00:00:50.000\n' +
|
|
1018
|
+
'<v ShakaBis>Test</v><i>2</i>',
|
|
1019
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1020
|
+
});
|
|
1021
|
+
|
|
953
1022
|
it('supports default color overriding', () => {
|
|
954
1023
|
verifyHelper(
|
|
955
1024
|
[
|
|
@@ -970,12 +1039,64 @@ describe('VttTextParser', () => {
|
|
|
970
1039
|
],
|
|
971
1040
|
'WEBVTT\n\n' +
|
|
972
1041
|
'STYLE\n' +
|
|
973
|
-
'::cue(bg_blue) { font-size: 10px; background-color: #FF0 }\n\n' +
|
|
1042
|
+
'::cue(.bg_blue) { font-size: 10px; background-color: #FF0 }\n\n' +
|
|
974
1043
|
'00:00:10.000 --> 00:00:20.000\n' +
|
|
975
1044
|
'<c.red.bg_blue>Example 1</c>\n\n',
|
|
976
1045
|
{periodStart: 0, segmentStart: 0, segmentEnd: 0});
|
|
977
1046
|
});
|
|
978
1047
|
|
|
1048
|
+
// https://github.com/shaka-project/shaka-player/issues/4479
|
|
1049
|
+
it('keep styles when there are line breaks', () => {
|
|
1050
|
+
verifyHelper(
|
|
1051
|
+
[
|
|
1052
|
+
{
|
|
1053
|
+
startTime: 10, endTime: 20,
|
|
1054
|
+
payload: '',
|
|
1055
|
+
nestedCues: [
|
|
1056
|
+
{
|
|
1057
|
+
startTime: 10,
|
|
1058
|
+
endTime: 20,
|
|
1059
|
+
payload: '1',
|
|
1060
|
+
color: '#F0F',
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
startTime: 10,
|
|
1064
|
+
endTime: 20,
|
|
1065
|
+
payload: '',
|
|
1066
|
+
lineBreak: true,
|
|
1067
|
+
},
|
|
1068
|
+
{
|
|
1069
|
+
startTime: 10,
|
|
1070
|
+
endTime: 20,
|
|
1071
|
+
payload: '2',
|
|
1072
|
+
color: '#F0F',
|
|
1073
|
+
fontStyle: Cue.fontStyle.ITALIC,
|
|
1074
|
+
},
|
|
1075
|
+
],
|
|
1076
|
+
},
|
|
1077
|
+
],
|
|
1078
|
+
'WEBVTT\n\n' +
|
|
1079
|
+
'00:00:10.000 --> 00:00:20.000\n' +
|
|
1080
|
+
'<c.magenta>1</c><br/><c.magenta><i>2</i></c>\n\n',
|
|
1081
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1082
|
+
});
|
|
1083
|
+
|
|
1084
|
+
it('does not fail on REGION blocks', () => {
|
|
1085
|
+
verifyHelper(
|
|
1086
|
+
[
|
|
1087
|
+
{
|
|
1088
|
+
startTime: 10, endTime: 20,
|
|
1089
|
+
payload: 'test',
|
|
1090
|
+
},
|
|
1091
|
+
],
|
|
1092
|
+
'WEBVTT\n\n' +
|
|
1093
|
+
'REGION\n' +
|
|
1094
|
+
'id:1\n\n' +
|
|
1095
|
+
'00:00:10.000 --> 00:00:20.000\n' +
|
|
1096
|
+
'test\n\n',
|
|
1097
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
|
|
1098
|
+
});
|
|
1099
|
+
|
|
979
1100
|
/**
|
|
980
1101
|
* @param {!Array} cues
|
|
981
1102
|
* @param {string} text
|