shaka-player 3.3.16 → 3.3.17

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.
Files changed (37) hide show
  1. package/.github/workflows/selenium-lab-tests.yaml +22 -0
  2. package/CHANGELOG.md +16 -0
  3. package/dist/locales.js +30 -30
  4. package/dist/shaka-player.compiled.d.ts +5 -0
  5. package/dist/shaka-player.compiled.debug.d.ts +5 -0
  6. package/dist/shaka-player.compiled.debug.externs.js +4 -0
  7. package/dist/shaka-player.compiled.debug.js +80 -75
  8. package/dist/shaka-player.compiled.debug.map +3 -3
  9. package/dist/shaka-player.compiled.externs.js +4 -0
  10. package/dist/shaka-player.compiled.js +255 -252
  11. package/dist/shaka-player.compiled.map +3 -3
  12. package/dist/shaka-player.ui.d.ts +5 -0
  13. package/dist/shaka-player.ui.debug.d.ts +5 -0
  14. package/dist/shaka-player.ui.debug.externs.js +4 -0
  15. package/dist/shaka-player.ui.debug.js +94 -89
  16. package/dist/shaka-player.ui.debug.map +3 -3
  17. package/dist/shaka-player.ui.externs.js +4 -0
  18. package/dist/shaka-player.ui.js +288 -285
  19. package/dist/shaka-player.ui.map +3 -3
  20. package/externs/shaka/text.js +7 -0
  21. package/lib/dash/segment_template.js +17 -5
  22. package/lib/hls/hls_parser.js +1 -1
  23. package/lib/player.js +1 -1
  24. package/lib/polyfill/media_capabilities.js +1 -0
  25. package/lib/text/cue.js +6 -0
  26. package/lib/text/ui_text_displayer.js +1 -5
  27. package/lib/text/vtt_text_parser.js +256 -91
  28. package/lib/util/platform.js +8 -0
  29. package/package.json +1 -1
  30. package/support.html +1 -0
  31. package/test/dash/dash_parser_manifest_unit.js +0 -36
  32. package/test/test/util/layout_tests.js +433 -0
  33. package/test/test/util/util.js +0 -120
  34. package/test/{ui → text}/text_displayer_layout_unit.js +59 -235
  35. package/test/text/ui_text_displayer_unit.js +2 -4
  36. package/test/text/vtt_text_parser_unit.js +127 -6
  37. 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: '<c.lime>forward slash 1/2 in text</c>',
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