shaka-player 4.4.3 → 4.6.0

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 (307) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. package/.github/workflows/release-please.yaml +2 -27
  3. package/AUTHORS +2 -0
  4. package/CHANGELOG.md +156 -39
  5. package/CODE_OF_CONDUCT.md +1 -1
  6. package/CONTRIBUTORS +2 -0
  7. package/README.md +54 -42
  8. package/demo/asset_card.js +18 -21
  9. package/demo/cast_receiver/index.html +0 -1
  10. package/demo/close_button.js +0 -3
  11. package/demo/common/asset.js +33 -22
  12. package/demo/common/assets.js +249 -60
  13. package/demo/config.js +219 -253
  14. package/demo/custom.js +88 -133
  15. package/demo/front.js +7 -10
  16. package/demo/index.html +19 -22
  17. package/demo/input.js +6 -11
  18. package/demo/input_container.js +8 -9
  19. package/demo/main.js +62 -126
  20. package/demo/search.js +29 -34
  21. package/demo/service_worker.js +0 -3
  22. package/demo/tooltip.js +3 -5
  23. package/demo/visualizer.js +3 -5
  24. package/demo/visualizer_button.js +1 -20
  25. package/dist/controls.css +1 -1
  26. package/dist/controls.css.map +1 -1
  27. package/dist/demo.compiled.debug.js +211 -228
  28. package/dist/demo.compiled.debug.map +4 -4
  29. package/dist/demo.compiled.js +211 -228
  30. package/dist/demo.compiled.map +4 -4
  31. package/dist/deps.js +42 -37
  32. package/dist/locales.js +34 -30
  33. package/dist/receiver.compiled.debug.js +64 -77
  34. package/dist/receiver.compiled.debug.map +4 -4
  35. package/dist/receiver.compiled.js +64 -77
  36. package/dist/receiver.compiled.map +4 -4
  37. package/dist/shaka-player.compiled.d.ts +343 -151
  38. package/dist/shaka-player.compiled.debug.d.ts +343 -151
  39. package/dist/shaka-player.compiled.debug.externs.js +356 -117
  40. package/dist/shaka-player.compiled.debug.js +952 -811
  41. package/dist/shaka-player.compiled.debug.map +4 -4
  42. package/dist/shaka-player.compiled.externs.js +356 -117
  43. package/dist/shaka-player.compiled.js +1165 -1078
  44. package/dist/shaka-player.compiled.map +4 -4
  45. package/dist/shaka-player.ui.d.ts +359 -153
  46. package/dist/shaka-player.ui.debug.d.ts +359 -153
  47. package/dist/shaka-player.ui.debug.externs.js +382 -117
  48. package/dist/shaka-player.ui.debug.js +1084 -918
  49. package/dist/shaka-player.ui.debug.map +4 -4
  50. package/dist/shaka-player.ui.externs.js +382 -117
  51. package/dist/shaka-player.ui.js +1377 -1274
  52. package/dist/shaka-player.ui.map +4 -4
  53. package/docs/design/lcevc-integration.md +14 -14
  54. package/docs/tutorials/ad_monetization.md +54 -0
  55. package/docs/tutorials/basic-usage.md +2 -1
  56. package/docs/tutorials/errors.md +2 -1
  57. package/docs/tutorials/faq.md +27 -55
  58. package/docs/tutorials/index.json +2 -1
  59. package/docs/tutorials/lcevc.md +118 -0
  60. package/docs/tutorials/offline.md +10 -8
  61. package/docs/tutorials/plugins.md +5 -0
  62. package/docs/tutorials/ui-customization.md +17 -0
  63. package/docs/tutorials/ui.md +2 -1
  64. package/docs/tutorials/upgrade.md +3 -0
  65. package/externs/css_style_declaration.js +19 -0
  66. package/externs/lcevc.js +37 -13
  67. package/externs/managedmediasource.js +24 -0
  68. package/externs/media_remote.js +68 -0
  69. package/externs/mediatailor.js +193 -0
  70. package/externs/pictureinpicture.js +11 -0
  71. package/externs/shaka/abr_manager.js +6 -2
  72. package/externs/shaka/ads.js +27 -0
  73. package/externs/shaka/cea.js +7 -0
  74. package/externs/shaka/codecs.js +5 -3
  75. package/externs/shaka/manifest.js +31 -10
  76. package/externs/shaka/manifest_parser.js +24 -1
  77. package/externs/shaka/net.js +2 -2
  78. package/externs/shaka/offline.js +13 -2
  79. package/externs/shaka/player.js +65 -8
  80. package/externs/shaka/text.js +3 -1
  81. package/externs/shaka/transmuxer.js +1 -1
  82. package/karma.conf.js +7 -3
  83. package/lib/abr/simple_abr_manager.js +66 -9
  84. package/lib/ads/ad_manager.js +104 -50
  85. package/lib/ads/media_tailor_ad.js +297 -0
  86. package/lib/ads/media_tailor_ad_manager.js +839 -0
  87. package/lib/cast/cast_receiver.js +1 -1
  88. package/lib/cea/cea_decoder.js +28 -0
  89. package/lib/cea/dummy_caption_decoder.js +5 -0
  90. package/lib/cea/ts_cea_parser.js +15 -2
  91. package/lib/config/codec_switching_strategy.js +24 -0
  92. package/lib/dash/content_protection.js +120 -2
  93. package/lib/dash/dash_parser.js +322 -93
  94. package/lib/dash/mpd_utils.js +62 -37
  95. package/lib/dash/segment_base.js +17 -10
  96. package/lib/dash/segment_list.js +18 -9
  97. package/lib/dash/segment_template.js +122 -107
  98. package/lib/dependencies/all.js +8 -7
  99. package/lib/hls/hls_classes.js +28 -43
  100. package/lib/hls/hls_parser.js +798 -658
  101. package/lib/hls/hls_utils.js +64 -5
  102. package/lib/hls/manifest_text_parser.js +7 -11
  103. package/lib/lcevc/lcevc_dec.js +220 -0
  104. package/lib/media/adaptation_set.js +32 -14
  105. package/lib/media/adaptation_set_criteria.js +86 -16
  106. package/lib/media/closed_caption_parser.js +13 -0
  107. package/lib/media/content_workarounds.js +6 -0
  108. package/lib/media/drm_engine.js +8 -13
  109. package/lib/media/manifest_parser.js +8 -113
  110. package/lib/media/media_source_capabilities.js +10 -3
  111. package/lib/media/media_source_engine.js +286 -44
  112. package/lib/media/play_rate_controller.js +8 -38
  113. package/lib/media/presentation_timeline.js +7 -1
  114. package/lib/media/quality_observer.js +1 -1
  115. package/lib/media/segment_index.js +6 -6
  116. package/lib/media/segment_prefetch.js +92 -24
  117. package/lib/media/segment_reference.js +73 -7
  118. package/lib/media/segment_utils.js +343 -0
  119. package/lib/media/stall_detector.js +0 -3
  120. package/lib/media/streaming_engine.js +73 -38
  121. package/lib/mss/mss_parser.js +19 -2
  122. package/lib/net/networking_engine.js +67 -12
  123. package/lib/net/networking_utils.js +95 -0
  124. package/lib/offline/indexeddb/v1_storage_cell.js +3 -0
  125. package/lib/offline/indexeddb/v2_storage_cell.js +3 -0
  126. package/lib/offline/manifest_converter.js +3 -0
  127. package/lib/offline/offline_manifest_parser.js +10 -0
  128. package/lib/offline/storage.js +14 -7
  129. package/lib/player.js +1098 -1537
  130. package/lib/polyfill/mediasource.js +22 -1
  131. package/lib/text/cue.js +15 -0
  132. package/lib/text/mp4_ttml_parser.js +2 -2
  133. package/lib/text/srt_text_parser.js +2 -2
  134. package/lib/text/stub_text_displayer.js +51 -0
  135. package/lib/text/text_engine.js +3 -2
  136. package/lib/text/ttml_text_parser.js +45 -5
  137. package/lib/text/ui_text_displayer.js +8 -0
  138. package/lib/text/vtt_text_parser.js +40 -22
  139. package/lib/transmuxer/aac_transmuxer.js +1 -1
  140. package/lib/transmuxer/ac3_transmuxer.js +1 -1
  141. package/lib/transmuxer/ec3_transmuxer.js +1 -1
  142. package/lib/transmuxer/h264.js +5 -4
  143. package/lib/transmuxer/h265.js +863 -0
  144. package/lib/transmuxer/mp3_transmuxer.js +1 -1
  145. package/lib/transmuxer/mpeg_ts_transmuxer.js +4 -3
  146. package/lib/transmuxer/mss_transmuxer.js +1 -1
  147. package/lib/transmuxer/ts_transmuxer.js +187 -22
  148. package/lib/util/buffer_utils.js +26 -4
  149. package/lib/util/content_steering_manager.js +358 -0
  150. package/lib/util/error.js +30 -15
  151. package/lib/util/exp_golomb.js +30 -2
  152. package/lib/util/fairplay_utils.js +1 -1
  153. package/lib/util/fake_event.js +8 -1
  154. package/lib/util/id3_utils.js +50 -1
  155. package/lib/util/manifest_parser_utils.js +12 -8
  156. package/lib/util/mp4_generator.js +6 -8
  157. package/lib/util/mutex.js +59 -0
  158. package/lib/util/object_utils.js +1 -1
  159. package/lib/util/periods.js +156 -179
  160. package/lib/util/platform.js +44 -3
  161. package/lib/util/player_configuration.js +43 -6
  162. package/lib/util/state_history.js +6 -2
  163. package/lib/util/stream_utils.js +206 -283
  164. package/lib/util/ts_parser.js +335 -98
  165. package/lib/util/uint8array_utils.js +5 -1
  166. package/lib/util/xml_utils.js +5 -0
  167. package/maintained-branches.md +3 -2
  168. package/package.json +4 -6
  169. package/roadmap.md +25 -5
  170. package/shaka-player.uncompiled.js +2 -2
  171. package/support.html +0 -1
  172. package/test/abr/simple_abr_manager_unit.js +33 -33
  173. package/test/ads/ad_manager_unit.js +3 -2
  174. package/test/cast/cast_receiver_integration.js +50 -4
  175. package/test/cast/cast_utils_unit.js +2 -0
  176. package/test/cea/cea_decoder_unit.js +7 -0
  177. package/test/codec_switching/codec_switching_integration.js +182 -0
  178. package/test/dash/dash_parser_content_protection_unit.js +2 -0
  179. package/test/dash/dash_parser_integration.js +74 -0
  180. package/test/dash/dash_parser_live_unit.js +2 -19
  181. package/test/dash/dash_parser_manifest_unit.js +536 -2
  182. package/test/dash/dash_parser_segment_base_unit.js +2 -0
  183. package/test/dash/dash_parser_segment_list_unit.js +2 -0
  184. package/test/dash/dash_parser_segment_template_unit.js +2 -0
  185. package/test/dash/mpd_utils_unit.js +61 -30
  186. package/test/demo/demo_unit.js +0 -16
  187. package/test/hls/hls_live_unit.js +14 -3
  188. package/test/hls/hls_parser_unit.js +385 -33
  189. package/test/hls/manifest_text_parser_unit.js +32 -99
  190. package/test/media/adaptation_set_criteria_unit.js +284 -15
  191. package/test/media/adaptation_set_unit.js +2 -0
  192. package/test/media/content_workarounds_unit.js +1 -1
  193. package/test/media/drm_engine_unit.js +3 -3
  194. package/test/media/media_source_engine_unit.js +166 -2
  195. package/test/media/play_rate_controller_unit.js +0 -48
  196. package/test/media/segment_index_unit.js +5 -4
  197. package/test/media/segment_prefetch_unit.js +1 -1
  198. package/test/media/streaming_engine_unit.js +17 -17
  199. package/test/mss/mss_parser_unit.js +2 -0
  200. package/test/mss/mss_player_integration.js +3 -2
  201. package/test/net/networking_engine_unit.js +3 -3
  202. package/test/{media/manifest_parser_unit.js → net/networking_utils_unit.js} +2 -2
  203. package/test/offline/manifest_convert_unit.js +14 -0
  204. package/test/offline/offline_integration.js +2 -1
  205. package/test/offline/storage_integration.js +22 -13
  206. package/test/player_external.js +4 -2
  207. package/test/player_integration.js +15 -4
  208. package/test/player_load_graph_integration.js +47 -151
  209. package/test/player_src_equals_external.js +1 -0
  210. package/test/player_src_equals_integration.js +71 -4
  211. package/test/player_unit.js +182 -158
  212. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  213. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  214. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  215. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  216. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  217. package/test/test/assets/dash-aes-128/dash.mpd +18 -0
  218. package/test/test/assets/dash-aes-128/license +1 -0
  219. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  220. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  221. package/test/test/assets/dash-multi-codec/dash.mpd +32 -0
  222. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  223. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  224. package/test/test/assets/hls-ts-h265/hevc.m3u8 +6 -0
  225. package/test/test/assets/hls-ts-h265/index.m3u8 +7 -0
  226. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  227. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  228. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +9 -0
  229. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +24 -0
  230. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  231. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  232. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  233. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  234. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  235. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  236. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  237. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  238. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  239. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  240. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +14 -0
  241. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +23 -0
  242. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  243. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  244. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  245. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  246. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  247. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  248. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  249. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  250. package/test/test/util/dash_parser_util.js +4 -0
  251. package/test/test/util/fake_ad_manager.js +20 -0
  252. package/test/test/util/fake_media_source_engine.js +13 -2
  253. package/test/test/util/fake_networking_engine.js +9 -1
  254. package/test/test/util/fake_segment_prefetch.js +3 -0
  255. package/test/test/util/manifest_generator.js +11 -3
  256. package/test/test/util/manifest_parser_util.js +14 -2
  257. package/test/test/util/mss_parser_util.js +4 -0
  258. package/test/test/util/offline_utils.js +2 -0
  259. package/test/test/util/simple_fakes.js +2 -2
  260. package/test/test/util/streaming_engine_util.js +10 -4
  261. package/test/test/util/test_scheme.js +6 -0
  262. package/test/test/util/ui_utils.js +4 -3
  263. package/test/text/mp4_ttml_parser_unit.js +4 -4
  264. package/test/text/srt_text_parser_unit.js +1 -1
  265. package/test/text/text_displayer_layout_unit.js +1 -1
  266. package/test/text/text_engine_unit.js +6 -0
  267. package/test/text/ttml_text_parser_unit.js +85 -2
  268. package/test/text/vtt_text_parser_unit.js +103 -31
  269. package/test/transmuxer/transmuxer_engine_integration.js +9 -0
  270. package/test/transmuxer/transmuxer_integration.js +150 -3
  271. package/test/ui/ad_ui_unit.js +2 -2
  272. package/test/ui/ui_customization_unit.js +17 -16
  273. package/test/ui/ui_integration.js +30 -20
  274. package/test/ui/ui_unit.js +28 -29
  275. package/test/util/buffer_utils_unit.js +1 -1
  276. package/test/util/content_steering_manager_unit.js +427 -0
  277. package/test/util/id3_utils_unit.js +52 -0
  278. package/test/util/stream_utils_unit.js +207 -169
  279. package/test/util/ts_parser_unit.js +3 -3
  280. package/third_party/closure-uri/uri.js +13 -1
  281. package/ui/audio_language_selection.js +9 -2
  282. package/ui/controls.js +125 -0
  283. package/ui/externs/ui.js +24 -2
  284. package/ui/language_utils.js +43 -8
  285. package/ui/less/range_elements.less +33 -0
  286. package/ui/locales/en.json +1 -0
  287. package/ui/locales/es-419.json +1 -0
  288. package/ui/locales/es.json +1 -0
  289. package/ui/locales/source.json +4 -0
  290. package/ui/localization.js +10 -0
  291. package/ui/pip_button.js +22 -120
  292. package/ui/remote_button.js +203 -0
  293. package/ui/resolution_selection.js +47 -10
  294. package/ui/seek_bar.js +296 -3
  295. package/ui/text_selection.js +2 -1
  296. package/ui/ui.js +11 -4
  297. package/demo/common/message_ids.js +0 -309
  298. package/demo/locales/en.json +0 -288
  299. package/demo/locales/source.json +0 -1146
  300. package/externs/mux.js +0 -69
  301. package/lib/lcevc/lcevc_dil.js +0 -152
  302. package/lib/routing/node.js +0 -23
  303. package/lib/routing/payload.js +0 -43
  304. package/lib/routing/walker.js +0 -587
  305. package/lib/transmuxer/muxjs_transmuxer.js +0 -242
  306. package/test/routing/walker_unit.js +0 -504
  307. package/test/transmuxer/muxjs_transmuxer_integration.js +0 -177
