@@ -1669,6 +1669,34 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
1669
1669
*/
1670
1670
async unloadAndSavePreload (
1671
1671
initializeMediaSource = true , keepAdManager = false ) {
1672
+ const preloadManager = await this . savePreload_ ( ) ;
1673
+ await this . unload ( initializeMediaSource , keepAdManager ) ;
1674
+ return preloadManager ;
1675
+ }
1676
+
1677
+ /**
1678
+ * Detach the player from the current media element, if any, and returns a
1679
+ * PreloadManager that contains the loaded manifest of that asset, if any.
1680
+ * Allows for the asset to be re-loaded by this player faster, in the future.
1681
+ * When in src= mode, this detach but does not make a PreloadManager.
1682
+ * Leaves the player in a state where it cannot play media, until it has been
1683
+ * attached to something else.
1684
+ *
1685
+ * @param {boolean= } keepAdManager
1686
+ * @return {!Promise.<?shaka.media.PreloadManager> }
1687
+ * @export
1688
+ */
1689
+ async detachAndSavePreload ( keepAdManager = false ) {
1690
+ const preloadManager = await this . savePreload_ ( ) ;
1691
+ await this . detach ( keepAdManager ) ;
1692
+ return preloadManager ;
1693
+ }
1694
+
1695
+ /**
1696
+ * @return {!Promise.<?shaka.media.PreloadManager> }
1697
+ * @private
1698
+ */
1699
+ async savePreload_ ( ) {
1672
1700
let preloadManager = null ;
1673
1701
if ( this . manifest_ && this . parser_ && this . parserFactory_ &&
1674
1702
this . assetUri_ ) {
@@ -1703,7 +1731,6 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
1703
1731
this . abrManager_ = null ;
1704
1732
this . abrManagerFactory_ = null ;
1705
1733
}
1706
- await this . unload ( initializeMediaSource , keepAdManager ) ;
1707
1734
return preloadManager ;
1708
1735
}
1709
1736
0 commit comments