<!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>[186530] 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/186530">186530</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2015-07-08 15:53:41 -0700 (Wed, 08 Jul 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Move PingLoaders to the NetworkingProcess.
&lt;rdar://problem/18860263&gt; and https://bugs.webkit.org/show_bug.cgi?id=146710

Reviewed by Tim Horton.

Source/WebCore:

No new tests.
There's no current solution for communicating back to a page that a ping load has reached its target.
Until we have such a solution, any attempt at a layout test will be fragile at best.

* WebCore.xcodeproj/project.pbxproj:

* loader/LoaderStrategy.cpp:
(WebCore::LoaderStrategy::createPingHandle): Default implementation is create the PingHandle directly.
* loader/LoaderStrategy.h:

PingLoader becomes a static class for now that crafts the ResourceRequest then passes it off
to the LoaderStrategy:
* loader/PingLoader.cpp:
(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):
(WebCore::PingLoader::sendViolationReport):
(WebCore::PingLoader::startPingLoad):
(WebCore::PingLoader::createPingLoader): Deleted.
(WebCore::PingLoader::PingLoader): Deleted.
(WebCore::PingLoader::~PingLoader): Deleted.
* loader/PingLoader.h:
(WebCore::PingLoader::timeoutTimerFired): Deleted.

PingHandle does what PingLoader used to - It's a basic ResourceHandleClient that simply waits
for any response/completion/failure and then deletes itself.
* platform/network/PingHandle.h: Added.
(WebCore::PingHandle::PingHandle):
(WebCore::PingHandle::usesAsyncCallbacks):
(WebCore::PingHandle::timeoutTimerFired):
(WebCore::PingHandle::~PingHandle):

Source/WebKit2:

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::loadPing): Create a PingHandle and then return.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:

* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::createPingHandle): If the Network process is enabled,
  compile the appropriate load parameters and then message to it.
  Otherwise, use the default in-process PingHandle.
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreloaderLoaderStrategycpp">trunk/Source/WebCore/loader/LoaderStrategy.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderLoaderStrategyh">trunk/Source/WebCore/loader/LoaderStrategy.h</a></li>
<li><a href="#trunkSourceWebCoreloaderPingLoadercpp">trunk/Source/WebCore/loader/PingLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderPingLoaderh">trunk/Source/WebCore/loader/PingLoader.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcesscpp">trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcessh">trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcessmessagesin">trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiescpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformnetworkPingHandleh">trunk/Source/WebCore/platform/network/PingHandle.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/ChangeLog        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2015-07-08  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move PingLoaders to the NetworkingProcess.
+        &lt;rdar://problem/18860263&gt; and https://bugs.webkit.org/show_bug.cgi?id=146710
+
+        Reviewed by Tim Horton.
+
+        No new tests.
+        There's no current solution for communicating back to a page that a ping load has reached its target.
+        Until we have such a solution, any attempt at a layout test will be fragile at best.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        
+        * loader/LoaderStrategy.cpp:
+        (WebCore::LoaderStrategy::createPingHandle): Default implementation is create the PingHandle directly.
+        * loader/LoaderStrategy.h:
+
+        PingLoader becomes a static class for now that crafts the ResourceRequest then passes it off
+        to the LoaderStrategy:        
+        * loader/PingLoader.cpp:
+        (WebCore::PingLoader::loadImage):
+        (WebCore::PingLoader::sendPing):
+        (WebCore::PingLoader::sendViolationReport):
+        (WebCore::PingLoader::startPingLoad):
+        (WebCore::PingLoader::createPingLoader): Deleted.
+        (WebCore::PingLoader::PingLoader): Deleted.
+        (WebCore::PingLoader::~PingLoader): Deleted.
+        * loader/PingLoader.h:
+        (WebCore::PingLoader::timeoutTimerFired): Deleted.
+
+        PingHandle does what PingLoader used to - It's a basic ResourceHandleClient that simply waits
+        for any response/completion/failure and then deletes itself.
+        * platform/network/PingHandle.h: Added.
+        (WebCore::PingHandle::PingHandle):
+        (WebCore::PingHandle::usesAsyncCallbacks):
+        (WebCore::PingHandle::timeoutTimerFired):
+        (WebCore::PingHandle::~PingHandle):
+
</ins><span class="cx"> 2015-07-08  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add new sources to StyleAllInOne.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -2013,6 +2013,7 @@
</span><span class="cx">                 51AF503616F100F60095B2E8 /* ResourceLoaderTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 51AF503516F100F60095B2E8 /* ResourceLoaderTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51B07A441823248B00AA8D1A /* IDBPendingDeleteCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B07A431823248B00AA8D1A /* IDBPendingDeleteCall.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51B2417B0D931F3F00E83F5C /* LegacyWebArchiveMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51B2417A0D931F3F00E83F5C /* LegacyWebArchiveMac.mm */; };
</span><ins>+                51B454EA1B4DAE7D0085EAA6 /* PingHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B454E91B4DAE7D0085EAA6 /* PingHandle.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 51B45D201AB8D1E200117CD2 /* ContentExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B45D1E1AB8D1E200117CD2 /* ContentExtension.cpp */; };
</span><span class="cx">                 51B45D211AB8D1E200117CD2 /* ContentExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B45D1F1AB8D1E200117CD2 /* ContentExtension.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51B58FD4195A964D002990B0 /* PlatformGamepad.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E5FEF195101470086CA5E /* PlatformGamepad.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -9250,6 +9251,7 @@
</span><span class="cx">                 51AF503516F100F60095B2E8 /* ResourceLoaderTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoaderTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B07A431823248B00AA8D1A /* IDBPendingDeleteCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBPendingDeleteCall.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B2417A0D931F3F00E83F5C /* LegacyWebArchiveMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LegacyWebArchiveMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                51B454E91B4DAE7D0085EAA6 /* PingHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PingHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 51B45D1E1AB8D1E200117CD2 /* ContentExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentExtension.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B45D1F1AB8D1E200117CD2 /* ContentExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentExtension.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51BE37DE0DAEE00E001085FC /* StorageArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageArea.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -16797,6 +16799,7 @@
</span><span class="cx">                                 E13EF3421684ECF40034C83F /* NetworkStorageSession.h */,
</span><span class="cx">                                 447958021643B47B001E0A7F /* ParsedContentType.cpp */,
</span><span class="cx">                                 447958031643B47B001E0A7F /* ParsedContentType.h */,
</span><ins>+                                51B454E91B4DAE7D0085EAA6 /* PingHandle.h */,
</ins><span class="cx">                                 E1424C89164B3B4E00F32D40 /* PlatformCookieJar.h */,
</span><span class="cx">                                 37BAAE571980D1DD005DFE71 /* ProtectionSpace.h */,
</span><span class="cx">                                 514C765F0CE923A1007EF3CD /* ProtectionSpaceBase.cpp */,
</span><span class="lines">@@ -22715,8 +22718,6 @@
</span><span class="cx">                                 8AA61CFD144D595B00F37350 /* WebKitCSSRegionRule.cpp */,
</span><span class="cx">                                 8AA61CFE144D595B00F37350 /* WebKitCSSRegionRule.h */,
</span><span class="cx">                                 8AD0A55614C87425000D83C5 /* WebKitCSSRegionRule.idl */,
</span><del>-                                6C6CCAAE19DC42B90043D5DB /* WebKitCSSResourceValue.cpp */,
-                                6C6CCAAF19DC42B90043D5DB /* WebKitCSSResourceValue.h */,
</del><span class="cx">                                 BC9ADD7F0CC4092200098C4C /* WebKitCSSTransformValue.cpp */,
</span><span class="cx">                                 BC9ADD220CC4032600098C4C /* WebKitCSSTransformValue.h */,
</span><span class="cx">                                 31611E540E1C4D4A00F6A579 /* WebKitCSSTransformValue.idl */,
</span><span class="lines">@@ -25224,6 +25225,7 @@
</span><span class="cx">                                 FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */,
</span><span class="cx">                                 FDA15EA012B03EE1003A583A /* JSAudioBufferSourceNode.h in Headers */,
</span><span class="cx">                                 FDA15EA612B03EE1003A583A /* JSAudioContext.h in Headers */,
</span><ins>+                                51B454EA1B4DAE7D0085EAA6 /* PingHandle.h in Headers */,
</ins><span class="cx">                                 FDA15EA812B03EE1003A583A /* JSAudioDestinationNode.h in Headers */,
</span><span class="cx">                                 FDA15EAE12B03EE1003A583A /* JSAudioListener.h in Headers */,
</span><span class="cx">                                 FDA15EB012B03EE1003A583A /* JSAudioNode.h in Headers */,
</span><span class="lines">@@ -25865,7 +25867,6 @@
</span><span class="cx">                                 93309DF8099E64920056E581 /* markup.h in Headers */,
</span><span class="cx">                                 9728C3141268E4390041E89B /* MarkupAccumulator.h in Headers */,
</span><span class="cx">                                 00C60E3F13D76D7E0092A275 /* MarkupTokenizerInlines.h in Headers */,
</span><del>-                                6C568CB119DAFEA000430CA2 /* MaskImageOperation.h in Headers */,
</del><span class="cx">                                 FABE72F51059C1EB00D999DD /* MathMLElement.h in Headers */,
</span><span class="cx">                                 44A28AAC12DFB8AC00AE923B /* MathMLElementFactory.h in Headers */,
</span><span class="cx">                                 FABE72F71059C1EB00D999DD /* MathMLInlineContainerElement.h in Headers */,
</span><span class="lines">@@ -26283,7 +26284,6 @@
</span><span class="cx">                                 0F580CFF0F12DE9B0051D689 /* RenderLayerBacking.h in Headers */,
</span><span class="cx">                                 0F580CFD0F12DE9B0051D689 /* RenderLayerCompositor.h in Headers */,
</span><span class="cx">                                 50D10D9A1545F5760096D288 /* RenderLayerFilterInfo.h in Headers */,
</span><del>-                                6CBFE4A519EBF2D400CA2F9D /* RenderLayerMaskImageInfo.h in Headers */,
</del><span class="cx">                                 3C244FEAA375AC633F88BE6F /* RenderLayerModelObject.h in Headers */,
</span><span class="cx">                                 0BE030A20F3112FB003C1A46 /* RenderLineBoxList.h in Headers */,
</span><span class="cx">                                 BCEA4864097D93020094C9E4 /* RenderLineBreak.h in Headers */,
</span><span class="lines">@@ -27234,7 +27234,6 @@
</span><span class="cx">                                 3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */,
</span><span class="cx">                                 498391590F1E776900C23782 /* WebKitCSSMatrix.h in Headers */,
</span><span class="cx">                                 8AA61D00144D595B00F37350 /* WebKitCSSRegionRule.h in Headers */,
</span><del>-                                6C6CCAB119DC42B90043D5DB /* WebKitCSSResourceValue.h in Headers */,
</del><span class="cx">                                 BC9ADD230CC4032600098C4C /* WebKitCSSTransformValue.h in Headers */,
</span><span class="cx">                                 3FFFF9A9159D9A550020BBD5 /* WebKitCSSViewportRule.h in Headers */,
</span><span class="cx">                                 7C48A6D1191C9D6500026674 /* WebKitNamespace.h in Headers */,
</span><span class="lines">@@ -29468,7 +29467,6 @@
</span><span class="cx">                                 1A8F6BC50DB55CDC001DB794 /* ManifestParser.cpp in Sources */,
</span><span class="cx">                                 93309DF7099E64920056E581 /* markup.cpp in Sources */,
</span><span class="cx">                                 9728C3131268E4390041E89B /* MarkupAccumulator.cpp in Sources */,
</span><del>-                                6C568CB019DAFEA000430CA2 /* MaskImageOperation.cpp in Sources */,
</del><span class="cx">                                 FABE72F41059C1EB00D999DD /* MathMLElement.cpp in Sources */,
</span><span class="cx">                                 FABE72FD1059C21100D999DD /* MathMLElementFactory.cpp in Sources */,
</span><span class="cx">                                 FABE72F61059C1EB00D999DD /* MathMLInlineContainerElement.cpp in Sources */,
</span><span class="lines">@@ -30550,7 +30548,6 @@
</span><span class="cx">                                 3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */,
</span><span class="cx">                                 498391580F1E776900C23782 /* WebKitCSSMatrix.cpp in Sources */,
</span><span class="cx">                                 8AA61CFF144D595B00F37350 /* WebKitCSSRegionRule.cpp in Sources */,
</span><del>-                                6C6CCAB019DC42B90043D5DB /* WebKitCSSResourceValue.cpp in Sources */,
</del><span class="cx">                                 BC9ADD800CC4092200098C4C /* WebKitCSSTransformValue.cpp in Sources */,
</span><span class="cx">                                 3FFFF9A8159D9A550020BBD5 /* WebKitCSSViewportRule.cpp in Sources */,
</span><span class="cx">                                 1A1414B513A0F0500019996C /* WebKitFontFamilyNames.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderLoaderStrategycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/LoaderStrategy.cpp (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/LoaderStrategy.cpp        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/loader/LoaderStrategy.cpp        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;LoaderStrategy.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;BlobRegistryImpl.h&quot;
</span><ins>+#include &quot;PingHandle.h&quot;
</ins><span class="cx"> #include &quot;ResourceHandle.h&quot;
</span><span class="cx"> #include &quot;ResourceLoadScheduler.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -47,4 +48,10 @@
</span><span class="cx">     return new BlobRegistryImpl;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void LoaderStrategy::createPingHandle(NetworkingContext* networkingContext, ResourceRequest&amp; request, bool shouldUseCredentialStorage)
+{
+    // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
+    new PingHandle(networkingContext, request, shouldUseCredentialStorage, PingHandle::UsesAsyncCallbacks::No);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderLoaderStrategyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/LoaderStrategy.h (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/LoaderStrategy.h        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/loader/LoaderStrategy.h        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class BlobRegistry;
</span><ins>+class Frame;
</ins><span class="cx"> class NetworkingContext;
</span><span class="cx"> class ResourceError;
</span><span class="cx"> class ResourceLoadScheduler;
</span><span class="lines">@@ -46,6 +47,8 @@
</span><span class="cx"> 
</span><span class="cx">     virtual BlobRegistry* createBlobRegistry();
</span><span class="cx"> 
</span><ins>+    virtual void createPingHandle(NetworkingContext*, ResourceRequest&amp;, bool shouldUseCredentialStorage);
+
</ins><span class="cx"> protected:
</span><span class="cx">     virtual ~LoaderStrategy()
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderPingLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/PingLoader.cpp (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/PingLoader.cpp        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/loader/PingLoader.cpp        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -39,7 +39,9 @@
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="cx"> #include &quot;HTTPHeaderNames.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><ins>+#include &quot;LoaderStrategy.h&quot;
</ins><span class="cx"> #include &quot;Page.h&quot;
</span><ins>+#include &quot;PlatformStrategies.h&quot;
</ins><span class="cx"> #include &quot;ProgressTracker.h&quot;
</span><span class="cx"> #include &quot;ResourceHandle.h&quot;
</span><span class="cx"> #include &quot;ResourceRequest.h&quot;
</span><span class="lines">@@ -64,7 +66,7 @@
</span><span class="cx">         request.setHTTPReferrer(referrer);
</span><span class="cx">     frame.loader().addExtraFieldsToSubresourceRequest(request);
</span><span class="cx"> 
</span><del>-    createPingLoader(frame, request);
</del><ins>+    startPingLoad(frame, request);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing
</span><span class="lines">@@ -90,7 +92,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    createPingLoader(frame, request);
</del><ins>+    startPingLoad(frame, request);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PingLoader::sendViolationReport(Frame&amp; frame, const URL&amp; reportURL, PassRefPtr&lt;FormData&gt; report)
</span><span class="lines">@@ -105,38 +107,22 @@
</span><span class="cx">     if (!referrer.isEmpty())
</span><span class="cx">         request.setHTTPReferrer(referrer);
</span><span class="cx"> 
</span><del>-    createPingLoader(frame, request);
</del><ins>+    startPingLoad(frame, request);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PingLoader::createPingLoader(Frame&amp; frame, ResourceRequest&amp; request)
</del><ins>+void PingLoader::startPingLoad(Frame&amp; frame, ResourceRequest&amp; request)
</ins><span class="cx"> {
</span><del>-    // No need to free the PingLoader object or manage it via a smart pointer - it will kill itself as soon as it receives a response.
-    new PingLoader(frame, request);
-}
-
-PingLoader::PingLoader(Frame&amp; frame, ResourceRequest&amp; request)
-    : m_timeout(*this, &amp;PingLoader::timeoutTimerFired)
-{
</del><span class="cx">     unsigned long identifier = frame.page()-&gt;progress().createUniqueIdentifier();
</span><span class="cx">     // FIXME: Why activeDocumentLoader? I would have expected documentLoader().
</span><span class="cx">     // Itseems like the PingLoader should be associated with the current
</span><span class="cx">     // Document in the Frame, but the activeDocumentLoader will be associated
</span><span class="cx">     // with the provisional DocumentLoader if there is a provisional
</span><span class="cx">     // DocumentLoader.
</span><del>-    m_shouldUseCredentialStorage = frame.loader().client().shouldUseCredentialStorage(frame.loader().activeDocumentLoader(), identifier);
-    m_handle = ResourceHandle::create(frame.loader().networkingContext(), request, this, false, false);
</del><ins>+    bool shouldUseCredentialStorage = frame.loader().client().shouldUseCredentialStorage(frame.loader().activeDocumentLoader(), identifier);
</ins><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::continueAfterPingLoader(frame, identifier, frame.loader().activeDocumentLoader(), request, ResourceResponse());
</span><span class="cx"> 
</span><del>-    // If the server never responds, FrameLoader won't be able to cancel this load and
-    // we'll sit here waiting forever. Set a very generous timeout, just in case.
-    m_timeout.startOneShot(60000);
</del><ins>+    platformStrategies()-&gt;loaderStrategy()-&gt;createPingHandle(frame.loader().networkingContext(), request, shouldUseCredentialStorage);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PingLoader::~PingLoader()
-{
-    if (m_handle)
-        m_handle-&gt;cancel();
</del><span class="cx"> }
</span><del>-
-}
</del></span></pre></div>
<a id="trunkSourceWebCoreloaderPingLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/PingLoader.h (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/PingLoader.h        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebCore/loader/PingLoader.h        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -32,48 +32,23 @@
</span><span class="cx"> #ifndef PingLoader_h
</span><span class="cx"> #define PingLoader_h
</span><span class="cx"> 
</span><del>-#include &quot;ResourceHandleClient.h&quot;
-#include &quot;Timer.h&quot;
-#include &lt;wtf/Noncopyable.h&gt;
-#include &lt;wtf/RefPtr.h&gt;
</del><ins>+#include &lt;wtf/PassRefPtr.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class FormData;
</span><span class="cx"> class Frame;
</span><span class="cx"> class URL;
</span><del>-class ResourceError;
-class ResourceHandle;
-class ResourceResponse;
</del><ins>+class ResourceRequest;
</ins><span class="cx"> 
</span><del>-// This class triggers asynchronous loads independent of Frame staying alive (i.e., auditing pingbacks).
-// Since nothing depends on resources loaded through this class, we just want
-// to allow the load to live long enough to ensure the message was actually sent.
-// Therefore, as soon as a callback is received from the ResourceHandle, this class 
-// will cancel the load and delete itself.
-class PingLoader : private ResourceHandleClient {
-    WTF_MAKE_NONCOPYABLE(PingLoader); WTF_MAKE_FAST_ALLOCATED;
</del><ins>+class PingLoader {
</ins><span class="cx"> public:
</span><span class="cx">     static void loadImage(Frame&amp;, const URL&amp;);
</span><span class="cx">     static void sendPing(Frame&amp;, const URL&amp; pingURL, const URL&amp; destinationURL);
</span><span class="cx">     static void sendViolationReport(Frame&amp;, const URL&amp; reportURL, PassRefPtr&lt;FormData&gt; report);
</span><span class="cx"> 
</span><del>-    virtual ~PingLoader();
-
</del><span class="cx"> private:
</span><del>-    static void createPingLoader(Frame&amp;, ResourceRequest&amp;);
-    PingLoader(Frame&amp;, ResourceRequest&amp;);
-
-    virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&amp;) override { delete this; }
-    virtual void didReceiveData(ResourceHandle*, const char*, unsigned, int) override { delete this; }
-    virtual void didFinishLoading(ResourceHandle*, double) override { delete this; }
-    virtual void didFail(ResourceHandle*, const ResourceError&amp;) override { delete this; }
-    virtual bool shouldUseCredentialStorage(ResourceHandle*)  override { return m_shouldUseCredentialStorage; }
-    void timeoutTimerFired() { delete this; }
-
-    RefPtr&lt;ResourceHandle&gt; m_handle;
-    Timer m_timeout;
-    bool m_shouldUseCredentialStorage;
</del><ins>+    static void startPingLoad(Frame&amp;, ResourceRequest&amp;);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkPingHandleh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/network/PingHandle.h (0 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/PingHandle.h                                (rev 0)
+++ trunk/Source/WebCore/platform/network/PingHandle.h        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -0,0 +1,82 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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
+ * 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 PingHandle_h
+#define PingHandle_h
+
+#include &quot;ResourceHandle.h&quot;
+#include &quot;ResourceHandleClient.h&quot;
+#include &quot;Timer.h&quot;
+
+namespace WebCore {
+
+// This class triggers asynchronous loads independent of the networking context staying alive (i.e., auditing pingbacks).
+// The object just needs to live long enough to ensure the message was actually sent.
+// As soon as any callback is received from the ResourceHandle, this class will cancel the load and delete itself.
+
+class PingHandle : private ResourceHandleClient {
+    WTF_MAKE_NONCOPYABLE(PingHandle); WTF_MAKE_FAST_ALLOCATED;
+public:
+    enum class UsesAsyncCallbacks {
+        Yes,
+        No,
+    };
+    
+    PingHandle(NetworkingContext* networkingContext, const ResourceRequest&amp; request, bool shouldUseCredentialStorage, UsesAsyncCallbacks useAsyncCallbacks)
+        : m_timeoutTimer(*this, &amp;PingHandle::timeoutTimerFired)
+        , m_shouldUseCredentialStorage(shouldUseCredentialStorage)
+        , m_usesAsyncCallbacks(useAsyncCallbacks)
+    {
+        m_handle = ResourceHandle::create(networkingContext, request, this, false, false);
+
+        // If the server never responds, this object will hang around forever.
+        // Set a very generous timeout, just in case.
+        m_timeoutTimer.startOneShot(60000);
+    }
+
+private:
+    virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&amp;) override { delete this; }
+    virtual void didReceiveData(ResourceHandle*, const char*, unsigned, int) override { delete this; }
+    virtual void didFinishLoading(ResourceHandle*, double) override { delete this; }
+    virtual void didFail(ResourceHandle*, const ResourceError&amp;) override { delete this; }
+    virtual bool shouldUseCredentialStorage(ResourceHandle*)  override { return m_shouldUseCredentialStorage; }
+    virtual bool usesAsyncCallbacks() override { return m_usesAsyncCallbacks == UsesAsyncCallbacks::Yes; }
+    void timeoutTimerFired() { delete this; }
+
+    virtual ~PingHandle()
+    {
+        if (m_handle)
+            m_handle-&gt;cancel();
+    }
+
+    RefPtr&lt;ResourceHandle&gt; m_handle;
+    Timer m_timeoutTimer;
+    bool m_shouldUseCredentialStorage;
+    UsesAsyncCallbacks m_usesAsyncCallbacks;
+};
+
+} // namespace WebCore
+
+#endif // PingHandle_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/ChangeLog        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2015-07-08  Brady Eidson  &lt;beidson@apple.com&gt;
+
+        Move PingLoaders to the NetworkingProcess.
+        &lt;rdar://problem/18860263&gt; and https://bugs.webkit.org/show_bug.cgi?id=146710
+
+        Reviewed by Tim Horton.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::loadPing): Create a PingHandle and then return.
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+        
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::createPingHandle): If the Network process is enabled,
+          compile the appropriate load parameters and then message to it.
+          Otherwise, use the default in-process PingHandle.
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+
</ins><span class="cx"> 2015-07-08  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Only support image previews for clients that implement commitPreviewedImageWithURL 
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;NetworkResourceLoaderMessages.h&quot;
</span><span class="cx"> #include &quot;RemoteNetworkingContext.h&quot;
</span><span class="cx"> #include &quot;SessionTracker.h&quot;
</span><ins>+#include &lt;WebCore/PingHandle.h&gt;
</ins><span class="cx"> #include &lt;WebCore/PlatformCookieJar.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceLoaderOptions.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceRequest.h&gt;
</span><span class="lines">@@ -126,6 +127,14 @@
</span><span class="cx">     loader-&gt;start();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void NetworkConnectionToWebProcess::loadPing(const NetworkResourceLoadParameters&amp; loadParameters)
+{
+    RefPtr&lt;NetworkingContext&gt; context = RemoteNetworkingContext::create(loadParameters.sessionID, loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
+
+    // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
+    new PingHandle(context.get(), loadParameters.request, loadParameters.allowStoredCredentials == AllowStoredCredentials, PingHandle::UsesAsyncCallbacks::Yes);
+}
+
</ins><span class="cx"> void NetworkConnectionToWebProcess::removeLoadIdentifier(ResourceLoadIdentifier identifier)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;NetworkResourceLoader&gt; loader = m_networkResourceLoaders.get(identifier);
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     
</span><span class="cx">     void scheduleResourceLoad(const NetworkResourceLoadParameters&amp;);
</span><span class="cx">     void performSynchronousLoad(const NetworkResourceLoadParameters&amp;, PassRefPtr&lt;Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&gt;);
</span><ins>+    void loadPing(const NetworkResourceLoadParameters&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void removeLoadIdentifier(ResourceLoadIdentifier);
</span><span class="cx">     void setDefersLoading(ResourceLoadIdentifier, bool);
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcessmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> 
</span><span class="cx">     ScheduleResourceLoad(WebKit::NetworkResourceLoadParameters resourceLoadParameters)
</span><span class="cx">     PerformSynchronousLoad(WebKit::NetworkResourceLoadParameters resourceLoadParameters) -&gt; (WebCore::ResourceError error, WebCore::ResourceResponse response, Vector&lt;char&gt; data) Delayed
</span><ins>+    LoadPing(WebKit::NetworkResourceLoadParameters resourceLoadParameters)
</ins><span class="cx">     RemoveLoadIdentifier(uint64_t resourceLoadIdentifier)
</span><span class="cx">     SetDefersLoading(uint64_t resourceLoadIdentifier, bool defers)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx"> #include &lt;WebCore/PageGroup.h&gt;
</span><span class="cx"> #include &lt;WebCore/PlatformCookieJar.h&gt;
</span><span class="cx"> #include &lt;WebCore/PlatformPasteboard.h&gt;
</span><ins>+#include &lt;WebCore/ProgressTracker.h&gt;
</ins><span class="cx"> #include &lt;WebCore/ResourceError.h&gt;
</span><span class="cx"> #include &lt;WebCore/SessionID.h&gt;
</span><span class="cx"> #include &lt;WebCore/StorageNamespace.h&gt;
</span><span class="lines">@@ -248,6 +249,28 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPlatformStrategies::createPingHandle(NetworkingContext* networkingContext, ResourceRequest&amp; request, bool shouldUseCredentialStorage)
+{
+    auto&amp; webProcess = WebProcess::singleton();
+    if (!webProcess.usesNetworkProcess()) {
+        LoaderStrategy::createPingHandle(networkingContext, request, shouldUseCredentialStorage);
+        return;
+    }
+
+    WebFrameNetworkingContext* webContext = static_cast&lt;WebFrameNetworkingContext*&gt;(networkingContext);
+    WebFrameLoaderClient* webFrameLoaderClient = webContext-&gt;webFrameLoaderClient();
+    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient-&gt;webFrame() : nullptr;
+    WebPage* webPage = webFrame ? webFrame-&gt;page() : nullptr;
+    
+    NetworkResourceLoadParameters loadParameters;
+    loadParameters.request = request;
+    loadParameters.sessionID = webPage ? webPage-&gt;sessionID() : SessionID::defaultSessionID();
+    loadParameters.allowStoredCredentials = shouldUseCredentialStorage ? AllowStoredCredentials : DoNotAllowStoredCredentials;
+    loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = networkingContext-&gt;shouldClearReferrerOnHTTPSToHTTPRedirect();
+
+    webProcess.networkConnection()-&gt;connection()-&gt;send(Messages::NetworkConnectionToWebProcess::LoadPing(loadParameters), 0);
+}
+
</ins><span class="cx"> BlobRegistry* WebPlatformStrategies::createBlobRegistry()
</span><span class="cx"> {
</span><span class="cx">     if (!WebProcess::singleton().usesNetworkProcess())
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h (186529 => 186530)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h        2015-07-08 22:49:57 UTC (rev 186529)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h        2015-07-08 22:53:41 UTC (rev 186530)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx">     virtual WebCore::ResourceLoadScheduler* resourceLoadScheduler() override;
</span><span class="cx">     virtual void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long resourceLoadIdentifier, const WebCore::ResourceRequest&amp;, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&amp;, WebCore::ResourceResponse&amp;, Vector&lt;char&gt;&amp; data) override;
</span><span class="cx">     virtual WebCore::BlobRegistry* createBlobRegistry() override;
</span><ins>+    virtual void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&amp;, bool shouldUseCredentialStorage) override;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // WebCore::PluginStrategy
</span></span></pre>
</div>
</div>

</body>
</html>