<!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>[182117] 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/182117">182117</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2015-03-28 19:07:43 -0700 (Sat, 28 Mar 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Mac] Update for output device API change
https://bugs.webkit.org/show_bug.cgi?id=143187

Reviewed by Zalan Bujtas.

The API used for output device is being deprecated, update to the replacement.

* WebCore.xcodeproj/project.pbxproj: Add SPI headers.

* platform/graphics/MediaPlaybackTarget.h:
(WebCore::MediaPlaybackTarget::MediaPlaybackTarget): Update for API change.
(WebCore::MediaPlaybackTarget::setDevicePickerContext):
(WebCore::MediaPlaybackTarget::devicePickerContext):

* platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
(WebCore::MediaPlaybackTarget::encode):
(WebCore::MediaPlaybackTarget::decode):

* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
(WebCore::MediaPlaybackTargetPickerMac::MediaPlaybackTargetPickerMac):
(WebCore::MediaPlaybackTargetPickerMac::~MediaPlaybackTargetPickerMac):
(WebCore::MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired):
(WebCore::MediaPlaybackTargetPickerMac::devicePicker):
(WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange):
(WebCore::MediaPlaybackTargetPickerMac::stopMonitoringPlaybackTargets):
(-[WebAVOutputDeviceMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]):
(-[WebAVOutputDevicePickerMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]): Deleted.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):

* platform/spi/cocoa/AVKitSPI.h: Copied from Source/WebCore/platform/spi/ios/AVKitSPI.h. Moved
    from ios directory, added Mac includes and prototypes.
