<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208151] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208151">208151</a></dd>
<dt>Author</dt> <dd>jer.noble@apple.com</dd>
<dt>Date</dt> <dd>2016-10-31 09:37:27 -0700 (Mon, 31 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Opt-out of AVPlayer automatic sleep disabling
https://bugs.webkit.org/show_bug.cgi?id=163983

Reviewed by Eric Carlson.

In addition to the DisplaySleepDisabler, notify the MediaPlayerPrivateAVFoundationObjC object whether
it should disable display sleep.  Provide all the necessary boilerplate to allow the media player private
to query the HTMLMediaPlayer so that the correct value can be set on AVPlayer upon creation.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateSleepDisabling):
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setShouldDisableSleep):
(WebCore::MediaPlayer::shouldDisableSleep):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerShouldDisableSleep):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setShouldDisableSleep):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):

Drive-by fix: Re-organize the contents of AVFoundationSPI.h so that there's a single top-level
#if USE(APPLE_INTERNAL_SDK) statement, rather than that conditional being sprinkled about the
file.

* platform/spi/mac/AVFoundationSPI.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayercpp">trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayerh">trunk/Source/WebCore/platform/graphics/MediaPlayer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayerPrivateh">trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformspimacAVFoundationSPIh">trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/ChangeLog        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -1,5 +1,37 @@
</span><span class="cx"> 2016-10-31  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Opt-out of AVPlayer automatic sleep disabling
+        https://bugs.webkit.org/show_bug.cgi?id=163983
+
+        Reviewed by Eric Carlson.
+
+        In addition to the DisplaySleepDisabler, notify the MediaPlayerPrivateAVFoundationObjC object whether
+        it should disable display sleep.  Provide all the necessary boilerplate to allow the media player private
+        to query the HTMLMediaPlayer so that the correct value can be set on AVPlayer upon creation.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::updateSleepDisabling):
+        * html/HTMLMediaElement.h:
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::setShouldDisableSleep):
+        (WebCore::MediaPlayer::shouldDisableSleep):
+        * platform/graphics/MediaPlayer.h:
+        (WebCore::MediaPlayerClient::mediaPlayerShouldDisableSleep):
+        * platform/graphics/MediaPlayerPrivate.h:
+        (WebCore::MediaPlayerPrivateInterface::setShouldDisableSleep):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep):
+
+        Drive-by fix: Re-organize the contents of AVFoundationSPI.h so that there's a single top-level
+        #if USE(APPLE_INTERNAL_SDK) statement, rather than that conditional being sprinkled about the
+        file.
+
+        * platform/spi/mac/AVFoundationSPI.h:
+
+2016-10-31  Jer Noble  &lt;jer.noble@apple.com&gt;
+
</ins><span class="cx">         REGRESSION (r206300): LayoutTest media/media-source/media-source-duplicate-seeked.html timing out
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=162496
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -6115,10 +6115,14 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::updateSleepDisabling()
</span><span class="cx"> {
</span><del>-    if (!shouldDisableSleep() &amp;&amp; m_sleepDisabler)
</del><ins>+    bool shouldDisableSleep = this-&gt;shouldDisableSleep();
+    if (!shouldDisableSleep &amp;&amp; m_sleepDisabler)
</ins><span class="cx">         m_sleepDisabler = nullptr;
</span><del>-    else if (shouldDisableSleep() &amp;&amp; !m_sleepDisabler)
</del><ins>+    else if (shouldDisableSleep &amp;&amp; !m_sleepDisabler)
</ins><span class="cx">         m_sleepDisabler = DisplaySleepDisabler::create(&quot;com.apple.WebCore: HTMLMediaElement playback&quot;);
</span><ins>+
+    if (m_player)
+        m_player-&gt;setShouldDisableSleep(shouldDisableSleep);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLMediaElement::shouldDisableSleep() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -635,6 +635,7 @@
</span><span class="cx"> 
</span><span class="cx">     double mediaPlayerRequestedPlaybackRate() const final;
</span><span class="cx">     VideoFullscreenMode mediaPlayerFullscreenMode() const final { return fullscreenMode(); }
</span><ins>+    bool mediaPlayerShouldDisableSleep() const final { return shouldDisableSleep(); }
</ins><span class="cx"> 
</span><span class="cx"> #if USE(GSTREAMER)
</span><span class="cx">     void requestInstallMissingPlugins(const String&amp; details, const String&amp; description, MediaPlayerRequestInstallMissingPluginsCallback&amp;) final;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -1426,6 +1426,17 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void MediaPlayer::setShouldDisableSleep(bool flag)
+{
+    if (m_private)
+        m_private-&gt;setShouldDisableSleep(flag);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool MediaPlayer::shouldDisableSleep() const
+{
+    return m_client.mediaPlayerShouldDisableSleep();
+}
+
+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -269,6 +269,8 @@
</span><span class="cx"> #if USE(GSTREAMER)
</span><span class="cx">     virtual void requestInstallMissingPlugins(const String&amp;, const String&amp;, MediaPlayerRequestInstallMissingPluginsCallback&amp;) { };
</span><span class="cx"> #endif
</span><ins>+
+    virtual bool mediaPlayerShouldDisableSleep() const { return false; }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class MediaPlayerSupportsTypeClient {
</span><span class="lines">@@ -576,6 +578,9 @@
</span><span class="cx"> 
</span><span class="cx">     bool ended() const;
</span><span class="cx"> 
</span><ins>+    void setShouldDisableSleep(bool);
+    bool shouldDisableSleep() const;
+
</ins><span class="cx"> private:
</span><span class="cx">     const MediaPlayerFactory* nextBestMediaEngine(const MediaPlayerFactory*) const;
</span><span class="cx">     void loadWithNextMediaEngine(const MediaPlayerFactory*);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayerPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -271,6 +271,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     virtual void notifyActiveSourceBuffersChanged() { }
</span><ins>+
+    virtual void setShouldDisableSleep(bool) { }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -330,6 +330,8 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;String&gt; preferredAudioCharacteristics() const;
</span><span class="cx"> 
</span><ins>+    void setShouldDisableSleep(bool) override;
+
</ins><span class="cx">     WeakPtrFactory&lt;MediaPlayerPrivateAVFoundationObjC&gt; m_weakPtrFactory;
</span><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;AVURLAsset&gt; m_avAsset;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -1049,6 +1049,10 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+    setShouldDisableSleep(player()-&gt;shouldDisableSleep());
+#endif
+
</ins><span class="cx">     if (m_muted) {
</span><span class="cx">         // Clear m_muted so setMuted doesn't return without doing anything.
</span><span class="cx">         m_muted = false;
</span><span class="lines">@@ -3175,6 +3179,16 @@
</span><span class="cx">     return URL([m_avAsset resolvedURL]);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MediaPlayerPrivateAVFoundationObjC::setShouldDisableSleep(bool flag)
+{
+#if PLATFORM(IOS)
+    if (m_avPlayer &amp;&amp; [m_avPlayer respondsToSelector:@selector(_setPreventsSleepDuringVideoPlayback:)])
+        [m_avPlayer _setPreventsSleepDuringVideoPlayback:flag];
+#else
+    UNUSED_PARAM(flag);
+#endif
+}
+
</ins><span class="cx"> NSArray* assetMetadataKeyNames()
</span><span class="cx"> {
</span><span class="cx">     static NSArray* keys = [[NSArray alloc] initWithObjects:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformspimacAVFoundationSPIh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h (208150 => 208151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h        2016-10-31 16:36:37 UTC (rev 208150)
+++ trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h        2016-10-31 16:37:27 UTC (rev 208151)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2015 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -28,17 +28,27 @@
</span><span class="cx"> #import &quot;SoftLinking.h&quot;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> 
</span><del>-#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
-
</del><span class="cx"> #if USE(APPLE_INTERNAL_SDK)
</span><span class="cx"> 
</span><ins>+#import &lt;AVFoundation/AVAssetCache_Private.h&gt;
</ins><span class="cx"> #import &lt;AVFoundation/AVOutputContext.h&gt;
</span><ins>+#import &lt;AVFoundation/AVPlayerLayer_Private.h&gt;
</ins><span class="cx"> #import &lt;AVFoundation/AVPlayer_Private.h&gt;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS) &amp;&amp; HAVE(AVKIT)
+#import &lt;AVKit/AVPlayerViewController_WebKitOnly.h&gt;
+#endif
+
+#if !PLATFORM(IOS)
+#import &lt;AVFoundation/AVStreamDataParser.h&gt;
+#endif
+
</ins><span class="cx"> #else
</span><span class="cx"> 
</span><span class="cx"> #import &lt;AVFoundation/AVPlayer.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
+
</ins><span class="cx"> NS_ASSUME_NONNULL_BEGIN
</span><span class="cx"> 
</span><span class="cx"> @class AVOutputContext;
</span><span class="lines">@@ -53,13 +63,8 @@
</span><span class="cx"> 
</span><span class="cx"> NS_ASSUME_NONNULL_END
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> #endif // ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx"> 
</span><del>-#if USE(APPLE_INTERNAL_SDK)
-#import &lt;AVFoundation/AVAssetCache_Private.h&gt;
-#else
</del><span class="cx"> #if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MAX_ALLOWED &gt;= 101200) || (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MAX_ALLOWED &gt;= 100000)
</span><span class="cx"> #import &lt;AVFoundation/AVAssetCache.h&gt;
</span><span class="cx"> #else
</span><span class="lines">@@ -76,37 +81,18 @@
</span><span class="cx"> @property (nonatomic, readonly, copy) NSURL *URL;
</span><span class="cx"> @end
</span><span class="cx"> NS_ASSUME_NONNULL_END
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-
-#if HAVE(AVKIT) &amp;&amp; USE(APPLE_INTERNAL_SDK)
-
-#import &lt;AVFoundation/AVPlayerLayer_Private.h&gt;
-#import &lt;AVKit/AVPlayerViewController_WebKitOnly.h&gt;
-
-#else
-
-#import &lt;AVFoundation/AVPlayerLayer.h&gt;
-
-#endif
-
-#if !HAVE(AVKIT) || !USE(APPLE_INTERNAL_SDK)
-
-@interface AVPlayerLayer (AVPlayerLayerPictureInPictureModeSupportPrivate)
-- (void)setPIPModeEnabled:(BOOL)flag;
</del><ins>+@interface AVPlayer (AVPlayerVideoSleepPrevention)
+@property (nonatomic, getter=_preventsSleepDuringVideoPlayback, setter=_setPreventsSleepDuringVideoPlayback:) BOOL preventsSleepDuringVideoPlayback;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> #endif // PLATFORM(IOS)
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
+
</ins><span class="cx"> #pragma mark -
</span><span class="cx"> #pragma mark AVStreamDataParser
</span><del>-#if !PLATFORM(IOS)
-#if USE(APPLE_INTERNAL_SDK)
-#import &lt;AVFoundation/AVStreamDataParser.h&gt;
-#else
</del><span class="cx"> 
</span><span class="cx"> @protocol AVStreamDataParserOutputHandling &lt;NSObject&gt;
</span><span class="cx"> @end
</span><span class="lines">@@ -134,10 +120,7 @@
</span><span class="cx"> - (void)renewExpiringContentKeyResponseDataForTrackID:(CMPersistentTrackID)trackID;
</span><span class="cx"> - (NSData *)streamingContentKeyRequestDataForApp:(NSData *)appIdentifier contentIdentifier:(NSData *)contentIdentifier trackID:(CMPersistentTrackID)trackID options:(NSDictionary *)options error:(NSError **)outError;
</span><span class="cx"> @end
</span><del>-NS_ASSUME_NONNULL_END
-#endif // USE(APPLE_INTERNAL_SDK)
</del><span class="cx"> 
</span><del>-NS_ASSUME_NONNULL_BEGIN
</del><span class="cx"> @interface AVStreamDataParser (AVStreamDataParserPrivate)
</span><span class="cx"> + (NSString *)outputMIMECodecParameterForInputMIMECodecParameter:(NSString *)inputMIMECodecParameter;
</span><span class="cx"> @end
</span><span class="lines">@@ -144,7 +127,16 @@
</span><span class="cx"> NS_ASSUME_NONNULL_END
</span><span class="cx"> 
</span><span class="cx"> #endif // !PLATFORM(IOS)
</span><ins>+#endif // USE(APPLE_INTERNAL_SDK)
</ins><span class="cx"> 
</span><ins>+#if PLATFORM(IOS) &amp;&amp; (!HAVE(AVKIT) || !USE(APPLE_INTERNAL_SDK))
+#import &lt;AVFoundation/AVPlayerLayer.h&gt;
+@interface AVPlayerLayer (AVPlayerLayerPictureInPictureModeSupportPrivate)
+- (void)setPIPModeEnabled:(BOOL)flag;
+@end
+#endif // !HAVE(AVKIT)
+
+
</ins><span class="cx"> // FIXME: Wrap in a #if USE(APPLE_INTERNAL_SDK) once these SPI land
</span><span class="cx"> #import &lt;AVFoundation/AVAsset.h&gt;
</span><span class="cx"> #import &lt;AVFoundation/AVAssetResourceLoader.h&gt;
</span></span></pre>
</div>
</div>

</body>
</html>