@@ -8,7 +8,6 @@ goog.provide('shakaDemo.AssetCard');
8
8
 
9
9
  goog.require('goog.asserts');
10
10
  goog.require('shakaAssets');
11
- goog.require('shakaDemo.MessageIds');
12
11
  goog.require('shakaDemo.Tooltips');
13
12
  goog.requireType('ShakaDemoAssetInfo');
14
13
 
@@ -134,7 +133,7 @@ shakaDemo.AssetCard = class {
134
133
 
135
134
  /**
136
135
  * @param {string} icon
137
- * @param {!shakaDemo.MessageIds} title
136
+ * @param {string} title
138
137
  * @private
139
138
  */
140
139
  addFeatureIcon_(icon, title) {
@@ -190,18 +189,17 @@ shakaDemo.AssetCard = class {
190
189
 
191
190
  /**
192
191
  * Modify an asset to make it clear that it is unsupported.
193
- * @param {!shakaDemo.MessageIds} unsupportedReason
192
+ * @param {string} unsupportedReason
194
193
  */
195
194
  markAsUnsupported(unsupportedReason) {
196
195
  this.card_.classList.add('asset-card-unsupported');
197
- this.makeUnsupportedButton_(
198
- shakaDemo.MessageIds.UNSUPPORTED, unsupportedReason);
196
+ this.makeUnsupportedButton_('Not Available', unsupportedReason);
199
197
  }
200
198
 
201
199
  /**
202
200
  * Make a button that represents the lack of a working button.
203
- * @param {?shakaDemo.MessageIds} buttonName
204
- * @param {!shakaDemo.MessageIds} unsupportedReason
201
+ * @param {?string} buttonName
202
+ * @param {string} unsupportedReason
205
203
  * @return {!Element}
206
204
  * @private
207
205
  */
@@ -306,16 +304,15 @@ shakaDemo.AssetCard = class {
306
304
  return;
307
305
  }
308
306
 
309
- this.makeYesNoDialogue_(parentDiv,
310
- shakaDemo.MessageIds.DELETE_STORED_PROMPT, async () => {
311
- deleteButton.disabled = true;
312
- await this.asset_.unstoreCallback();
313
- });
307
+ this.makeYesNoDialogue_(parentDiv, 'Delete the offline copy?', async () => {
308
+ deleteButton.disabled = true;
309
+ await this.asset_.unstoreCallback();
310
+ });
314
311
  }
315
312
 
316
313
  /**
317
314
  * @param {!Element} parentDiv
318
- * @param {!shakaDemo.MessageIds} text
315
+ * @param {string} text
319
316
  * @param {function():Promise} callback
320
317
  * @private
321
318
  */
@@ -330,14 +327,14 @@ shakaDemo.AssetCard = class {
330
327
 
331
328
  const textElement = document.createElement('h2');
332
329
  textElement.classList.add('mdl-typography--title');
333
- textElement.textContent = shakaDemoMain.getLocalizedString(text);
330
+ textElement.textContent = text;
334
331
  dialog.appendChild(textElement);
335
332
 
336
333
  const buttonsDiv = document.createElement('div');
337
334
  dialog.appendChild(buttonsDiv);
338
- const makeButton = (textId, fn) => {
335
+ const makeButton = (text, fn) => {
339
336
  const button = document.createElement('button');
340
- button.textContent = shakaDemoMain.getLocalizedString(textId);
337
+ button.textContent = text;
341
338
  button.classList.add('mdl-button');
342
339
  button.classList.add('mdl-button--colored');
343
340
  button.classList.add('mdl-js-button');
@@ -348,12 +345,12 @@ shakaDemo.AssetCard = class {
348
345
  buttonsDiv.appendChild(button);
349
346
  button.blur();
350
347
  };
351
- makeButton(shakaDemo.MessageIds.PROMPT_YES, async () => {
348
+ makeButton('Yes', async () => {
352
349
  dialog.close();
353
350
  await callback();
354
351
  this.remakeButtons();
355
352
  });
356
- makeButton(shakaDemo.MessageIds.PROMPT_NO, () => {
353
+ makeButton('No', () => {
357
354
  dialog.close();
358
355
  });
359
356
 
@@ -385,9 +382,9 @@ shakaDemo.AssetCard = class {
385
382
  /**
386
383
  * Adds a button to the bottom of the card that will call |onClick| when
387
384
  * clicked. For example, a play or delete button.
388
- * @param {?shakaDemo.MessageIds} name
385
+ * @param {?string} name
389
386
  * @param {function()} onclick
390
- * @param {shakaDemo.MessageIds=} yesNoDialogText
387
+ * @param {string=} yesNoDialogText
391
388
  * @return {!HTMLButtonElement}
392
389
  */
393
390
  addButton(name, onclick, yesNoDialogText) {
@@ -397,7 +394,7 @@ shakaDemo.AssetCard = class {
397
394
  button.classList.add('mdl-button--colored');
398
395
  button.classList.add('mdl-js-button');
399
396
  button.classList.add('mdl-js-ripple-effect');
400
- button.textContent = name ? shakaDemoMain.getLocalizedString(name) : '';
397
+ button.textContent = name || '';
401
398
  button.addEventListener('click', () => {
402
399
  if (!button.hasAttribute('disabled')) {
403
400
  if (yesNoDialogText) {
@@ -52,7 +52,6 @@ UNCOMPILED_JS = [
52
52
  // This file contains goog.require calls for all exported library classes.
53
53
  '../../shaka-player.uncompiled.js',
54
54
  // These are the individual parts of the receiver app.
55
- '../common/message_ids.js',
56
55
  '../common/asset.js',
57
56
  '../common/assets.js',
58
57
  'receiver_app.js',
@@ -41,9 +41,6 @@ shakaDemo.CloseButton = class extends shaka.ui.Element {
41
41
  });
42
42
  });
43
43
  }
44
-
45
- // TODO: Make sure that the screenreader description of this control is
46
- // localized!
47
44
  }
48
45
  };
49
46
 
@@ -12,8 +12,6 @@
12
12
 
13
13
  goog.provide('ShakaDemoAssetInfo');
14
14
 
15
- goog.require('shakaDemo.MessageIds');
16
-
17
15
 
18
16
  /**
19
17
  * An object that contains information about an asset.
@@ -47,6 +45,8 @@ const ShakaDemoAssetInfo = class {
47
45
  this.extraText = [];
48
46
  /** @type {!Array.<string>} */
49
47
  this.extraThumbnail = [];
48
+ /** @type {!Array.<!shakaAssets.ExtraChapter>} */
49
+ this.extraChapter = [];
50
50
  /** @type {?string} */
51
51
  this.certificateUri = null;
52
52
  /** @type {?string} */
@@ -80,9 +80,11 @@ const ShakaDemoAssetInfo = class {
80
80
  /** @type {?string} */
81
81
  this.imaManifestType = null;
82
82
  /** @type {?string} */
83
- this.mimeType = null;
83
+ this.mediaTailorUrl = null;
84
+ /** @type {?Object} */
85
+ this.mediaTailorAdsParams = null;
84
86
  /** @type {?string} */
85
- this.mediaPlaylistFullMimeType = null;
87
+ this.mimeType = null;
86
88
 
87
89
 
88
90
  // Offline storage values.
@@ -115,9 +117,9 @@ const ShakaDemoAssetInfo = class {
115
117
  }
116
118
 
117
119
  /**
118
- * A sort comparator for comparing two message Ids, ignoring case.
119
- * @param {shakaDemo.MessageIds} a
120
- * @param {shakaDemo.MessageIds} b
120
+ * A sort comparator for comparing two messages, ignoring case.
121
+ * @param {string} a
122
+ * @param {string} b
121
123
  * @return {number}
122
124
  * @private
123
125
  */
@@ -172,15 +174,6 @@ const ShakaDemoAssetInfo = class {
172
174
  return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.AES128;
173
175
  }
174
176
 
175
- /**
176
- * @param {string} mediaPlaylistFullMimeType
177
- * @return {!ShakaDemoAssetInfo}
178
- */
179
- setMediaPlaylistFullMimeType(mediaPlaylistFullMimeType) {
180
- this.mediaPlaylistFullMimeType = mediaPlaylistFullMimeType;
181
- return this;
182
- }
183
-
184
177
  /**
185
178
  * @param {!Object} extraConfig
186
179
  * @return {!ShakaDemoAssetInfo}
@@ -289,6 +282,21 @@ const ShakaDemoAssetInfo = class {
289
282
  return this;
290
283
  }
291
284
 
285
+ /**
286
+ * @param {string} url
287
+ * @param {?Object=} adsParams
288
+ * @return {!ShakaDemoAssetInfo}
289
+ */
290
+ setMediaTailor(url, adsParams=null) {
291
+ this.mediaTailorUrl = url;
292
+ this.mediaTailorAdsParams = adsParams;
293
+ if (!this.features.includes(shakaAssets.Feature.ADS)) {
294
+ this.addFeature(shakaAssets.Feature.ADS);
295
+ }
296
+
297
+ return this;
298
+ }
299
+
292
300
  /**
293
301
  * @param {string} headerName
294
302
  * @param {string} headerValue
@@ -304,7 +312,6 @@ const ShakaDemoAssetInfo = class {
304
312
  * @return {!ShakaDemoAssetInfo}
305
313
  */
306
314
  addExtraText(extraText) {
307
- // TODO: At no point do we actually use the extraText... why does it exist?
308
315
  this.extraText.push(extraText);
309
316
  return this;
310
317
  }
@@ -318,6 +325,15 @@ const ShakaDemoAssetInfo = class {
318
325
  return this;
319
326
  }
320
327
 
328
+ /**
329
+ * @param {shakaAssets.ExtraChapter} extraChapter
330
+ * @return {!ShakaDemoAssetInfo}
331
+ */
332
+ addExtraChapter(extraChapter) {
333
+ this.extraChapter.push(extraChapter);
334
+ return this;
335
+ }
336
+
321
337
  /**
322
338
  * If this is called, the asset will be focused on by the integration tests.
323
339
  * @return {!ShakaDemoAssetInfo}
@@ -419,11 +435,6 @@ const ShakaDemoAssetInfo = class {
419
435
  }
420
436
  }
421
437
 
422
- if (this.mediaPlaylistFullMimeType) {
423
- config.manifest.hls.mediaPlaylistFullMimeType =
424
- this.mediaPlaylistFullMimeType;
425
- }
426
-
427
438
  if (this.licenseServers.size) {
428
439
  config.drm.servers = config.drm.servers || {};
429
440
  this.licenseServers.forEach((value, key) => {