shaka-player 3.2.3 → 3.2.4

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 (47) hide show
  1. package/.github/workflows/build_and_test.yaml +73 -0
  2. package/.github/workflows/release.yaml +53 -0
  3. package/CHANGELOG.md +13 -1
  4. package/build/checkversion.py +1 -1
  5. package/build/test.py +6 -0
  6. package/dist/controls.css +1 -1
  7. package/dist/deps.js +3 -3
  8. package/dist/locales.js +30 -30
  9. package/dist/shaka-player.compiled.d.ts +2 -1
  10. package/dist/shaka-player.compiled.debug.d.ts +2 -1
  11. package/dist/shaka-player.compiled.debug.externs.js +17 -12
  12. package/dist/shaka-player.compiled.debug.js +95 -93
  13. package/dist/shaka-player.compiled.debug.map +4 -4
  14. package/dist/shaka-player.compiled.externs.js +17 -12
  15. package/dist/shaka-player.compiled.js +610 -608
  16. package/dist/shaka-player.compiled.map +3 -3
  17. package/dist/shaka-player.ui.d.ts +4 -12
  18. package/dist/shaka-player.ui.debug.d.ts +4 -12
  19. package/dist/shaka-player.ui.debug.externs.js +19 -23
  20. package/dist/shaka-player.ui.debug.js +109 -108
  21. package/dist/shaka-player.ui.debug.map +4 -4
  22. package/dist/shaka-player.ui.externs.js +19 -23
  23. package/dist/shaka-player.ui.js +774 -773
  24. package/dist/shaka-player.ui.map +3 -3
  25. package/karma.conf.js +19 -15
  26. package/lib/ads/ad_manager.js +1 -0
  27. package/lib/cast/cast_proxy.js +3 -0
  28. package/lib/cast/cast_receiver.js +3 -0
  29. package/lib/dash/dash_parser.js +31 -19
  30. package/lib/hls/manifest_text_parser.js +1 -0
  31. package/lib/media/region_observer.js +39 -33
  32. package/lib/media/region_timeline.js +17 -19
  33. package/lib/media/streaming_engine.js +1 -1
  34. package/lib/net/networking_engine.js +4 -0
  35. package/lib/offline/storage.js +8 -9
  36. package/lib/player.js +25 -9
  37. package/lib/util/fake_event_target.js +21 -1
  38. package/package.json +3 -6
  39. package/test/dash/dash_parser_live_unit.js +43 -0
  40. package/test/dash/dash_parser_manifest_unit.js +2 -1
  41. package/test/hls/hls_parser_unit.js +74 -0
  42. package/test/media/region_observer_unit.js +40 -5
  43. package/test/media/region_timeline_unit.js +40 -22
  44. package/test/test/util/util.js +10 -7
  45. package/test/ui/text_displayer_layout_unit.js +8 -7
  46. package/ui/controls.js +3 -0
  47. package/ui/localization.js +12 -36
