shaka-player 3.2.3 → 3.2.6

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 (325) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/workflows/build-and-test.yaml +130 -0
  4. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  5. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  6. package/.github/workflows/demo-version-index.yaml +29 -0
  7. package/.github/workflows/nightly-demo.yaml +42 -0
  8. package/.github/workflows/release-please.yaml +147 -0
  9. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  10. package/.github/workflows/selenium-lab-tests.yaml +93 -0
  11. package/AUTHORS +2 -0
  12. package/CHANGELOG.md +1587 -1551
  13. package/CONTRIBUTING.md +2 -2
  14. package/CONTRIBUTORS +2 -0
  15. package/README.md +7 -7
  16. package/app-engine/README.md +9 -0
  17. package/app-engine/demo-version-index/README.md +14 -0
  18. package/app-engine/demo-version-index/app.yaml +2 -0
  19. package/app-engine/demo-version-index/main.py +162 -0
  20. package/app-engine/demo-version-index/requirements.txt +6 -0
  21. package/app-engine/demo-version-index/templates/index.html +114 -0
  22. package/app-engine/shaka-player-demo/README.md +18 -0
  23. package/app-engine/shaka-player-demo/app.yaml +61 -0
  24. package/app-engine/shaka-player-demo/main.py +95 -0
  25. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  26. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  27. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  28. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  29. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  30. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  31. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  32. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  33. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  34. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  35. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  36. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  37. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  38. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  39. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  40. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  41. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  42. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  43. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  44. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  45. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  46. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  47. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  48. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  49. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  50. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  51. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  52. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  53. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  54. package/app-engine/shaka-player-demo/posters.py +110 -0
  55. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  56. package/app-engine/shaka-player-demo/time.txt +1 -0
  57. package/build/README.md +1 -1
  58. package/build/checkversion.py +1 -1
  59. package/build/conformance.textproto +13 -0
  60. package/build/docker/Dockerfile +20 -0
  61. package/build/docker/docker-compose.yml +10 -0
  62. package/build/gendeps.py +18 -15
  63. package/build/generateTsDefs.py +2 -0
  64. package/build/shaka-lab.yaml +163 -0
  65. package/build/shakaBuildHelpers.py +4 -29
  66. package/build/test.py +93 -28
  67. package/build/wrapper.template.js +2 -2
  68. package/demo/TengwarTelcontar.woff2 +0 -0
  69. package/demo/asset_card.js +1 -2
  70. package/demo/cast_receiver/index.html +1 -1
  71. package/demo/cast_receiver/receiver_app.css +14 -14
  72. package/demo/common/assets.js +2 -0
  73. package/demo/config.js +0 -1
  74. package/demo/custom.js +0 -1
  75. package/demo/customWarning.txt +2 -2
  76. package/demo/demo.less +29 -18
  77. package/demo/demo_uncompiled.js +1 -13
  78. package/demo/index.html +1 -1
  79. package/demo/main.js +3 -3
  80. package/dist/controls.css +2 -2
  81. package/dist/controls.css.map +1 -1
  82. package/dist/demo.compiled.debug.js +191 -194
  83. package/dist/demo.compiled.debug.map +4 -4
  84. package/dist/demo.compiled.js +191 -194
  85. package/dist/demo.compiled.map +4 -4
  86. package/dist/demo.css +1 -1
  87. package/dist/demo.css.map +1 -1
  88. package/dist/deps.js +225 -219
  89. package/dist/locales.js +27 -27
  90. package/dist/receiver.compiled.debug.js +43 -45
  91. package/dist/receiver.compiled.debug.map +4 -4
  92. package/dist/receiver.compiled.js +43 -45
  93. package/dist/receiver.compiled.map +4 -4
  94. package/dist/shaka-player.compiled.d.ts +228 -225
  95. package/dist/shaka-player.compiled.debug.d.ts +228 -225
  96. package/dist/shaka-player.compiled.debug.externs.js +21 -15
  97. package/dist/shaka-player.compiled.debug.js +326 -333
  98. package/dist/shaka-player.compiled.debug.map +4 -4
  99. package/dist/shaka-player.compiled.externs.js +21 -15
  100. package/dist/shaka-player.compiled.js +818 -821
  101. package/dist/shaka-player.compiled.map +4 -4
  102. package/dist/shaka-player.ui.d.ts +272 -278
  103. package/dist/shaka-player.ui.debug.d.ts +272 -278
  104. package/dist/shaka-player.ui.debug.externs.js +23 -26
  105. package/dist/shaka-player.ui.debug.js +259 -267
  106. package/dist/shaka-player.ui.debug.map +4 -4
  107. package/dist/shaka-player.ui.externs.js +23 -26
  108. package/dist/shaka-player.ui.js +963 -968
  109. package/dist/shaka-player.ui.map +4 -4
  110. package/docs/design/REDESIGN.md +33 -33
  111. package/docs/design/codec_preferences.md +1 -1
  112. package/docs/design/dash-audio-channels.md +3 -3
  113. package/docs/design/dash-manifests.md +1 -1
  114. package/docs/design/gap-jumping.md +3 -3
  115. package/docs/design/preload.md +2 -2
  116. package/docs/tutorials/faq.md +8 -8
  117. package/docs/tutorials/index.json +1 -0
  118. package/docs/tutorials/plugins.md +3 -3
  119. package/docs/tutorials/selenium-grid-config.md +122 -0
  120. package/docs/tutorials/welcome.md +10 -2
  121. package/karma.conf.js +156 -45
  122. package/lib/abr/simple_abr_manager.js +12 -6
  123. package/lib/ads/ad_manager.js +1 -0
  124. package/lib/cast/cast_proxy.js +6 -4
  125. package/lib/cast/cast_receiver.js +3 -0
  126. package/lib/cea/cea608_data_channel.js +2 -2
  127. package/lib/cea/cea708_service.js +5 -4
  128. package/lib/cea/mp4_cea_parser.js +11 -5
  129. package/lib/cea/sei_processor.js +6 -3
  130. package/lib/dash/dash_parser.js +40 -30
  131. package/lib/dash/mpd_utils.js +4 -5
  132. package/lib/dash/segment_list.js +1 -2
  133. package/lib/dash/segment_template.js +3 -3
  134. package/lib/hls/hls_parser.js +11 -9
  135. package/lib/hls/manifest_text_parser.js +4 -3
  136. package/lib/media/adaptation_set.js +1 -2
  137. package/lib/media/content_workarounds.js +2 -2
  138. package/lib/media/drm_engine.js +3 -2
  139. package/lib/media/media_source_engine.js +3 -2
  140. package/lib/media/mp4_segment_index_parser.js +1 -4
  141. package/lib/media/playhead.js +2 -2
  142. package/lib/media/presentation_timeline.js +18 -8
  143. package/lib/media/region_observer.js +39 -33
  144. package/lib/media/region_timeline.js +17 -19
  145. package/lib/media/streaming_engine.js +7 -7
  146. package/lib/media/time_ranges_utils.js +1 -3
  147. package/lib/media/video_wrapper.js +1 -1
  148. package/lib/net/networking_engine.js +5 -1
  149. package/lib/offline/storage.js +12 -13
  150. package/lib/player.js +58 -24
  151. package/lib/polyfill/all.js +2 -3
  152. package/lib/polyfill/encryption_scheme.js +1 -1
  153. package/lib/polyfill/media_capabilities.js +3 -3
  154. package/lib/polyfill/mediasource.js +1 -1
  155. package/lib/text/cue.js +1 -1
  156. package/lib/text/simple_text_displayer.js +2 -1
  157. package/lib/text/ttml_text_parser.js +8 -5
  158. package/lib/text/ui_text_displayer.js +1 -1
  159. package/lib/util/buffer_utils.js +1 -3
  160. package/lib/util/ebml_parser.js +3 -3
  161. package/lib/util/error.js +1 -1
  162. package/lib/util/fake_event_target.js +21 -1
  163. package/lib/util/iterables.js +0 -46
  164. package/lib/util/mp4_box_parsers.js +1 -4
  165. package/lib/util/mp4_parser.js +5 -7
  166. package/lib/util/periods.js +8 -9
  167. package/lib/util/platform.js +3 -3
  168. package/lib/util/pssh.js +1 -4
  169. package/lib/util/stream_utils.js +4 -3
  170. package/lib/util/string_utils.js +3 -5
  171. package/lib/util/uint8array_utils.js +3 -5
  172. package/lib/util/xml_utils.js +15 -7
  173. package/package.json +62 -40
  174. package/roadmap.md +17 -17
  175. package/test/abr/simple_abr_manager_unit.js +3 -8
  176. package/test/ads/ad_manager_unit.js +0 -6
  177. package/test/cast/cast_proxy_unit.js +0 -8
  178. package/test/cast/cast_receiver_integration.js +1 -18
  179. package/test/cast/cast_receiver_unit.js +1 -9
  180. package/test/cast/cast_sender_unit.js +0 -6
  181. package/test/cast/cast_utils_unit.js +0 -13
  182. package/test/cea/cea608_memory_unit.js +0 -5
  183. package/test/cea/cea708_service_unit.js +0 -7
  184. package/test/cea/cea708_window_unit.js +0 -5
  185. package/test/cea/cea_decoder_unit.js +0 -6
  186. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  187. package/test/cea/dtvcc_packet_unit.js +0 -5
  188. package/test/cea/mp4_cea_parser_unit.js +0 -4
  189. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  190. package/test/dash/dash_parser_live_unit.js +45 -15
  191. package/test/dash/dash_parser_manifest_unit.js +4 -17
  192. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  193. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  194. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  195. package/test/dash/mpd_utils_unit.js +3 -11
  196. package/test/demo/demo_unit.js +0 -5
  197. package/test/deprecate/enforcer_unit.js +0 -4
  198. package/test/deprecate/version_unit.js +0 -2
  199. package/test/hls/hls_live_unit.js +2 -14
  200. package/test/hls/hls_parser_unit.js +76 -15
  201. package/test/hls/manifest_text_parser_unit.js +0 -10
  202. package/test/media/adaptation_set_criteria_unit.js +3 -7
  203. package/test/media/adaptation_set_unit.js +0 -2
  204. package/test/media/buffering_observer_unit.js +1 -4
  205. package/test/media/closed_caption_parser_unit.js +0 -3
  206. package/test/media/drm_engine_integration.js +2 -15
  207. package/test/media/drm_engine_unit.js +4 -24
  208. package/test/media/manifest_parser_unit.js +0 -4
  209. package/test/media/media_source_engine_integration.js +0 -7
  210. package/test/media/media_source_engine_unit.js +1 -14
  211. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  212. package/test/media/play_rate_controller_unit.js +0 -4
  213. package/test/media/playhead_unit.js +8 -16
  214. package/test/media/presentation_timeline_unit.js +4 -7
  215. package/test/media/region_observer_unit.js +40 -10
  216. package/test/media/region_timeline_unit.js +40 -25
  217. package/test/media/segment_index_unit.js +0 -6
  218. package/test/media/segment_reference_unit.js +0 -3
  219. package/test/media/stall_detector_unit.js +0 -5
  220. package/test/media/streaming_engine_integration.js +9 -36
  221. package/test/media/streaming_engine_unit.js +11 -35
  222. package/test/media/time_ranges_utils_unit.js +0 -2
  223. package/test/media/transmuxer_integration.js +0 -6
  224. package/test/media/webm_segment_index_parser_unit.js +0 -4
  225. package/test/net/data_uri_plugin_unit.js +0 -7
  226. package/test/net/http_plugin_unit.js +0 -9
  227. package/test/net/networking_engine_unit.js +0 -11
  228. package/test/offline/download_progress_estimator_unit.js +0 -2
  229. package/test/offline/indexeddb_storage_unit.js +0 -6
  230. package/test/offline/manifest_convert_unit.js +0 -8
  231. package/test/offline/offline_integration.js +1 -10
  232. package/test/offline/offline_manifest_parser_unit.js +0 -6
  233. package/test/offline/offline_scheme_unit.js +0 -8
  234. package/test/offline/offline_uri_unit.js +0 -2
  235. package/test/offline/storage_compatibility_unit.js +1 -14
  236. package/test/offline/storage_integration.js +1 -25
  237. package/test/player_external.js +2 -10
  238. package/test/player_integration.js +21 -28
  239. package/test/player_load_graph_integration.js +1 -6
  240. package/test/player_src_equals_external.js +3 -9
  241. package/test/player_src_equals_integration.js +0 -7
  242. package/test/player_unit.js +52 -37
  243. package/test/routing/walker_unit.js +0 -8
  244. package/test/test/assets/large_file.mpd +1 -1
  245. package/test/test/boot.js +75 -22
  246. package/test/test/externs/jasmine.js +2 -2
  247. package/test/test/externs/karma.js +4 -0
  248. package/test/test/namespace.js +10 -0
  249. package/test/test/util/canned_idb.js +0 -8
  250. package/test/test/util/cea_utils.js +0 -6
  251. package/test/test/util/dash_parser_util.js +0 -13
  252. package/test/test/util/fake_ad.js +0 -3
  253. package/test/test/util/fake_ad_manager.js +0 -9
  254. package/test/test/util/fake_demo_main.js +0 -5
  255. package/test/test/util/fake_drm_engine.js +0 -6
  256. package/test/test/util/fake_media_source_engine.js +0 -7
  257. package/test/test/util/fake_networking_engine.js +0 -5
  258. package/test/test/util/fake_text_displayer.js +0 -5
  259. package/test/test/util/indexeddb_utils.js +1 -10
  260. package/test/test/util/jasmine_fetch.js +0 -1
  261. package/test/test/util/loader.js +0 -18
  262. package/test/test/util/manifest_generator.js +9 -14
  263. package/test/test/util/manifest_parser_util.js +0 -6
  264. package/test/test/util/offline_utils.js +0 -5
  265. package/test/test/util/simple_fakes.js +9 -26
  266. package/test/test/util/stream_generator.js +0 -14
  267. package/test/test/util/streaming_engine_util.js +0 -15
  268. package/test/test/util/test_scheme.js +1 -19
  269. package/test/test/util/ttml_utils.js +0 -2
  270. package/test/test/util/ui_utils.js +0 -9
  271. package/test/test/util/util.js +15 -26
  272. package/test/test/util/waiter.js +84 -43
  273. package/test/text/cue_integration.js +0 -4
  274. package/test/text/lrc_text_parser_unit.js +0 -4
  275. package/test/text/mp4_ttml_parser_unit.js +0 -6
  276. package/test/text/mp4_vtt_parser_unit.js +1 -7
  277. package/test/text/sbv_text_parser_unit.js +0 -4
  278. package/test/text/simple_text_displayer_unit.js +1 -8
  279. package/test/text/srt_text_parser_unit.js +0 -4
  280. package/test/text/ssa_text_parser_unit.js +0 -5
  281. package/test/text/text_engine_unit.js +2 -7
  282. package/test/text/text_track_integration.js +0 -2
  283. package/test/text/ttml_text_parser_unit.js +2 -11
  284. package/test/text/ui_text_displayer_unit.js +44 -41
  285. package/test/text/vtt_text_parser_unit.js +0 -9
  286. package/test/text/web_vtt_generator_unit.js +0 -3
  287. package/test/ui/ad_ui_unit.js +0 -11
  288. package/test/ui/localization_unit.js +0 -3
  289. package/test/ui/text_displayer_layout_unit.js +9 -19
  290. package/test/ui/ui_customization_unit.js +0 -6
  291. package/test/ui/ui_integration.js +0 -16
  292. package/test/ui/ui_unit.js +1 -17
  293. package/test/util/abortable_operation_unit.js +4 -9
  294. package/test/util/array_utils_unit.js +0 -2
  295. package/test/util/buffer_utils_unit.js +0 -2
  296. package/test/util/data_view_reader_unit.js +0 -4
  297. package/test/util/ebml_parser_unit.js +0 -4
  298. package/test/util/event_manager_unit.js +0 -3
  299. package/test/util/fake_event_target_unit.js +0 -5
  300. package/test/util/functional_unit.js +1 -1
  301. package/test/util/iterables_unit.js +0 -64
  302. package/test/util/language_utils_unit.js +0 -3
  303. package/test/util/manifest_parser_utils_unit.js +0 -2
  304. package/test/util/mp4_box_parsers_unit.js +0 -5
  305. package/test/util/mp4_parser_unit.js +0 -4
  306. package/test/util/multi_map_unit.js +0 -3
  307. package/test/util/object_utils_unit.js +0 -2
  308. package/test/util/periods_unit.js +14 -7
  309. package/test/util/pssh_unit.js +0 -5
  310. package/test/util/state_history_unit.js +0 -2
  311. package/test/util/stream_utils_unit.js +3 -8
  312. package/test/util/string_utils_unit.js +0 -6
  313. package/test/util/text_parser_unit.js +0 -2
  314. package/test/util/xml_utils_unit.js +0 -4
  315. package/ui/controls.js +3 -0
  316. package/ui/less/ad_controls.less +6 -6
  317. package/ui/less/buttons.less +6 -6
  318. package/ui/less/containers.less +9 -11
  319. package/ui/less/overflow_menu.less +4 -4
  320. package/ui/less/range_elements.less +7 -2
  321. package/ui/locales/sjn-translations.yaml +257 -0
  322. package/ui/locales/sjn.json +42 -0
  323. package/ui/localization.js +12 -36
  324. package/ui/seek_bar.js +2 -1
  325. package/externs/svgelement.js +0 -18
