shaka-player 4.3.1 → 4.3.3

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 +13 -0
  2. package/AUTHORS +1 -0
  3. package/CHANGELOG.md +31 -0
  4. package/CONTRIBUTORS +1 -0
  5. package/README.md +1 -1
  6. package/dist/deps.js +1 -1
  7. package/dist/locales.js +30 -30
  8. package/dist/shaka-player.compiled.d.ts +10 -0
  9. package/dist/shaka-player.compiled.debug.d.ts +10 -0
  10. package/dist/shaka-player.compiled.debug.externs.js +12 -0
  11. package/dist/shaka-player.compiled.debug.js +248 -244
  12. package/dist/shaka-player.compiled.debug.map +3 -3
  13. package/dist/shaka-player.compiled.externs.js +12 -0
  14. package/dist/shaka-player.compiled.js +730 -727
  15. package/dist/shaka-player.compiled.map +3 -3
  16. package/dist/shaka-player.ui.d.ts +10 -0
  17. package/dist/shaka-player.ui.debug.d.ts +10 -0
  18. package/dist/shaka-player.ui.debug.externs.js +12 -0
  19. package/dist/shaka-player.ui.debug.js +252 -248
  20. package/dist/shaka-player.ui.debug.map +3 -3
  21. package/dist/shaka-player.ui.externs.js +12 -0
  22. package/dist/shaka-player.ui.js +862 -859
  23. package/dist/shaka-player.ui.map +3 -3
  24. package/lib/ads/ad_manager.js +2 -2
  25. package/lib/hls/hls_parser.js +50 -18
  26. package/lib/media/media_source_engine.js +49 -3
  27. package/lib/media/segment_index.js +5 -10
  28. package/lib/media/segment_reference.js +42 -0
  29. package/lib/media/streaming_engine.js +47 -12
  30. package/lib/player.js +12 -2
  31. package/lib/text/ui_text_displayer.js +24 -4
  32. package/lib/text/web_vtt_generator.js +21 -9
  33. package/lib/util/dom_utils.js +3 -1
  34. package/lib/util/stream_utils.js +6 -0
  35. package/lib/util/timer.js +17 -0
  36. package/package.json +1 -1
  37. package/test/hls/hls_live_unit.js +8 -30
  38. package/test/hls/hls_parser_unit.js +30 -0
  39. package/test/media/segment_index_unit.js +28 -0
  40. package/test/media/streaming_engine_unit.js +91 -119
  41. package/test/player_integration.js +37 -3
  42. package/test/player_unit.js +4 -2
  43. package/test/test/boot.js +29 -11
  44. package/test/test/util/manifest_parser_util.js +4 -3
  45. package/test/test/util/test_scheme.js +2 -2
  46. package/test/text/ui_text_displayer_unit.js +70 -0
  47. package/ui/controls.js +5 -1
@@ -537,4 +537,74 @@ describe('UITextDisplayer', () => {
537
537
  '.shaka-text-region');
538
538
  expect(allRegionElements.length).toBe(1);
539
539
  });
540
+
541
+ it('creates separate regions when dimensions differ but id same', () => {
542
+ const identicalRegionId = 'regionId';
543
+
544
+ const cueRegion1 = new shaka.text.CueRegion();
545
+ const cueRegion2 = new shaka.text.CueRegion();
546
+ cueRegion1.id = identicalRegionId;
547
+ cueRegion2.id = identicalRegionId;
548
+
549
+ cueRegion1.height = 80;
550
+ cueRegion1.heightUnits = shaka.text.CueRegion.units.PERCENTAGE;
551
+ cueRegion1.width = 80;
552
+ cueRegion1.widthUnits = shaka.text.CueRegion.units.PERCENTAGE;
553
+
554
+ cueRegion2.height = 160; // the only difference!
555
+ cueRegion2.heightUnits = shaka.text.CueRegion.units.PERCENTAGE;
556
+ cueRegion2.width = 80;
557
+ cueRegion2.widthUnits = shaka.text.CueRegion.units.PERCENTAGE;
558
+
559
+ cueRegion1.viewportAnchorX = 10;
560
+ cueRegion1.viewportAnchorY = 10;
561
+ cueRegion1.viewportAnchorUnits = shaka.text.CueRegion.units.PERCENTAGE;
562
+
563
+ cueRegion2.viewportAnchorX = 10;
564
+ cueRegion2.viewportAnchorY = 10;
565
+ cueRegion2.viewportAnchorUnits = shaka.text.CueRegion.units.PERCENTAGE;
566
+
567
+ // These all attach to the same region, but only one region element should
568
+ // be created.
569
+ const firstBatchOfCues = [
570
+ new shaka.text.Cue(0, 100, ''),
571
+ new shaka.text.Cue(0, 100, ''),
572
+ new shaka.text.Cue(0, 100, ''),
573
+ ];
574
+ for (const cue of firstBatchOfCues) {
575
+ cue.displayAlign = shaka.text.Cue.displayAlign.CENTER;
576
+ cue.region = cueRegion1;
577
+ }
578
+
579
+ // Another batch for the other region
580
+ const secondBatchOfCues = [
581
+ new shaka.text.Cue(0, 100, ''),
582
+ new shaka.text.Cue(0, 100, ''),
583
+ new shaka.text.Cue(0, 100, ''),
584
+ ];
585
+ for (const cue of secondBatchOfCues) {
586
+ cue.displayAlign = shaka.text.Cue.displayAlign.CENTER;
587
+ cue.region = cueRegion2;
588
+ }
589
+
590
+ textDisplayer.setTextVisibility(true);
591
+ textDisplayer.append(firstBatchOfCues);
592
+ textDisplayer.append(secondBatchOfCues);
593
+ updateCaptions();
594
+
595
+ const textContainer = videoContainer.querySelector('.shaka-text-container');
596
+ const allRegionElements = textContainer.querySelectorAll(
597
+ '.shaka-text-region');
598
+
599
+ // Verify that the nested cues are attached to respective region element.
600
+ expect(allRegionElements.length).toBe(2);
601
+
602
+ const childrenOfOne = Array.from(allRegionElements[0].childNodes).filter(
603
+ (e) => e.nodeType == Node.ELEMENT_NODE);
604
+ expect(childrenOfOne.length).toBe(3);
605
+
606
+ const childrenOfTwo = Array.from(allRegionElements[1].childNodes).filter(
607
+ (e) => e.nodeType == Node.ELEMENT_NODE);
608
+ expect(childrenOfTwo.length).toBe(3);
609
+ });
540
610
  });
package/ui/controls.js CHANGED
@@ -599,7 +599,11 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
599
599
  if (this.config_.forceLandscapeOnFullscreen && screen.orientation) {
600
600
  // Locking to 'landscape' should let it be either
601
601
  // 'landscape-primary' or 'landscape-secondary' as appropriate.
602
- await screen.orientation.lock('landscape');
602
+ // We ignore errors from this specific call, since it creates noise
603
+ // on desktop otherwise.
604
+ try {
605
+ await screen.orientation.lock('landscape');
606
+ } catch (error) {}
603
607
  }
604
608
  } else {
605
609
  const video = /** @type {HTMLVideoElement} */(this.localVideo_);