<!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>[181777] trunk/Source</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/181777">181777</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2015-03-19 20:51:45 -0700 (Thu, 19 Mar 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Mac] Move MediaPlaybackTargetPicker
https://bugs.webkit.org/show_bug.cgi?id=142889

Source/WebCore:

Move WebMediaPlaybackTargetPickerProxy from WK2 and rename as MediaPlaybackTargetPicker so it
can be used by both WK2 and WK1.

Reviewed by Tim Horton.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/MediaPlaybackTargetPicker.cpp: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp.
* platform/graphics/MediaPlaybackTargetPicker.h: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h.
* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h.
* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm.

Source/WebKit2:

Move WebMediaPlaybackTargetPickerProxy to WebCore so it can be used by
both WK2 and WK1.

Reviewed by Tim Horton.

* UIProcess/PageClient.h:
* UIProcess/WebMediaPlaybackTargetPickerProxy.cpp: Removed.
* UIProcess/WebMediaPlaybackTargetPickerProxy.h: Removed.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::devicePickerProxy):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createPlaybackTargetPicker):
* UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h: Removed.
* UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm: Removed.
* WebKit2.xcodeproj/project.pbxproj:</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="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplh">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplmm">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlaybackTargetPickercpp">trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlaybackTargetPickerh">trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h</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>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxycpp">trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxyh">trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMach">trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebCore/ChangeLog        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-03-19  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] Move MediaPlaybackTargetPicker
+        https://bugs.webkit.org/show_bug.cgi?id=142889
+
+        Move WebMediaPlaybackTargetPickerProxy from WK2 and rename as MediaPlaybackTargetPicker so it
+        can be used by both WK2 and WK1.
+
+        Reviewed by Tim Horton.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/MediaPlaybackTargetPicker.cpp: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp.
+        * platform/graphics/MediaPlaybackTargetPicker.h: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h.
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h.
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm.
+
</ins><span class="cx"> 2015-03-19  Enrica Casucci  &lt;enrica@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r109593): Clicking after last inline element could cause a crash.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -270,6 +270,10 @@
</span><span class="cx">                 078E094717D16E1C00420AA1 /* RTCVoidRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07221BB017CF0AD400848E51 /* RTCVoidRequest.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 078E094B17D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 078E094817D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp */; };
</span><span class="cx">                 078E094C17D1709600420AA1 /* MediaStreamAudioDestinationNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 078E094917D1709600420AA1 /* MediaStreamAudioDestinationNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                078E43D91ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 078E43D71ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp */; };
+                078E43DA1ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 078E43D81ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                078E43DD1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 078E43DB1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                078E43DE1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 078E43DC1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm */; };
</ins><span class="cx">                 079216551AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 079216531AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 07941791166E855F009416C2 /* InbandTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0794178F166E855F009416C2 /* InbandTextTrack.cpp */; };
</span><span class="cx">                 07941792166E855F009416C2 /* InbandTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 07941790166E855F009416C2 /* InbandTextTrack.h */; };
</span><span class="lines">@@ -7273,6 +7277,10 @@
</span><span class="cx">                 078E094817D1709600420AA1 /* MediaStreamAudioDestinationNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamAudioDestinationNode.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 078E094917D1709600420AA1 /* MediaStreamAudioDestinationNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamAudioDestinationNode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 078E094A17D1709600420AA1 /* MediaStreamAudioDestinationNode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaStreamAudioDestinationNode.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                078E43D71ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaPlaybackTargetPicker.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                078E43D81ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlaybackTargetPicker.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                078E43DB1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlaybackTargetPickerMac.h; path = objc/MediaPlaybackTargetPickerMac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                078E43DC1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MediaPlaybackTargetPickerMac.mm; path = objc/MediaPlaybackTargetPickerMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 079216531AA560AA00A3C049 /* MediaPlaybackTargetPickerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaPlaybackTargetPickerClient.h; path = graphics/MediaPlaybackTargetPickerClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0794178F166E855F009416C2 /* InbandTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandTextTrack.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07941790166E855F009416C2 /* InbandTextTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandTextTrack.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14691,6 +14699,9 @@
</span><span class="cx">                                 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */,
</span><span class="cx">                                 07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */,
</span><span class="cx">                                 07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */,
</span><ins>+                                078E43DB1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h */,
+                                078E43DC1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm */,
+                                07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */,
</ins><span class="cx">                                 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */,
</span><span class="cx">                                 076F0D0A12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h */,
</span><span class="cx">                                 CD641EBD1819B35900EE4C41 /* MediaTimeAVFoundation.cpp */,
</span><span class="lines">@@ -20566,7 +20577,6 @@
</span><span class="cx">                 B27535490B053814002CE64F /* mac */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                07E3DFD21A9E78A500764CA8 /* MediaPlaybackTargetMac.mm */,
</del><span class="cx">                                 EDE3A4FF0C7A430600956A37 /* ColorMac.h */,
</span><span class="cx">                                 B275354A0B053814002CE64F /* ColorMac.mm */,
</span><span class="cx">                                 37C2360E1097EE7700EF9F72 /* ComplexTextController.cpp */,
</span><span class="lines">@@ -20736,6 +20746,8 @@
</span><span class="cx">                                 141DC04E164834B900371E5A /* LayoutSize.h */,
</span><span class="cx">                                 6C568CAE19DAFEA000430CA2 /* MaskImageOperation.cpp */,
</span><span class="cx">                                 6C568CAF19DAFEA000430CA2 /* MaskImageOperation.h */,
</span><ins>+                                078E43D71ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp */,
+                                078E43D81ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h */,
</ins><span class="cx">                                 E4B41E0C0CBF90BD00AF2ECE /* MediaPlayer.cpp */,
</span><span class="cx">                                 E4B41E0D0CBF90BD00AF2ECE /* MediaPlayer.h */,
</span><span class="cx">                                 079F5E4B0F3BEBEA005E0782 /* MediaPlayerPrivate.h */,
</span><span class="lines">@@ -26034,6 +26046,7 @@
</span><span class="cx">                                 BC3BE9940E9C1C7C00835588 /* RenderScrollbar.h in Headers */,
</span><span class="cx">                                 BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */,
</span><span class="cx">                                 BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */,
</span><ins>+                                078E43DD1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.h in Headers */,
</ins><span class="cx">                                 458FE40A1589DF0B005609E6 /* RenderSearchField.h in Headers */,
</span><span class="cx">                                 0F11A54F0F39233100C37884 /* RenderSelectionInfo.h in Headers */,
</span><span class="cx">                                 AB247A6D0AFD6383003FA5FD /* RenderSlider.h in Headers */,
</span><span class="lines">@@ -26884,6 +26897,7 @@
</span><span class="cx">                                 3140379B124BEA7F00AF40E4 /* WebCoreMotionManager.h in Headers */,
</span><span class="cx">                                 934D9BA70B8C1175007B42A9 /* WebCoreNSStringExtras.h in Headers */,
</span><span class="cx">                                 C5B4C24D1509236C00A6EF37 /* WebCoreNSURLExtras.h in Headers */,
</span><ins>+                                078E43DA1ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.h in Headers */,
</ins><span class="cx">                                 DD05FE0D0B8BA3C6009ACDFE /* WebCoreObjCExtras.h in Headers */,
</span><span class="cx">                                 EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */,
</span><span class="cx">                                 E180810F16FCECDF00B80D07 /* WebCoreResourceHandleAsDelegate.h in Headers */,
</span><span class="lines">@@ -30117,6 +30131,7 @@
</span><span class="cx">                                 7C73FB07191EF417007DE061 /* UserMessageHandlersNamespace.cpp in Sources */,
</span><span class="cx">                                 BCDF317B11F8D683003C5BF8 /* UserTypingGestureIndicator.cpp in Sources */,
</span><span class="cx">                                 7C74D43718823B1900E5ED57 /* UTextProvider.cpp in Sources */,
</span><ins>+                                078E43DE1ABB6F6F001C2FA6 /* MediaPlaybackTargetPickerMac.mm in Sources */,
</ins><span class="cx">                                 7C74D43318823A9300E5ED57 /* UTextProviderLatin1.cpp in Sources */,
</span><span class="cx">                                 7C74D43B1882400400E5ED57 /* UTextProviderUTF16.cpp in Sources */,
</span><span class="cx">                                 1FAFBF1815A5FA6E00083A20 /* UTIUtilities.mm in Sources */,
</span><span class="lines">@@ -30311,6 +30326,7 @@
</span><span class="cx">                                 1AB7FC810A8B92EC00D9D37B /* XPathStep.cpp in Sources */,
</span><span class="cx">                                 1AB7FC830A8B92EC00D9D37B /* XPathUtil.cpp in Sources */,
</span><span class="cx">                                 1AB7FC850A8B92EC00D9D37B /* XPathValue.cpp in Sources */,
</span><ins>+                                078E43D91ABB6C7E001C2FA6 /* MediaPlaybackTargetPicker.cpp in Sources */,
</ins><span class="cx">                                 1AB7FC870A8B92EC00D9D37B /* XPathVariableReference.cpp in Sources */,
</span><span class="cx">                                 85217E020A5ECD4700DB8D00 /* XSLImportRule.cpp in Sources */,
</span><span class="cx">                                 93F19B0308245E59001E9ABC /* XSLStyleSheetLibxslt.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlaybackTargetPickercppfromrev181776trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxycpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp (from rev 181776, trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp) (0 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.cpp        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -0,0 +1,63 @@
</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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;MediaPlaybackTargetPicker.h&quot;
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+
+namespace WebCore {
+
+MediaPlaybackTargetPicker::MediaPlaybackTargetPicker(Client&amp; client)
+    : m_client(&amp;client)
+{
+}
+
+MediaPlaybackTargetPicker::~MediaPlaybackTargetPicker()
+{
+    m_client = nullptr;
+}
+
+void MediaPlaybackTargetPicker::showPlaybackTargetPicker(const FloatRect&amp;, bool)
+{
+    ASSERT_NOT_REACHED();
+    return;
+}
+
+void MediaPlaybackTargetPicker::startingMonitoringPlaybackTargets()
+{
+    ASSERT_NOT_REACHED();
+    return;
+}
+
+void MediaPlaybackTargetPicker::stopMonitoringPlaybackTargets()
+{
+    ASSERT_NOT_REACHED();
+    return;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlaybackTargetPickerhfromrev181776trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxyh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h (from rev 181776, trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h) (0 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -0,0 +1,65 @@
</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.
+ */
+
+#ifndef MediaPlaybackTargetPicker_h
+#define MediaPlaybackTargetPicker_h
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+
+namespace WebCore {
+
+class FloatRect;
+class MediaPlaybackTarget;
+
+class MediaPlaybackTargetPicker {
+public:
+    class Client {
+    protected:
+        virtual ~Client() { }
+
+    public:
+        virtual void didChoosePlaybackTarget(const MediaPlaybackTarget&amp;) = 0;
+        virtual void externalOutputDeviceAvailableDidChange(bool) = 0;
+
+        void invalidate();
+    };
+
+    virtual ~MediaPlaybackTargetPicker();
+
+    virtual void showPlaybackTargetPicker(const FloatRect&amp;, bool);
+    virtual void startingMonitoringPlaybackTargets();
+    virtual void stopMonitoringPlaybackTargets();
+
+protected:
+    explicit MediaPlaybackTargetPicker(Client&amp;);
+
+    Client* m_client;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
+
+#endif // MediaPlaybackTargetPicker_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMachfromrev181776trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMach"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h (from rev 181776, trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h) (0 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -0,0 +1,69 @@
</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.
+ */
+
+#ifndef MediaPlaybackTargetPickerMac_h
+#define MediaPlaybackTargetPickerMac_h
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
+
+#import &quot;MediaPlaybackTargetPicker.h&quot;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/RunLoop.h&gt;
+
+OBJC_CLASS AVOutputDevicePickerMenuController;
+OBJC_CLASS WebAVOutputDevicePickerMenuControllerHelper;
+
+namespace WebCore {
+
+class MediaPlaybackTargetPickerMac final : public MediaPlaybackTargetPicker {
+    WTF_MAKE_NONCOPYABLE(MediaPlaybackTargetPickerMac);
+public:
+    virtual ~MediaPlaybackTargetPickerMac();
+
+    WEBCORE_EXPORT static std::unique_ptr&lt;MediaPlaybackTargetPickerMac&gt; create(MediaPlaybackTargetPicker::Client&amp;);
+
+    virtual void showPlaybackTargetPicker(const FloatRect&amp;, bool) override;
+    virtual void startingMonitoringPlaybackTargets() override;
+    virtual void stopMonitoringPlaybackTargets() override;
+    
+    void availableDevicesDidChange();
+    void currentDeviceDidChange();
+
+private:
+    explicit MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&amp;);
+
+    AVOutputDevicePickerMenuController *devicePicker();
+    void outputeDeviceAvailabilityChangedTimerFired();
+
+    RetainPtr&lt;AVOutputDevicePickerMenuController&gt; m_devicePickerMenuController;
+    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; m_devicePickerMenuControllerDelegate;
+    RunLoop::Timer&lt;MediaPlaybackTargetPickerMac&gt; m_deviceChangeTimer;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
+
+#endif // WebContextMenuProxyMac_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlaybackTargetPickerMacmmfromrev181776trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMacmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (from rev 181776, trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm) (0 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -0,0 +1,198 @@
</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;config.h&quot;
+#import &quot;MediaPlaybackTargetPickerMac.h&quot;
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
+
+#import &lt;WebCore/FloatRect.h&gt;
+#import &lt;WebCore/MediaPlaybackTarget.h&gt;
+#import &lt;WebCore/SoftLinking.h&gt;
+#import &lt;objc/runtime.h&gt;
+#import &lt;wtf/MainThread.h&gt;
+
+@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
+
+typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
+typedef AVOutputDevicePickerMenuController AVOutputDevicePickerMenuControllerType;
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVKit)
+
+SOFT_LINK_CLASS(AVFoundation, AVOutputDevicePickerContext)
+SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerMenuController)
+SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerDelegate)
+
+using namespace WebCore;
+
+static NSString *externalOutputDeviceAvailableKeyName = @&quot;externalOutputDeviceAvailable&quot;;
+static NSString *externalOutputDevicePickedKeyName = @&quot;externalOutputDevicePicked&quot;;
+
+@interface WebAVOutputDevicePickerMenuControllerHelper : NSObject {
+    MediaPlaybackTargetPickerMac* m_callback;
+}
+
+- (instancetype)initWithCallback:(MediaPlaybackTargetPickerMac*)callback;
+- (void)clearCallback;
+- (void)observeValueForKeyPath:(id)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
+@end
+
+namespace WebCore {
+
+std::unique_ptr&lt;MediaPlaybackTargetPickerMac&gt; MediaPlaybackTargetPickerMac::create(MediaPlaybackTargetPicker::Client&amp; client)
+{
+    return std::unique_ptr&lt;MediaPlaybackTargetPickerMac&gt;(new MediaPlaybackTargetPickerMac(client));
+}
+
+MediaPlaybackTargetPickerMac::MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&amp; client)
+    : MediaPlaybackTargetPicker(client)
+    , m_devicePickerMenuControllerDelegate(adoptNS([[WebAVOutputDevicePickerMenuControllerHelper alloc] initWithCallback:this]))
+    , m_deviceChangeTimer(RunLoop::main(), this, &amp;MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired)
+{
+}
+
+MediaPlaybackTargetPickerMac::~MediaPlaybackTargetPickerMac()
+{
+    m_deviceChangeTimer.stop();
+    [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;
+    }
+}
+
+void MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired()
+{
+    if (!m_devicePickerMenuController || !m_client)
+        return;
+
+    m_client-&gt;externalOutputDeviceAvailableDidChange(devicePicker().externalOutputDeviceAvailable);
+}
+
+void MediaPlaybackTargetPickerMac::availableDevicesDidChange()
+{
+    if (!m_client)
+        return;
+
+    m_deviceChangeTimer.stop();
+    m_deviceChangeTimer.startOneShot(0);
+}
+
+AVOutputDevicePickerMenuControllerType *MediaPlaybackTargetPickerMac::devicePicker()
+{
+    if (!m_devicePickerMenuController) {
+        RetainPtr&lt;AVOutputDevicePickerContextType&gt; context = adoptNS([[getAVOutputDevicePickerContextClass() alloc] init]);
+        m_devicePickerMenuController = adoptNS([[getAVOutputDevicePickerMenuControllerClass() alloc] initWithOutputDevicePickerContext:context.get()]);
+
+        [m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nil];
+        [m_devicePickerMenuController addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nil];
+
+        if (devicePicker().externalOutputDeviceAvailable)
+            availableDevicesDidChange();
+    }
+
+    return m_devicePickerMenuController.get();
+}
+
+void MediaPlaybackTargetPickerMac::showPlaybackTargetPicker(const FloatRect&amp; location, bool)
+{
+    if (!m_client)
+        return;
+
+    [devicePicker() showMenuForRect:location appearanceName:NSAppearanceNameVibrantLight];
+}
+
+void MediaPlaybackTargetPickerMac::currentDeviceDidChange()
+{
+    if (!m_client)
+        return;
+
+    m_client-&gt;didChoosePlaybackTarget(MediaPlaybackTarget([devicePicker() outputDevicePickerContext]));
+}
+
+void MediaPlaybackTargetPickerMac::startingMonitoringPlaybackTargets()
+{
+    devicePicker();
+}
+
+void MediaPlaybackTargetPickerMac::stopMonitoringPlaybackTargets()
+{
+}
+
+} // namespace WebCore
+
+@implementation WebAVOutputDevicePickerMenuControllerHelper
+- (instancetype)initWithCallback:(MediaPlaybackTargetPickerMac*)callback
+{
+    if (!(self = [super init]))
+        return nil;
+
+    m_callback = callback;
+
+    return self;
+}
+
+- (void)clearCallback
+{
+    m_callback = nil;
+}
+
+- (void)observeValueForKeyPath:(id)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+    UNUSED_PARAM(object);
+    UNUSED_PARAM(change);
+    UNUSED_PARAM(context);
+
+    if (!m_callback)
+        return;
+
+    if (![keyPath isEqualToString:externalOutputDeviceAvailableKeyName] &amp;&amp; ![keyPath isEqualToString:externalOutputDevicePickedKeyName])
+        return;
+
+    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; strongSelf = self;
+    RetainPtr&lt;NSString&gt; strongKeyPath = keyPath;
+    callOnMainThread([strongSelf, strongKeyPath] {
+        MediaPlaybackTargetPickerMac* callback = strongSelf-&gt;m_callback;
+        if (!callback)
+            return;
+
+        if ([strongKeyPath isEqualToString:externalOutputDeviceAvailableKeyName])
+            callback-&gt;availableDevicesDidChange();
+        else if ([strongKeyPath isEqualToString:externalOutputDevicePickedKeyName])
+            callback-&gt;currentDeviceDidChange();
+    });
+}
+@end
+
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/ChangeLog        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2015-03-19  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] Move MediaPlaybackTargetPicker
+        https://bugs.webkit.org/show_bug.cgi?id=142889
+
+        Move WebMediaPlaybackTargetPickerProxy to WebCore so it can be used by
+        both WK2 and WK1.
+
+        Reviewed by Tim Horton.
+
+        * UIProcess/PageClient.h:
+        * UIProcess/WebMediaPlaybackTargetPickerProxy.cpp: Removed.
+        * UIProcess/WebMediaPlaybackTargetPickerProxy.h: Removed.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::devicePickerProxy):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/mac/PageClientImpl.h:
+        * UIProcess/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::createPlaybackTargetPicker):
+        * UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h: Removed.
+        * UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm: Removed.
+        * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2015-03-19  Jessie Berlin  &lt;jberlin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         32-bit build fix after r181770.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-#include &quot;WebMediaPlaybackTargetPickerProxy.h&quot;
</del><ins>+#include &lt;WebCore/MediaPlaybackTargetPicker.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="lines">@@ -324,7 +324,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    virtual std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxy&gt; createPlaybackTargetPicker(WebPageProxy*) = 0;
</del><ins>+    virtual std::unique_ptr&lt;WebCore::MediaPlaybackTargetPicker&gt; createPlaybackTargetPicker(WebPageProxy*) = 0;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxycpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-/*
- * 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WebMediaPlaybackTargetPickerProxy.h&quot;
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-
-namespace WebKit {
-
-WebMediaPlaybackTargetPickerProxy::WebMediaPlaybackTargetPickerProxy(Client&amp; client)
-    : m_client(&amp;client)
-{
-}
-
-WebMediaPlaybackTargetPickerProxy::~WebMediaPlaybackTargetPickerProxy()
-{
-    m_client = nullptr;
-}
-
-void WebMediaPlaybackTargetPickerProxy::showPlaybackTargetPicker(const WebCore::FloatRect&amp;, bool)
-{
-    ASSERT_NOT_REACHED();
-    return;
-}
-
-void WebMediaPlaybackTargetPickerProxy::startingMonitoringPlaybackTargets()
-{
-    ASSERT_NOT_REACHED();
-    return;
-}
-
-void WebMediaPlaybackTargetPickerProxy::stopMonitoringPlaybackTargets()
-{
-    ASSERT_NOT_REACHED();
-    return;
-}
-
-} // namespace WebKit
-
-#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebMediaPlaybackTargetPickerProxyh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,72 +0,0 @@
</span><del>-/*
- * 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.
- */
-
-#ifndef WebMediaPlaybackTargetPickerProxy_h
-#define WebMediaPlaybackTargetPickerProxy_h
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-
-#include &lt;wtf/RefCounted.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
-
-namespace WebCore {
-class FloatRect;
-class MediaPlaybackTarget;
-}
-
-namespace WebKit {
-
-class WebPageProxy;
-
-class WebMediaPlaybackTargetPickerProxy {
-public:
-    class Client {
-    protected:
-        virtual ~Client() { }
-
-    public:
-        virtual void didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget&amp;) = 0;
-        virtual void externalOutputDeviceAvailableDidChange(bool) = 0;
-
-        void invalidate();
-    };
-
-    virtual ~WebMediaPlaybackTargetPickerProxy();
-
-    virtual void showPlaybackTargetPicker(const WebCore::FloatRect&amp;, bool);
-    virtual void startingMonitoringPlaybackTargets();
-    virtual void stopMonitoringPlaybackTargets();
-
-protected:
-    explicit WebMediaPlaybackTargetPickerProxy(Client&amp;);
-
-    Client* m_client;
-};
-
-} // namespace WebKit
-
-#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
-
-#endif // WebMediaPlaybackTargetPickerProxy_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -5609,7 +5609,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx"> 
</span><del>-WebMediaPlaybackTargetPickerProxy&amp; WebPageProxy::devicePickerProxy()
</del><ins>+WebCore::MediaPlaybackTargetPicker&amp; WebPageProxy::devicePickerProxy()
</ins><span class="cx"> {
</span><span class="cx">     if (!m_playbackTargetPicker)
</span><span class="cx">         m_playbackTargetPicker = m_pageClient.createPlaybackTargetPicker(this);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-#include &quot;WebMediaPlaybackTargetPickerProxy.h&quot;
</del><ins>+#include &lt;WebCore/MediaPlaybackTargetPicker.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> namespace API {
</span><span class="lines">@@ -263,7 +263,7 @@
</span><span class="cx">     , public WebColorPicker::Client
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    , public WebMediaPlaybackTargetPickerProxy::Client
</del><ins>+    , public WebCore::MediaPlaybackTargetPicker::Client
</ins><span class="cx"> #endif
</span><span class="cx">     , public WebPopupMenuProxy::Client
</span><span class="cx">     , public IPC::MessageReceiver
</span><span class="lines">@@ -1013,12 +1013,12 @@
</span><span class="cx">     void logDiagnosticMessageWithValue(const String&amp; message, const String&amp; description, const String&amp; value, bool shouldSample);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    WebMediaPlaybackTargetPickerProxy&amp; devicePickerProxy();
</del><ins>+    WebCore::MediaPlaybackTargetPicker&amp; devicePickerProxy();
</ins><span class="cx">     void showPlaybackTargetPicker(const WebCore::FloatRect&amp;, bool hasVideo);
</span><span class="cx">     void startingMonitoringPlaybackTargets();
</span><span class="cx">     void stopMonitoringPlaybackTargets();
</span><span class="cx"> 
</span><del>-    // WebMediaPlaybackTargetPickerProxy::Client
</del><ins>+    // WebCore::MediaPlaybackTargetPicker::Client
</ins><span class="cx">     virtual void didChoosePlaybackTarget(const WebCore::MediaPlaybackTarget&amp;) override;
</span><span class="cx">     virtual void externalOutputDeviceAvailableDidChange(bool) override;
</span><span class="cx"> #endif
</span><span class="lines">@@ -1689,7 +1689,7 @@
</span><span class="cx">     Vector&lt;uint64_t&gt; m_nextViewStateChangeCallbacks;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
</span><del>-    std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxy&gt; m_playbackTargetPicker;
</del><ins>+    std::unique_ptr&lt;WebCore::MediaPlaybackTargetPicker&gt; m_playbackTargetPicker;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     bool m_isPlayingAudio;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-    virtual std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxy&gt; createPlaybackTargetPicker(WebPageProxy*) override;
</del><ins>+    virtual std::unique_ptr&lt;WebCore::MediaPlaybackTargetPicker&gt; createPlaybackTargetPicker(WebPageProxy*) override;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-#include &quot;WebMediaPlaybackTargetPickerProxyMac.h&quot;
</del><ins>+#include &lt;WebCore/MediaPlaybackTargetPickerMac.h&gt;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> @interface NSApplication (WebNSApplicationDetails)
</span><span class="lines">@@ -800,9 +800,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><del>-std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxy&gt; PageClientImpl::createPlaybackTargetPicker(WebPageProxy* page)
</del><ins>+std::unique_ptr&lt;WebCore::MediaPlaybackTargetPicker&gt; PageClientImpl::createPlaybackTargetPicker(WebPageProxy* page)
</ins><span class="cx"> {
</span><del>-    return WebMediaPlaybackTargetPickerProxyMac::create(*page);
</del><ins>+    return MediaPlaybackTargetPickerMac::create(*page);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMach"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,69 +0,0 @@
</span><del>-/*
- * 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.
- */
-
-#ifndef WebMediaPlaybackTargetPickerProxyMac_h
-#define WebMediaPlaybackTargetPickerProxyMac_h
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
-
-#import &quot;WebMediaPlaybackTargetPickerProxy.h&quot;
-#include &lt;wtf/RetainPtr.h&gt;
-#include &lt;wtf/RunLoop.h&gt;
-
-OBJC_CLASS AVOutputDevicePickerMenuController;
-OBJC_CLASS WebAVOutputDevicePickerMenuControllerHelper;
-
-namespace WebKit {
-
-class WebMediaPlaybackTargetPickerProxyMac final : public WebMediaPlaybackTargetPickerProxy {
-    WTF_MAKE_NONCOPYABLE(WebMediaPlaybackTargetPickerProxyMac);
-public:
-    virtual ~WebMediaPlaybackTargetPickerProxyMac();
-
-    static std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxyMac&gt; create(WebMediaPlaybackTargetPickerProxy::Client&amp;);
-
-    virtual void showPlaybackTargetPicker(const WebCore::FloatRect&amp;, bool) override;
-    virtual void startingMonitoringPlaybackTargets() override;
-    virtual void stopMonitoringPlaybackTargets() override;
-    
-    void availableDevicesDidChange();
-    void currentDeviceDidChange();
-
-private:
-    explicit WebMediaPlaybackTargetPickerProxyMac(WebMediaPlaybackTargetPickerProxy::Client&amp;);
-
-    AVOutputDevicePickerMenuController *devicePicker();
-    void outputeDeviceAvailabilityChangedTimerFired();
-
-    RetainPtr&lt;AVOutputDevicePickerMenuController&gt; m_devicePickerMenuController;
-    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; m_devicePickerMenuControllerDelegate;
-    RunLoop::Timer&lt;WebMediaPlaybackTargetPickerProxyMac&gt; m_deviceChangeTimer;
-};
-
-} // namespace WebKit
-
-#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
-
-#endif // WebContextMenuProxyMac_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebMediaPlaybackTargetPickerProxyMacmm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -1,188 +0,0 @@
</span><del>-/*
- * 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;config.h&quot;
-#import &quot;WebMediaPlaybackTargetPickerProxyMac.h&quot;
-
-#if ENABLE(WIRELESS_PLAYBACK_TARGET) &amp;&amp; !PLATFORM(IOS)
-
-#import &lt;AVFoundation/AVOutputDevicePickerContext.h&gt;
-#import &lt;AVKit/AVOutputDevicePickerMenuController.h&gt;
-#import &lt;WebCore/FloatRect.h&gt;
-#import &lt;WebCore/MediaPlaybackTarget.h&gt;
-#import &lt;WebCore/SoftLinking.h&gt;
-#import &lt;objc/runtime.h&gt;
-#import &lt;wtf/MainThread.h&gt;
-
-typedef AVOutputDevicePickerContext AVOutputDevicePickerContextType;
-typedef AVOutputDevicePickerMenuController AVOutputDevicePickerMenuControllerType;
-
-SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
-SOFT_LINK_FRAMEWORK_OPTIONAL(AVKit)
-
-SOFT_LINK_CLASS(AVFoundation, AVOutputDevicePickerContext)
-SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerMenuController)
-SOFT_LINK_CLASS(AVKit, AVOutputDevicePickerDelegate)
-
-using namespace WebKit;
-
-static NSString *externalOutputDeviceAvailableKeyName = @&quot;externalOutputDeviceAvailable&quot;;
-static NSString *externalOutputDevicePickedKeyName = @&quot;externalOutputDevicePicked&quot;;
-
-@interface WebAVOutputDevicePickerMenuControllerHelper : NSObject {
-    WebMediaPlaybackTargetPickerProxyMac* m_callback;
-}
-
-- (instancetype)initWithCallback:(WebMediaPlaybackTargetPickerProxyMac*)callback;
-- (void)clearCallback;
-- (void)observeValueForKeyPath:(id)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
-@end
-
-namespace WebKit {
-
-std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxyMac&gt; WebMediaPlaybackTargetPickerProxyMac::create(WebMediaPlaybackTargetPickerProxy::Client&amp; client)
-{
-    return std::unique_ptr&lt;WebMediaPlaybackTargetPickerProxyMac&gt;(new WebMediaPlaybackTargetPickerProxyMac(client));
-}
-
-WebMediaPlaybackTargetPickerProxyMac::WebMediaPlaybackTargetPickerProxyMac(WebMediaPlaybackTargetPickerProxy::Client&amp; client)
-    : WebMediaPlaybackTargetPickerProxy(client)
-    , m_devicePickerMenuControllerDelegate(adoptNS([[WebAVOutputDevicePickerMenuControllerHelper alloc] initWithCallback:this]))
-    , m_deviceChangeTimer(RunLoop::main(), this, &amp;WebMediaPlaybackTargetPickerProxyMac::outputeDeviceAvailabilityChangedTimerFired)
-{
-}
-
-WebMediaPlaybackTargetPickerProxyMac::~WebMediaPlaybackTargetPickerProxyMac()
-{
-    m_deviceChangeTimer.stop();
-    [m_devicePickerMenuControllerDelegate clearCallback];
-
-    if (m_devicePickerMenuController) {
-        [m_devicePickerMenuController.get() removeObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName];
-        [m_devicePickerMenuController.get() removeObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName];
-        m_devicePickerMenuController = nil;
-    }
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::outputeDeviceAvailabilityChangedTimerFired()
-{
-    if (!m_devicePickerMenuController || !m_client)
-        return;
-
-    m_client-&gt;externalOutputDeviceAvailableDidChange(devicePicker().externalOutputDeviceAvailable);
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::availableDevicesDidChange()
-{
-    if (!m_client)
-        return;
-
-    m_deviceChangeTimer.stop();
-    m_deviceChangeTimer.startOneShot(0);
-}
-
-AVOutputDevicePickerMenuControllerType *WebMediaPlaybackTargetPickerProxyMac::devicePicker()
-{
-    if (!m_devicePickerMenuController) {
-        RetainPtr&lt;AVOutputDevicePickerContextType&gt; context = adoptNS([[getAVOutputDevicePickerContextClass() alloc] init]);
-        m_devicePickerMenuController = adoptNS([[getAVOutputDevicePickerMenuControllerClass() alloc] initWithOutputDevicePickerContext:context.get()]);
-
-        [m_devicePickerMenuController.get() addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nullptr];
-        [m_devicePickerMenuController.get() addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDevicePickedKeyName options:NSKeyValueObservingOptionNew context:nullptr];
-
-        if (devicePicker().externalOutputDeviceAvailable)
-            availableDevicesDidChange();
-    }
-
-    return m_devicePickerMenuController.get();
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::showPlaybackTargetPicker(const WebCore::FloatRect&amp; location, bool)
-{
-    if (!m_client)
-        return;
-
-    [devicePicker() showMenuForRect:location appearanceName:NSAppearanceNameVibrantLight];
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::currentDeviceDidChange()
-{
-    if (!m_client)
-        return;
-
-    m_client-&gt;didChoosePlaybackTarget(WebCore::MediaPlaybackTarget([devicePicker() outputDevicePickerContext]));
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::startingMonitoringPlaybackTargets()
-{
-    devicePicker();
-}
-
-void WebMediaPlaybackTargetPickerProxyMac::stopMonitoringPlaybackTargets()
-{
-}
-
-} // namespace WebKit
-
-@implementation WebAVOutputDevicePickerMenuControllerHelper
-- (instancetype)initWithCallback:(WebMediaPlaybackTargetPickerProxyMac*)callback
-{
-    if (!(self = [super init]))
-        return nil;
-
-    m_callback = callback;
-
-    return self;
-}
-
-- (void)clearCallback
-{
-    m_callback = nil;
-}
-
-- (void)observeValueForKeyPath:(id)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
-    if (!m_callback)
-        return;
-
-    if (![keyPath isEqualToString:externalOutputDeviceAvailableKeyName] &amp;&amp; ![keyPath isEqualToString:externalOutputDevicePickedKeyName])
-        return;
-
-    RetainPtr&lt;WebAVOutputDevicePickerMenuControllerHelper&gt; strongSelf = self;
-    RetainPtr&lt;NSString&gt; strongKeyPath = keyPath;
-    callOnMainThread([strongSelf, strongKeyPath] {
-        WebMediaPlaybackTargetPickerProxyMac* callback = strongSelf-&gt;m_callback;
-        if (!callback)
-            return;
-
-        if ([strongKeyPath isEqualToString:externalOutputDeviceAvailableKeyName])
-            callback-&gt;availableDevicesDidChange();
-        else if ([strongKeyPath isEqualToString:externalOutputDevicePickedKeyName])
-            callback-&gt;currentDeviceDidChange();
-    });
-}
-@end
-
-#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
</del></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (181776 => 181777)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-03-20 01:52:57 UTC (rev 181776)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2015-03-20 03:51:45 UTC (rev 181777)
</span><span class="lines">@@ -76,10 +76,6 @@
</span><span class="cx">                 00B9661918E25AE100CE1F88 /* FindClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 00B9661718E25AE100CE1F88 /* FindClient.mm */; };
</span><span class="cx">                 00B9661A18E25AE100CE1F88 /* FindClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B9661818E25AE100CE1F88 /* FindClient.h */; };
</span><span class="cx">                 076E884E1A13CADF005E90FC /* APIContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 076E884D1A13CADF005E90FC /* APIContextMenuClient.h */; };
</span><del>-                0792164C1AA5501900A3C049 /* WebMediaPlaybackTargetPickerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 079216481AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.cpp */; };
-                0792164D1AA5501F00A3C049 /* WebMediaPlaybackTargetPickerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 079216491AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.h */; };
-                079216501AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 0792164E1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.h */; };
-                079216511AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0792164F1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.mm */; };
</del><span class="cx">                 0F0C365818C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */; };
</span><span class="cx">                 0F0C365A18C0555800F607D7 /* LayerRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0C365918C0555800F607D7 /* LayerRepresentation.h */; };
</span><span class="cx">                 0F0C365C18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */; };
</span><span class="lines">@@ -2164,10 +2160,6 @@
</span><span class="cx">                 00B9661818E25AE100CE1F88 /* FindClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FindClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 076E884D1A13CADF005E90FC /* APIContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIContextMenuClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 076E884F1A13CBC6005E90FC /* APIInjectedBundlePageContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIInjectedBundlePageContextMenuClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                079216481AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebMediaPlaybackTargetPickerProxy.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                079216491AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaPlaybackTargetPickerProxy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0792164E1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebMediaPlaybackTargetPickerProxyMac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0792164F1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebMediaPlaybackTargetPickerProxyMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="cx">                 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RemoteLayerTreeHostIOS.mm; path = ios/RemoteLayerTreeHostIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6157,8 +6149,6 @@
</span><span class="cx">                                 512E3520130B550100ABD19A /* WebApplicationCacheManagerProxy.cpp */,
</span><span class="cx">                                 512E3521130B550100ABD19A /* WebApplicationCacheManagerProxy.h */,
</span><span class="cx">                                 512E35F0130B638C00ABD19A /* WebApplicationCacheManagerProxy.messages.in */,
</span><del>-                                079216481AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.cpp */,
-                                079216491AA54E9D00A3C049 /* WebMediaPlaybackTargetPickerProxy.h */,
</del><span class="cx">                                 BC72BA1B11E64907001EB4EA /* WebBackForwardList.cpp */,
</span><span class="cx">                                 BC72BA1C11E64907001EB4EA /* WebBackForwardList.h */,
</span><span class="cx">                                 F036978715F4BF0500C3A80E /* WebColorPicker.cpp */,
</span><span class="lines">@@ -7019,8 +7009,6 @@
</span><span class="cx">                                 2D125C5D1857EA05003BA3CB /* ViewGestureControllerMac.mm */,
</span><span class="cx">                                 2D6CD117189058A500E5A4A0 /* ViewSnapshotStore.h */,
</span><span class="cx">                                 2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */,
</span><del>-                                0792164E1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.h */,
-                                0792164F1AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.mm */,
</del><span class="cx">                                 728E86EF1795188C0087879E /* WebColorPickerMac.h */,
</span><span class="cx">                                 728E86F01795188C0087879E /* WebColorPickerMac.mm */,
</span><span class="cx">                                 51ACBB9E127A8F2C00D203B9 /* WebContextMenuProxyMac.h */,
</span><span class="lines">@@ -8114,7 +8102,6 @@
</span><span class="cx">                                 7C361D79192803BD0036A59D /* WebUserContentControllerProxyMessages.h in Headers */,
</span><span class="cx">                                 3F889D15188778C900FEADAF /* WebVideoFullscreenManagerProxy.h in Headers */,
</span><span class="cx">                                 29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObjectBase.h in Headers */,
</span><del>-                                0792164D1AA5501F00A3C049 /* WebMediaPlaybackTargetPickerProxy.h in Headers */,
</del><span class="cx">                                 29232DF418B29D6800D0596F /* WKAccessibilityWebPageObjectMac.h in Headers */,
</span><span class="cx">                                 2D0730A319F9C7DA00E9D9C4 /* WKActionMenuController.h in Headers */,
</span><span class="cx">                                 934B724419F5B9BE00AE96D6 /* WKActionMenuItemTypes.h in Headers */,
</span><span class="lines">@@ -8304,7 +8291,6 @@
</span><span class="cx">                                 1AB8A1F418400B8F00E9AE69 /* WKPageFindClient.h in Headers */,
</span><span class="cx">                                 1AB8A1F618400B9D00E9AE69 /* WKPageFindMatchesClient.h in Headers */,
</span><span class="cx">                                 1AB8A1F018400B0000E9AE69 /* WKPageFormClient.h in Headers */,
</span><del>-                                079216501AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.h in Headers */,
</del><span class="cx">                                 BC7B633712A45ABA00D174A4 /* WKPageGroup.h in Headers */,
</span><span class="cx">                                 1AB8A1EC1840080900E9AE69 /* WKPageLoaderClient.h in Headers */,
</span><span class="cx">                                 BC2D021912AC426C00E732A3 /* WKPageLoadTypes.h in Headers */,
</span><span class="lines">@@ -9570,7 +9556,6 @@
</span><span class="cx">                                 0FCB4E6318BBE3D9000FCFC9 /* PageClientImpl.mm in Sources */,
</span><span class="cx">                                 0FCB4E4718BBE044000FCFC9 /* PageClientImplIOS.mm in Sources */,
</span><span class="cx">                                 1AC7537B183A9FDB0072CB15 /* PageLoadState.cpp in Sources */,
</span><del>-                                079216511AA5528A00A3C049 /* WebMediaPlaybackTargetPickerProxyMac.mm in Sources */,
</del><span class="cx">                                 C574A58212E66681002DFE98 /* PasteboardTypes.mm in Sources */,
</span><span class="cx">                                 E19582D6153CC05400B60875 /* PDFKitImports.mm in Sources */,
</span><span class="cx">                                 2D870D1016234FFE000A3F20 /* PDFPlugin.mm in Sources */,
</span><span class="lines">@@ -9769,7 +9754,6 @@
</span><span class="cx">                                 BC111A5E112F4FBB00337BAB /* WebEditorClient.cpp in Sources */,
</span><span class="cx">                                 2D28F3E61885CCC1004B9EAE /* WebEditorClientIOS.mm in Sources */,
</span><span class="cx">                                 C5237F6012441CA300780472 /* WebEditorClientMac.mm in Sources */,
</span><del>-                                0792164C1AA5501900A3C049 /* WebMediaPlaybackTargetPickerProxy.cpp in Sources */,
</del><span class="cx">                                 BC111AE0112F5BC200337BAB /* WebErrorsMac.mm in Sources */,
</span><span class="cx">                                 C0337DAE127A24FE008FF4F4 /* WebEvent.cpp in Sources */,
</span><span class="cx">                                 BC032DBA10F4380F0058C15A /* WebEventConversion.cpp in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>