shaka-player 3.3.4 → 4.0.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 (184) hide show
  1. package/.github/workflows/build-and-test.yaml +0 -1
  2. package/.github/workflows/demo-version-index.yaml +8 -0
  3. package/.github/workflows/release-please.yaml +23 -2
  4. package/.github/workflows/selenium-lab-tests.yaml +0 -1
  5. package/.github/workflows/sync-labels.yaml +33 -0
  6. package/.github/workflows/update-issues.yaml +29 -0
  7. package/.github/workflows/validate-pr-title.yaml +35 -0
  8. package/AUTHORS +1 -0
  9. package/CHANGELOG.md +198 -32
  10. package/CONTRIBUTORS +1 -0
  11. package/README.md +10 -7
  12. package/app-engine/demo-version-index/README.md +3 -3
  13. package/app-engine/demo-version-index/app.yaml +27 -1
  14. package/app-engine/demo-version-index/generate.py +164 -0
  15. package/app-engine/demo-version-index/main.py +4 -155
  16. package/app-engine/demo-version-index/requirements.txt +0 -1
  17. package/build/README.md +2 -2
  18. package/build/compiler.py +1 -1
  19. package/build/generateTsDefs.py +0 -2
  20. package/build/shaka-lab.yaml +0 -2
  21. package/build/test.py +7 -1
  22. package/build/types/core +0 -1
  23. package/build/types/polyfill +0 -3
  24. package/demo/common/asset.js +17 -1
  25. package/demo/common/assets.js +29 -0
  26. package/demo/common/message_ids.js +6 -3
  27. package/demo/config.js +10 -11
  28. package/demo/custom.js +39 -0
  29. package/demo/demo_utils.js +0 -1
  30. package/demo/locales/en.json +6 -3
  31. package/demo/locales/source.json +22 -10
  32. package/demo/main.js +9 -6
  33. package/demo/search.js +2 -1
  34. package/dist/controls.css +1 -1
  35. package/dist/demo.compiled.debug.js +71 -64
  36. package/dist/demo.compiled.debug.map +3 -3
  37. package/dist/demo.compiled.js +71 -64
  38. package/dist/demo.compiled.map +3 -3
  39. package/dist/demo.css +1 -1
  40. package/dist/demo.css.map +1 -1
  41. package/dist/deps.js +16 -20
  42. package/dist/locales.js +31 -29
  43. package/dist/receiver.compiled.debug.js +32 -28
  44. package/dist/receiver.compiled.debug.map +3 -3
  45. package/dist/receiver.compiled.js +32 -28
  46. package/dist/receiver.compiled.map +3 -3
  47. package/dist/shaka-player.compiled.d.ts +78 -83
  48. package/dist/shaka-player.compiled.debug.d.ts +78 -83
  49. package/dist/shaka-player.compiled.debug.externs.js +126 -126
  50. package/dist/shaka-player.compiled.debug.js +426 -483
  51. package/dist/shaka-player.compiled.debug.map +4 -4
  52. package/dist/shaka-player.compiled.externs.js +126 -126
  53. package/dist/shaka-player.compiled.js +838 -856
  54. package/dist/shaka-player.compiled.map +4 -4
  55. package/dist/shaka-player.ui.d.ts +80 -83
  56. package/dist/shaka-player.ui.debug.d.ts +80 -83
  57. package/dist/shaka-player.ui.debug.externs.js +134 -126
  58. package/dist/shaka-player.ui.debug.js +488 -543
  59. package/dist/shaka-player.ui.debug.map +4 -4
  60. package/dist/shaka-player.ui.externs.js +134 -126
  61. package/dist/shaka-player.ui.js +980 -994
  62. package/dist/shaka-player.ui.map +4 -4
  63. package/docs/tutorials/config.md +0 -2
  64. package/docs/tutorials/drm-config.md +5 -0
  65. package/docs/tutorials/fairplay.md +7 -22
  66. package/docs/tutorials/faq.md +0 -11
  67. package/docs/tutorials/index.json +2 -8
  68. package/docs/tutorials/plugins.md +1 -3
  69. package/docs/tutorials/upgrade.md +83 -11
  70. package/externs/polyfill.js +15 -0
  71. package/externs/shaka/manifest.js +5 -1
  72. package/externs/shaka/net.js +12 -0
  73. package/externs/shaka/offline.js +5 -1
  74. package/externs/shaka/player.js +39 -32
  75. package/externs/shaka/text.js +12 -12
  76. package/externs/sourcebuffer.js +15 -0
  77. package/lib/ads/client_side_ad.js +13 -2
  78. package/lib/ads/client_side_ad_manager.js +22 -4
  79. package/lib/cast/cast_utils.js +0 -1
  80. package/lib/dash/content_protection.js +85 -5
  81. package/lib/dash/dash_parser.js +1 -1
  82. package/lib/hls/hls_parser.js +378 -743
  83. package/lib/hls/manifest_text_parser.js +2 -3
  84. package/lib/media/drm_engine.js +102 -53
  85. package/lib/media/gap_jumping_controller.js +10 -45
  86. package/lib/media/media_source_engine.js +87 -15
  87. package/lib/media/playhead.js +2 -5
  88. package/lib/media/presentation_timeline.js +1 -2
  89. package/lib/media/segment_index.js +13 -46
  90. package/lib/media/segment_reference.js +47 -1
  91. package/lib/media/streaming_engine.js +29 -11
  92. package/lib/media/time_ranges_utils.js +4 -9
  93. package/lib/net/networking_engine.js +3 -0
  94. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  95. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  96. package/lib/offline/manifest_converter.js +1 -0
  97. package/lib/offline/storage.js +100 -132
  98. package/lib/player.js +17 -201
  99. package/lib/polyfill/media_capabilities.js +12 -6
  100. package/lib/polyfill/mediasource.js +0 -28
  101. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  102. package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
  103. package/lib/text/cue.js +0 -6
  104. package/lib/text/lrc_text_parser.js +8 -0
  105. package/lib/text/mp4_ttml_parser.js +8 -0
  106. package/lib/text/mp4_vtt_parser.js +8 -0
  107. package/lib/text/sbv_text_parser.js +8 -0
  108. package/lib/text/simple_text_displayer.js +1 -7
  109. package/lib/text/srt_text_parser.js +8 -0
  110. package/lib/text/ssa_text_parser.js +8 -0
  111. package/lib/text/text_engine.js +19 -3
  112. package/lib/text/ttml_text_parser.js +8 -0
  113. package/lib/text/ui_text_displayer.js +1 -7
  114. package/lib/text/vtt_text_parser.js +24 -2
  115. package/lib/text/web_vtt_generator.js +1 -7
  116. package/lib/util/error.js +9 -13
  117. package/lib/util/fairplay_utils.js +109 -0
  118. package/lib/util/functional.js +0 -42
  119. package/lib/util/mime_utils.js +2 -0
  120. package/lib/util/platform.js +45 -0
  121. package/lib/util/player_configuration.js +12 -6
  122. package/lib/util/pssh.js +23 -4
  123. package/lib/util/stream_utils.js +92 -22
  124. package/lib/util/uint8array_utils.js +0 -16
  125. package/lib/util/xml_utils.js +1 -1
  126. package/package.json +1 -1
  127. package/roadmap.md +19 -19
  128. package/shaka-player.uncompiled.js +0 -3
  129. package/test/cast/cast_utils_unit.js +1 -0
  130. package/test/dash/dash_parser_content_protection_unit.js +44 -0
  131. package/test/dash/dash_parser_manifest_unit.js +0 -24
  132. package/test/dash/dash_parser_segment_template_unit.js +3 -4
  133. package/test/demo/demo_unit.js +2 -1
  134. package/test/hls/hls_live_unit.js +99 -220
  135. package/test/hls/hls_parser_unit.js +515 -432
  136. package/test/media/drm_engine_unit.js +86 -120
  137. package/test/media/media_source_engine_integration.js +26 -3
  138. package/test/media/media_source_engine_unit.js +7 -6
  139. package/test/media/playhead_unit.js +27 -191
  140. package/test/media/segment_index_unit.js +15 -25
  141. package/test/media/streaming_engine_integration.js +4 -39
  142. package/test/media/streaming_engine_unit.js +3 -2
  143. package/test/media/time_ranges_utils_unit.js +0 -5
  144. package/test/offline/manifest_convert_unit.js +34 -4
  145. package/test/offline/offline_manifest_parser_unit.js +1 -0
  146. package/test/offline/storage_integration.js +5 -4
  147. package/test/player_external.js +0 -6
  148. package/test/player_integration.js +16 -0
  149. package/test/player_unit.js +26 -0
  150. package/test/test/util/fake_media_source_engine.js +11 -4
  151. package/test/test/util/manifest_generator.js +3 -1
  152. package/test/test/util/manifest_parser_util.js +4 -1
  153. package/test/test/util/offline_utils.js +1 -0
  154. package/test/test/util/streaming_engine_util.js +1 -0
  155. package/test/test/util/test_scheme.js +24 -1
  156. package/test/test/util/util.js +4 -4
  157. package/test/text/cue_integration.js +2 -2
  158. package/test/text/lrc_text_parser_unit.js +6 -7
  159. package/test/text/mp4_ttml_parser_unit.js +6 -4
  160. package/test/text/mp4_vtt_parser_unit.js +6 -5
  161. package/test/text/sbv_text_parser_unit.js +5 -6
  162. package/test/text/srt_text_parser_unit.js +5 -6
  163. package/test/text/ssa_text_parser_unit.js +17 -29
  164. package/test/text/text_engine_unit.js +45 -5
  165. package/test/text/ttml_text_parser_unit.js +77 -77
  166. package/test/text/vtt_text_parser_unit.js +55 -57
  167. package/test/ui/ui_integration.js +0 -16
  168. package/test/ui/ui_unit.js +27 -0
  169. package/test/util/cmcd_manager_unit.js +3 -0
  170. package/test/util/stream_utils_unit.js +23 -7
  171. package/ui/controls.js +65 -40
  172. package/ui/fullscreen_button.js +26 -6
  173. package/ui/less/containers.less +3 -3
  174. package/ui/locales/en.json +1 -0
  175. package/ui/locales/source.json +5 -0
  176. package/ui/resolution_selection.js +31 -33
  177. package/ui/ui.js +0 -17
  178. package/docs/tutorials/upgrade-v2-5.md +0 -441
  179. package/docs/tutorials/upgrade-v3.md +0 -38
  180. package/lib/polyfill/mathround.js +0 -49
  181. package/lib/polyfill/patchedmediakeys_apple.js +0 -744
  182. package/lib/polyfill/patchedmediakeys_ms.js +0 -698
  183. package/lib/util/mutex.js +0 -52
  184. package/test/util/functional_unit.js +0 -82
