shaka-player 3.3.5 → 4.0.2

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