<!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>[170562] 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/170562">170562</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2014-06-27 17:19:41 -0700 (Fri, 27 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Win] Implement parts of the AVFOUNDATION_LOADER_DELEGATE logic for Windows
https://bugs.webkit.org/show_bug.cgi?id=134418

Reviewed by Eric Carlson.


../WebCore: 
Land an initial implementation of AVFOUNDATION_LOADER_DELEGATE for
Windows.

* DerivedSources.cpp: Add new IDL files
* DerivedSources.make: Add check for AVFOUNDATION_LOADER_DELEGATE.
* Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp: Added (ported from
Objective C.)
* WebCore.vcxproj/WebCore.vcxproj: Update for new files.
* WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
* WebCore.vcxproj/WebCoreCommon.props: Add new search paths.
* WebCore.vcxproj/WebCoreTestSupport.vcxproj: Update for new files.
* WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters: Ditto.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):
Moved from MediaPlayerPrivateAVFoundationObjC.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
* platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:
Update for new API calls.
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp: Added.
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h: Added.
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
Updated for new AVFOUNDATION_LOADER_DELEGATE methods.
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
* platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp: Added.
* platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h: Added.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
Remove method that was moved to base class.

../WebKit: 
* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add new
export.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcescpp">trunk/Source/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreModulesencryptedmediaCDMPrivateMediaPlayercpp">trunk/Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCoreCommonprops">trunk/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationh">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfAVFoundationCFSoftLinkingh">trunk/Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFh">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportsdefin">trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfCDMSessionAVFoundationCFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfCDMSessionAVFoundationCFh">trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfWebCoreAVCFResourceLoadercpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfWebCoreAVCFResourceLoaderh">trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/ChangeLog        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -1,3 +1,39 @@
</span><ins>+2014-06-27  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        [Win] Implement parts of the AVFOUNDATION_LOADER_DELEGATE logic for Windows
+        https://bugs.webkit.org/show_bug.cgi?id=134418
+
+        Reviewed by Eric Carlson.
+
+        Land an initial implementation of AVFOUNDATION_LOADER_DELEGATE for
+        Windows.
+
+        * DerivedSources.cpp: Add new IDL files
+        * DerivedSources.make: Add check for AVFOUNDATION_LOADER_DELEGATE.
+        * Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp: Added (ported from
+        Objective C.)
+        * WebCore.vcxproj/WebCore.vcxproj: Update for new files.
+        * WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
+        * WebCore.vcxproj/WebCoreCommon.props: Add new search paths.
+        * WebCore.vcxproj/WebCoreTestSupport.vcxproj: Update for new files.
+        * WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters: Ditto.
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData):
+        Moved from MediaPlayerPrivateAVFoundationObjC.
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
+        * platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:
+        Update for new API calls.
+        * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp: Added.
+        * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h: Added.
+        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
+        Updated for new AVFOUNDATION_LOADER_DELEGATE methods.
+        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
+        * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp: Added.
+        * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h: Added.
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        Remove method that was moved to base class.
+
</ins><span class="cx"> 2014-06-27  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove BufferForAppendingHyphen
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.cpp (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.cpp        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/DerivedSources.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -250,6 +250,13 @@
</span><span class="cx"> #endif
</span><span class="cx"> #include &quot;JSMediaError.cpp&quot;
</span><span class="cx"> #include &quot;JSMediaList.cpp&quot;
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+#include &quot;JSMediaKeyError.cpp&quot;
+#include &quot;JSMediaKeyMessageEvent.cpp&quot;
+#include &quot;JSMediaKeyNeededEvent.cpp&quot;
+#include &quot;JSMediaKeySession.cpp&quot;
+#include &quot;JSMediaKeys.cpp&quot;
+#endif
</ins><span class="cx"> #include &quot;JSMediaQueryList.cpp&quot;
</span><span class="cx"> #include &quot;JSMediaQueryListListener.cpp&quot;
</span><span class="cx"> #include &quot;JSMessageChannel.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/DerivedSources.make        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -1309,5 +1309,6 @@
</span><span class="cx">         echo &quot;/* Identifying AVFoundation Support */&quot; &gt; $@
</span><span class="cx">         if [ -f &quot;$(WEBKIT_LIBRARIES)/include/AVFoundationCF/AVCFBase.h&quot; ]||[ -f &quot;$(WEBKITLIBRARIESDIR)/include/AVFoundationCF/AVCFBase.h&quot; ]; then echo &quot;#define HAVE_AVCF 1&quot; &gt;&gt; $@; else echo &gt;&gt; $@; fi
</span><span class="cx">         if [ -f &quot;$(WEBKIT_LIBRARIES)/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h&quot; ]||[ -f &quot;$(WEBKITLIBRARIESDIR)/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h&quot; ]; then echo &quot;#define HAVE_AVCF_LEGIBLE_OUTPUT 1&quot; &gt;&gt; $@; else echo &gt;&gt; $@; fi
</span><ins>+        if [ -f &quot;$(WEBKIT_LIBRARIES)/include/AVFoundationCF/AVCFAssetResourceLoader.h&quot; ]||[ -f &quot;$(WEBKITLIBRARIESDIR)/include/AVFoundationCF/AVCFAssetResourceLoader.h&quot; ]; then echo &quot;#define HAVE_AVFOUNDATION_LOADER_DELEGATE 1&quot; &gt;&gt; $@; else echo &gt;&gt; $@; fi
</ins><span class="cx"> 
</span><span class="cx"> endif # Windows_NT
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaCDMPrivateMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -23,17 +23,17 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#import &quot;config.h&quot;
-#import &quot;CDMPrivateMediaPlayer.h&quot;
</del><ins>+#include &quot;config.h&quot;
+#include &quot;CDMPrivateMediaPlayer.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA_V2)
</span><span class="cx"> 
</span><del>-#import &quot;CDM.h&quot;
-#import &quot;CDMSession.h&quot;
-#import &quot;ContentType.h&quot;
-#import &quot;ExceptionCode.h&quot;
-#import &quot;MediaPlayer.h&quot;
-#import &quot;SoftLinking.h&quot;
</del><ins>+#include &quot;CDM.h&quot;
+#include &quot;CDMSession.h&quot;
+#include &quot;ContentType.h&quot;
+#include &quot;ExceptionCode.h&quot;
+#include &quot;MediaPlayer.h&quot;
+#include &quot;SoftLinking.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -3272,6 +3272,76 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyError.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyMessageEvent.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyNeededEvent.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeys.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeySession.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaList.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -6609,6 +6679,12 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\CDM.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\CDMPrivateMediaPlayer.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeyMessageEvent.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeyNeededEvent.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeys.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeySession.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\Modules\gamepad\Gamepad.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\Modules\gamepad\GamepadButton.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\Modules\gamepad\GamepadEvent.cpp&quot; /&gt;
</span><span class="lines">@@ -7256,6 +7332,8 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileChooser.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileStream.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileSystem.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\platform\graphics\avfoundation\cf\CDMSessionAVFoundationCF.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\platform\graphics\avfoundation\cf\WebCoreAVCFResourceLoader.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\platform\graphics\ISOVTTCue.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\audio\AudioSession.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\audio\MediaSession.cpp&quot; /&gt;
</span><span class="lines">@@ -18362,6 +18440,11 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSLocation.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaControlsHost.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaError.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyError.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaMessageEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaNeededEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeys.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeySession.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaList.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaQueryList.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaQueryListListener.h&quot; /&gt;
</span><span class="lines">@@ -18830,6 +18913,13 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\track\VTTRegion.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\track\VTTRegionList.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\track\WebVTTElement.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDM.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDMPrivate.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDMPrivateMediaPlayer.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeyMessageEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeyNeededEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeys.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeySession.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\Modules\gamepad\Gamepad.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\Modules\gamepad\GamepadButton.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\Modules\gamepad\GamepadEvent.h&quot; /&gt;
</span><span class="lines">@@ -19198,8 +19288,10 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\audio\MediaSessionManager.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\ANGLEWebKitBridge.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\AudioTrackPrivate.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\CDMSessionAVFoundationCF.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\InbandTextTrackPrivateAVCF.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\InbandTextTrackPrivateLegacyAVCF.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\WebCoreAVCFResourceLoader.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\InbandTextTrackPrivateAVF.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\cairo\TileCairo.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\ca\LayerPool.h&quot; /&gt;
</span><span class="lines">@@ -21230,4 +21322,4 @@
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
</span><span class="cx">     &lt;Import Project=&quot;$(VCTargetsPath)\BuildCustomizations\masm.targets&quot; /&gt;
</span><span class="cx">   &lt;/ImportGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -340,6 +340,9 @@
</span><span class="cx">     &lt;Filter Include=&quot;platform\soup&quot;&gt;
</span><span class="cx">       &lt;UniqueIdentifier&gt;{b353479a-a6bf-41ad-b655-876165789b99}&lt;/UniqueIdentifier&gt;
</span><span class="cx">     &lt;/Filter&gt;
</span><ins>+    &lt;Filter Include=&quot;Modules\encryptedmedia&quot;&gt;
+      &lt;UniqueIdentifier&gt;{f9aa953b-e2a1-4d9e-a049-c34b10c81b4e}&lt;/UniqueIdentifier&gt;
+    &lt;/Filter&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\DerivedSources.cpp&quot;&gt;
</span><span class="lines">@@ -7104,6 +7107,53 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\graphics\ca\TileCoverageMap.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\graphics\ca&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepad.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepadButton.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepadEvent.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\gamepad\Gamepad.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\gamepad\GamepadButton.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\gamepad\GamepadEvent.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\gamepad\NavigatorGamepad.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\platform\graphics\ISOVTTCue.cpp&quot; /&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\CDM.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\CDMPrivateMediaPlayer.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeyMessageEvent.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeyNeededEvent.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeys.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\Modules\encryptedmedia\MediaKeySession.cpp&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyMessageEvent.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyNeededEvent.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeys.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeySession.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyError.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\platform\graphics\avfoundation\cf\CDMSessionAVFoundationCF.cpp&quot;&gt;
+      &lt;Filter&gt;platform\graphics\avfoundation\cf&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
+    &lt;ClCompile Include=&quot;..\platform\graphics\avfoundation\cf\WebCoreAVCFResourceLoader.cpp&quot;&gt;
+      &lt;Filter&gt;platform\graphics\avfoundation\cf&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\Modules\geolocation\Coordinates.h&quot;&gt;
</span><span class="lines">@@ -14964,6 +15014,56 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\graphics\ca\TileCoverageMap.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform\graphics\ca&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepad.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepadButton.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepadEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\gamepad\Gamepad.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\gamepad\GamepadButton.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\gamepad\GamepadEvent.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\gamepad\NavigatorGamepad.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\platform\graphics\ISOVTTCue.h&quot; /&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDM.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDMPrivate.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\CDMPrivateMediaPlayer.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeyMessageEvent.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeyNeededEvent.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeys.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\Modules\encryptedmedia\MediaKeySession.h&quot;&gt;
+      &lt;Filter&gt;Modules\encryptedmedia&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaNeededEvent.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeys.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeySession.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaMessageEvent.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSMediaKeyError.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\CDMSessionAVFoundationCF.h&quot;&gt;
+      &lt;Filter&gt;platform\graphics\avfoundation\cf&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
+    &lt;ClInclude Include=&quot;..\platform\graphics\avfoundation\cf\WebCoreAVCFResourceLoader.h&quot;&gt;
+      &lt;Filter&gt;platform\graphics\avfoundation\cf&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;None Include=&quot;..\css\CSSGrammar.y.in&quot;&gt;
</span><span class="lines">@@ -15172,4 +15272,4 @@
</span><span class="cx">       &lt;Filter&gt;platform\win&lt;/Filter&gt;
</span><span class="cx">     &lt;/MASM&gt;
</span><span class="cx">   &lt;/ItemGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCoreCommonprops"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCoreCommon.props        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -7,11 +7,11 @@
</span><span class="cx">   &lt;/PropertyGroup&gt;
</span><span class="cx">   &lt;ItemDefinitionGroup&gt;
</span><span class="cx">     &lt;ClCompile&gt;
</span><del>-      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\gamepad;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\cssjit;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\audio;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\icu;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\replay;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\crypto\keys;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</del><ins>+      &lt;AdditionalIncludeDirectories&gt;$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\encryptedmedia;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\gamepad;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\cssjit;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\audio;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\icu;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\replay;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\crypto\keys;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;
</ins><span class="cx">       &lt;PreprocessorDefinitions&gt;DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
</span><span class="cx">       &lt;PrecompiledHeader&gt;Use&lt;/PrecompiledHeader&gt;
</span><span class="cx">       &lt;PrecompiledHeaderFile&gt;WebCorePrefix.h&lt;/PrecompiledHeaderFile&gt;
</span><span class="cx">       &lt;ForcedIncludeFiles&gt;WebCorePrefix.h;ICUVersion.h;%(ForcedIncludeFiles)&lt;/ForcedIncludeFiles&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">   &lt;/ItemDefinitionGroup&gt;
</span><del>-&lt;/Project&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/Project&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -830,6 +830,14 @@
</span><span class="cx">       &lt;ForcedIncludeFiles Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;
</span><span class="cx">       &lt;/ForcedIncludeFiles&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\testing\MockCDM.cpp&quot;&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+      &lt;PrecompiledHeader Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;NotUsing&lt;/PrecompiledHeader&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\InternalSettingsGenerated.h&quot; /&gt;
</span><span class="lines">@@ -841,6 +849,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\JSInternalSettingsGenerated.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\testing\MallocStatistics.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\testing\MemoryInfo.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\testing\MockCDM.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\testing\TypeConversions.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\testing\Internals.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\testing\InternalSettings.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCoreTestSupportvcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -39,6 +39,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\testing\js\WebCoreTestSupport.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;testing&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\testing\MockCDM.cpp&quot;&gt;
+      &lt;Filter&gt;testing&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><span class="cx">   &lt;ItemGroup&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources\InternalSettingsGenerated.h&quot;&gt;
</span><span class="lines">@@ -81,5 +84,8 @@
</span><span class="cx">       &lt;Filter&gt;testing&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\config.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\testing\MockCDM.h&quot;&gt;
+      &lt;Filter&gt;testing&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">   &lt;/ItemGroup&gt;
</span><del>-&lt;/Project&gt;
</del><ins>+&lt;/Project&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -42,6 +42,8 @@
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;SoftLinking.h&quot;
</span><span class="cx"> #include &lt;CoreMedia/CoreMedia.h&gt;
</span><ins>+#include &lt;runtime/DataView.h&gt;
+#include &lt;runtime/Uint16Array.h&gt;
</ins><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1003,6 +1005,59 @@
</span><span class="cx">         m_player-&gt;currentPlaybackTargetIsWirelessChanged();
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><ins>+
+#if ENABLE(ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA_V2)
+bool MediaPlayerPrivateAVFoundation::extractKeyURIKeyIDAndCertificateFromInitData(Uint8Array* initData, String&amp; keyURI, String&amp; keyID, RefPtr&lt;Uint8Array&gt;&amp; certificate)
+{
+    // initData should have the following layout:
+    // [4 bytes: keyURI length][N bytes: keyURI][4 bytes: contentID length], [N bytes: contentID], [4 bytes: certificate length][N bytes: certificate]
+    if (initData-&gt;byteLength() &lt; 4)
+        return false;
+
+    RefPtr&lt;ArrayBuffer&gt; initDataBuffer = initData-&gt;buffer();
+
+    // Use a DataView to read uint32 values from the buffer, as Uint32Array requires the reads be aligned on 4-byte boundaries. 
+    RefPtr&lt;JSC::DataView&gt; initDataView = JSC::DataView::create(initDataBuffer, 0, initDataBuffer-&gt;byteLength());
+    uint32_t offset = 0;
+    bool status = true;
+
+    uint32_t keyURILength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
+    offset += 4;
+    if (!status || offset + keyURILength &gt; initData-&gt;length())
+        return false;
+
+    RefPtr&lt;Uint16Array&gt; keyURIArray = Uint16Array::create(initDataBuffer, offset, keyURILength);
+    if (!keyURIArray)
+        return false;
+
+    keyURI = String(reinterpret_cast&lt;UChar*&gt;(keyURIArray-&gt;data()), keyURILength / sizeof(unsigned short));
+    offset += keyURILength;
+
+    uint32_t keyIDLength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
+    offset += 4;
+    if (!status || offset + keyIDLength &gt; initData-&gt;length())
+        return false;
+
+    RefPtr&lt;Uint16Array&gt; keyIDArray = Uint16Array::create(initDataBuffer, offset, keyIDLength);
+    if (!keyIDArray)
+        return false;
+
+    keyID = String(reinterpret_cast&lt;UChar*&gt;(keyIDArray-&gt;data()), keyIDLength / sizeof(unsigned short));
+    offset += keyIDLength;
+
+    uint32_t certificateLength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
+    offset += 4;
+    if (!status || offset + certificateLength &gt; initData-&gt;length())
+        return false;
+
+    certificate = Uint8Array::create(initDataBuffer, offset, certificateLength);
+    if (!certificate)
+        return false;
+
+    return true;
+}
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -142,6 +142,10 @@
</span><span class="cx">     void dispatchNotification();
</span><span class="cx">     void clearMainThreadPendingFlag();
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA_V2)
+    static bool extractKeyURIKeyIDAndCertificateFromInitData(Uint8Array* initData, String&amp; keyURI, String&amp; keyID, RefPtr&lt;Uint8Array&gt;&amp; certificate);
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     MediaPlayerPrivateAVFoundation(MediaPlayer*);
</span><span class="cx">     virtual ~MediaPlayerPrivateAVFoundation();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfAVFoundationCFSoftLinkingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -25,6 +25,16 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;SoftLinking.h&quot;
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
+#include &lt;AVFoundationCF/AVCFPlayerItemLegibleOutput.h&gt;
+#endif
+
+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+#include &lt;AVFoundationCF/AVCFAssetResourceLoader.h&gt;
+#endif
+
+#include &lt;d3d9.h&gt;
+
</ins><span class="cx"> // Soft-link against AVFoundationCF functions and variables required by MediaPlayerPrivateAVFoundationCF.cpp.
</span><span class="cx"> 
</span><span class="cx"> #ifdef DEBUG_ALL
</span><span class="lines">@@ -216,10 +226,11 @@
</span><span class="cx"> #define AVCFURLAssetCreateWithURLAndOptions softLink_AVCFURLAssetCreateWithURLAndOptions
</span><span class="cx"> 
</span><span class="cx"> SOFT_LINK_DLL_IMPORT_OPTIONAL(AVFoundationCF, AVCFPlayerSetDirect3DDevice, void, __cdecl, (AVCFPlayerRef player, IDirect3DDevice9* d3dDevice))
</span><ins>+#define AVCFPlayerSetDirect3DDevice softLink_AVCFPlayerSetDirect3DDevice
</ins><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) &amp;&amp; HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx"> 
</span><del>-SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetGetSelectionGroupForMediaCharacteristic , AVCFMediaSelectionGroupRef, __cdecl, (AVCFAssetRef asset, CFStringRef mediaCharacteristic), (asset, mediaCharacteristic))
</del><ins>+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetGetSelectionGroupForMediaCharacteristic, AVCFMediaSelectionGroupRef, __cdecl, (AVCFAssetRef asset, CFStringRef mediaCharacteristic), (asset, mediaCharacteristic))
</ins><span class="cx"> #define AVCFAssetGetSelectionGroupForMediaCharacteristic  softLink_AVCFAssetGetSelectionGroupForMediaCharacteristic 
</span><span class="cx"> 
</span><span class="cx"> SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFMediaSelectionCopyPlayableOptionsFromArray, CFArrayRef, __cdecl, (CFArrayRef selectionOptions), (selectionOptions))
</span><span class="lines">@@ -270,8 +281,29 @@
</span><span class="cx"> SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFPlayerItemSelectMediaOptionInMediaSelectionGroup, void, __cdecl, (AVCFPlayerItemRef playerItem, AVCFMediaSelectionOptionRef selectionOption, AVCFMediaSelectionGroupRef selectionGroup), (playerItem, selectionOption, selectionGroup))
</span><span class="cx"> #define AVCFPlayerItemSelectMediaOptionInMediaSelectionGroup softLink_AVCFPlayerItemSelectMediaOptionInMediaSelectionGroup
</span><span class="cx"> 
</span><ins>+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFURLAssetCopyURL, CFURLRef, __cdecl, (AVCFURLAssetRef asset), (asset))
+#define AVCFURLAssetCopyURL softLink_AVCFURLAssetCopyURL
+
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFURLAssetGetResourceLoader, AVCFAssetResourceLoaderRef, __cdecl, (AVCFURLAssetRef asset), (asset))
+#define AVCFURLAssetGetResourceLoader softLink_AVCFURLAssetGetResourceLoader
+
+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetResourceLoaderSetCallbacks, void, __cdecl, (AVCFAssetResourceLoaderRef resourceLoader, const AVCFAssetResourceLoaderCallbacks *callbacks, dispatch_queue_t callbackQueue), (resourceLoader, callbacks, callbackQueue))
+#define AVCFAssetResourceLoaderSetCallbacks  softLink_AVCFAssetResourceLoaderSetCallbacks 
+
+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetResourceLoadingRequestCreateStreamingContentKeyRequestDataForApp, CFDataRef, __cdecl, (AVCFAssetResourceLoadingRequestRef loadingRequest, CFDataRef appIdentifier, CFDataRef contentIdentifier, CFDictionaryRef options, CFErrorRef *outError), (loadingRequest, appIdentifier, contentIdentifier, options, outError))
+#define AVCFAssetResourceLoadingRequestCreateStreamingContentKeyRequestDataForApp  softLink_AVCFAssetResourceLoadingRequestCreateStreamingContentKeyRequestDataForApp 
+
+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetResourceLoadingRequestFinishLoadingWithError, void, __cdecl, (AVCFAssetResourceLoadingRequestRef loadingRequest, CFErrorRef error), (loadingRequest, error))
+#define AVCFAssetResourceLoadingRequestFinishLoadingWithError  softLink_AVCFAssetResourceLoadingRequestFinishLoadingWithError 
+
+SOFT_LINK_DLL_IMPORT(AVFoundationCF, AVCFAssetResourceLoadingRequestGetURLRequest, CFURLRequestRef, __cdecl, (AVCFAssetResourceLoadingRequestRef loadingRequest), (loadingRequest))
+#define AVCFAssetResourceLoadingRequestGetURLRequest  softLink_AVCFAssetResourceLoadingRequestGetURLRequest 
+
+#endif
+
</ins><span class="cx"> // Variables
</span><span class="cx"> 
</span><span class="cx"> SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFAssetImageGeneratorApertureModeCleanAperture, const CFStringRef);
</span><span class="lines">@@ -357,6 +389,9 @@
</span><span class="cx"> SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFAssetPropertyAvailableMediaCharacteristicsWithMediaSelectionOptions, const CFStringRef);
</span><span class="cx"> #define AVCFAssetPropertyAvailableMediaCharacteristicsWithMediaSelectionOptions  getAVCFAssetPropertyAvailableMediaCharacteristicsWithMediaSelectionOptions()
</span><span class="cx"> 
</span><ins>+SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey, const CFStringRef);
+#define AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey  getAVCFURLAssetInheritURIQueryComponentFromReferencingURIKey()
+
</ins><span class="cx"> SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFMediaCharacteristicEasyToRead, const CFStringRef);
</span><span class="cx"> #define AVCFMediaCharacteristicEasyToRead getAVCFMediaCharacteristicEasyToRead()
</span><span class="cx"> 
</span><span class="lines">@@ -384,7 +419,4 @@
</span><span class="cx"> SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly, const CFStringRef);
</span><span class="cx"> #define AVCFPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly getAVCFPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly()
</span><span class="cx"> 
</span><del>-SOFT_LINK_VARIABLE_DLL_IMPORT(AVFoundationCF, AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey, const CFStringRef);
-#define AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey getAVCFURLAssetInheritURIQueryComponentFromReferencingURIKey()
-
</del><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfCDMSessionAVFoundationCFcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp (0 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -0,0 +1,129 @@
</span><ins>+/*
+ * 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CDMSessionAVFoundationCF.h&quot;
+
+#if ENABLE(ENCRYPTED_MEDIA_V2) &amp;&amp; HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
+
+#include &quot;CDM.h&quot;
+#include &quot;CDMSession.h&quot;
+#include &quot;ExceptionCode.h&quot;
+#include &quot;MediaPlayer.h&quot;
+#include &quot;MediaPlayerPrivateAVFoundationCF.h&quot;
+#include &quot;NotImplemented.h&quot;
+#include &quot;SoftLinking.h&quot;
+#include &quot;UUID.h&quot;
+#include &lt;AVFoundationCF/AVFoundationCF.h&gt;
+#include &lt;wtf/text/CString.h&gt;
+
+// The softlink header files must be included after the AVCF and CoreMedia header files.
+#include &quot;AVFoundationCFSoftLinking.h&quot;
+
+namespace WebCore {
+
+CDMSessionAVFoundationCF::CDMSessionAVFoundationCF(MediaPlayerPrivateAVFoundationCF* parent)
+    : m_parent(parent)
+    , m_client(nullptr)
+    , m_sessionId(createCanonicalUUIDString())
+{
+}
+
+PassRefPtr&lt;Uint8Array&gt; CDMSessionAVFoundationCF::generateKeyRequest(const String&amp; mimeType, Uint8Array* initData, String&amp; destinationURL, unsigned short&amp; errorCode, unsigned long&amp; systemCode)
+{
+    UNUSED_PARAM(mimeType);
+
+    String keyURI;
+    String keyID;
+    RefPtr&lt;Uint8Array&gt; certificate;
+    if (!MediaPlayerPrivateAVFoundationCF::extractKeyURIKeyIDAndCertificateFromInitData(initData, keyURI, keyID, certificate)) {
+        errorCode = MediaPlayer::InvalidPlayerState;
+        return nullptr;
+    }
+
+    m_request = m_parent-&gt;takeRequestForKeyURI(keyURI);
+    if (!m_request) {
+        errorCode = MediaPlayer::InvalidPlayerState;
+        return nullptr;
+    }
+
+    RetainPtr&lt;CFMutableDataRef&gt; certificateData = adoptCF(CFDataCreateMutable(kCFAllocatorDefault, certificate-&gt;byteLength()));
+    CFDataAppendBytes(certificateData.get(), reinterpret_cast&lt;const UInt8*&gt;(certificate-&gt;baseAddress()), certificate-&gt;byteLength());
+
+    CString assetStr = keyID.utf8();
+    RetainPtr&lt;CFMutableDataRef&gt; assetID = adoptCF(CFDataCreateMutable(kCFAllocatorDefault, assetStr.length()));
+    CFDataAppendBytes(assetID.get(), reinterpret_cast&lt;const UInt8*&gt;(assetStr.data()), assetStr.length());
+
+    CFErrorRef cfError = nullptr;
+    RetainPtr&lt;CFDataRef&gt; keyRequest = AVCFAssetResourceLoadingRequestCreateStreamingContentKeyRequestDataForApp(m_request.get(), certificateData.get(), assetID.get(), nullptr, &amp;cfError);
+
+    if (!keyRequest) {
+        RetainPtr&lt;CFDictionaryRef&gt; userInfo;
+        if (cfError) {
+            userInfo = adoptCF(CFErrorCopyUserInfo(cfError));
+
+            if (userInfo) {
+                CFErrorRef underlyingError = (CFErrorRef)CFDictionaryGetValue(userInfo.get(), kCFErrorUnderlyingErrorKey);
+                if (underlyingError)
+                    systemCode = CFErrorGetCode(underlyingError);
+            }
+
+            CFRelease(cfError);
+        }
+
+        return nullptr;
+    }
+
+    errorCode = MediaPlayer::NoError;
+    systemCode = 0;
+    destinationURL = String();
+
+    RefPtr&lt;ArrayBuffer&gt; keyRequestBuffer = ArrayBuffer::create(CFDataGetBytePtr(keyRequest.get()), CFDataGetLength(keyRequest.get()));
+    return Uint8Array::create(keyRequestBuffer, 0, keyRequestBuffer-&gt;byteLength());
+}
+
+void CDMSessionAVFoundationCF::releaseKeys()
+{
+}
+
+bool CDMSessionAVFoundationCF::update(Uint8Array* key, RefPtr&lt;Uint8Array&gt;&amp; nextMessage, unsigned short&amp; errorCode, unsigned long&amp; systemCode)
+{
+    RetainPtr&lt;CFMutableDataRef&gt; keyData = adoptCF(CFDataCreateMutable(kCFAllocatorDefault, key-&gt;byteLength()));
+    CFDataAppendBytes(keyData.get(), reinterpret_cast&lt;const UInt8*&gt;(key-&gt;baseAddress()), key-&gt;byteLength());
+
+    // TODO: AVCFAssetResourceLoadingDataRequestRespondWithData(m_request.get(), keyData.get());
+    // TODO: AVCFAssetResourceLoadingRequestFinishedLoading(m_request.get());
+    notImplemented();
+
+    errorCode = MediaPlayer::NoError;
+    systemCode = 0;
+    nextMessage = nullptr;
+
+    return true;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfCDMSessionAVFoundationCFh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h (0 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+/*
+ * 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.
+ */
+
+#ifndef CDMSessionAVFoundationCF_h
+#define CDMSessionAVFoundationCF_h
+
+#include &quot;CDMSession.h&quot;
+#include &lt;wtf/PassOwnPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if ENABLE(ENCRYPTED_MEDIA_V2) &amp;&amp; HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
+
+typedef struct OpaqueAVCFAssetResourceLoadingRequest* AVCFAssetResourceLoadingRequestRef;
+
+namespace WebCore {
+
+class MediaPlayerPrivateAVFoundationCF;
+
+class CDMSessionAVFoundationCF : public CDMSession {
+public:
+    CDMSessionAVFoundationCF(MediaPlayerPrivateAVFoundationCF* parent);
+    virtual ~CDMSessionAVFoundationCF() { }
+
+    virtual void setClient(CDMSessionClient* client) override { m_client = client; }
+    virtual const String&amp; sessionId() const override { return m_sessionId; }
+    virtual PassRefPtr&lt;Uint8Array&gt; generateKeyRequest(const String&amp; mimeType, Uint8Array* initData, String&amp; destinationURL, unsigned short&amp; errorCode, unsigned long&amp; systemCode) override;
+    virtual void releaseKeys() override;
+    virtual bool update(Uint8Array*, RefPtr&lt;Uint8Array&gt;&amp; nextMessage, unsigned short&amp; errorCode, unsigned long&amp; systemCode) override;
+
+protected:
+    MediaPlayerPrivateAVFoundationCF* m_parent;
+    CDMSessionClient* m_client;
+    String m_sessionId;
+    RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; m_request;
+};
+
+}
+
+#endif
+
+#endif // CDMSessionAVFoundationCF_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;MediaPlayerPrivateAVFoundationCF.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ApplicationCacheResource.h&quot;
</span><ins>+#include &quot;CDMSessionAVFoundationCF.h&quot;
</ins><span class="cx"> #include &quot;COMPtr.h&quot;
</span><span class="cx"> #include &quot;FloatConversion.h&quot;
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="lines">@@ -46,20 +47,29 @@
</span><span class="cx"> #include &quot;PlatformCALayerWin.h&quot;
</span><span class="cx"> #include &quot;SoftLinking.h&quot;
</span><span class="cx"> #include &quot;TimeRanges.h&quot;
</span><ins>+#include &quot;WebCoreAVCFResourceLoader.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #include &lt;AVFoundationCF/AVCFPlayerItem.h&gt;
</span><span class="cx"> #if HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx"> #include &lt;AVFoundationCF/AVCFPlayerItemLegibleOutput.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> #include &lt;AVFoundationCF/AVCFPlayerLayer.h&gt;
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE) || HAVE(ENCRYPTED_MEDIA_V2)
+#include &lt;AVFoundationCF/AVCFAssetResourceLoader.h&gt;
+#endif
</ins><span class="cx"> #include &lt;AVFoundationCF/AVFoundationCF.h&gt;
</span><span class="cx"> #include &lt;CoreMedia/CoreMedia.h&gt;
</span><span class="cx"> #include &lt;d3d9.h&gt;
</span><span class="cx"> #include &lt;delayimp.h&gt;
</span><span class="cx"> #include &lt;dispatch/dispatch.h&gt;
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+#include &lt;runtime/DataView.h&gt;
+#include &lt;runtime/Uint16Array.h&gt;
+#endif
</ins><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/Threading.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><ins>+#include &lt;wtf/text/StringView.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> // The softlink header files must be included after the AVCF and CoreMedia header files.
</span><span class="cx"> #include &quot;AVFoundationCFSoftLinking.h&quot;
</span><span class="lines">@@ -117,6 +127,9 @@
</span><span class="cx">     static void legibleOutputCallback(void* context, AVCFPlayerItemLegibleOutputRef, CFArrayRef attributedString, CFArrayRef nativeSampleBuffers, CMTime itemTime);
</span><span class="cx">     static void processCue(void* context);
</span><span class="cx"> #endif
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    static Boolean resourceLoaderShouldWaitForLoadingOfRequestedResource(AVCFAssetResourceLoaderRef, AVCFAssetResourceLoadingRequestRef, void* context);
+#endif
</ins><span class="cx">     static void loadMetadataCompletionCallback(AVCFAssetRef, void*);
</span><span class="cx">     static void loadPlayableCompletionCallback(AVCFAssetRef, void*);
</span><span class="cx">     static void periodicTimeObserverCallback(AVCFPlayerRef, CMTime, void*);
</span><span class="lines">@@ -136,6 +149,10 @@
</span><span class="cx"> #endif
</span><span class="cx">     inline dispatch_queue_t dispatchQueue() const { return m_notificationQueue; }
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+    RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; takeRequestForKeyURI(const String&amp;);
+#endif
+
</ins><span class="cx"> private:
</span><span class="cx">     inline void* callbackContext() const { return reinterpret_cast&lt;void*&gt;(m_objectID); }
</span><span class="cx"> 
</span><span class="lines">@@ -144,6 +161,10 @@
</span><span class="cx">     static AVFWrapper* avfWrapperForCallbackContext(void*);
</span><span class="cx">     void addToMap();
</span><span class="cx">     void removeFromMap() const;
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    bool shouldWaitForLoadingOfResource(AVCFAssetResourceLoadingRequestRef avRequest);
+    static void processShouldWaitForLoadingOfResource(void* context);
+#endif
</ins><span class="cx"> 
</span><span class="cx">     static void disconnectAndDeleteAVFWrapper(void*);
</span><span class="cx"> 
</span><span class="lines">@@ -162,6 +183,7 @@
</span><span class="cx">     RetainPtr&lt;AVCFPlayerItemLegibleOutputRef&gt; m_legibleOutput;
</span><span class="cx">     RetainPtr&lt;AVCFMediaSelectionGroupRef&gt; m_selectionGroup;
</span><span class="cx"> #endif
</span><ins>+
</ins><span class="cx">     dispatch_queue_t m_notificationQueue;
</span><span class="cx"> 
</span><span class="cx">     mutable RetainPtr&lt;CACFLayerRef&gt; m_caVideoLayer;
</span><span class="lines">@@ -171,6 +193,10 @@
</span><span class="cx">     COMPtr&lt;IDirect3DDevice9Ex&gt; m_d3dDevice;
</span><span class="cx"> 
</span><span class="cx">     InbandTextTrackPrivateAVF* m_currentTextTrack;
</span><ins>+
+#if ENABLE(ENCRYPTED_MEDIA_V2)
+    HashMap&lt;String, RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt;&gt; m_keyURIToRequestMap;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> uintptr_t AVFWrapper::s_nextAVFWrapperObjectID;
</span><span class="lines">@@ -288,6 +314,24 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+static dispatch_queue_t globalQueue = nullptr;
+
+static void initGlobalLoaderDelegateQueue(void* ctx)
+{
+    globalQueue = dispatch_queue_create(&quot;WebCoreAVFLoaderDelegate queue&quot;, DISPATCH_QUEUE_SERIAL);
+}
+
+static dispatch_queue_t globalLoaderDelegateQueue()
+{
+    static dispatch_once_t onceToken;
+
+    dispatch_once_f(&amp;onceToken, nullptr, initGlobalLoaderDelegateQueue);
+
+    return globalQueue;
+}
+#endif
+
</ins><span class="cx"> PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; MediaPlayerPrivateAVFoundationCF::create(MediaPlayer* player) 
</span><span class="cx"> { 
</span><span class="cx">     return adoptPtr(new MediaPlayerPrivateAVFoundationCF(player));
</span><span class="lines">@@ -310,6 +354,10 @@
</span><span class="cx"> MediaPlayerPrivateAVFoundationCF::~MediaPlayerPrivateAVFoundationCF()
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaPlayerPrivateAVFoundationCF::~MediaPlayerPrivateAVFoundationCF(%p)&quot;, this);
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    for (auto&amp; pair : m_resourceLoaderMap)
+        pair.value-&gt;invalidate();
+#endif
</ins><span class="cx">     cancelLoad();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -842,6 +890,15 @@
</span><span class="cx">     supportedTypes = mimeTypeCache();
</span><span class="cx"> } 
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA_V2)
+static bool keySystemIsSupported(const String&amp; keySystem)
+{
+    if (equalIgnoringCase(keySystem, &quot;com.apple.fps&quot;) || equalIgnoringCase(keySystem, &quot;com.apple.fps.1_0&quot;))
+        return true;
+    return false;
+}
+#endif
+
</ins><span class="cx"> MediaPlayer::SupportsType MediaPlayerPrivateAVFoundationCF::supportsType(const MediaEngineSupportParameters&amp; parameters)
</span><span class="cx"> {
</span><span class="cx">     // Only return &quot;IsSupported&quot; if there is no codecs parameter for now as there is no way to ask if it supports an
</span><span class="lines">@@ -858,6 +915,21 @@
</span><span class="cx">     return AVFoundationCFLibrary() &amp;&amp; CoreMediaLibrary();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+void MediaPlayerPrivateAVFoundationCF::didCancelLoadingRequest(AVCFAssetResourceLoadingRequestRef avRequest)
+{
+    WebCoreAVCFResourceLoader* resourceLoader = m_resourceLoaderMap.get(avRequest);
+
+    if (resourceLoader)
+        resourceLoader-&gt;stopLoading();
+}
+
+void MediaPlayerPrivateAVFoundationCF::didStopLoadingRequest(AVCFAssetResourceLoadingRequestRef avRequest)
+{
+    m_resourceLoaderMap.remove(avRequest);
+}
+#endif
+
</ins><span class="cx"> float MediaPlayerPrivateAVFoundationCF::mediaTimeForTimeValue(float timeValue) const
</span><span class="cx"> {
</span><span class="cx">     if (!metaDataAvailable())
</span><span class="lines">@@ -1005,6 +1077,24 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; MediaPlayerPrivateAVFoundationCF::takeRequestForKeyURI(const String&amp; keyURI)
+{
+    if (!m_avfWrapper)
+        return nullptr;
+
+    return m_avfWrapper-&gt;takeRequestForKeyURI(keyURI);
+}
+
+std::unique_ptr&lt;CDMSession&gt; MediaPlayerPrivateAVFoundationCF::createSession(const String&amp; keySystem)
+{
+    if (!keySystemIsSupported(keySystem))
+        return nullptr;
+
+    return std::make_unique&lt;CDMSessionAVFoundationCF&gt;(this);
+}
+#endif
+
</ins><span class="cx"> #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx"> void MediaPlayerPrivateAVFoundationCF::processLegacyClosedCaptionsTracks()
</span><span class="cx"> {
</span><span class="lines">@@ -1336,8 +1426,18 @@
</span><span class="cx">     if (inheritURI)
</span><span class="cx">         CFDictionarySetValue(optionsRef.get(), AVCFURLAssetInheritURIQueryComponentFromReferencingURIKey, kCFBooleanTrue);
</span><span class="cx"> 
</span><del>-    AVCFURLAssetRef assetRef = AVCFURLAssetCreateWithURLAndOptions(kCFAllocatorDefault, urlRef.get(), optionsRef.get(), m_notificationQueue);
-    m_avAsset = adoptCF(assetRef);
</del><ins>+    m_avAsset = adoptCF(AVCFURLAssetCreateWithURLAndOptions(kCFAllocatorDefault, urlRef.get(), optionsRef.get(), m_notificationQueue));
+
+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    AVCFAssetResourceLoaderCallbacks loaderCallbacks;
+    loaderCallbacks.version = kAVCFAssetResourceLoader_CallbacksVersion_1;
+    ASSERT(callbackContext());
+    loaderCallbacks.context = callbackContext();
+    loaderCallbacks.resourceLoaderShouldWaitForLoadingOfRequestedResource = AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource;
+
+    RetainPtr&lt;AVCFAssetResourceLoaderRef&gt; resourceLoader = adoptCF(AVCFURLAssetGetResourceLoader(m_avAsset.get()));
+    AVCFAssetResourceLoaderSetCallbacks(resourceLoader.get(), &amp;loaderCallbacks, globalLoaderDelegateQueue());
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVFWrapper::createPlayer(IDirect3DDevice9* d3dDevice)
</span><span class="lines">@@ -1612,7 +1712,7 @@
</span><span class="cx">     if (!context)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LegibleOutputData&gt; legibleOutputData = adoptPtr(reinterpret_cast&lt;LegibleOutputData*&gt;(context));
</del><ins>+    std::unique_ptr&lt;LegibleOutputData&gt; legibleOutputData(reinterpret_cast&lt;LegibleOutputData*&gt;(context));
</ins><span class="cx"> 
</span><span class="cx">     MutexLocker locker(mapLock());
</span><span class="cx">     AVFWrapper* self = avfWrapperForCallbackContext(legibleOutputData-&gt;m_context);
</span><span class="lines">@@ -1641,12 +1741,103 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(legibleOutput == self-&gt;m_legibleOutput);
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;LegibleOutputData&gt; legibleOutputData = adoptPtr(new LegibleOutputData(attributedStrings, nativeSampleBuffers, CMTimeGetSeconds(itemTime), context));
</del><ins>+    auto legibleOutputData = std::make_unique&lt;LegibleOutputData&gt;(attributedStrings, nativeSampleBuffers, CMTimeGetSeconds(itemTime), context);
</ins><span class="cx"> 
</span><del>-    dispatch_async_f(dispatch_get_main_queue(), legibleOutputData.leakPtr(), processCue);
</del><ins>+    dispatch_async_f(dispatch_get_main_queue(), legibleOutputData.release(), processCue);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+struct LoadRequestData {
+    RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; m_request;
+    void* m_context;
+
+    LoadRequestData(AVCFAssetResourceLoadingRequestRef request, void* context)
+        : m_request(request), m_context(context)
+    {
+    }
+};
+
+void AVFWrapper::processShouldWaitForLoadingOfResource(void* context)
+{
+    ASSERT(dispatch_get_main_queue() == dispatch_get_current_queue());
+    ASSERT(context);
+
+    if (!context)
+        return;
+
+    std::unique_ptr&lt;LoadRequestData&gt; loadRequestData(reinterpret_cast&lt;LoadRequestData*&gt;(context));
+
+    MutexLocker locker(mapLock());
+    AVFWrapper* self = avfWrapperForCallbackContext(loadRequestData-&gt;m_context);
+    if (!self) {
+        LOG(Media, &quot;AVFWrapper::processShouldWaitForLoadingOfResource invoked for deleted AVFWrapper %d&quot;, reinterpret_cast&lt;uintptr_t&gt;(context));
+        AVCFAssetResourceLoadingRequestFinishLoadingWithError(loadRequestData-&gt;m_request.get(), nullptr);
+        return;
+    }
+
+    if (!self-&gt;shouldWaitForLoadingOfResource(loadRequestData-&gt;m_request.get()))
+        AVCFAssetResourceLoadingRequestFinishLoadingWithError(loadRequestData-&gt;m_request.get(), nullptr);
+}
+
+bool AVFWrapper::shouldWaitForLoadingOfResource(AVCFAssetResourceLoadingRequestRef avRequest)
+{
+#if ENABLE(ENCRYPTED_MEDIA_V2)
+    RetainPtr&lt;CFURLRequestRef&gt; urlRequest = AVCFAssetResourceLoadingRequestGetURLRequest(avRequest);
+    RetainPtr&lt;CFURLRef&gt; requestURL = CFURLRequestGetURL(urlRequest.get());
+    RetainPtr&lt;CFStringRef&gt; schemeRef = adoptCF(CFURLCopyScheme(requestURL.get()));
+    String scheme = schemeRef.get();
+
+    if (scheme == &quot;skd&quot;) {
+        RetainPtr&lt;CFURLRef&gt; absoluteURL = adoptCF(CFURLCopyAbsoluteURL(requestURL.get()));
+        RetainPtr&lt;CFStringRef&gt; keyURIRef = CFURLGetString(absoluteURL.get());
+        String keyURI = keyURIRef.get();
+
+        // Create an initData with the following layout:
+        // [4 bytes: keyURI size], [keyURI size bytes: keyURI]
+        unsigned keyURISize = keyURI.length() * sizeof(UChar);
+        RefPtr&lt;ArrayBuffer&gt; initDataBuffer = ArrayBuffer::create(4 + keyURISize, 1);
+        RefPtr&lt;JSC::DataView&gt; initDataView = JSC::DataView::create(initDataBuffer, 0, initDataBuffer-&gt;byteLength());
+        initDataView-&gt;set&lt;uint32_t&gt;(0, keyURISize, true);
+
+        RefPtr&lt;Uint16Array&gt; keyURIArray = Uint16Array::create(initDataBuffer, 4, keyURI.length());
+        keyURIArray-&gt;setRange(reinterpret_cast&lt;const uint16_t*&gt;(StringView(keyURI).upconvertedCharacters().get()), keyURI.length() / sizeof(unsigned char), 0);
+
+        RefPtr&lt;Uint8Array&gt; initData = Uint8Array::create(initDataBuffer, 0, initDataBuffer-&gt;byteLength());
+        if (!m_owner-&gt;player()-&gt;keyNeeded(initData.get()))
+            return false;
+
+        m_keyURIToRequestMap.set(keyURI, avRequest);
+        return true;
+    }
+#endif
+
+    RefPtr&lt;WebCoreAVCFResourceLoader&gt; resourceLoader = WebCoreAVCFResourceLoader::create(m_owner, avRequest);
+    m_owner-&gt;m_resourceLoaderMap.add(avRequest, resourceLoader);
+    resourceLoader-&gt;startLoading();
+    return true;
+}
+
+Boolean AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource(AVCFAssetResourceLoaderRef resourceLoader, AVCFAssetResourceLoadingRequestRef loadingRequest, void *context)
+{
+    ASSERT(dispatch_get_main_queue() != dispatch_get_current_queue());
+    MutexLocker locker(mapLock());
+    AVFWrapper* self = avfWrapperForCallbackContext(context);
+    if (!self) {
+        LOG(Media, &quot;AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource invoked for deleted AVFWrapper %d&quot;, reinterpret_cast&lt;uintptr_t&gt;(context));
+        return false;
+    }
+
+    LOG(Media, &quot;AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource(%p)&quot;, self);
+
+    auto loadRequestData = std::make_unique&lt;LoadRequestData&gt;(loadingRequest, context);
+
+    dispatch_async_f(dispatch_get_main_queue(), loadRequestData.release(), processShouldWaitForLoadingOfResource);
+
+    return true;
+}
+#endif
+
</ins><span class="cx"> void AVFWrapper::setAsset(AVCFURLAssetRef asset)
</span><span class="cx"> {
</span><span class="cx">     if (asset == avAsset())
</span><span class="lines">@@ -1787,6 +1978,13 @@
</span><span class="cx">     // FIXME: &lt;rdar://problem/14884340&gt;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; AVFWrapper::takeRequestForKeyURI(const String&amp; keyURI)
+{
+    return m_keyURIToRequestMap.take(keyURI);
+}
+#endif
+
</ins><span class="cx"> void LayerClient::platformCALayerLayoutSublayersOfLayer(PlatformCALayer* wrapperLayer)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_parent);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2011, 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2011, 2013-2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -30,9 +30,14 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;MediaPlayerPrivateAVFoundation.h&quot;
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE) || HAVE(ENCRYPTED_MEDIA_V2)
+typedef struct OpaqueAVCFAssetResourceLoadingRequest* AVCFAssetResourceLoadingRequestRef;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class AVFWrapper;
</span><ins>+class WebCoreAVCFResourceLoader;
</ins><span class="cx"> 
</span><span class="cx"> class MediaPlayerPrivateAVFoundationCF : public MediaPlayerPrivateAVFoundation {
</span><span class="cx"> public:
</span><span class="lines">@@ -40,6 +45,16 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void tracksChanged() override;
</span><span class="cx"> 
</span><ins>+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    bool shouldWaitForLoadingOfResource(AVCFAssetResourceLoadingRequestRef);
+    void didCancelLoadingRequest(AVCFAssetResourceLoadingRequestRef);
+    void didStopLoadingRequest(AVCFAssetResourceLoadingRequestRef);
+#endif
+
+#if ENABLE(ENCRYPTED_MEDIA_V2)
+    RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; takeRequestForKeyURI(const String&amp;);
+#endif
+
</ins><span class="cx">     static void registerMediaEngine(MediaEngineRegistrar);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -102,6 +117,10 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void contentsNeedsDisplay();
</span><span class="cx"> 
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+    virtual std::unique_ptr&lt;CDMSession&gt; createSession(const String&amp;) override;
+#endif
+
</ins><span class="cx">     virtual String languageOfPrimaryAudioTrack() const override;
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="lines">@@ -117,8 +136,14 @@
</span><span class="cx"> 
</span><span class="cx">     friend class AVFWrapper;
</span><span class="cx">     AVFWrapper* m_avfWrapper;
</span><del>-    
</del><ins>+
</ins><span class="cx">     mutable String m_languageOfPrimaryAudioTrack;
</span><ins>+
+#if HAVE(AVFOUNDATION_LOADER_DELEGATE)
+    friend class WebCoreAVCFResourceLoader;
+    HashMap&lt;RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt;, RefPtr&lt;WebCoreAVCFResourceLoader&gt;&gt; m_resourceLoaderMap;
+#endif
+
</ins><span class="cx">     bool m_videoFrameHasDrawn;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfWebCoreAVCFResourceLoadercpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp (0 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -0,0 +1,151 @@
</span><ins>+/*
+ * 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebCoreAVCFResourceLoader.h&quot;
+
+#if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION) &amp;&amp; HAVE(AVFOUNDATION_LOADER_DELEGATE)
+
+#include &quot;CachedRawResource.h&quot;
+#include &quot;CachedResourceLoader.h&quot;
+#include &quot;CachedResourceRequest.h&quot;
+#include &quot;MediaPlayerPrivateAVFoundationCF.h&quot;
+#include &quot;NotImplemented.h&quot;
+#include &quot;ResourceBuffer.h&quot;
+#include &quot;ResourceLoaderOptions.h&quot;
+#include &quot;SharedBuffer.h&quot;
+#include &quot;SoftLinking.h&quot;
+#include &lt;AVFoundationCF/AVFoundationCF.h&gt;
+#include &lt;AVFoundationCF/AVCFAssetResourceLoader.h&gt;
+#include &lt;wtf/text/CString.h&gt;
+
+// The softlink header files must be included after the AVCF and CoreMedia header files.
+#include &quot;AVFoundationCFSoftLinking.h&quot;
+
+namespace WebCore {
+
+PassRefPtr&lt;WebCoreAVCFResourceLoader&gt; WebCoreAVCFResourceLoader::create(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef avRequest)
+{
+    ASSERT(avRequest);
+    ASSERT(parent);
+    return adoptRef(new WebCoreAVCFResourceLoader(parent, avRequest));
+}
+
+WebCoreAVCFResourceLoader::WebCoreAVCFResourceLoader(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef avRequest)
+    : m_parent(parent)
+    , m_avRequest(avRequest)
+{
+}
+
+WebCoreAVCFResourceLoader::~WebCoreAVCFResourceLoader()
+{
+    stopLoading();
+}
+
+void WebCoreAVCFResourceLoader::startLoading()
+{
+    if (m_resource || !m_parent)
+        return;
+
+    RetainPtr&lt;CFURLRequestRef&gt; urlRequest = AVCFAssetResourceLoadingRequestGetURLRequest(m_avRequest.get());
+    URL requestURL = CFURLRequestGetURL(urlRequest.get());
+
+    CachedResourceRequest request(ResourceRequest(requestURL), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck, UseDefaultOriginRestrictionsForType));
+
+    request.mutableResourceRequest().setPriority(ResourceLoadPriorityLow);
+    CachedResourceLoader* loader = m_parent-&gt;player()-&gt;cachedResourceLoader();
+    m_resource = loader ? loader-&gt;requestRawResource(request) : 0;
+    if (m_resource)
+        m_resource-&gt;addClient(this);
+    else {
+        LOG_ERROR(&quot;Failed to start load for media at url %s&quot;, requestURL.string().ascii().data());
+        AVCFAssetResourceLoadingRequestFinishLoadingWithError(m_avRequest.get(), nullptr);
+    }
+}
+
+void WebCoreAVCFResourceLoader::stopLoading()
+{
+    if (!m_resource)
+        return;
+
+    m_resource-&gt;removeClient(this);
+    m_resource = 0;
+
+    if (m_parent)
+        m_parent-&gt;didStopLoadingRequest(m_avRequest.get());
+}
+
+void WebCoreAVCFResourceLoader::invalidate()
+{
+    m_parent = nullptr;
+    stopLoading();
+}
+
+void WebCoreAVCFResourceLoader::responseReceived(CachedResource* resource, const ResourceResponse&amp; response)
+{
+    ASSERT(resource == m_resource);
+    UNUSED_PARAM(resource);
+
+    int status = response.httpStatusCode();
+    if (status &amp;&amp; (status &lt; 200 || status &gt; 299)) {
+        AVCFAssetResourceLoadingRequestFinishLoadingWithError(m_avRequest.get(), nullptr);
+        return;
+    }
+
+    notImplemented();
+}
+
+void WebCoreAVCFResourceLoader::dataReceived(CachedResource* resource, const char*, int)
+{
+    fulfillRequestWithResource(resource);
+}
+
+void WebCoreAVCFResourceLoader::notifyFinished(CachedResource* resource)
+{
+    if (resource-&gt;loadFailedOrCanceled()) {
+        // &lt;rdar://problem/13987417&gt; Set the contentType of the contentInformationRequest to an empty
+        // string to trigger AVAsset's playable value to complete loading.
+        // FIXME: if ([m_avRequest.get() contentInformationRequest] &amp;&amp; ![[m_avRequest.get() contentInformationRequest] contentType])
+        // FIXME:    [[m_avRequest.get() contentInformationRequest] setContentType:@&quot;&quot;];
+        notImplemented();
+
+        AVCFAssetResourceLoadingRequestFinishLoadingWithError(m_avRequest.get(), nullptr);
+    } else {
+        fulfillRequestWithResource(resource);
+        // FIXME: [m_avRequest.get() finishLoading];
+        notImplemented();
+    }
+    stopLoading();
+}
+
+void WebCoreAVCFResourceLoader::fulfillRequestWithResource(CachedResource* resource)
+{
+    ASSERT(resource == m_resource);
+    notImplemented();
+}
+
+}
+
+#endif // ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfWebCoreAVCFResourceLoaderh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h (0 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+/*
+ * 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.
+ */
+
+#ifndef WebCoreAVCFResourceLoader_h
+#define WebCoreAVCFResourceLoader_h
+
+#if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION) &amp;&amp; HAVE(AVFOUNDATION_LOADER_DELEGATE)
+
+#include &quot;CachedRawResourceClient.h&quot;
+#include &quot;CachedResourceHandle.h&quot;
+#include &lt;wtf/Noncopyable.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+typedef struct OpaqueAVCFAssetResourceLoadingRequest* AVCFAssetResourceLoadingRequestRef;
+
+namespace WebCore {
+
+class CachedRawResource;
+class CachedResourceLoader;
+class MediaPlayerPrivateAVFoundationCF;
+
+class WebCoreAVCFResourceLoader : public RefCounted&lt;WebCoreAVCFResourceLoader&gt;, CachedRawResourceClient {
+    WTF_MAKE_NONCOPYABLE(WebCoreAVCFResourceLoader); WTF_MAKE_FAST_ALLOCATED;
+public:
+    static PassRefPtr&lt;WebCoreAVCFResourceLoader&gt; create(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef);
+    virtual ~WebCoreAVCFResourceLoader();
+
+    void startLoading();
+    void stopLoading();
+    void invalidate();
+
+    CachedRawResource* resource();
+
+private:
+    // CachedResourceClient
+    virtual void responseReceived(CachedResource*, const ResourceResponse&amp;) override;
+    virtual void dataReceived(CachedResource*, const char*, int) override;
+    virtual void notifyFinished(CachedResource*) override;
+
+    void fulfillRequestWithResource(CachedResource*);
+
+    WebCoreAVCFResourceLoader(MediaPlayerPrivateAVFoundationCF* parent, AVCFAssetResourceLoadingRequestRef);
+    MediaPlayerPrivateAVFoundationCF* m_parent;
+    RetainPtr&lt;AVCFAssetResourceLoadingRequestRef&gt; m_avRequest;
+    CachedResourceHandle&lt;CachedRawResource&gt; m_resource;
+};
+
+}
+
+#endif // ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION) 
+
+#endif // WebCoreAVFResourceLoader_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -87,10 +87,6 @@
</span><span class="cx">     void didStopLoadingRequest(AVAssetResourceLoadingRequest *);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if ENABLE(ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA_V2)
-    static bool extractKeyURIKeyIDAndCertificateFromInitData(Uint8Array* initData, String&amp; keyURI, String&amp; keyID, RefPtr&lt;Uint8Array&gt;&amp; certificate);
-#endif
-
</del><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA_V2)
</span><span class="cx">     RetainPtr&lt;AVAssetResourceLoadingRequest&gt; takeRequestForKeyURI(const String&amp;);
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -1941,58 +1941,6 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if ENABLE(ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA_V2)
-bool MediaPlayerPrivateAVFoundationObjC::extractKeyURIKeyIDAndCertificateFromInitData(Uint8Array* initData, String&amp; keyURI, String&amp; keyID, RefPtr&lt;Uint8Array&gt;&amp; certificate)
-{
-    // initData should have the following layout:
-    // [4 bytes: keyURI length][N bytes: keyURI][4 bytes: contentID length], [N bytes: contentID], [4 bytes: certificate length][N bytes: certificate]
-    if (initData-&gt;byteLength() &lt; 4)
-        return false;
-
-    RefPtr&lt;ArrayBuffer&gt; initDataBuffer = initData-&gt;buffer();
-
-    // Use a DataView to read uint32 values from the buffer, as Uint32Array requires the reads be aligned on 4-byte boundaries. 
-    RefPtr&lt;JSC::DataView&gt; initDataView = JSC::DataView::create(initDataBuffer, 0, initDataBuffer-&gt;byteLength());
-    uint32_t offset = 0;
-    bool status = true;
-
-    uint32_t keyURILength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
-    offset += 4;
-    if (!status || offset + keyURILength &gt; initData-&gt;length())
-        return false;
-
-    RefPtr&lt;Uint16Array&gt; keyURIArray = Uint16Array::create(initDataBuffer, offset, keyURILength);
-    if (!keyURIArray)
-        return false;
-
-    keyURI = String(keyURIArray-&gt;data(), keyURILength / sizeof(unsigned short));
-    offset += keyURILength;
-
-    uint32_t keyIDLength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
-    offset += 4;
-    if (!status || offset + keyIDLength &gt; initData-&gt;length())
-        return false;
-
-    RefPtr&lt;Uint16Array&gt; keyIDArray = Uint16Array::create(initDataBuffer, offset, keyIDLength);
-    if (!keyIDArray)
-        return false;
-
-    keyID = String(keyIDArray-&gt;data(), keyIDLength / sizeof(unsigned short));
-    offset += keyIDLength;
-
-    uint32_t certificateLength = initDataView-&gt;get&lt;uint32_t&gt;(offset, true, &amp;status);
-    offset += 4;
-    if (!status || offset + certificateLength &gt; initData-&gt;length())
-        return false;
-
-    certificate = Uint8Array::create(initDataBuffer, offset, certificateLength);
-    if (!certificate)
-        return false;
-
-    return true;
-}
-#endif
-
</del><span class="cx"> #if ENABLE(ENCRYPTED_MEDIA)
</span><span class="cx"> MediaPlayer::MediaKeyException MediaPlayerPrivateAVFoundationObjC::generateKeyRequest(const String&amp; keySystem, const unsigned char* initDataPtr, unsigned initDataLength)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebKit/ChangeLog        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-06-27  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        [Win] Implement parts of the AVFOUNDATION_LOADER_DELEGATE logic for Windows
+        https://bugs.webkit.org/show_bug.cgi?id=134418
+
+        Reviewed by Eric Carlson.
+
+        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add new
+        export.
+
</ins><span class="cx"> 2014-06-26  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove use of PlatformStrategies for Gamepad API.
</span></span></pre></div>
<a id="trunkSourceWebKitWebKitvcxprojWebKitExportGeneratorWebKitExportsdefin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in (170561 => 170562)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in        2014-06-27 23:32:51 UTC (rev 170561)
+++ trunk/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in        2014-06-28 00:19:41 UTC (rev 170562)
</span><span class="lines">@@ -490,3 +490,6 @@
</span><span class="cx">         symbolWithPointer(?throwSequenceTypeError@WebCore@@YAXAAVExecState@JSC@@@Z, ?throwSequenceTypeError@WebCore@@YAXAEAVExecState@JSC@@@Z)
</span><span class="cx">         symbolWithPointer(?throwSetterTypeError@WebCore@@YAXAAVExecState@JSC@@PBD1@Z, ?throwSetterTypeError@WebCore@@YAXAEAVExecState@JSC@@PEBD1@Z)
</span><span class="cx">         symbolWithPointer(?throwThisTypeError@WebCore@@YA_JAAVExecState@JSC@@PBD1@Z, ?throwThisTypeError@WebCore@@YA_JAEAVExecState@JSC@@PEBD1@Z)
</span><ins>+#if ENABLE(ENCRYPTED_MEDIA_V2)
+        symbolWithPointer(?registerCDMFactory@CDM@WebCore@@SAXP6A?AV?$unique_ptr@VCDMPrivateInterface@WebCore@@U?$default_delete@VCDMPrivateInterface@WebCore@@@std@@@std@@PAV12@@ZP6A_NABVString@WTF@@@ZP6A_N22@Z@Z,)
+#endif
</ins></span></pre>
</div>
</div>

</body>
</html>