@@ -248,14 +248,12 @@ shaka.util.Error.Code = {
248
248
  'HLS_INVALID_PLAYLIST_HIERARCHY': 4017,
249
249
  'DASH_DUPLICATE_REPRESENTATION_ID': 4018,
250
250
  'HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND': 4020,
251
- 'HLS_MASTER_PLAYLIST_NOT_PROVIDED': 4022,
252
251
  'HLS_REQUIRED_ATTRIBUTE_MISSING': 4023,
253
252
  'HLS_REQUIRED_TAG_MISSING': 4024,
254
253
  'HLS_COULD_NOT_GUESS_CODECS': 4025,
255
254
  'HLS_KEYFORMATS_NOT_SUPPORTED': 4026,
256
255
  'DASH_UNSUPPORTED_XLINK_ACTUATE': 4027,
257
256
  'DASH_XLINK_DEPTH_LIMIT': 4028,
258
- 'HLS_COULD_NOT_PARSE_SEGMENT_START_TIME': 4030,
259
257
  'CONTENT_UNSUPPORTED_BY_BROWSER': 4032,
260
258
  'CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM': 4033,
261
259
  'HLS_AES_128_ENCRYPTION_NOT_SUPPORTED': 4034,
@@ -264,6 +262,7 @@ shaka.util.Error.Code = {
264
262
  'PERIOD_FLATTENING_FAILED': 4037,
265
263
  'INCONSISTENT_DRM_ACROSS_PERIODS': 4038,
266
264
  'HLS_VARIABLE_NOT_FOUND': 4039,
265
+ 'HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED': 4040,
267
266
  'STREAMING_ENGINE_STARTUP_INVALID_STATE': 5006,
268
267
  'NO_RECOGNIZED_KEY_SYSTEMS': 6000,
269
268
  'REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE': 6001,
@@ -711,10 +710,6 @@ shaka.text.Cue.prototype.isContainer;
711
710
  * @override
712
711
  */
713
712
  shaka.text.Cue.prototype.lineBreak;
714
- /**
715
- * @override
716
- */
717
- shaka.text.Cue.prototype.spacer;
718
713
  /**
719
714
  * @override
720
715
  */
@@ -1031,14 +1026,6 @@ shaka.util.StringUtils = class {
1031
1026
  * @summary A set of Uint8Array utility functions.
1032
1027
  */
1033
1028
  shaka.util.Uint8ArrayUtils = class {
1034
- /**
1035
- * Compare two Uint8Arrays for equality.
1036
- * @param {Uint8Array} arr1
1037
- * @param {Uint8Array} arr2
1038
- * @return {boolean}
1039
- * @deprecated
1040
- */
1041
- static equal(arr1, arr2) {}
1042
1029
  /**
1043
1030
  * Convert a buffer to a base64 string. The output will be standard
1044
1031
  * alphabet as opposed to base64url safe alphabet.
@@ -1081,6 +1068,19 @@ shaka.util.Uint8ArrayUtils = class {
1081
1068
  */
1082
1069
  static concat(...varArgs) {}
1083
1070
  };
1071
+ /**
1072
+ * @summary A set of utility functions for dealing with MIME types.
1073
+ */
1074
+ shaka.util.MimeUtils = class {
1075
+ /**
1076
+ * Takes a MIME type and optional codecs string and produces the full MIME
1077
+ * type.
1078
+ * @param {string} mimeType
1079
+ * @param {string=} codecs
1080
+ * @return {string}
1081
+ */
1082
+ static getFullType(mimeType, codecs) {}
1083
+ };
1084
1084
  /**
1085
1085
  * @summary Manages text parsers and cues.
1086
1086
  * @implements {shaka.util.IDestroyable}
@@ -1521,35 +1521,6 @@ shaka.util.EventManager = class {
1521
1521
  * @typedef {function(!Event)}
1522
1522
  */
1523
1523
  shaka.util.EventManager.ListenerType;
1524
- /**
1525
- * @summary A set of FairPlay utility functions.
1526
- */
1527
- shaka.util.FairPlayUtils = class {
1528
- /**
1529
- * Using the default method, extract a content ID from the init data. This is
1530
- * based on the FairPlay example documentation.
1531
- * @param {!BufferSource} initData
1532
- * @return {string}
1533
- */
1534
- static defaultGetContentId(initData) {}
1535
- /**
1536
- * Transforms the init data buffer using the given data. The format is:
1537
- * <pre>
1538
- * [4 bytes] initDataSize
1539
- * [initDataSize bytes] initData
1540
- * [4 bytes] contentIdSize
1541
- * [contentIdSize bytes] contentId
1542
- * [4 bytes] certSize
1543
- * [certSize bytes] cert
1544
- * </pre>
1545
- * @param {!BufferSource} initData
1546
- * @param {!BufferSource|string} contentId
1547
- * @param {?BufferSource} cert The server certificate; this will throw if not
1548
- * provided.
1549
- * @return {!Uint8Array}
1550
- */
1551
- static initDataTransform(initData, contentId, cert) {}
1552
- };
1553
1524
  /**
1554
1525
  * @summary An interface to register manifest parsers.
1555
1526
  */
@@ -1825,8 +1796,14 @@ shaka.media.SegmentReference = class {
1825
1796
  * The explicit duration of an individual tile within the tiles grid.
1826
1797
  * If not provided, the duration should be automatically calculated based on
1827
1798
  * the duration of the reference.
1799
+ * @param {?number=} syncTime
1800
+ * A time value, expressed in the same scale as the start and end time, which
1801
+ * is used to synchronize between streams.
1802
+ * @param {shaka.media.SegmentReference.Status=} status
1803
+ * The segment status is used to indicate that a segment does not exist or is
1804
+ * not available.
1828
1805
  */
1829
- constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration) {}
1806
+ constructor(startTime, endTime, uris, startByte, endByte, initSegmentReference, timestampOffset, appendWindowStart, appendWindowEnd, partialReferences, tilesLayout, tileDuration, syncTime, status) {}
1830
1807
  /**
1831
1808
  * Creates and returns the URIs of the resource containing the segment.
1832
1809
  * @return {!Array.<string>}
@@ -1866,6 +1843,25 @@ shaka.media.SegmentReference = class {
1866
1843
  * @return {?number}
1867
1844
  */
1868
1845
  getTileDuration() {}
1846
+ /**
1847
+ * Returns the segment's status.
1848
+ * @return {shaka.media.SegmentReference.Status}
1849
+ */
1850
+ getStatus() {}
1851
+ /**
1852
+ * Mark the reference as unavailable.
1853
+ */
1854
+ markAsUnavailable() {}
1855
+ };
1856
+ /**
1857
+ * Rather than using booleans to communicate what the state of the reference,
1858
+ * we have this enum.
1859
+ * @enum {number}
1860
+ */
1861
+ shaka.media.SegmentReference.Status = {
1862
+ AVAILABLE: 0,
1863
+ UNAVAILABLE: 1,
1864
+ MISSING: 2
1869
1865
  };
1870
1866
  /**
1871
1867
  * PresentationTimeline.
@@ -2041,13 +2037,6 @@ shaka.media.SegmentIndex = class {
2041
2037
  * (ascending) and second by their end times (ascending).
2042
2038
  */
2043
2039
  constructor(references) {}
2044
- /**
2045
- * SegmentIndex used to be an IDestroyable. Now it is an IReleasable.
2046
- * This method is provided for backward compatibility.
2047
- * @deprecated
2048
- * @return {!Promise}
2049
- */
2050
- destroy() {}
2051
2040
  /**
2052
2041
  * @override
2053
2042
  */
@@ -2082,20 +2071,6 @@ shaka.media.SegmentIndex = class {
2082
2071
  * times.
2083
2072
  */
2084
2073
  offset(offset) {}
2085
- /**
2086
- * Merges the given SegmentReferences. Supports extending the original
2087
- * references only. Will replace old references with equivalent new ones, and
2088
- * keep any unique old ones.
2089
- * Used, for example, by the DASH and HLS parser, where manifests may not list
2090
- * all available references, so we must keep available references in memory to
2091
- * fill the availability window.
2092
- * @param {!Array.<!shaka.media.SegmentReference>} references The list of
2093
- * SegmentReferences, which must be sorted first by their start times
2094
- * (ascending) and second by their end times (ascending).
2095
- * @deprecated Not used directly by our own parsers, so will become private in
2096
- * v4. Use mergeAndEvict() instead.
2097
- */
2098
- merge(references) {}
2099
2074
  /**
2100
2075
  * Merges the given SegmentReferences and evicts the ones that end before the
2101
2076
  * given time. Supports extending the original references only.
@@ -2164,13 +2139,6 @@ shaka.media.SegmentIterator = class {
2164
2139
  * @param {number} partialSegmentIndex
2165
2140
  */
2166
2141
  constructor(segmentIndex, index, partialSegmentIndex) {}
2167
- /**
2168
- * Move the iterator to a given timestamp in the underlying SegmentIndex.
2169
- * @param {number} time
2170
- * @return {shaka.media.SegmentReference}
2171
- * @deprecated Use SegmentIndex.getIteratorForTime instead
2172
- */
2173
- seek(time) {}
2174
2142
  /**
2175
2143
  * @return {shaka.media.SegmentReference}
2176
2144
  */
@@ -2370,6 +2338,10 @@ shaka.util.ConfigUtils = class {
2370
2338
  * @final
2371
2339
  */
2372
2340
  shaka.util.PlayerConfiguration = class {
2341
+ /**
2342
+ * @return {shaka.extern.PlayerConfiguration}
2343
+ */
2344
+ static createDefault() {}
2373
2345
  /**
2374
2346
  * Merges the given configuration changes into the given destination. This
2375
2347
  * uses the default Player configurations as the template.
@@ -2832,21 +2804,6 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2832
2804
  * @return {shaka.extern.Stats}
2833
2805
  */
2834
2806
  getStats() {}
2835
- /**
2836
- * Adds the given text track to the loaded manifest. <code>load()</code> must
2837
- * resolve before calling. The presentation must have a duration.
2838
- * This returns the created track, which can immediately be selected by the
2839
- * application. The track will not be automatically selected.
2840
- * @param {string} uri
2841
- * @param {string} language
2842
- * @param {string} kind
2843
- * @param {string=} mimeType
2844
- * @param {string=} codec
2845
- * @param {string=} label
2846
- * @param {boolean=} forced
2847
- * @return {shaka.extern.Track}
2848
- */
2849
- addTextTrack(uri, language, kind, mimeType, codec, label, forced) {}
2850
2807
  /**
2851
2808
  * Adds the given text track to the loaded manifest. <code>load()</code> must
2852
2809
  * resolve before calling. The presentation must have a duration.
@@ -2944,8 +2901,9 @@ shaka.ads.ClientSideAd = class {
2944
2901
  /**
2945
2902
  * @param {!google.ima.Ad} imaAd
2946
2903
  * @param {!google.ima.AdsManager} imaAdManager
2904
+ * @param {HTMLMediaElement} video
2947
2905
  */
2948
- constructor(imaAd, imaAdManager) {}
2906
+ constructor(imaAd, imaAdManager, video) {}
2949
2907
  /**
2950
2908
  * @override
2951
2909
  */
@@ -3722,12 +3680,6 @@ shaka.offline.Storage = class {
3722
3680
  * AbortableOperation.
3723
3681
  */
3724
3682
  store(uri, appMetadata, mimeType) {}
3725
- /**
3726
- * Returns true if an asset is currently downloading.
3727
- * @return {boolean}
3728
- * @deprecated
3729
- */
3730
- getStoreInProgress() {}
3731
3683
  /**
3732
3684
  * Removes the given stored content. This will also attempt to release the
3733
3685
  * licenses, if any.
@@ -3815,16 +3767,6 @@ shaka.polyfill.Fullscreen = class {
3815
3767
  */
3816
3768
  static install() {}
3817
3769
  };
3818
- /**
3819
- * @summary A polyfill to patch math round bug on some browsers.
3820
- * @see https://stackoverflow.com/q/12830742
3821
- */
3822
- shaka.polyfill.MathRound = class {
3823
- /**
3824
- * Install the polyfill if needed.
3825
- */
3826
- static install() {}
3827
- };
3828
3770
  /**
3829
3771
  * @summary A polyfill to provide navigator.mediaCapabilities on all browsers.
3830
3772
  * This is necessary for Tizen 3, Xbox One and possibly others we have yet to
@@ -3864,28 +3806,6 @@ shaka.polyfill.Orientation = class {
3864
3806
  */
3865
3807
  static install() {}
3866
3808
  };
3867
- /**
3868
- * @summary A polyfill to implement modern, standardized EME on top of Apple's
3869
- * prefixed EME in Safari.
3870
- */
3871
- shaka.polyfill.PatchedMediaKeysApple = class {
3872
- /**
3873
- * Installs the polyfill if needed.
3874
- */
3875
- static install() {}
3876
- };
3877
- /**
3878
- * @summary A polyfill to implement
3879
- * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015}
3880
- * on top of ms-prefixed
3881
- * {@link https://www.w3.org/TR/2014/WD-encrypted-media-20140218/ EME v20140218}
3882
- */
3883
- shaka.polyfill.PatchedMediaKeysMs = class {
3884
- /**
3885
- * Installs the polyfill if needed.
3886
- */
3887
- static install() {}
3888
- };
3889
3809
  /**
3890
3810
  * @summary A polyfill to stub out
3891
3811
  * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on browsers without
@@ -3987,6 +3907,10 @@ shaka.text.LrcTextParser = class {
3987
3907
  * @override
3988
3908
  */
3989
3909
  parseInit(data) {}
3910
+ /**
3911
+ * @override
3912
+ */
3913
+ setSequenceMode(sequenceMode) {}
3990
3914
  /**
3991
3915
  * @override
3992
3916
  */
@@ -4000,6 +3924,10 @@ shaka.text.TtmlTextParser = class {
4000
3924
  * @override
4001
3925
  */
4002
3926
  parseInit(data) {}
3927
+ /**
3928
+ * @override
3929
+ */
3930
+ setSequenceMode(sequenceMode) {}
4003
3931
  /**
4004
3932
  * @override
4005
3933
  */
@@ -4015,6 +3943,10 @@ shaka.text.Mp4TtmlParser = class {
4015
3943
  * @override
4016
3944
  */
4017
3945
  parseInit(data) {}
3946
+ /**
3947
+ * @override
3948
+ */
3949
+ setSequenceMode(sequenceMode) {}
4018
3950
  /**
4019
3951
  * @override
4020
3952
  */
@@ -4024,10 +3956,16 @@ shaka.text.Mp4TtmlParser = class {
4024
3956
  * @implements {shaka.extern.TextParser}
4025
3957
  */
4026
3958
  shaka.text.VttTextParser = class {
3959
+ /** Constructs a VTT parser. */
3960
+ constructor() {}
4027
3961
  /**
4028
3962
  * @override
4029
3963
  */
4030
3964
  parseInit(data) {}
3965
+ /**
3966
+ * @override
3967
+ */
3968
+ setSequenceMode(sequenceMode) {}
4031
3969
  /**
4032
3970
  * @override
4033
3971
  */
@@ -4043,6 +3981,10 @@ shaka.text.Mp4VttParser = class {
4043
3981
  * @override
4044
3982
  */
4045
3983
  parseInit(data) {}
3984
+ /**
3985
+ * @override
3986
+ */
3987
+ setSequenceMode(sequenceMode) {}
4046
3988
  /**
4047
3989
  * @override
4048
3990
  */
@@ -4056,6 +3998,10 @@ shaka.text.SbvTextParser = class {
4056
3998
  * @override
4057
3999
  */
4058
4000
  parseInit(data) {}
4001
+ /**
4002
+ * @override
4003
+ */
4004
+ setSequenceMode(sequenceMode) {}
4059
4005
  /**
4060
4006
  * @override
4061
4007
  */
@@ -4071,6 +4017,10 @@ shaka.text.SrtTextParser = class {
4071
4017
  * @override
4072
4018
  */
4073
4019
  parseInit(data) {}
4020
+ /**
4021
+ * @override
4022
+ */
4023
+ setSequenceMode(sequenceMode) {}
4074
4024
  /**
4075
4025
  * @override
4076
4026
  */
@@ -4092,11 +4042,61 @@ shaka.text.SsaTextParser = class {
4092
4042
  * @override
4093
4043
  */
4094
4044
  parseInit(data) {}
4045
+ /**
4046
+ * @override
4047
+ */
4048
+ setSequenceMode(sequenceMode) {}
4095
4049
  /**
4096
4050
  * @override
4097
4051
  */
4098
4052
  parseMedia(data, time) {}
4099
4053
  };
4054
+ /**
4055
+ * @summary A set of FairPlay utility functions.
4056
+ */
4057
+ shaka.util.FairPlayUtils = class {
4058
+ /**
4059
+ * Check if FairPlay is supported.
4060
+ * @return {!Promise.<boolean>}
4061
+ */
4062
+ static isFairPlaySupported() {}
4063
+ /**
4064
+ * Using the default method, extract a content ID from the init data. This is
4065
+ * based on the FairPlay example documentation.
4066
+ * @param {!BufferSource} initData
4067
+ * @return {string}
4068
+ */
4069
+ static defaultGetContentId(initData) {}
4070
+ /**
4071
+ * Transforms the init data buffer using the given data. The format is:
4072
+ * <pre>
4073
+ * [4 bytes] initDataSize
4074
+ * [initDataSize bytes] initData
4075
+ * [4 bytes] contentIdSize
4076
+ * [contentIdSize bytes] contentId
4077
+ * [4 bytes] certSize
4078
+ * [certSize bytes] cert
4079
+ * </pre>
4080
+ * @param {!BufferSource} initData
4081
+ * @param {!BufferSource|string} contentId
4082
+ * @param {?BufferSource} cert The server certificate; this will throw if not
4083
+ * provided.
4084
+ * @return {!Uint8Array}
4085
+ */
4086
+ static initDataTransform(initData, contentId, cert) {}
4087
+ /**
4088
+ * SPC FairPlay request.
4089
+ * @param {shaka.net.NetworkingEngine.RequestType} type
4090
+ * @param {shaka.extern.Request} request
4091
+ */
4092
+ static spcFairPlayRequest(type, request) {}
4093
+ /**
4094
+ * Common FairPlay response transform for some DRMs providers.
4095
+ * @param {shaka.net.NetworkingEngine.RequestType} type
4096
+ * @param {shaka.extern.Response} response
4097
+ */
4098
+ static commonFairPlayResponse(type, response) {}
4099
+ };
4100
4100
  /**
4101
4101
  * @implements {shaka.extern.IUIElement}
4102
4102
  * @abstract
@@ -4401,6 +4401,14 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
4401
4401
  anySettingsMenusAreOpen() {}
4402
4402
  /** */
4403
4403
  hideSettingsMenus() {}
4404
+ /**
4405
+ * @return {boolean}
4406
+ */
4407
+ isFullScreenSupported() {}
4408
+ /**
4409
+ * @return {boolean}
4410
+ */
4411
+ isFullScreenEnabled() {}
4404
4412
  /** */
4405
4413
  toggleFullScreen() {}
4406
4414
  /** */