package/.csslintrc CHANGED
@@ -1,13 +1,23 @@
1
1
  {
2
2
  "extends": "stylelint-config-standard",
3
+ "customSyntax": "postcss-less",
3
4
  "rules": {
4
5
  "font-family-no-missing-generic-family-keyword": null,
5
6
  "declaration-block-single-line-max-declarations": null,
6
7
  "declaration-empty-line-before": null,
7
- "max-line-length": [ 80, {
8
+ "max-line-length": [80, {
8
9
  ignorePattern: "/^@import\\s+/",
9
10
  }],
11
+ "function-no-unknown": [true, {
12
+ ignoreFunctions: [
13
+ "data-uri",
14
+ "lighten",
15
+ "percentage",
16
+ ],
17
+ }],
18
+ "property-no-vendor-prefix": null,
10
19
  "selector-list-comma-newline-after": "always-multi-line",
20
+ "selector-no-vendor-prefix": null,
11
21
  "selector-pseudo-element-colon-notation": "single",
12
22
  "unit-allowed-list": ["em", "%", "px", "s", "deg", "vmin", "ms", "vh"]
13
23
  }
@@ -18,7 +18,7 @@ assignees: ''
18
18
  **Can you reproduce the issue with our latest release version?**
19
19
 
20
20
 
21
- **Can you reproduce the issue with the latest code from `master`?**
21
+ **Can you reproduce the issue with the latest code from `main`?**
22
22
 
23
23
 
24
24
  **Are you using the demo app or your own custom app?**
@@ -0,0 +1,130 @@
1
+ name: Build and Test PR
2
+
3
+ on:
4
+ pull_request: # Trigger for pull requests.
5
+ types: [opened, synchronize, reopened]
6
+ branches:
7
+ - main
8
+ - v[0-9]*
9
+ workflow_dispatch: # Allows for manual triggering.
10
+ inputs:
11
+ ref:
12
+ description: "The ref to build and test."
13
+ required: false
14
+
15
+ # If another instance of this workflow is started for the same PR, cancel the
16
+ # old one. If a PR is updated and a new test run is started, the old test run
17
+ # will be cancelled automatically to conserve resources.
18
+ concurrency:
19
+ group: ${{ github.workflow }}-${{ github.event.inputs.ref || github.ref }}
20
+ cancel-in-progress: true
21
+
22
+ jobs:
23
+ lint:
24
+ name: Lint
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Checkout code
28
+ uses: actions/checkout@v2
29
+ with:
30
+ ref: ${{ github.event.inputs.ref || github.ref }}
31
+
32
+ - name: Lint
33
+ run: python build/check.py
34
+
35
+ build_and_test:
36
+ # Don't waste time doing a full matrix of test runs when there was an
37
+ # obvious linter error.
38
+ needs: lint
39
+ strategy:
40
+ matrix:
41
+ os: ["ubuntu-latest", "macos-latest", "windows-latest"]
42
+ browser: ["Chrome", "Firefox", "Edge", "Safari", "Safari-14"]
43
+ exclude:
44
+ - os: ubuntu-latest
45
+ browser: Edge
46
+ - os: windows-latest
47
+ browser: Safari
48
+ - os: windows-latest
49
+ browser: Safari-14
50
+ - os: ubuntu-latest
51
+ browser: Safari
52
+ - os: ubuntu-latest
53
+ browser: Safari-14
54
+ include:
55
+ # Run Linux browsers with xvfb, so they're in a headless X session.
56
+ - os: ubuntu-latest
57
+ extra_flags: "--use-xvfb"
58
+ # Disable fail-fast so that one matrix-job failing doesn't make the other
59
+ # ones end early.
60
+ fail-fast: false
61
+
62
+ name: ${{ matrix.os }} ${{ matrix.browser }}
63
+ runs-on: ${{ matrix.os }}
64
+
65
+ steps:
66
+ # Firefox on Ubuntu appears to not have the right things installed in
67
+ # the environment used by GitHub actions, so make sure that ffmpeg is
68
+ # installed. Otherwise, the browser might not support some codecs that the
69
+ # tests assume will be supported.
70
+ - name: Install FFmpeg
71
+ if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Firefox'
72
+ run: sudo apt -y update && sudo apt -y install ffmpeg
73
+
74
+ - name: Checkout code
75
+ uses: actions/checkout@v2
76
+ with:
77
+ ref: ${{ github.event.inputs.ref || github.ref }}
78
+
79
+ # Safari 14 can be installed, but not to the root, and it can't replace
80
+ # the standard version, at least not on GitHub's VMs. If you try to
81
+ # install directly to the root with sudo, it will appear to succeed, but
82
+ # will have no effect. If you try to script it explicitly with rm -rf
83
+ # and cp, this will fail. Safari may be on a read-only filesystem.
84
+ - name: Install Safari 14 to home directory
85
+ if: matrix.os == 'macos-latest' && matrix.browser == 'Safari-14'
86
+ run: |
87
+ # Download Safari 14
88
+ # See also https://www.macupdate.com/app/mac/15675/apple-safari/old-versions
89
+ curl -Lv https://www.macupdate.com/action/download/63550 > safari-14.1.2.pkg
90
+
91
+ # Install Safari 14 to homedir specifically.
92
+ installer -pkg safari-14.1.2.pkg -target CurrentUserHomeDirectory
93
+
94
+ # Install a launcher that can execute a shell script to launch this
95
+ npm install karma-script-launcher --save-dev
96
+
97
+ - name: Build Player
98
+ run: python build/all.py
99
+
100
+ - name: Test Player
101
+ shell: bash
102
+ run: |
103
+ browser=${{ matrix.browser }}
104
+
105
+ if [[ "$browser" == "Safari-14" ]]; then
106
+ # Replace the browser name with a script that can launch this
107
+ # browser from the command line.
108
+ browser="$PWD/.github/workflows/safari-homedir-launcher.sh"
109
+ fi
110
+
111
+ python build/test.py \
112
+ --browsers "$browser" \
113
+ --reporters spec --spec-hide-passed \
114
+ --drm \
115
+ ${{ matrix.extra_flags }}
116
+
117
+ build_in_docker:
118
+ # Don't waste time doing a full matrix of test runs when there was an
119
+ # obvious linter error.
120
+ needs: lint
121
+ name: Docker
122
+ runs-on: ubuntu-latest
123
+ steps:
124
+ - name: Checkout code
125
+ uses: actions/checkout@v2
126
+ with:
127
+ ref: ${{ github.event.inputs.ref || github.ref }}
128
+
129
+ - name: Docker
130
+ run: docker-compose -f build/docker/docker-compose.yml up
@@ -0,0 +1,56 @@
1
+ name: Prep Appspot Deployment
2
+
3
+ description: |
4
+ A reusable action that prepares the sources to deploy the Shaka Player Demo
5
+ to appspot. Assumes that the source is already checked out.
6
+
7
+ runs:
8
+ using: composite
9
+ steps:
10
+ - name: Install dependencies
11
+ shell: bash
12
+ run: npm ci
13
+
14
+ - name: Build Shaka Player
15
+ shell: bash
16
+ run: python build/all.py
17
+
18
+ - name: Extract git version
19
+ shell: bash
20
+ run: |
21
+ (
22
+ cd build
23
+ python3 -c 'from shakaBuildHelpers import git_version; print(git_version())'
24
+ ) > demo-version
25
+
26
+ - name: Tag the Player version
27
+ shell: bash
28
+ run: |
29
+ DEMO_VERSION="$(cat demo-version)-uncompiled"
30
+ sed \
31
+ -i lib/player.js \
32
+ -e "s/\(shaka.Player.version\) = .*/\1 = '$DEMO_VERSION';/"
33
+ rm demo-version
34
+
35
+ - name: Backup demo node modules
36
+ shell: bash
37
+ run: |
38
+ DEMO_NODE_MODULES=$(jq -r .shakaCustom.demoDeps[] package.json)
39
+ tar cf demo-modules.tar \
40
+ $(echo "$DEMO_NODE_MODULES" | sed -e 's@^@node_modules/@')
41
+
42
+ - name: Delete unneeded files
43
+ shell: bash
44
+ run: rm -rf .git .github build externs test node_modules
45
+
46
+ - name: Restore demo node modules
47
+ shell: bash
48
+ run: |
49
+ tar xf demo-modules.tar
50
+ rm demo-modules.tar
51
+
52
+ - name: Install App Engine code
53
+ shell: bash
54
+ run: |
55
+ mv app-engine/shaka-player-demo/* .
56
+ rm README.md
@@ -0,0 +1,41 @@
1
+ name: Set Commit Status
2
+
3
+ description: |
4
+ A reusable action that sets the commit status. This is used to set PR status
5
+ from workflows with non-PR triggers (such as manually-triggered workflows).
6
+
7
+ inputs:
8
+ context:
9
+ description: An arbitrary string to identify the status check.
10
+ required: true
11
+ state:
12
+ description: Either "pending", "error", "success", or "failure".
13
+ required: true
14
+ ref:
15
+ description: A git ref for which to set the commit status. For PRs, use the head commit, not the merge commit. Defaults to HEAD.
16
+ required: false
17
+ default: HEAD
18
+ token:
19
+ description: A GitHub access token.
20
+ required: true
21
+
22
+ runs:
23
+ using: composite
24
+ steps:
25
+ - name: Report Commit Status
26
+ shell: bash
27
+ run: |
28
+ # This is the URL to view this workflow run on GitHub. It will be
29
+ # attached to the commit status, so that when someone clicks "details"
30
+ # next to the status on the PR, it will link to this run where they can
31
+ # see the logs.
32
+ RUN_URL="https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
33
+ SHA1=$(git rev-parse "${{ inputs.ref }}")
34
+
35
+ GITHUB_TOKEN=${{ inputs.token }} \
36
+ gh api \
37
+ -X POST \
38
+ -F "context=${{ inputs.context }}" \
39
+ -F "state=${{ inputs.state }}" \
40
+ -F "target_url=$RUN_URL" \
41
+ "repos/${{ github.repository }}/statuses/$SHA1"
@@ -0,0 +1,29 @@
1
+ name: Deploy Demo Version Index
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ # Allows for manual triggering.
6
+ push:
7
+ branches:
8
+ - main
9
+ paths:
10
+ - .github/workflows/demo-version-index.yaml
11
+ - app-engine/demo-version-index/**
12
+
13
+ jobs:
14
+ appspot:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+
19
+ - uses: google-github-actions/auth@v0
20
+ with:
21
+ credentials_json: '${{ secrets.APPENGINE_DEPLOY_KEY }}'
22
+
23
+ - uses: google-github-actions/deploy-appengine@v0
24
+ with:
25
+ project_id: shaka-player-demo
26
+ version: index
27
+ working_directory: app-engine/demo-version-index/
28
+ promote: false
29
+
@@ -0,0 +1,42 @@
1
+ name: Deploy Nightly Demo
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ # Allows for manual triggering.
6
+ schedule:
7
+ # Run every night at midnight PST / 8am UTC.
8
+ - cron: '0 8 * * *'
9
+
10
+ jobs:
11
+ appspot:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ with:
16
+ fetch-depth: 0
17
+ persist-credentials: false
18
+
19
+ - uses: actions/setup-node@v1
20
+ with:
21
+ node-version: 16
22
+ registry-url: 'https://registry.npmjs.org'
23
+
24
+ # The nightly demo has its own receiver app ID that points to the nightly
25
+ # demo itself for the receiver side.
26
+ - name: Override Cast Receiver App ID
27
+ run: |
28
+ sed \
29
+ -i demo/index.html \
30
+ -e 's/\(data-shaka-player-cast-receiver-id\)="[^"]*"/\1="07AEE832"/'
31
+
32
+ - uses: ./.github/workflows/custom-actions/prep-for-appspot
33
+
34
+ - uses: google-github-actions/auth@v0
35
+ with:
36
+ credentials_json: '${{ secrets.APPENGINE_DEPLOY_KEY }}'
37
+
38
+ - uses: google-github-actions/deploy-appengine@v0
39
+ with:
40
+ project_id: shaka-player-demo
41
+ version: nightly
42
+ promote: false
@@ -0,0 +1,147 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - v[0-9]*
8
+
9
+ jobs:
10
+ release:
11
+ runs-on: ubuntu-latest
12
+ outputs:
13
+ release_created: ${{ steps.release.outputs.release_created }}
14
+ tag_name: ${{ steps.release.outputs.tag_name }}
15
+ steps:
16
+ # Create/update release PR
17
+ - uses: google-github-actions/release-please-action@v3
18
+ id: release
19
+ with:
20
+ # Required input to specify the release type (node package).
21
+ release-type: node
22
+ # Make sure we create the PR against the correct branch.
23
+ default-branch: ${{ github.ref_name }}
24
+
25
+ # If we didn't create a release, we may have created or updated a PR.
26
+ - uses: actions/checkout@v2
27
+ if: steps.release.outputs.release_created == false
28
+ - name: Custom update Player version
29
+ if: steps.release.outputs.release_created == false
30
+ run: |
31
+ # Check out the branch that release-please created, if it exists.
32
+ git fetch
33
+ git checkout release-please--branches--${{ github.ref_name }} || exit 0
34
+ # If it does exist, update lib/player.js in the PR branch, so that the
35
+ # -uncompiled tag remains in the player version in that context.
36
+ VERSION="v$(jq -r .version package.json)-uncompiled"
37
+ sed -e "s/^\\(shaka.Player.version =\\).*/\\1 '$VERSION';/" \
38
+ -i lib/player.js
39
+ git add lib/player.js
40
+ # Emulate the actions bot.
41
+ git config user.name "github-actions[bot]"
42
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
43
+ # Update the PR.
44
+ git commit --amend --no-edit
45
+ git push -f
46
+
47
+ # The jobs below are all conditional on a release having been created by
48
+ # someone merging the release PR. They all run in parallel.
49
+
50
+ tag-main:
51
+ runs-on: ubuntu-latest
52
+ needs: release
53
+ if: needs.release.outputs.release_created
54
+ steps:
55
+ - uses: actions/checkout@v2
56
+ with:
57
+ ref: main
58
+ - name: Tag the main branch
59
+ run: |
60
+ # Emulate the actions bot.
61
+ git config user.name "github-actions[bot]"
62
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
63
+ VERSION=${{ needs.release.outputs.tag_name }}
64
+ git tag -m "$VERSION-main" "$VERSION-main"
65
+ git push origin "$VERSION-main"
66
+
67
+ npm:
68
+ runs-on: ubuntu-latest
69
+ needs: release
70
+ if: needs.release.outputs.release_created
71
+ steps:
72
+ - uses: actions/checkout@v2
73
+ with:
74
+ fetch-depth: 0
75
+ persist-credentials: false
76
+
77
+ - uses: actions/setup-node@v1
78
+ with:
79
+ node-version: 16
80
+ registry-url: 'https://registry.npmjs.org'
81
+
82
+ - run: npm ci
83
+ - run: npm publish
84
+ env:
85
+ NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
86
+
87
+ - run: npm pack
88
+ - uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
89
+ with:
90
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
91
+ tag: ${{ needs.release.outputs.tag_name }}
92
+ file: shaka-player-*.tgz
93
+ file_glob: true
94
+ overwrite: true
95
+
96
+ appspot:
97
+ runs-on: ubuntu-latest
98
+ needs: release
99
+ if: needs.release.outputs.release_created
100
+ steps:
101
+ - uses: actions/checkout@v2
102
+ with:
103
+ fetch-depth: 0
104
+ persist-credentials: false
105
+
106
+ - uses: actions/setup-node@v1
107
+ with:
108
+ node-version: 16
109
+ registry-url: 'https://registry.npmjs.org'
110
+
111
+ - name: Compute appspot subdomain and promotion
112
+ run: |
113
+ # This is the same as the version tag, but with dots replaced by
114
+ # dashes. For example, v3.2.2 would have the subdomain v3-2-2.
115
+ APPSPOT_SUBDOMAIN=$( echo ${{ needs.release.outputs.tag_name }} | sed -e 's/\./-/g' )
116
+ echo APPSPOT_SUBDOMAIN=$APPSPOT_SUBDOMAIN >> $GITHUB_ENV
117
+
118
+ # "Promoting" an appspot deployment makes it the default which shows
119
+ # up on shaka-player-demo.appspot.com (no subdomain). This should be
120
+ # done for the latest release version from the latest release branch.
121
+ RELEASE_TAGS=$(git tag | grep ^v[0-9] | grep -Ev -- '-(master|main)')
122
+ LATEST_RELEASE=$(echo "$RELEASE_TAGS" | sort --version-sort | tail -1)
123
+ TAG_NAME=${{ needs.release.outputs.tag_name }}
124
+
125
+ if [[ "$TAG_NAME" == "$LATEST_RELEASE" ]]; then
126
+ echo APPSPOT_PROMOTE=true >> $GITHUB_ENV
127
+ else
128
+ echo APPSPOT_PROMOTE=false >> $GITHUB_ENV
129
+ fi
130
+
131
+ # Debug the decisions made here.
132
+ echo "Subdomain: $APPSPOT_SUBDOMAIN"
133
+ echo "Latest release: $LATEST_RELEASE"
134
+ echo "This release: $TAG_NAME"
135
+ echo "Promote: $APPSPOT_PROMOTE"
136
+
137
+ - uses: ./.github/workflows/custom-actions/prep-for-appspot
138
+
139
+ - uses: google-github-actions/auth@v0
140
+ with:
141
+ credentials_json: '${{ secrets.APPENGINE_DEPLOY_KEY }}'
142
+
143
+ - uses: google-github-actions/deploy-appengine@v0
144
+ with:
145
+ project_id: shaka-player-demo
146
+ version: ${{ env.APPSPOT_SUBDOMAIN }}
147
+ promote: ${{ env.APPSPOT_PROMOTE }}
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ # A script to launch a homedir-installed copy of Safari in Karma. Used with
4
+ # karma-script-launcher and --browsers path/to/script.
5
+
6
+ # There is an issue where opening a URL in a browser that is not already open
7
+ # will also open it in the default browser. See
8
+ # https://apple.stackexchange.com/a/122000/454832 and the comments below it for
9
+ # details.
10
+
11
+ # The workaround is to open the browser explicitly first, without a URL.
12
+ open -a ~/Applications/Safari.app --fresh
13
+ sleep 5
14
+
15
+ # Then open the browser with the URL, and wait for it to quite. In fact, the
16
+ # browser won't be closed automatically at all, and Karma will kill this script
17
+ # when the tests complete. But if we don't wait, Karma will error instead.
18
+ open -a ~/Applications/Safari.app --wait-apps "$1"
@@ -0,0 +1,93 @@
1
+ name: Selenium Lab Tests
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ # Allows for manual triggering on PRs. They should be reviewed first, to
6
+ # avoid malicious code executing in the lab.
7
+ inputs:
8
+ pr:
9
+ description: "A PR number to build and test in the lab. If empty, will build and test from main."
10
+ required: false
11
+ schedule:
12
+ # Runs every night at 2am PST / 10am UTC, testing against the main branch.
13
+ - cron: '0 10 * * *'
14
+
15
+ # Only one run of this workflow is allowed at a time, since it uses physical
16
+ # resources in our lab.
17
+ concurrency: selenium-lab
18
+
19
+ jobs:
20
+ lab-tests:
21
+ # This is a self-hosted runner in a Docker container, with access to our
22
+ # lab's Selenium grid on port 4444.
23
+ runs-on: self-hosted-selenium
24
+
25
+ steps:
26
+ # This runs on our self-hosted runner, and the Docker image it is based
27
+ # on doesn't have GitHub's CLI pre-installed. This installs it. Taken
28
+ # verbatim from the official installation instructions at
29
+ # https://github.com/cli/cli/blob/trunk/docs/install_linux.md
30
+ - name: Install GitHub Actions CLI
31
+ run: |
32
+ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
33
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
34
+ sudo apt update
35
+ sudo apt install gh
36
+
37
+ - name: Compute ref
38
+ run: |
39
+ if [[ "${{ github.event.inputs.pr }}" != "" ]]; then
40
+ echo LAB_TEST_REF="refs/pull/${{ github.event.inputs.pr }}/head" >> $GITHUB_ENV
41
+ else
42
+ echo LAB_TEST_REF="main" >> $GITHUB_ENV
43
+ fi
44
+
45
+ - uses: actions/checkout@v2
46
+ with:
47
+ ref: ${{ env.LAB_TEST_REF }}
48
+
49
+ - name: Set Commit Status to Pending
50
+ uses: ./.github/workflows/custom-actions/set-commit-status
51
+ with:
52
+ context: Selenium Lab Tests
53
+ state: pending
54
+ token: ${{ secrets.GITHUB_TOKEN }}
55
+
56
+ - uses: actions/setup-node@v1
57
+ with:
58
+ node-version: 16
59
+ registry-url: 'https://registry.npmjs.org'
60
+
61
+ # The Docker image for this self-hosted runner doesn't contain java.
62
+ - uses: actions/setup-java@v2
63
+ with:
64
+ distribution: zulu
65
+ java-version: 11
66
+
67
+ # The Docker image for this self-hosted runner has "python3" but not
68
+ # plain "python".
69
+ - name: Build Player
70
+ run: python3 build/all.py
71
+
72
+ # Run tests on the Selenium grid in our lab. This uses a private
73
+ # hostname and TLS cert to get EME tests working on all platforms
74
+ # (since EME only works on https or localhost).
75
+ - name: Test Player
76
+ run: |
77
+ python3 build/test.py \
78
+ --reporters spec --spec-hide-passed \
79
+ --drm \
80
+ --lets-encrypt-folder /etc/shakalab.rocks \
81
+ --hostname karma.shakalab.rocks \
82
+ --port 61731 \
83
+ --grid-config build/shaka-lab.yaml \
84
+ --grid-address selenium-grid.lab:4444
85
+
86
+ - name: Report Final Commit Status
87
+ # Will run on success or failure, but not if the workflow is cancelled.
88
+ if: ${{ success() || failure() }}
89
+ uses: ./.github/workflows/custom-actions/set-commit-status
90
+ with:
91
+ context: Selenium Lab Tests
92
+ state: ${{ job.status }}
93
+ token: ${{ secrets.GITHUB_TOKEN }}
package/AUTHORS CHANGED
@@ -34,6 +34,7 @@ Fadomire <fadomire@gmail.com>
34
34
  Google Inc. <*@google.com>
35
35
  Edgeware AB <*@edgeware.tv>
36
36
  Gil Gonen <gil.gonen@gmail.com>
37
+ Giorgio Gamberoni <giorgio.gamberoni@gmail.com>
37
38
  Giuseppe Samela <giuseppe.samela@gmail.com>
38
39
  Itay Kinnrot <Itay.Kinnrot@Kaltura.com>
39
40
  Jason Palmer <jason@jason-palmer.com>
@@ -41,6 +42,7 @@ Jesper Haug Karsrud <jesper.karsrud@gmail.com>
41
42
  Johan Sundström <oyasumi@gmail.com>
42
43
  Jonas Birmé <jonas.birme@eyevinn.se>
43
44
  Jozef Chúťka <jozefchutka@gmail.com>
45
+ Jun Hong Chong <chongjunhong@gmail.com>
44
46
  JW Player <*@jwplayer.com>
45
47
  Lucas Gabriel Sánchez <unkiwii@gmail.com>
46
48
  Matthias Van Parijs <matvp91@gmail.com>