* platform/spi/ios/AVKitSPI.h: Removed.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlaybackTargeth">trunk/Source/WebCore/platform/graphics/MediaPlaybackTarget.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlaybackTargetMacmm">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMach">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMacmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm</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>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformspicocoaAVKitSPIh">trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h</a></li>
<li><a href="#trunkSourceWebCoreplatformspimacAVFoundationSPIh">trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformspiiosAVKitSPIh">trunk/Source/WebCore/platform/spi/ios/AVKitSPI.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/ChangeLog        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -1,3 +1,47 @@
</span><ins>+2015-03-28  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] Update for output device API change
+        https://bugs.webkit.org/show_bug.cgi?id=143187
+
+        Reviewed by Zalan Bujtas.
+
+        The API used for output device is being deprecated, update to the replacement.
+
+        * WebCore.xcodeproj/project.pbxproj: Add SPI headers.
+
+        * platform/graphics/MediaPlaybackTarget.h:
+        (WebCore::MediaPlaybackTarget::MediaPlaybackTarget): Update for API change.
+        (WebCore::MediaPlaybackTarget::setDevicePickerContext):
+        (WebCore::MediaPlaybackTarget::devicePickerContext):
+
+        * platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
+        (WebCore::MediaPlaybackTarget::encode):
+        (WebCore::MediaPlaybackTarget::decode):
+
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
+        (WebCore::MediaPlaybackTargetPickerMac::MediaPlaybackTargetPickerMac):
+        (WebCore::MediaPlaybackTargetPickerMac::~MediaPlaybackTargetPickerMac):
+        (WebCore::MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired):
+        (WebCore::MediaPlaybackTargetPickerMac::devicePicker):
+        (WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange):
+        (WebCore::MediaPlaybackTargetPickerMac::stopMonitoringPlaybackTargets):
+        (-[WebAVOutputDeviceMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]):
+        (-[WebAVOutputDevicePickerMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]): Deleted.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):
+        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
+
+        * platform/spi/cocoa/AVKitSPI.h: Copied from Source/WebCore/platform/spi/ios/AVKitSPI.h. Moved
+            from ios directory, added Mac includes and prototypes.
+        * platform/spi/ios/AVKitSPI.h: Removed.
+
+        * platform/spi/mac/AVFoundationSPI.h: Added.
+
</ins><span class="cx"> 2015-03-28  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Optimize RenderLayer::intersectsDamageRect() slightly
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -348,6 +348,8 @@
</span><span class="cx">                 07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */; };
</span><span class="cx">                 07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */; };
</span><span class="cx">                 07EDC3EE1AACB75D00983EB5 /* MediaSessionManagerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */; };
</span><ins>+                07F0B97A1AC5DB3300E535D9 /* AVKitSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F0B9791AC5DB3300E535D9 /* AVKitSPI.h */; };
+                07F0B97C1AC5DB4600E535D9 /* AVFoundationSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */; };
</ins><span class="cx">                 07F944161864D046005D31CB /* MediaSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAE8C081746B95700532D78 /* MediaSessionManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */; };
</span><span class="cx">                 07FE99DC18807A7D00256648 /* HTMLMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */; };
</span><span class="lines">@@ -5844,7 +5846,6 @@
</span><span class="cx">                 CE1252391A166FA000864480 /* QuickLookSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1252381A166FA000864480 /* QuickLookSPI.h */; };
</span><span class="cx">                 CE12523B1A16711000864480 /* NSFileManagerSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE12523A1A16711000864480 /* NSFileManagerSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 CE12523D1A1676CD00864480 /* QuartzCoreSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE12523C1A1676CD00864480 /* QuartzCoreSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                CE12523F1A16AE1200864480 /* AVKitSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE12523E1A16AE1200864480 /* AVKitSPI.h */; };
</del><span class="cx">                 CE1252411A16B1B600864480 /* MediaPlayerSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1252401A16B1B600864480 /* MediaPlayerSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 CE1252431A16C01A00864480 /* CoreUISPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1252421A16C01A00864480 /* CoreUISPI.h */; };
</span><span class="cx">                 CE1252451A16C22500864480 /* DynamicLinkerSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1252441A16C22500864480 /* DynamicLinkerSPI.h */; };
</span><span class="lines">@@ -7374,6 +7375,8 @@
</span><span class="cx">                 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandMetadataTextTrackPrivateAVF.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandMetadataTextTrackPrivateAVF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07EDC3ED1AACB75D00983EB5 /* MediaSessionManagerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaSessionManagerMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                07F0B9791AC5DB3300E535D9 /* AVKitSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVKitSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVFoundationSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataCueCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaSession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07FE99DB18807A7D00256648 /* HTMLMediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -13413,7 +13416,6 @@
</span><span class="cx">                 CE1252381A166FA000864480 /* QuickLookSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickLookSPI.h; path = ios/QuickLookSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CE12523A1A16711000864480 /* NSFileManagerSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSFileManagerSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CE12523C1A1676CD00864480 /* QuartzCoreSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuartzCoreSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                CE12523E1A16AE1200864480 /* AVKitSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AVKitSPI.h; path = ios/AVKitSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 CE1252401A16B1B600864480 /* MediaPlayerSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlayerSPI.h; path = ios/MediaPlayerSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CE1252421A16C01A00864480 /* CoreUISPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CoreUISPI.h; path = ios/CoreUISPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 CE1252441A16C22500864480 /* DynamicLinkerSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLinkerSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -16440,6 +16442,7 @@
</span><span class="cx">                 653EF83719A043AE0052202C /* cocoa */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                07F0B9791AC5DB3300E535D9 /* AVKitSPI.h */,
</ins><span class="cx">                                 CD4097FF1A8C855F004C65E9 /* CFNSURLConnectionSPI.h */,
</span><span class="cx">                                 1C5E980F1A02CEFA002DB55F /* CoreTextSPI.h */,
</span><span class="cx">                                 CE12524A1A16C79B00864480 /* DispatchSPI.h */,
</span><span class="lines">@@ -17802,6 +17805,7 @@
</span><span class="cx">                 9348428019F1A9190009D5AE /* mac */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                07F0B97B1AC5DB4600E535D9 /* AVFoundationSPI.h */,
</ins><span class="cx">                                 2D59F1BE1A0044C6001F3D29 /* DataDetectorsSPI.h */,
</span><span class="cx">                                 2D413F601A187A3F0041A521 /* LookupSPI.h */,
</span><span class="cx">                                 1C6466271A12C3F90094603C /* NSFontSPI.h */,
</span><span class="lines">@@ -18706,7 +18710,6 @@
</span><span class="cx">                 A172182419DE182B00464D17 /* ios */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                CE12523E1A16AE1200864480 /* AVKitSPI.h */,
</del><span class="cx">                                 CE1252421A16C01A00864480 /* CoreUISPI.h */,
</span><span class="cx">                                 CEC337AE1A46086D009B8523 /* GraphicsServicesSPI.h */,
</span><span class="cx">                                 CE1252481A16C3BC00864480 /* MobileGestaltSPI.h */,
</span><span class="lines">@@ -23723,7 +23726,6 @@
</span><span class="cx">                                 A8CFF04E0A154F09000A4234 /* AutoTableLayout.h in Headers */,
</span><span class="cx">                                 070363E0181A1CDC00C074A5 /* AVAudioCaptureSource.h in Headers */,
</span><span class="cx">                                 070363E2181A1CDC00C074A5 /* AVCaptureDeviceManager.h in Headers */,
</span><del>-                                CE12523F1A16AE1200864480 /* AVKitSPI.h in Headers */,
</del><span class="cx">                                 070363E4181A1CDC00C074A5 /* AVMediaCaptureSource.h in Headers */,
</span><span class="cx">                                 CD336F6217F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h in Headers */,
</span><span class="cx">                                 070363E6181A1CDC00C074A5 /* AVVideoCaptureSource.h in Headers */,
</span><span class="lines">@@ -25014,6 +25016,7 @@
</span><span class="cx">                                 6FA4454E898F2FC168BC38C1 /* JSBeforeUnloadEvent.h in Headers */,
</span><span class="cx">                                 FDF09DC91399B62200688E5B /* JSBiquadFilterNode.h in Headers */,
</span><span class="cx">                                 2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */,
</span><ins>+                                07F0B97C1AC5DB4600E535D9 /* AVFoundationSPI.h in Headers */,
</ins><span class="cx">                                 1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */,
</span><span class="cx">                                 1A37636C1A2E68BB009A7EE2 /* StorageNamespaceProvider.h in Headers */,
</span><span class="cx">                                 65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */,
</span><span class="lines">@@ -25238,6 +25241,7 @@
</span><span class="cx">                                 07C59B7217F79C7C000FBCBB /* JSMediaSourceStates.h in Headers */,
</span><span class="cx">                                 07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */,
</span><span class="cx">                                 07277E4F17D018CC0015534D /* JSMediaStreamAudioDestinationNode.h in Headers */,
</span><ins>+                                07F0B97A1AC5DB3300E535D9 /* AVKitSPI.h in Headers */,
</ins><span class="cx">                                 FDBD480D159BC6870093EB4F /* JSMediaStreamAudioSourceNode.h in Headers */,
</span><span class="cx">                                 0705851317FA7107005F2BCB /* JSMediaStreamCapabilities.h in Headers */,
</span><span class="cx">                                 07277E5117D018CC0015534D /* JSMediaStreamEvent.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlaybackTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlaybackTarget.h (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTarget.h        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTarget.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> OBJC_CLASS NSKeyedArchiver;
</span><span class="cx"> OBJC_CLASS NSKeyedUnarchiver;
</span><del>-OBJC_CLASS AVOutputDevicePickerContext;
</del><ins>+OBJC_CLASS AVOutputContext;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -43,18 +43,18 @@
</span><span class="cx">     virtual ~MediaPlaybackTarget() { }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MediaPlaybackTarget(AVOutputDevicePickerContext *context = nil) { m_devicePickerContext = context; }
</del><ins>+    WEBCORE_EXPORT MediaPlaybackTarget(AVOutputContext *context = nil) { m_devicePickerContext = context; }
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void encode(NSKeyedArchiver *) const;
</span><span class="cx">     WEBCORE_EXPORT static bool decode(NSKeyedUnarchiver *, MediaPlaybackTarget&amp;);
</span><span class="cx"> 
</span><del>-    void setDevicePickerContext(AVOutputDevicePickerContext *context) { m_devicePickerContext = context; }
-    AVOutputDevicePickerContext *devicePickerContext() const { return m_devicePickerContext.get(); }
</del><ins>+    void setDevicePickerContext(AVOutputContext *context) { m_devicePickerContext = context; }
+    AVOutputContext *devicePickerContext() const { return m_devicePickerContext.get(); }
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    RetainPtr&lt;AVOutputDevicePickerContext&gt; m_devicePickerContext;
</del><ins>+    RetainPtr&lt;AVOutputContext&gt; m_devicePickerContext;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlaybackTargetMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlaybackTargetMac.mm        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -28,15 +28,12 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx"> 
</span><del>-#import &lt;AVFoundation/AVOutputDevicePickerContext.h&gt;
</del><span class="cx"> #import &lt;WebCore/MediaPlaybackTarget.h&gt;
</span><span class="cx"> #import &lt;WebCore/SoftLinking.h&gt;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> 
</span><del>-typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
-
</del><span class="cx"> SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
</span><del>-SOFT_LINK_CLASS(AVFoundation, AVOutputDevicePickerContext)
</del><ins>+SOFT_LINK_CLASS(AVFoundation, AVOutputContext)
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -44,26 +41,26 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaPlaybackTarget::encode(NSKeyedArchiver *archiver) const
</span><span class="cx"> {
</span><del>-    if ([getAVOutputDevicePickerContextClass() conformsToProtocol:@protocol(NSSecureCoding)])
</del><ins>+    if ([getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)])
</ins><span class="cx">         [archiver encodeObject:m_devicePickerContext.get() forKey:deviceContextKey];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlaybackTarget::decode(NSKeyedUnarchiver *unarchiver, MediaPlaybackTarget&amp; playbackTarget)
</span><span class="cx"> {
</span><del>-    if (![getAVOutputDevicePickerContextClass() conformsToProtocol:@protocol(NSSecureCoding)])
</del><ins>+    if (![getAVOutputContextClass() conformsToProtocol:@protocol(NSSecureCoding)])
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    AVOutputDevicePickerContext *context = nil;
-
</del><ins>+    AVOutputContext *context = nil;
</ins><span class="cx">     @try {
</span><del>-        context = [unarchiver decodeObjectOfClass:getAVOutputDevicePickerContextClass() forKey:deviceContextKey];
</del><ins>+        context = [unarchiver decodeObjectOfClass:getAVOutputContextClass() forKey:deviceContextKey];
</ins><span class="cx">     } @catch (NSException *exception) {
</span><del>-        LOG_ERROR(&quot;The target picker being decoded is not a AVOutputDevicePickerContext.&quot;);
</del><ins>+        LOG_ERROR(&quot;The target picker being decoded is not a AVOutputContext.&quot;);
+        return false;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     playbackTarget.m_devicePickerContext = context;
</span><span class="cx"> 
</span><del>-    return context;
</del><ins>+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</span><span class="cx"> 
</span><del>-OBJC_CLASS AVOutputDevicePickerMenuController;
-OBJC_CLASS WebAVOutputDevicePickerMenuControllerHelper;
</del><ins>+OBJC_CLASS AVOutputDeviceMenuController;
+OBJC_CLASS WebAVOutputDeviceMenuControllerHelper;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -54,11 +54,11 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&amp;);
</span><span class="cx"> 
</span><del>-    AVOutputDevicePickerMenuController *devicePicker();
</del><ins>+    AVOutputDeviceMenuController *devicePicker();
</ins><span class="cx">     void outputeDeviceAvailabilityChangedTimerFired();
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;AVOutputDevicePickerMenuController&gt; m_devicePickerMenuController;
-    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; m_devicePickerMenuControllerDelegate;
</del><ins>+    RetainPtr&lt;AVOutputDeviceMenuController&gt; m_outputDeviceMenuController;
+    RetainPtr&lt;WebAVOutputDeviceMenuControllerHelper&gt; m_outputDeviceMenuControllerDelegate;
</ins><span class="cx">     RunLoop::Timer&lt;MediaPlaybackTargetPickerMac&gt; m_deviceChangeTimer;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -28,36 +28,29 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx"> 
</span><ins>+#import &lt;WebCore/AVFoundationSPI.h&gt;
+#import &lt;WebCore/AVKitSPI.h&gt;
</ins><span class="cx"> #import &lt;WebCore/FloatRect.h&gt;
</span><span class="cx"> #import &lt;WebCore/MediaPlaybackTarget.h&gt;
</span><span class="cx"> #import &lt;WebCore/SoftLinking.h&gt;
</span><span class="cx"> #import &lt;objc/runtime.h&gt;
</span><span class="cx"> #import &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><del>-@class AVOutputDevicePickerContext;
-@interface AVOutputDevicePickerMenuController : NSObject
-@property (readonly) AVOutputDevicePickerContext * outputDevicePickerContext;
-@property (readonly, getter = isExternalOutputDeviceAvailable) BOOL externalOutputDeviceAvailable;
-- (instancetype)initWithOutputDevicePickerContext:(AVOutputDevicePickerContext *)outputDevicePickerContext NS_DESIGNATED_INITIALIZER;
-- (void)showMenuForRect:(NSRect)screenRect appearanceName:(NSString *)appearanceName;
-@end
</del><ins>+typedef AVOutputContext AVOutputContextType;
+typedef AVOutputDeviceMenuController AVOutputDeviceMenuControllerType;
</ins><span class="cx"> 
</span><del>-typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
-typedef AVOutputDevicePickerMenuController AVOutputDevicePickerMenuControllerType;
-
</del><span class="cx"> SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
</span><span class="cx"> SOFT_LINK_FRAMEWORK_OPTIONAL(AVKit)
</span><span class="cx"> 
</span><del>-SOFT_LINK_CLASS(AVFoundation, AVOutputDevicePickerContext)
-SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerMenuController)
-SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerDelegate)
</del><ins>+SOFT_LINK_CLASS(AVFoundation, AVOutputContext)
+SOFT_LINK_CLASS(AVKit, AVOutputDeviceMenuController)
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="cx"> static NSString *externalOutputDeviceAvailableKeyName = @&quot;externalOutputDeviceAvailable&quot;;
</span><span class="cx"> static NSString *externalOutputDevicePickedKeyName = @&quot;externalOutputDevicePicked&quot;;
</span><span class="cx"> 
</span><del>-@interface WebAVOutputDevicePickerMenuControllerHelper : NSObject {
</del><ins>+@interface WebAVOutputDeviceMenuControllerHelper : NSObject {
</ins><span class="cx">     MediaPlaybackTargetPickerMac* m_callback;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -75,7 +68,7 @@
</span><span class="cx"> 
</span><span class="cx"> MediaPlaybackTargetPickerMac::MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&amp; client)
</span><span class="cx">     : MediaPlaybackTargetPicker(client)
</span><del>-    , m_devicePickerMenuControllerDelegate(adoptNS([[WebAVOutputDevicePickerMenuControllerHelper alloc] initWithCallback:this]))
</del><ins>+    , m_outputDeviceMenuControllerDelegate(adoptNS([[WebAVOutputDeviceMenuControllerHelper alloc] initWithCallback:this]))
</ins><span class="cx">     , m_deviceChangeTimer(RunLoop::main(), this, &amp;MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -83,18 +76,13 @@
</span><span class="cx"> MediaPlaybackTargetPickerMac::~MediaPlaybackTargetPickerMac()
</span><span class="cx"> {
</span><span class="cx">     m_deviceChangeTimer.stop();
</span><del>-    [m_devicePickerMenuControllerDelegate clearCallback];
-
-    if (m_devicePickerMenuController) {
-        [m_devicePickerMenuController removeObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName];
-        [m_devicePickerMenuController removeObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName];
-        m_devicePickerMenuController = nil;
-    }
</del><ins>+    [m_outputDeviceMenuControllerDelegate clearCallback];
+    stopMonitoringPlaybackTargets();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired()
</span><span class="cx"> {
</span><del>-    if (!m_devicePickerMenuController || !m_client)
</del><ins>+    if (!m_outputDeviceMenuController || !m_client)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_client-&gt;externalOutputDeviceAvailableDidChange(devicePicker().externalOutputDeviceAvailable);
</span><span class="lines">@@ -109,20 +97,23 @@
</span><span class="cx">     m_deviceChangeTimer.startOneShot(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-AVOutputDevicePickerMenuControllerType *MediaPlaybackTargetPickerMac::devicePicker()
</del><ins>+AVOutputDeviceMenuControllerType *MediaPlaybackTargetPickerMac::devicePicker()
</ins><span class="cx"> {
</span><del>-    if (!m_devicePickerMenuController) {
-        RetainPtr&lt;AVOutputDevicePickerContextType&gt; context = adoptNS([[getAVOutputDevicePickerContextClass() alloc] init]);
-        m_devicePickerMenuController = adoptNS([[getAVOutputDevicePickerMenuControllerClass() alloc] initWithOutputDevicePickerContext:context.get()]);
</del><ins>+    if (!getAVOutputDeviceMenuControllerClass())
+        return nullptr;
</ins><span class="cx"> 
</span><del>-        [m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nil];
-        [m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nil];
</del><ins>+    if (!m_outputDeviceMenuController) {
+        RetainPtr&lt;AVOutputContextType&gt; context = adoptNS([[getAVOutputContextClass() alloc] init]);
+        m_outputDeviceMenuController = adoptNS([[getAVOutputDeviceMenuControllerClass() alloc] initWithOutputContext:context.get()]);
</ins><span class="cx"> 
</span><del>-        if (m_devicePickerMenuController.get().externalOutputDeviceAvailable)
</del><ins>+        [m_outputDeviceMenuController.get() addObserver:m_outputDeviceMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nullptr];
+        [m_outputDeviceMenuController.get() addObserver:m_outputDeviceMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nullptr];
+
+        if (m_outputDeviceMenuController.get().externalOutputDeviceAvailable)
</ins><span class="cx">             availableDevicesDidChange();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return m_devicePickerMenuController.get();
</del><ins>+    return m_outputDeviceMenuController.get();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlaybackTargetPickerMac::showPlaybackTargetPicker(const FloatRect&amp; location, bool)
</span><span class="lines">@@ -138,7 +129,14 @@
</span><span class="cx">     if (!m_client)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_client-&gt;didChoosePlaybackTarget(MediaPlaybackTarget([devicePicker() outputDevicePickerContext]));
</del><ins>+    AVOutputDeviceMenuControllerType* devicePicker = this-&gt;devicePicker();
+    if (!devicePicker)
+        return;
+
+    if (devicePicker.isExternalOutputDevicePicked)
+        m_client-&gt;didChoosePlaybackTarget(WebCore::MediaPlaybackTarget([devicePicker outputContext]));
+    else
+        m_client-&gt;didChoosePlaybackTarget(WebCore::MediaPlaybackTarget(nil));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlaybackTargetPickerMac::startingMonitoringPlaybackTargets()
</span><span class="lines">@@ -148,11 +146,16 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaPlaybackTargetPickerMac::stopMonitoringPlaybackTargets()
</span><span class="cx"> {
</span><ins>+    if (m_outputDeviceMenuController) {
+        [m_outputDeviceMenuController removeObserver:m_outputDeviceMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName];
+        [m_outputDeviceMenuController removeObserver:m_outputDeviceMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName];
+        m_outputDeviceMenuController = nullptr;
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-@implementation WebAVOutputDevicePickerMenuControllerHelper
</del><ins>+@implementation WebAVOutputDeviceMenuControllerHelper
</ins><span class="cx"> - (instancetype)initWithCallback:(MediaPlaybackTargetPickerMac*)callback
</span><span class="cx"> {
</span><span class="cx">     if (!(self = [super init]))
</span><span class="lines">@@ -180,7 +183,7 @@
</span><span class="cx">     if (![keyPath isEqualToString:externalOutputDeviceAvailableKeyName] &amp;&amp; ![keyPath isEqualToString:externalOutputDevicePickedKeyName])
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; strongSelf = self;
</del><ins>+    RetainPtr&lt;WebAVOutputDeviceMenuControllerHelper&gt; strongSelf = self;
</ins><span class="cx">     RetainPtr&lt;NSString&gt; strongKeyPath = keyPath;
</span><span class="cx">     callOnMainThread([strongSelf, strongKeyPath] {
</span><span class="cx">         MediaPlaybackTargetPickerMac* callback = strongSelf-&gt;m_callback;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> OBJC_CLASS AVAssetImageGenerator;
</span><span class="cx"> OBJC_CLASS AVAssetResourceLoadingRequest;
</span><span class="cx"> OBJC_CLASS AVMediaSelectionGroup;
</span><del>-OBJC_CLASS AVOutputDevicePickerContext;
</del><ins>+OBJC_CLASS AVOutputContext;
</ins><span class="cx"> OBJC_CLASS AVPlayer;
</span><span class="cx"> OBJC_CLASS AVPlayerItem;
</span><span class="cx"> OBJC_CLASS AVPlayerItemLegibleOutput;
</span><span class="lines">@@ -351,7 +351,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-    RetainPtr&lt;AVOutputDevicePickerContext&gt; m_outputDevicePickerContext;
</del><ins>+    RetainPtr&lt;AVOutputContext&gt; m_outputContext;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     mutable RetainPtr&lt;NSArray&gt; m_cachedSeekableRanges;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
</span><span class="cx"> #import &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</span><span class="cx"> 
</span><ins>+#import &quot;AVFoundationSPI.h&quot;
</ins><span class="cx"> #import &quot;AVTrackPrivateAVFObjCImpl.h&quot;
</span><span class="cx"> #import &quot;AudioSourceProviderAVFObjC.h&quot;
</span><span class="cx"> #import &quot;AudioTrackPrivateAVFObjC.h&quot;
</span><span class="lines">@@ -136,14 +137,6 @@
</span><span class="cx"> @property (nonatomic, readonly) NSURL *resolvedURL;
</span><span class="cx"> @end
</span><span class="cx"> 
</span><del>-#if PLATFORM(MAC) &amp;&amp; ENABLE(WIRELESS_PLAYBACK_TARGET)
-typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
-
-@interface AVPlayer (WebKitExtensions)
-@property (nonatomic) AVOutputDevicePickerContext *outputDevicePickerContext;
-@end
-#endif
-
</del><span class="cx"> typedef AVPlayer AVPlayerType;
</span><span class="cx"> typedef AVPlayerItem AVPlayerItemType;
</span><span class="cx"> typedef AVPlayerItemLegibleOutput AVPlayerItemLegibleOutputType;
</span><span class="lines">@@ -555,7 +548,7 @@
</span><span class="cx">         [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@&quot;rate&quot;];
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="cx">         [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@&quot;externalPlaybackActive&quot;];
</span><del>-        [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@&quot;outputDevicePickerContext&quot;];
</del><ins>+        [m_avPlayer.get() removeObserver:m_objcObserver.get() forKeyPath:@&quot;outputContext&quot;];
</ins><span class="cx"> #endif
</span><span class="cx">         m_avPlayer = nil;
</span><span class="cx">     }
</span><span class="lines">@@ -937,7 +930,7 @@
</span><span class="cx">     [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;rate&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="cx">     [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;externalPlaybackActive&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
</span><del>-    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;outputDevicePickerContext&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
</del><ins>+    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@&quot;outputContext&quot; options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="lines">@@ -953,8 +946,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    if (m_outputDevicePickerContext)
-        m_avPlayer.get().outputDevicePickerContext = m_outputDevicePickerContext.get();
</del><ins>+    if (m_outputContext)
+        m_avPlayer.get().outputContext = m_outputContext.get();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     if (player()-&gt;client().mediaPlayerIsVideo())
</span><span class="lines">@@ -2769,14 +2762,14 @@
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(const MediaPlaybackTarget&amp; target)
</span><span class="cx"> {
</span><del>-    m_outputDevicePickerContext = target.devicePickerContext();
</del><ins>+    m_outputContext = target.devicePickerContext();
</ins><span class="cx"> 
</span><del>-    LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(%p) - target = %p&quot;, this, m_outputDevicePickerContext.get());
</del><ins>+    LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget(%p) - target = %p&quot;, this, m_outputContext.get());
</ins><span class="cx"> 
</span><span class="cx">     if (!m_avPlayer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_avPlayer.get().outputDevicePickerContext = m_outputDevicePickerContext.get();
</del><ins>+    m_avPlayer.get().outputContext = m_outputContext.get();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -3209,7 +3202,7 @@
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="cx">         else if ([keyPath isEqualToString:@&quot;externalPlaybackActive&quot;])
</span><span class="cx">             function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::playbackTargetIsWirelessDidChange, m_callback);
</span><del>-        else if ([keyPath isEqualToString:@&quot;outputDevicePickerContext&quot;])
</del><ins>+        else if ([keyPath isEqualToString:@&quot;outputContext&quot;])
</ins><span class="cx">             function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::playbackTargetIsWirelessDidChange, m_callback);
</span><span class="cx"> #endif
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformspicocoaAVKitSPIhfromrev182116trunkSourceWebCoreplatformspiiosAVKitSPIh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h (from rev 182116, trunk/Source/WebCore/platform/spi/ios/AVKitSPI.h) (0 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h                                (rev 0)
+++ trunk/Source/WebCore/platform/spi/cocoa/AVKitSPI.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -0,0 +1,146 @@
</span><ins>+/*
+ * Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;SoftLinking.h&quot;
+#import &lt;objc/runtime.h&gt;
+
+#if PLATFORM(IOS)
+#import &lt;AVKit/AVKit.h&gt;
+#import &lt;QuartzCore/QuartzCore.h&gt;
+#import &lt;UIKit/UIKit.h&gt;
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import &lt;AVKit/AVPlayerController.h&gt;
+#import &lt;AVKit/AVPlayerViewController_Private.h&gt;
+#import &lt;AVKit/AVPlayerViewController_WebKitOnly.h&gt;
+#import &lt;AVKit/AVVideoLayer.h&gt;
+
+#else
+
+@interface AVPlayerController : UIResponder
+@end
+
+@interface AVPlayerController (Details)
+typedef NS_ENUM(NSInteger, AVPlayerControllerStatus) {
+    AVPlayerControllerStatusReadyToPlay = 2,
+};
+
+typedef NS_ENUM(NSInteger, AVPlayerControllerExternalPlaybackType) {
+    AVPlayerControllerExternalPlaybackTypeNone = 0,
+    AVPlayerControllerExternalPlaybackTypeAirPlay = 1,
+    AVPlayerControllerExternalPlaybackTypeTVOut = 2,
+};
+
+@property (NS_NONATOMIC_IOSONLY, readonly) AVPlayerControllerStatus status;
+@end
+
+@protocol AVVideoLayer
+typedef NS_ENUM(NSInteger, AVVideoLayerGravity) {
+    AVVideoLayerGravityInvalid = 0,
+    AVVideoLayerGravityResizeAspect = 1,
+    AVVideoLayerGravityResizeAspectFill = 2,
+    AVVideoLayerGravityResize = 3,
+};
+- (void)setPlayerController:(AVPlayerController *)playerController;
+@property (nonatomic) AVVideoLayerGravity videoLayerGravity;
+@property (nonatomic) CGRect videoRect;
+@property (nonatomic, readonly, getter=isReadyForDisplay) BOOL readyForDisplay;
+@end
+
+@protocol AVPlayerViewControllerDelegate &lt;NSObject&gt;
+@optional
+typedef NS_ENUM(NSInteger, AVPlayerViewControllerExitFullScreenReason) {
+    AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped = 0,
+    AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived = 3,
+};
+- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason;
+- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForOptimizedFullscreenStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
+@end
+
+typedef NSInteger AVPlayerViewControllerOptimizedFullscreenStopReason;
+
+@interface AVPlayerViewController (Details)
+- (instancetype)initWithVideoLayer:(CALayer &lt;AVVideoLayer&gt; *)videoLayer;
+- (void)enterFullScreenWithCompletionHandler:(void (^)(BOOL success, NSError *))completionHandler;
+- (void)exitFullScreenAnimated:(BOOL)animated completionHandler:(void (^)(BOOL success, NSError *))completionHandler;
+- (void)exitFullScreenWithCompletionHandler:(void (^)(BOOL success, NSError *))completionHandler;
+
+- (void)startOptimizedFullscreenWithStartCompletionHandler:(void (^)(BOOL success, NSError*))startCompletionHandler stopCompletionHandler:(void (^)(AVPlayerViewControllerOptimizedFullscreenStopReason))stopCompletionHandler;
+- (void)stopOptimizedFullscreen;
+- (void)cancelOptimizedFullscreen;
+- (void)setAllowsOptimizedFullscreen:(BOOL)allowsOptimizedFullscreen;
+
+@property (nonatomic, strong) AVPlayerController *playerController;
+@property (nonatomic, weak) id &lt;AVPlayerViewControllerDelegate&gt; delegate;
+@end
+
+#endif // USE(APPLE_INTERNAL_SDK)
+
+#if USE(APPLE_INTERNAL_SDK) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 90000
+
+#import &lt;AVKit/AVValueTiming.h&gt;
+
+#else
+
+@interface AVValueTiming : NSObject &lt;NSCoding, NSCopying, NSMutableCopying&gt;
+@end
+
+@interface AVValueTiming (Details)
++ (AVValueTiming *)valueTimingWithAnchorValue:(double)anchorValue anchorTimeStamp:(NSTimeInterval)timeStamp rate:(double)rate;
+@property (NS_NONATOMIC_IOSONLY, readonly) double currentValue;
+@end
+
+#endif
+
+#endif // PLATFORM(IOS)
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import &lt;AVKit/AVOutputDeviceMenuController.h&gt;
+
+#else
+
+@class AVOutputContext;
+
+NS_CLASS_AVAILABLE_MAC(10_11)
+@interface AVOutputDeviceMenuController : NSObject
+
+- (instancetype)initWithOutputContext:(AVOutputContext *)outputContext NS_DESIGNATED_INITIALIZER;
+
+@property (readonly) AVOutputContext *outputContext;
+@property (readonly, getter=isExternalOutputDeviceAvailable) BOOL externalOutputDeviceAvailable;
+@property (readonly, getter=isExternalOutputDevicePicked) BOOL externalOutputDevicePicked;
+
+- (void)showMenuForRect:(NSRect)screenRect appearanceName:(NSString *)appearanceName;
+
+@end
+
+
+#endif
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformspiiosAVKitSPIh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/spi/ios/AVKitSPI.h (182116 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/spi/ios/AVKitSPI.h        2015-03-28 23:17:30 UTC (rev 182116)
+++ trunk/Source/WebCore/platform/spi/ios/AVKitSPI.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -1,112 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &lt;AVKit/AVKit.h&gt;
-#import &lt;QuartzCore/QuartzCore.h&gt;
-#import &lt;UIKit/UIKit.h&gt;
-
-#if USE(APPLE_INTERNAL_SDK)
-
-#import &lt;AVKit/AVPlayerController.h&gt;
-#import &lt;AVKit/AVPlayerViewController_Private.h&gt;
-#import &lt;AVKit/AVPlayerViewController_WebKitOnly.h&gt;
-#import &lt;AVKit/AVVideoLayer.h&gt;
-
-#else
-
-@interface AVPlayerController : UIResponder
-@end
-
-@interface AVPlayerController (Details)
-typedef NS_ENUM(NSInteger, AVPlayerControllerStatus) {
-    AVPlayerControllerStatusReadyToPlay = 2,
-};
-
-typedef NS_ENUM(NSInteger, AVPlayerControllerExternalPlaybackType) {
-    AVPlayerControllerExternalPlaybackTypeNone = 0,
-    AVPlayerControllerExternalPlaybackTypeAirPlay = 1,
-    AVPlayerControllerExternalPlaybackTypeTVOut = 2,
-};
-
-@property (NS_NONATOMIC_IOSONLY, readonly) AVPlayerControllerStatus status;
-@end
-
-@protocol AVVideoLayer
-typedef NS_ENUM(NSInteger, AVVideoLayerGravity) {
-    AVVideoLayerGravityInvalid = 0,
-    AVVideoLayerGravityResizeAspect = 1,
-    AVVideoLayerGravityResizeAspectFill = 2,
-    AVVideoLayerGravityResize = 3,
-};
-- (void)setPlayerController:(AVPlayerController *)playerController;
-@property (nonatomic) AVVideoLayerGravity videoLayerGravity;
-@property (nonatomic) CGRect videoRect;
-@property (nonatomic, readonly, getter=isReadyForDisplay) BOOL readyForDisplay;
-@end
-
-@protocol AVPlayerViewControllerDelegate &lt;NSObject&gt;
-@optional
-typedef NS_ENUM(NSInteger, AVPlayerViewControllerExitFullScreenReason) {
-    AVPlayerViewControllerExitFullScreenReasonDoneButtonTapped = 0,
-    AVPlayerViewControllerExitFullScreenReasonRemoteControlStopEventReceived = 3,
-};
-- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldExitFullScreenWithReason:(AVPlayerViewControllerExitFullScreenReason)reason;
-- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForOptimizedFullscreenStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
-@end
-
-typedef NSInteger AVPlayerViewControllerOptimizedFullscreenStopReason;
-
-@interface AVPlayerViewController (Details)
-- (instancetype)initWithVideoLayer:(CALayer &lt;AVVideoLayer&gt; *)videoLayer;
-- (void)enterFullScreenWithCompletionHandler:(void (^)(BOOL success, NSError *))completionHandler;
-- (void)exitFullScreenAnimated:(BOOL)animated completionHandler:(void (^)(BOOL success, NSError *))completionHandler;
-- (void)exitFullScreenWithCompletionHandler:(void (^)(BOOL success, NSError *))completionHandler;
-
-- (void)startOptimizedFullscreenWithStartCompletionHandler:(void (^)(BOOL success, NSError*))startCompletionHandler stopCompletionHandler:(void (^)(AVPlayerViewControllerOptimizedFullscreenStopReason))stopCompletionHandler;
-- (void)stopOptimizedFullscreen;
-- (void)cancelOptimizedFullscreen;
-- (void)setAllowsOptimizedFullscreen:(BOOL)allowsOptimizedFullscreen;
-
-@property (nonatomic, strong) AVPlayerController *playerController;
-@property (nonatomic, weak) id &lt;AVPlayerViewControllerDelegate&gt; delegate;
-@end
-
-#endif
-
-#if USE(APPLE_INTERNAL_SDK) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 90000
-
-#import &lt;AVKit/AVValueTiming.h&gt;
-
-#else
-
-@interface AVValueTiming : NSObject &lt;NSCoding, NSCopying, NSMutableCopying&gt;
-@end
-
-@interface AVValueTiming (Details)
-+ (AVValueTiming *)valueTimingWithAnchorValue:(double)anchorValue anchorTimeStamp:(NSTimeInterval)timeStamp rate:(double)rate;
-@property (NS_NONATOMIC_IOSONLY, readonly) double currentValue;
-@end
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformspimacAVFoundationSPIh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h (0 => 182117)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h                                (rev 0)
+++ trunk/Source/WebCore/platform/spi/mac/AVFoundationSPI.h        2015-03-29 02:07:43 UTC (rev 182117)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;SoftLinking.h&quot;
+#import &lt;objc/runtime.h&gt;
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import &lt;AVFoundation/AVOutputContext.h&gt;
+#import &lt;AVFoundation/AVPlayer_Private.h&gt;
+
+#else
+
+@class AVOutputContext;
+@interface AVOutputContext : NSObject &lt;NSSecureCoding&gt;
+@property (nonatomic, readonly) NSString *deviceName;
++ (instancetype)outputContext;
+@end
+
+@interface AVPlayer (AVPlayerExternalPlaybackSupportPrivate)
+@property (nonatomic, retain) AVOutputContext *outputContext;
+@end
+
+#endif
+
+#endif
</ins></span></pre>
</div>
</div>

</body>
</html>