@@ -0,0 +1,73 @@
1
+ name: Build and Test PR
2
+
3
+ on:
4
+ pull_request: # Trigger for pull requests.
5
+ types: [opened, synchronize, reopened, edited, ready_for_review]
6
+ branches:
7
+ - master
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
+ jobs:
16
+ lint:
17
+ name: Lint
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v2
22
+ with:
23
+ ref: ${{ github.event.inputs.ref || github.ref }}
24
+
25
+ - name: Lint
26
+ run: python build/check.py
27
+
28
+ build_and_test:
29
+ # Don't waste time doing a full matrix of test runs when there was an
30
+ # obvious linter error.
31
+ needs: lint
32
+ strategy:
33
+ matrix:
34
+ os: ["ubuntu-latest", "macos-latest", "windows-latest"]
35
+ browser: ["Chrome", "Firefox", "Edge", "Safari"]
36
+ exclude:
37
+ - os: ubuntu-latest
38
+ browser: Edge
39
+ - os: windows-latest
40
+ browser: Safari
41
+ - os: ubuntu-latest
42
+ browser: Safari
43
+ include:
44
+ # Run Linux browsers with xvfb, so they're in a headless X session.
45
+ - os: ubuntu-latest
46
+ extra_flags: "--use-xvfb"
47
+ # Disable fail-fast so that one matrix-job failing doesn't make the other
48
+ # ones end early.
49
+ fail-fast: false
50
+
51
+ name: Build and test ${{ matrix.os }} ${{ matrix.browser }}
52
+ runs-on: ${{ matrix.os }}
53
+
54
+ steps:
55
+ # Firefox on Ubuntu appears to not have the right things installed in
56
+ # the environment used by GitHub actions, so make sure that ffmpeg is
57
+ # installed. Otherwise, the browser might not support some codecs that the
58
+ # tests assume will be supported.
59
+ - name: Install FFmpeg
60
+ if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Firefox'
61
+ run: sudo apt -y update && sudo apt -y install ffmpeg
62
+
63
+ - name: Checkout code
64
+ uses: actions/checkout@v2
65
+ with:
66
+ ref: ${{ github.event.inputs.ref || github.ref }}
67
+
68
+ - name: Build Player
69
+ run: python build/all.py
70
+
71
+ - name: Test Player
72
+ run: |
73
+ python build/test.py --browsers ${{ matrix.browser }} --reporters spec --spec-hide-passed --drm ${{ matrix.extra_flags }}
@@ -0,0 +1,53 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ - master
5
+ - v[0-9]*
6
+
7
+ name: Release
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 the player version gets updated.
23
+ extra-files: lib/player.js
24
+ # Make sure we create the PR against the correct branch.
25
+ default-branch: ${{ github.ref_name }}
26
+
27
+ # The jobs below are all conditional on a release having been created by
28
+ # someone merging the release PR. They all run in parallel.
29
+
30
+ npm:
31
+ runs-on: ubuntu-latest
32
+ needs: release
33
+ if: ${{ needs.release.outputs.release_created }}
34
+ steps:
35
+ - uses: actions/checkout@v2
36
+ - uses: actions/setup-node@v1
37
+ with:
38
+ node-version: 12
39
+ registry-url: 'https://registry.npmjs.org'
40
+ - run: npm ci
41
+ - run: npm publish
42
+ env:
43
+ NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
44
+ - run: npm pack
45
+ - uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
46
+ with:
47
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
48
+ tag: ${{ needs.release.outputs.tag_name }}
49
+ file: shaka-player-*.tgz
50
+ file_glob: true
51
+ overwrite: true
52
+
53
+ # TODO: Publish to appspot
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # Changelog
2
+
3
+ ## [3.2.4](https://github.com/google/shaka-player/compare/v3.2.3...v3.2.4) (2022-02-17)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Add explicit release() for FakeEventTarget ([#3950](https://github.com/google/shaka-player/issues/3950)) ([6242622](https://github.com/google/shaka-player/commit/62426223272d0955e130e6f67145e3203504379c))
9
+ * Fix download of some HLS assets ([#3934](https://github.com/google/shaka-player/issues/3934)) ([61c0c09](https://github.com/google/shaka-player/commit/61c0c09de96a50133d28a22df632b48b89eb1d13))
10
+ * Fix exception in StreamingEngine for EMSG with HLS ([#3887](https://github.com/google/shaka-player/issues/3887)) ([0c4a79f](https://github.com/google/shaka-player/commit/0c4a79f4354f38dc09957fa89a80a11ec0abc88e)), closes [#3886](https://github.com/google/shaka-player/issues/3886)
11
+ * Fix memory leak in DASH live streams with inband EventStream ([#3957](https://github.com/google/shaka-player/issues/3957)) ([7891a85](https://github.com/google/shaka-player/commit/7891a85485ab05d5de72a496637f3b91653b2c60))
12
+ * **HLS:** skip whitespace in attributes ([#3884](https://github.com/google/shaka-player/issues/3884)) ([4bfc92e](https://github.com/google/shaka-player/commit/4bfc92ee536a57ea2a1e2aa1addfe1d9a1731c88))
13
+
1
14
  ## 3.2.3 (2022-01-28)
2
15
 
3
16
  Bugfixes:
@@ -4621,4 +4634,3 @@ Broken Compatibility:
4621
4634
  ## 0.1b (2014-11-21)
4622
4635
 
4623
4636
  Private beta release.
4624
-
@@ -37,7 +37,7 @@ def changelog_version():
37
37
  """Gets the version of the library from the CHANGELOG."""
38
38
  path = os.path.join(shakaBuildHelpers.get_source_base(), 'CHANGELOG.md')
39
39
  with shakaBuildHelpers.open_file(path, 'r') as f:
40
- match = re.search(r'## (.*) \(', f.read())
40
+ match = re.search(r'^###? \[(.*?)\]\(', f.read(), re.MULTILINE)
41
41
  return match.group(1) if match else ''
42
42
 
43
43
 
package/build/test.py CHANGED
@@ -229,6 +229,11 @@ class Launcher:
229
229
  default=None,
230
230
  const=2,
231
231
  nargs='?')
232
+ running_commands.add_argument(
233
+ '--spec-hide-passed',
234
+ help='If provided, configure the spec reporter to hide passing tests.',
235
+ action='store_true',
236
+ default=False)
232
237
  running_commands.add_argument(
233
238
  '--test-custom-asset',
234
239
  help='Run asset playback tests on a custom manifest URI.',
@@ -358,6 +363,7 @@ class Launcher:
358
363
  'single_run',
359
364
  'uncompiled',
360
365
  'delay_tests',
366
+ 'spec_hide_passed',
361
367
  'test_custom_asset',
362
368
  'test_custom_license_server',
363
369
  'test_timeout',
package/dist/controls.css CHANGED
@@ -27,4 +27,4 @@
27
27
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
28
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
29
  * SOFTWARE.
30
- */.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v94/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
30
+ */.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v99/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
package/dist/deps.js CHANGED
@@ -68,8 +68,8 @@ goog.addDependency('../../../../lib/media/play_rate_controller.js', ['shaka.medi
68
68
  goog.addDependency('../../../../lib/media/playhead.js', ['shaka.media.MediaSourcePlayhead', 'shaka.media.Playhead', 'shaka.media.SrcEqualsPlayhead'], ['goog.asserts', 'shaka.log', 'shaka.media.GapJumpingController', 'shaka.media.StallDetector', 'shaka.media.StallDetector.MediaElementImplementation', 'shaka.media.TimeRangesUtils', 'shaka.media.VideoWrapper', 'shaka.util.EventManager', 'shaka.util.IReleasable', 'shaka.util.MediaReadyState', 'shaka.util.Timer'], {});
69
69
  goog.addDependency('../../../../lib/media/playhead_observer.js', ['shaka.media.IPlayheadObserver', 'shaka.media.PlayheadObserverManager'], ['shaka.util.IReleasable', 'shaka.util.Timer'], {});
70
70
  goog.addDependency('../../../../lib/media/presentation_timeline.js', ['shaka.media.PresentationTimeline'], ['goog.asserts', 'shaka.log', 'shaka.media.SegmentReference'], {});
71
- goog.addDependency('../../../../lib/media/region_observer.js', ['shaka.media.RegionObserver'], ['shaka.media.IPlayheadObserver', 'shaka.media.RegionTimeline'], {});
72
- goog.addDependency('../../../../lib/media/region_timeline.js', ['shaka.media.RegionTimeline'], ['shaka.util.IReleasable', 'shaka.util.Timer'], {});
71
+ goog.addDependency('../../../../lib/media/region_observer.js', ['shaka.media.RegionObserver'], ['shaka.media.IPlayheadObserver', 'shaka.media.RegionTimeline', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget'], {});
72
+ goog.addDependency('../../../../lib/media/region_timeline.js', ['shaka.media.RegionTimeline'], ['shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IReleasable', 'shaka.util.Timer'], {});
73
73
  goog.addDependency('../../../../lib/media/segment_index.js', ['shaka.media.MetaSegmentIndex', 'shaka.media.SegmentIndex', 'shaka.media.SegmentIterator'], ['goog.asserts', 'shaka.Deprecate', 'shaka.media.SegmentReference', 'shaka.util.IReleasable', 'shaka.util.Timer'], {});
74
74
  goog.addDependency('../../../../lib/media/segment_reference.js', ['shaka.media.InitSegmentReference', 'shaka.media.SegmentReference'], ['goog.asserts', 'shaka.util.ArrayUtils'], {});
75
75
  goog.addDependency('../../../../lib/media/stall_detector.js', ['shaka.media.StallDetector', 'shaka.media.StallDetector.Implementation', 'shaka.media.StallDetector.MediaElementImplementation'], ['shaka.media.TimeRangesUtils', 'shaka.util.IReleasable'], {});
@@ -150,7 +150,7 @@ goog.addDependency('../../../../lib/util/error.js', ['shaka.util.Error'], [], {}
150
150
  goog.addDependency('../../../../lib/util/event_manager.js', ['shaka.util.EventManager'], ['goog.asserts', 'shaka.util.IReleasable', 'shaka.util.MultiMap'], {});
151
151
  goog.addDependency('../../../../lib/util/fairplay_utils.js', ['shaka.util.FairPlayUtils'], ['goog.Uri', 'goog.asserts', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.StringUtils'], {});
152
152
  goog.addDependency('../../../../lib/util/fake_event.js', ['shaka.util.FakeEvent'], ['goog.asserts'], {});
153
- goog.addDependency('../../../../lib/util/fake_event_target.js', ['shaka.util.FakeEventTarget'], ['goog.asserts', 'shaka.log', 'shaka.util.FakeEvent', 'shaka.util.MultiMap'], {});
153
+ goog.addDependency('../../../../lib/util/fake_event_target.js', ['shaka.util.FakeEventTarget'], ['goog.asserts', 'shaka.log', 'shaka.util.FakeEvent', 'shaka.util.IReleasable', 'shaka.util.MultiMap'], {});
154
154
  goog.addDependency('../../../../lib/util/functional.js', ['shaka.util.Functional'], ['shaka.Deprecate'], {});
155
155
  goog.addDependency('../../../../lib/util/i_destroyable.js', ['shaka.util.IDestroyable'], [], {});
156
156
  goog.addDependency('../../../../lib/util/i_releasable.js', ['shaka.util.IReleasable'], [], {});
package/dist/locales.js CHANGED
@@ -719,43 +719,43 @@ shaka.ui.Locales.addTo = function(localization) {
719
719
  * @const
720
720
  */
721
721
  shaka.ui.Locales.Ids = {
722
- OFF: 'OFF',
723
- MUTE: 'MUTE',
724
- PLAY: 'PLAY',
725
- REWIND: 'REWIND',
726
- FAST_FORWARD: 'FAST_FORWARD',
727
- UNMUTE: 'UNMUTE',
728
- VOLUME: 'VOLUME',
729
- CAST: 'CAST',
730
- ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
731
- LOOP: 'LOOP',
732
- LANGUAGE: 'LANGUAGE',
722
+ SUBTITLE_FORCED: 'SUBTITLE_FORCED',
733
723
  UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
734
- REPLAY: 'REPLAY',
735
- CAPTIONS: 'CAPTIONS',
736
- AUTO_QUALITY: 'AUTO_QUALITY',
737
- EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
724
+ LANGUAGE: 'LANGUAGE',
725
+ EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
726
+ PAUSE: 'PAUSE',
727
+ PLAYBACK_RATE: 'PLAYBACK_RATE',
728
+ VOLUME: 'VOLUME',
738
729
  EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
739
730
  AD_TIME: 'AD_TIME',
731
+ UNMUTE: 'UNMUTE',
732
+ CAPTIONS: 'CAPTIONS',
733
+ EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
734
+ BACK: 'BACK',
735
+ MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
736
+ AD_DURATION: 'AD_DURATION',
737
+ FULL_SCREEN: 'FULL_SCREEN',
738
+ AD_PROGRESS: 'AD_PROGRESS',
739
+ ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
740
+ MORE_SETTINGS: 'MORE_SETTINGS',
741
+ SKIP_TO_LIVE: 'SKIP_TO_LIVE',
740
742
  LIVE: 'LIVE',
741
- PLAYBACK_RATE: 'PLAYBACK_RATE',
743
+ LOOP: 'LOOP',
744
+ OFF: 'OFF',
745
+ REPLAY: 'REPLAY',
742
746
  SEEK: 'SEEK',
743
- AIRPLAY: 'AIRPLAY',
744
- PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
745
- EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
746
- NOT_APPLICABLE: 'NOT_APPLICABLE',
747
- AD_DURATION: 'AD_DURATION',
748
747
  ON: 'ON',
749
- SKIP_TO_LIVE: 'SKIP_TO_LIVE',
748
+ AIRPLAY: 'AIRPLAY',
750
749
  ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
751
- AD_PROGRESS: 'AD_PROGRESS',
752
- RESOLUTION: 'RESOLUTION',
753
- MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
754
- SUBTITLE_FORCED: 'SUBTITLE_FORCED',
755
- MORE_SETTINGS: 'MORE_SETTINGS',
756
- FULL_SCREEN: 'FULL_SCREEN',
757
- PAUSE: 'PAUSE',
750
+ AUTO_QUALITY: 'AUTO_QUALITY',
758
751
  UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
759
- BACK: 'BACK',
760
752
  SKIP_AD: 'SKIP_AD',
753
+ FAST_FORWARD: 'FAST_FORWARD',
754
+ PLAY: 'PLAY',
755
+ RESOLUTION: 'RESOLUTION',
756
+ CAST: 'CAST',
757
+ REWIND: 'REWIND',
758
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
759
+ MUTE: 'MUTE',
760
+ PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
761
761
  };
@@ -2348,7 +2348,7 @@ declare namespace shaka.util {
2348
2348
  }
2349
2349
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
2350
2350
  declare namespace shaka.util {
2351
- class FakeEventTarget implements EventTarget {
2351
+ class FakeEventTarget implements EventTarget , shaka.util.IReleasable {
2352
2352
  private noStructuralTyping_shaka_util_FakeEventTarget : any;
2353
2353
  /**
2354
2354
  * Add an event listener to this object.
@@ -2368,6 +2368,7 @@ declare namespace shaka.util {
2368
2368
  * @param listener The callback or listener object to invoke.
2369
2369
  */
2370
2370
  listenToAllEvents (listener : EventListener | null | ( (a : Event ) => any ) ) : any ;
2371
+ release ( ) : any ;
2371
2372
  /**
2372
2373
  * Remove an event listener from this object.
2373
2374
  * @param type The event type for which you wish to remove a listener.
@@ -2348,7 +2348,7 @@ declare namespace shaka.util {
2348
2348
  }
2349
2349
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
2350
2350
  declare namespace shaka.util {
2351
- class FakeEventTarget implements EventTarget {
2351
+ class FakeEventTarget implements EventTarget , shaka.util.IReleasable {
2352
2352
  private noStructuralTyping_shaka_util_FakeEventTarget : any;
2353
2353
  /**
2354
2354
  * Add an event listener to this object.
@@ -2368,6 +2368,7 @@ declare namespace shaka.util {
2368
2368
  * @param listener The callback or listener object to invoke.
2369
2369
  */
2370
2370
  listenToAllEvents (listener : EventListener | null | ( (a : Event ) => any ) ) : any ;
2371
+ release ( ) : any ;
2371
2372
  /**
2372
2373
  * Remove an event listener from this object.
2373
2374
  * @param type The event type for which you wish to remove a listener.
@@ -966,11 +966,24 @@ shaka.util.FakeEvent = class {
966
966
  */
967
967
  constructor(type, dict) {}
968
968
  };
969
+ /**
970
+ * An interface to standardize how objects release internal references
971
+ * synchronously. If an object needs to asynchronously release references, then
972
+ * it should use 'shaka.util.IDestroyable'.
973
+ * @interface
974
+ */
975
+ shaka.util.IReleasable = class {
976
+ /**
977
+ * Request that this object release all internal references.
978
+ */
979
+ release() {}
980
+ };
969
981
  /**
970
982
  * @summary A work-alike for EventTarget. Only DOM elements may be true
971
983
  * EventTargets, but this can be used as a base class to provide event dispatch
972
984
  * to non-DOM classes. Only FakeEvents should be dispatched.
973
985
  * @implements {EventTarget}
986
+ * @implements {shaka.util.IReleasable}
974
987
  */
975
988
  shaka.util.FakeEventTarget = class {
976
989
  /** */
@@ -1008,6 +1021,10 @@ shaka.util.FakeEventTarget = class {
1008
1021
  * @override
1009
1022
  */
1010
1023
  dispatchEvent(event) {}
1024
+ /**
1025
+ * @override
1026
+ */
1027
+ release() {}
1011
1028
  };
1012
1029
  /**
1013
1030
  * These are the listener types defined in the closure extern for EventTarget.
@@ -1165,18 +1182,6 @@ shaka.net.NetworkingEngine.PluginPriority = {
1165
1182
  'PREFERRED': 2,
1166
1183
  'APPLICATION': 3
1167
1184
  };
1168
- /**
1169
- * An interface to standardize how objects release internal references
1170
- * synchronously. If an object needs to asynchronously release references, then
1171
- * it should use 'shaka.util.IDestroyable'.
1172
- * @interface
1173
- */
1174
- shaka.util.IReleasable = class {
1175
- /**
1176
- * Request that this object release all internal references.
1177
- */
1178
- release() {}
1179
- };
1180
1185
  /**
1181
1186
  * @summary
1182
1187
  * An EventManager maintains a collection of "event