<!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>[172691] trunk/Source/WebKit2</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/172691">172691</a></dd>
<dt>Author</dt> <dd>psolanki@apple.com</dd>
<dt>Date</dt> <dd>2014-08-16 12:01:37 -0700 (Sat, 16 Aug 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename DiskCacheMonitor to NetworkDiskCacheMonitor
https://bugs.webkit.org/show_bug.cgi?id=135897

Reviewed by Andreas Kling.

In preparation for moving DiskCacheMonitor code to WebCore in bug 135896, rename the WebKit2
class to NetworkDiskCacheMonitor.

* NetworkProcess/mac/NetworkDiskCacheMonitor.h: Renamed from Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h.
(WebKit::NetworkDiskCacheMonitor::resourceRequest):
* NetworkProcess/mac/NetworkDiskCacheMonitor.mm: Renamed from Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm.
(WebKit::NetworkDiskCacheMonitor::monitorFileBackingStoreCreation):
(WebKit::NetworkDiskCacheMonitor::NetworkDiskCacheMonitor):
(WebKit::NetworkDiskCacheMonitor::messageSenderConnection):
(WebKit::NetworkDiskCacheMonitor::messageSenderDestinationID):
* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::willCacheResponseAsync):
* WebKit2.xcodeproj/project.pbxproj:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessmacNetworkResourceLoaderMacmm">trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2NetworkProcessmacNetworkDiskCacheMonitorh">trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessmacNetworkDiskCacheMonitormm">trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2NetworkProcessmacDiskCacheMonitorh">trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessmacDiskCacheMonitormm">trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (172690 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-08-16 14:26:17 UTC (rev 172690)
+++ trunk/Source/WebKit2/ChangeLog        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2014-08-16  Pratik Solanki  &lt;psolanki@apple.com&gt;
+
+        Rename DiskCacheMonitor to NetworkDiskCacheMonitor
+        https://bugs.webkit.org/show_bug.cgi?id=135897
+
+        Reviewed by Andreas Kling.
+
+        In preparation for moving DiskCacheMonitor code to WebCore in bug 135896, rename the WebKit2
+        class to NetworkDiskCacheMonitor.
+
+        * NetworkProcess/mac/NetworkDiskCacheMonitor.h: Renamed from Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h.
+        (WebKit::NetworkDiskCacheMonitor::resourceRequest):
+        * NetworkProcess/mac/NetworkDiskCacheMonitor.mm: Renamed from Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm.
+        (WebKit::NetworkDiskCacheMonitor::monitorFileBackingStoreCreation):
+        (WebKit::NetworkDiskCacheMonitor::NetworkDiskCacheMonitor):
+        (WebKit::NetworkDiskCacheMonitor::messageSenderConnection):
+        (WebKit::NetworkDiskCacheMonitor::messageSenderDestinationID):
+        * NetworkProcess/mac/NetworkResourceLoaderMac.mm:
+        (WebKit::NetworkResourceLoader::willCacheResponseAsync):
+        * WebKit2.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2014-08-16  Byungseon Shin  &lt;sun.shin@lge.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] build fails with error: cannot allocate an object of abstract type 'WebKit::PageClientImpl'
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacDiskCacheMonitorh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h (172690 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h        2014-08-16 14:26:17 UTC (rev 172690)
+++ trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 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 DiskCacheMonitor_h
-#define DiskCacheMonitor_h
-
-#include &quot;MessageSender.h&quot;
-#include &lt;WebCore/ResourceRequest.h&gt;
-#include &lt;WebCore/SessionID.h&gt;
-#include &lt;wtf/RunLoop.h&gt;
-
-typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
-
-namespace WebKit {
-
-class NetworkConnectionToWebProcess;
-class NetworkResourceLoader;
-
-class DiskCacheMonitor : public IPC::MessageSender {
-public:
-    static void monitorFileBackingStoreCreation(CFCachedURLResponseRef, NetworkResourceLoader*);
-
-    const WebCore::ResourceRequest&amp; resourceRequest() const { return m_resourceRequest; }
-
-private:
-    DiskCacheMonitor(CFCachedURLResponseRef, NetworkResourceLoader*);
-
-    // IPC::MessageSender
-    virtual IPC::Connection* messageSenderConnection() override;
-    virtual uint64_t messageSenderDestinationID() override;
-
-    RefPtr&lt;NetworkConnectionToWebProcess&gt; m_connectionToWebProcess;
-    WebCore::ResourceRequest m_resourceRequest;
-    WebCore::SessionID m_sessionID;
-};
-
-
-} // namespace WebKit
-
-#endif // DiskCacheMonitor_h
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacDiskCacheMonitormm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm (172690 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm        2014-08-16 14:26:17 UTC (rev 172690)
+++ trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -1,111 +0,0 @@
</span><del>-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;DiskCacheMonitor.h&quot;
-
-#import &quot;NetworkConnectionToWebProcess.h&quot;
-#import &quot;NetworkProcessConnectionMessages.h&quot;
-#import &quot;NetworkResourceLoader.h&quot;
-#import &quot;WebCoreArgumentCoders.h&quot;
-#import &lt;wtf/PassOwnPtr.h&gt;
-
-#ifdef __has_include
-#if __has_include(&lt;CFNetwork/CFURLCachePriv.h&gt;)
-#include &lt;CFNetwork/CFURLCachePriv.h&gt;
-#endif
-#endif
-
-#if (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 80000) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090)
-
-typedef void (^CFCachedURLResponseCallBackBlock)(CFCachedURLResponseRef);
-extern &quot;C&quot; void _CFCachedURLResponseSetBecameFileBackedCallBackBlock(CFCachedURLResponseRef, CFCachedURLResponseCallBackBlock, dispatch_queue_t);
-
-using namespace WebCore;
-
-namespace WebKit {
-
-// The maximum number of seconds we'll try to wait for a resource to be disk cached before we forget the request.
-static const double diskCacheMonitorTimeout = 20;
-
-void DiskCacheMonitor::monitorFileBackingStoreCreation(CFCachedURLResponseRef cachedResponse, NetworkResourceLoader* loader)
-{
-    if (!cachedResponse)
-        return;
-
-    ASSERT(loader);
-
-    new DiskCacheMonitor(cachedResponse, loader); // Balanced by adoptPtr in the blocks setup in the constructor, one of which is guaranteed to run.
-}
-
-DiskCacheMonitor::DiskCacheMonitor(CFCachedURLResponseRef cachedResponse, NetworkResourceLoader* loader)
-    : m_connectionToWebProcess(loader-&gt;connectionToWebProcess())
-    , m_resourceRequest(loader-&gt;request())
-    , m_sessionID(loader-&gt;sessionID())
-{
-    ASSERT(RunLoop::isMain());
-
-    // Set up a delayed callback to cancel this monitor if the resource hasn't been cached yet.
-    __block DiskCacheMonitor* rawMonitor = this;
-
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * diskCacheMonitorTimeout), dispatch_get_main_queue(), ^{
-        adoptPtr(rawMonitor); // Balanced by `new DiskCacheMonitor` in monitorFileBackingStoreCreation.
-        rawMonitor = 0;
-    });
-
-    // Set up the disk caching callback to create the ShareableResource and send it to the WebProcess.
-    CFCachedURLResponseCallBackBlock block = ^(CFCachedURLResponseRef cachedResponse)
-    {
-        // If the monitor isn't there then it timed out before this resource was cached to disk.
-        if (!rawMonitor)
-            return;
-
-        OwnPtr&lt;DiskCacheMonitor&gt; monitor = adoptPtr(rawMonitor); // Balanced by `new DiskCacheMonitor` in monitorFileBackingStoreCreation.
-        rawMonitor = 0;
-        
-        ShareableResource::Handle handle;
-        NetworkResourceLoader::tryGetShareableHandleFromCFURLCachedResponse(handle, cachedResponse);
-        if (handle.isNull())
-            return;
-
-        monitor-&gt;send(Messages::NetworkProcessConnection::DidCacheResource(monitor-&gt;resourceRequest(), handle, m_sessionID));
-    };
-
-    _CFCachedURLResponseSetBecameFileBackedCallBackBlock(cachedResponse, block, dispatch_get_main_queue());
-}
-
-IPC::Connection* DiskCacheMonitor::messageSenderConnection()
-{
-    return m_connectionToWebProcess-&gt;connection();
-}
-
-uint64_t DiskCacheMonitor::messageSenderDestinationID()
-{
-    return 0;
-}
-
-} // namespace WebKit
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacNetworkDiskCacheMonitorhfromrev172690trunkSourceWebKit2NetworkProcessmacDiskCacheMonitorh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h (from rev 172690, trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.h) (0 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h                                (rev 0)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2013 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 NetworkDiskCacheMonitor_h
+#define NetworkDiskCacheMonitor_h
+
+#include &quot;MessageSender.h&quot;
+#include &lt;WebCore/ResourceRequest.h&gt;
+#include &lt;WebCore/SessionID.h&gt;
+#include &lt;wtf/RunLoop.h&gt;
+
+typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
+
+namespace WebKit {
+
+class NetworkConnectionToWebProcess;
+class NetworkResourceLoader;
+
+class NetworkDiskCacheMonitor : public IPC::MessageSender {
+public:
+    static void monitorFileBackingStoreCreation(CFCachedURLResponseRef, NetworkResourceLoader*);
+
+    const WebCore::ResourceRequest&amp; resourceRequest() const { return m_resourceRequest; }
+
+private:
+    NetworkDiskCacheMonitor(CFCachedURLResponseRef, NetworkResourceLoader*);
+
+    // IPC::MessageSender
+    virtual IPC::Connection* messageSenderConnection() override;
+    virtual uint64_t messageSenderDestinationID() override;
+
+    RefPtr&lt;NetworkConnectionToWebProcess&gt; m_connectionToWebProcess;
+    WebCore::ResourceRequest m_resourceRequest;
+    WebCore::SessionID m_sessionID;
+};
+
+
+} // namespace WebKit
+
+#endif // NetworkDiskCacheMonitor_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacNetworkDiskCacheMonitormmfromrev172690trunkSourceWebKit2NetworkProcessmacDiskCacheMonitormm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm (from rev 172690, trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm) (0 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm                                (rev 0)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -0,0 +1,111 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;NetworkDiskCacheMonitor.h&quot;
+
+#import &quot;NetworkConnectionToWebProcess.h&quot;
+#import &quot;NetworkProcessConnectionMessages.h&quot;
+#import &quot;NetworkResourceLoader.h&quot;
+#import &quot;WebCoreArgumentCoders.h&quot;
+#import &lt;wtf/PassOwnPtr.h&gt;
+
+#ifdef __has_include
+#if __has_include(&lt;CFNetwork/CFURLCachePriv.h&gt;)
+#include &lt;CFNetwork/CFURLCachePriv.h&gt;
+#endif
+#endif
+
+#if (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 80000) || (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090)
+
+typedef void (^CFCachedURLResponseCallBackBlock)(CFCachedURLResponseRef);
+extern &quot;C&quot; void _CFCachedURLResponseSetBecameFileBackedCallBackBlock(CFCachedURLResponseRef, CFCachedURLResponseCallBackBlock, dispatch_queue_t);
+
+using namespace WebCore;
+
+namespace WebKit {
+
+// The maximum number of seconds we'll try to wait for a resource to be disk cached before we forget the request.
+static const double diskCacheMonitorTimeout = 20;
+
+void NetworkDiskCacheMonitor::monitorFileBackingStoreCreation(CFCachedURLResponseRef cachedResponse, NetworkResourceLoader* loader)
+{
+    if (!cachedResponse)
+        return;
+
+    ASSERT(loader);
+
+    new NetworkDiskCacheMonitor(cachedResponse, loader); // Balanced by adoptPtr in the blocks setup in the constructor, one of which is guaranteed to run.
+}
+
+NetworkDiskCacheMonitor::NetworkDiskCacheMonitor(CFCachedURLResponseRef cachedResponse, NetworkResourceLoader* loader)
+    : m_connectionToWebProcess(loader-&gt;connectionToWebProcess())
+    , m_resourceRequest(loader-&gt;request())
+    , m_sessionID(loader-&gt;sessionID())
+{
+    ASSERT(RunLoop::isMain());
+
+    // Set up a delayed callback to cancel this monitor if the resource hasn't been cached yet.
+    __block NetworkDiskCacheMonitor* rawMonitor = this;
+
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * diskCacheMonitorTimeout), dispatch_get_main_queue(), ^{
+        adoptPtr(rawMonitor); // Balanced by `new NetworkDiskCacheMonitor` in monitorFileBackingStoreCreation.
+        rawMonitor = 0;
+    });
+
+    // Set up the disk caching callback to create the ShareableResource and send it to the WebProcess.
+    CFCachedURLResponseCallBackBlock block = ^(CFCachedURLResponseRef cachedResponse)
+    {
+        // If the monitor isn't there then it timed out before this resource was cached to disk.
+        if (!rawMonitor)
+            return;
+
+        OwnPtr&lt;NetworkDiskCacheMonitor&gt; monitor = adoptPtr(rawMonitor); // Balanced by `new NetworkDiskCacheMonitor` in monitorFileBackingStoreCreation.
+        rawMonitor = 0;
+
+        ShareableResource::Handle handle;
+        NetworkResourceLoader::tryGetShareableHandleFromCFURLCachedResponse(handle, cachedResponse);
+        if (handle.isNull())
+            return;
+
+        monitor-&gt;send(Messages::NetworkProcessConnection::DidCacheResource(monitor-&gt;resourceRequest(), handle, m_sessionID));
+    };
+
+    _CFCachedURLResponseSetBecameFileBackedCallBackBlock(cachedResponse, block, dispatch_get_main_queue());
+}
+
+IPC::Connection* NetworkDiskCacheMonitor::messageSenderConnection()
+{
+    return m_connectionToWebProcess-&gt;connection();
+}
+
+uint64_t NetworkDiskCacheMonitor::messageSenderDestinationID()
+{
+    return 0;
+}
+
+} // namespace WebKit
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacNetworkResourceLoaderMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm (172690 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm        2014-08-16 14:26:17 UTC (rev 172690)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(NETWORK_PROCESS)
</span><span class="cx"> 
</span><del>-#import &quot;DiskCacheMonitor.h&quot;
</del><ins>+#import &quot;NetworkDiskCacheMonitor.h&quot;
</ins><span class="cx"> #import &quot;ShareableResource.h&quot;
</span><span class="cx"> #import &lt;WebCore/ResourceHandle.h&gt;
</span><span class="cx"> #import &lt;WebCore/SharedBuffer.h&gt;
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx">     ASSERT_UNUSED(handle, handle == m_handle);
</span><span class="cx"> 
</span><span class="cx">     if (m_bytesReceived &gt;= fileBackedResourceMinimumSize())
</span><del>-        DiskCacheMonitor::monitorFileBackingStoreCreation(cfResponse, this);
</del><ins>+        NetworkDiskCacheMonitor::monitorFileBackingStoreCreation(cfResponse, this);
</ins><span class="cx"> 
</span><span class="cx">     m_handle-&gt;continueWillCacheResponse(cfResponse);
</span><span class="cx"> }
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
</span><span class="cx">     if (m_bytesReceived &gt;= fileBackedResourceMinimumSize())
</span><del>-        DiskCacheMonitor::monitorFileBackingStoreCreation([nsResponse _CFCachedURLResponse], this);
</del><ins>+        NetworkDiskCacheMonitor::monitorFileBackingStoreCreation([nsResponse _CFCachedURLResponse], this);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     m_handle-&gt;continueWillCacheResponse(nsResponse);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (172690 => 172691)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-08-16 14:26:17 UTC (rev 172690)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-08-16 19:01:37 UTC (rev 172691)
</span><span class="lines">@@ -891,8 +891,8 @@
</span><span class="cx">                 51654EFD184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51654EFB184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp */; };
</span><span class="cx">                 51654EFE184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 51654EFC184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h */; };
</span><span class="cx">                 51654F00184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */; };
</span><del>-                5167EEA0170377BF007681CA /* DiskCacheMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5167EE9E170377BF007681CA /* DiskCacheMonitor.h */; };
-                5167EEA1170377BF007681CA /* DiskCacheMonitor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5167EE9F170377BF007681CA /* DiskCacheMonitor.mm */; };
</del><ins>+                5167EEA0170377BF007681CA /* NetworkDiskCacheMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5167EE9E170377BF007681CA /* NetworkDiskCacheMonitor.h */; };
+                5167EEA1170377BF007681CA /* NetworkDiskCacheMonitor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5167EE9F170377BF007681CA /* NetworkDiskCacheMonitor.mm */; };
</ins><span class="cx">                 516A4A5D120A2CCD00C05B7F /* APIError.h in Headers */ = {isa = PBXBuildFile; fileRef = 516A4A5B120A2CCD00C05B7F /* APIError.h */; };
</span><span class="cx">                 5175095A1897249700408FAC /* IDBIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 517509591897249700408FAC /* IDBIdentifier.h */; };
</span><span class="cx">                 51795567162876CB00FA43B6 /* NetworkProcessMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A8A6151627F3F9000D90E9 /* NetworkProcessMac.mm */; };
</span><span class="lines">@@ -2919,8 +2919,8 @@
</span><span class="cx">                 51654EFB184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniqueIDBDatabaseBackingStoreSQLite.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51654EFC184EF33F007DC837 /* UniqueIDBDatabaseBackingStoreSQLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueIDBDatabaseBackingStoreSQLite.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51654EFF184EF34A007DC837 /* UniqueIDBDatabaseBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueIDBDatabaseBackingStore.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                5167EE9E170377BF007681CA /* DiskCacheMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskCacheMonitor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                5167EE9F170377BF007681CA /* DiskCacheMonitor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DiskCacheMonitor.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                5167EE9E170377BF007681CA /* NetworkDiskCacheMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkDiskCacheMonitor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5167EE9F170377BF007681CA /* NetworkDiskCacheMonitor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkDiskCacheMonitor.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 516A4A5B120A2CCD00C05B7F /* APIError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517509591897249700408FAC /* IDBIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBIdentifier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517A33B3130B308C00F80CB5 /* WKApplicationCacheManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKApplicationCacheManager.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5209,8 +5209,8 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 E17AE2C116B9C139001C42F1 /* com.apple.WebKit.NetworkProcess.sb.in */,
</span><del>-                                5167EE9E170377BF007681CA /* DiskCacheMonitor.h */,
-                                5167EE9F170377BF007681CA /* DiskCacheMonitor.mm */,
</del><ins>+                                5167EE9E170377BF007681CA /* NetworkDiskCacheMonitor.h */,
+                                5167EE9F170377BF007681CA /* NetworkDiskCacheMonitor.mm */,
</ins><span class="cx">                                 51A8A6151627F3F9000D90E9 /* NetworkProcessMac.mm */,
</span><span class="cx">                                 51E3B67E16F266B3009968DC /* NetworkResourceLoaderMac.mm */,
</span><span class="cx">                                 512C068F16390E6900ABB911 /* NetworkResourceLoadSchedulerMac.mm */,
</span><span class="lines">@@ -7132,7 +7132,7 @@
</span><span class="cx">                                 518353DF1887128B00D9FE44 /* KeyedDecoder.h in Headers */,
</span><span class="cx">                                 BCE81D99131AE02100241910 /* DictionaryPopupInfo.h in Headers */,
</span><span class="cx">                                 C58CDF2E1887609F00871536 /* InteractionInformationAtPosition.h in Headers */,
</span><del>-                                5167EEA0170377BF007681CA /* DiskCacheMonitor.h in Headers */,
</del><ins>+                                5167EEA0170377BF007681CA /* NetworkDiskCacheMonitor.h in Headers */,
</ins><span class="cx">                                 518E8F0816B2093700E91429 /* Download.h in Headers */,
</span><span class="cx">                                 518E8F0A16B2093700E91429 /* DownloadAuthenticationClient.h in Headers */,
</span><span class="cx">                                 518E8F0C16B2093700E91429 /* DownloadManager.h in Headers */,
</span><span class="lines">@@ -8803,7 +8803,7 @@
</span><span class="cx">                                 0FF24A2D1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 2984F57C164B915F004BC0C6 /* CustomProtocolManagerProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 BCE81D98131AE02100241910 /* DictionaryPopupInfo.cpp in Sources */,
</span><del>-                                5167EEA1170377BF007681CA /* DiskCacheMonitor.mm in Sources */,
</del><ins>+                                5167EEA1170377BF007681CA /* NetworkDiskCacheMonitor.mm in Sources */,
</ins><span class="cx">                                 2DAF06D718BD1A470081CEB1 /* SmartMagnificationController.mm in Sources */,
</span><span class="cx">                                 2D6CD11A189058A500E5A4A0 /* ViewSnapshotStore.mm in Sources */,
</span><span class="cx">                                 518E8F0716B2093700E91429 /* Download.cpp in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>