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.
Files changed (68) hide show
  1. package/.github/workflows/build-and-test.yaml +4 -4
  2. package/.github/workflows/demo-version-index.yaml +6 -0
  3. package/.github/workflows/selenium-lab-tests.yaml +72 -11
  4. package/.github/workflows/update-screenshots.yaml +142 -0
  5. package/CHANGELOG.md +38 -0
  6. package/demo/common/asset.js +15 -0
  7. package/demo/common/assets.js +4 -2
  8. package/demo/common/message_ids.js +1 -0
  9. package/demo/custom.js +19 -0
  10. package/demo/locales/en.json +1 -0
  11. package/demo/locales/source.json +4 -0
  12. package/demo/main.js +14 -0
  13. package/dist/demo.compiled.debug.js +146 -144
  14. package/dist/demo.compiled.debug.map +3 -3
  15. package/dist/demo.compiled.js +146 -144
  16. package/dist/demo.compiled.map +3 -3
  17. package/dist/deps.js +1 -1
  18. package/dist/locales.js +28 -28
  19. package/dist/receiver.compiled.debug.js +15 -15
  20. package/dist/receiver.compiled.debug.map +2 -2
  21. package/dist/receiver.compiled.js +15 -15
  22. package/dist/receiver.compiled.map +2 -2
  23. package/dist/shaka-player.compiled.d.ts +12 -0
  24. package/dist/shaka-player.compiled.debug.d.ts +12 -0
  25. package/dist/shaka-player.compiled.debug.externs.js +4 -0
  26. package/dist/shaka-player.compiled.debug.js +105 -100
  27. package/dist/shaka-player.compiled.debug.map +3 -3
  28. package/dist/shaka-player.compiled.externs.js +4 -0
  29. package/dist/shaka-player.compiled.js +296 -292
  30. package/dist/shaka-player.compiled.map +3 -3
  31. package/dist/shaka-player.ui.d.ts +12 -0
  32. package/dist/shaka-player.ui.debug.d.ts +12 -0
  33. package/dist/shaka-player.ui.debug.externs.js +4 -0
  34. package/dist/shaka-player.ui.debug.js +119 -114
  35. package/dist/shaka-player.ui.debug.map +3 -3
  36. package/dist/shaka-player.ui.externs.js +4 -0
  37. package/dist/shaka-player.ui.js +311 -307
  38. package/dist/shaka-player.ui.map +3 -3
  39. package/docs/tutorials/errors.md +94 -0
  40. package/docs/tutorials/index.json +2 -0
  41. package/docs/tutorials/widevine-service-certs.md +45 -0
  42. package/externs/ima.js +9 -0
  43. package/externs/shaka/text.js +7 -0
  44. package/lib/ads/client_side_ad_manager.js +6 -3
  45. package/lib/dash/segment_template.js +17 -5
  46. package/lib/hls/hls_parser.js +3 -1
  47. package/lib/media/transmuxer.js +13 -7
  48. package/lib/media/video_wrapper.js +3 -3
  49. package/lib/offline/indexeddb/storage_mechanism.js +1 -1
  50. package/lib/player.js +3 -1
  51. package/lib/polyfill/media_capabilities.js +3 -8
  52. package/lib/polyfill/mediasource.js +7 -2
  53. package/lib/text/cue.js +6 -0
  54. package/lib/text/ui_text_displayer.js +2 -5
  55. package/lib/text/vtt_text_parser.js +257 -93
  56. package/lib/util/mime_utils.js +1 -1
  57. package/lib/util/platform.js +8 -0
  58. package/lib/util/stream_utils.js +26 -14
  59. package/package.json +1 -1
  60. package/support.html +1 -0
  61. package/test/dash/dash_parser_manifest_unit.js +0 -36
  62. package/test/polyfill/media_capabilities_unit.js +20 -22
  63. package/test/test/util/layout_tests.js +433 -0
  64. package/test/test/util/util.js +0 -120
  65. package/test/{ui → text}/text_displayer_layout_unit.js +59 -235
  66. package/test/text/ui_text_displayer_unit.js +2 -4
  67. package/test/text/vtt_text_parser_unit.js +151 -6
  68. 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>&amp;',
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: '<c.lime>forward slash 1/2 in text</c>',
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