<!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>[208344] 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/208344">208344</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2016-11-03 14:06:31 -0700 (Thu, 03 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/208298">r208298</a>.
Source/WebCore:

https://bugs.webkit.org/show_bug.cgi?id=163939

caused asan crashes

Reverted changeset:

&quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
https://bugs.webkit.org/show_bug.cgi?id=163939
http://trac.webkit.org/changeset/208298

Source/WebCore/platform/gtk/po:


caused

Reverted changeset:

&quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
https://bugs.webkit.org/show_bug.cgi?id=163939
http://trac.webkit.org/changeset/208298

Source/WebKit2:

https://bugs.webkit.org/show_bug.cgi?id=163939

caused asan crashes

Reverted changeset:

&quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
https://bugs.webkit.org/show_bug.cgi?id=163939
http://trac.webkit.org/changeset/208298</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="#trunkSourceWebCorefileapiAsyncFileStreamh">trunk/Source/WebCore/fileapi/AsyncFileStream.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkpoChangeLog">trunk/Source/WebCore/platform/gtk/po/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkpoPOTFILESin">trunk/Source/WebCore/platform/gtk/po/POTFILES.in</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkBlobDatah">trunk/Source/WebCore/platform/network/BlobData.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkHTTPParsersh">trunk/Source/WebCore/platform/network/HTTPParsers.h</a></li>
<li><a href="#trunkSourceWebCoreplatformnetworkResourceResponseBaseh">trunk/Source/WebCore/platform/network/ResourceResponseBase.h</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsBlobDownloadClientcpp">trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsBlobDownloadClienth">trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsDownloadcpp">trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsDownloadh">trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsDownloadManagercpp">trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsDownloadManagerh">trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadscocoaDownloadCocoamm">trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsiosDownloadIOSmm">trunk/Source/WebKit2/NetworkProcess/Downloads/ios/DownloadIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadsmacDownloadMacmm">trunk/Source/WebKit2/NetworkProcess/Downloads/mac/DownloadMac.mm</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcesscpp">trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkDataTaskcpp">trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkDataTaskh">trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkLoadcpp">trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkLoadh">trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkSessioncpp">trunk/Source/WebKit2/NetworkProcess/NetworkSession.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkSessionh">trunk/Source/WebKit2/NetworkProcess/NetworkSession.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscocoaNetworkDataTaskCocoah">trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscocoaNetworkSessionCocoamm">trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessmacNetworkLoadMacmm">trunk/Source/WebKit2/NetworkProcess/mac/NetworkLoadMac.mm</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesssoupNetworkDataTaskSoupcpp">trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesssoupNetworkDataTaskSouph">trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.h</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesssoupNetworkSessionSoupcpp">trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesssoupNetworkSessionSouph">trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.h</a></li>
<li><a href="#trunkSourceWebKit2PlatformEflcmake">trunk/Source/WebKit2/PlatformEfl.cmake</a></li>
<li><a href="#trunkSourceWebKit2PlatformGTKcmake">trunk/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2NetworkProcessDownloadssoupDownloadSoupcpp">trunk/Source/WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkDataTaskBlobcpp">trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkDataTaskBlobh">trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/ChangeLog        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-11-03  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Unreviewed, rolling out r208298.
+        https://bugs.webkit.org/show_bug.cgi?id=163939
+
+        caused asan crashes
+
+        Reverted changeset:
+
+        &quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=163939
+        http://trac.webkit.org/changeset/208298
+
</ins><span class="cx"> 2016-11-03  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win][Direct2D] Native Windows widgets are drawn upside-down
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -2060,7 +2060,7 @@
</span><span class="cx">                 514C76700CE923A1007EF3CD /* FormData.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765B0CE923A1007EF3CD /* FormData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 514C76710CE923A1007EF3CD /* HTTPHeaderMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765C0CE923A1007EF3CD /* HTTPHeaderMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C765D0CE923A1007EF3CD /* HTTPParsers.cpp */; };
</span><del>-                514C76730CE923A1007EF3CD /* HTTPParsers.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765E0CE923A1007EF3CD /* HTTPParsers.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                514C76730CE923A1007EF3CD /* HTTPParsers.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C765E0CE923A1007EF3CD /* HTTPParsers.h */; };
</ins><span class="cx">                 514C76740CE923A1007EF3CD /* ProtectionSpaceBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C765F0CE923A1007EF3CD /* ProtectionSpaceBase.cpp */; };
</span><span class="cx">                 514C76750CE923A1007EF3CD /* ProtectionSpaceBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 514C76600CE923A1007EF3CD /* ProtectionSpaceBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 514C76780CE923A1007EF3CD /* ResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76630CE923A1007EF3CD /* ResourceHandle.cpp */; };
</span><span class="lines">@@ -6179,7 +6179,7 @@
</span><span class="cx">                 E1CA5CBC0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1CA5CBB0E8CDCAF00E8EF90 /* JSWorkerCustom.cpp */; };
</span><span class="cx">                 E1CAA5C60E8BD23600A73ECA /* JSWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CAA5C50E8BD23600A73ECA /* JSWorker.h */; };
</span><span class="cx">                 E1CDE92015018ED000862CC5 /* AsyncFileStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1CDE91F15018ED000862CC5 /* AsyncFileStream.cpp */; };
</span><del>-                E1CDE9221501916900862CC5 /* AsyncFileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CDE9211501916900862CC5 /* AsyncFileStream.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><ins>+                E1CDE9221501916900862CC5 /* AsyncFileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CDE9211501916900862CC5 /* AsyncFileStream.h */; settings = {ATTRIBUTES = (); }; };
</ins><span class="cx">                 E1D31CDC19196020001005A3 /* BlobDataFileReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1D31CDA19196020001005A3 /* BlobDataFileReference.cpp */; };
</span><span class="cx">                 E1D31CDD19196020001005A3 /* BlobDataFileReference.h in Headers */ = {isa = PBXBuildFile; fileRef = E1D31CDB19196020001005A3 /* BlobDataFileReference.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E1E1BF00115FF6FB006F52CA /* WindowsKeyboardCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E1BEFF115FF6FB006F52CA /* WindowsKeyboardCodes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiAsyncFileStreamh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/AsyncFileStream.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/AsyncFileStream.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/fileapi/AsyncFileStream.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> class FileStream;
</span><span class="cx"> class URL;
</span><span class="cx"> 
</span><del>-class WEBCORE_EXPORT AsyncFileStream {
</del><ins>+class AsyncFileStream {
</ins><span class="cx"> public:
</span><span class="cx">     explicit AsyncFileStream(FileStreamClient&amp;);
</span><span class="cx">     ~AsyncFileStream();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkpoChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/po/ChangeLog (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/po/ChangeLog        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/platform/gtk/po/ChangeLog        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-11-03  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Unreviewed, rolling out r208298.
+
+        caused
+
+        Reverted changeset:
+
+        &quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=163939
+        http://trac.webkit.org/changeset/208298
+
</ins><span class="cx"> 2016-11-02  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         NetworkSession: Add NetworkDataTask implementation for blobs
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkpoPOTFILESin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/po/POTFILES.in (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/po/POTFILES.in        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/platform/gtk/po/POTFILES.in        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> # List of source files which contain translatable strings.
</span><span class="cx"> ErrorsGtk.cpp
</span><span class="cx"> LocalizedStringsGtk.cpp
</span><ins>+../../../WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp
</ins><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
</span><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp
</span><span class="cx"> ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkBlobDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/BlobData.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/BlobData.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/platform/network/BlobData.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     BlobDataFileReference* file() const { return m_file.get(); }
</span><span class="cx"> 
</span><span class="cx">     long long offset() const { return m_offset; }
</span><del>-    WEBCORE_EXPORT long long length() const; // Computes file length if it's not known yet.
</del><ins>+    long long length() const; // Computes file length if it's not known yet.
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     friend class BlobData;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkHTTPParsersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/HTTPParsers.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/HTTPParsers.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/platform/network/HTTPParsers.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> XFrameOptionsDisposition parseXFrameOptionsHeader(const String&amp;);
</span><span class="cx"> 
</span><span class="cx"> // -1 could be set to one of the return parameters to indicate the value is not specified.
</span><del>-WEBCORE_EXPORT bool parseRange(const String&amp;, long long&amp; rangeOffset, long long&amp; rangeEnd, long long&amp; rangeSuffixLength);
</del><ins>+bool parseRange(const String&amp;, long long&amp; rangeOffset, long long&amp; rangeEnd, long long&amp; rangeSuffixLength);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(NOSNIFF)
</span><span class="cx"> ContentTypeOptionsDisposition parseContentTypeOptionsHeader(const String&amp; header);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformnetworkResourceResponseBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     String httpHeaderField(const String&amp; name) const;
</span><span class="cx">     WEBCORE_EXPORT String httpHeaderField(HTTPHeaderName) const;
</span><span class="cx">     WEBCORE_EXPORT void setHTTPHeaderField(const String&amp; name, const String&amp; value);
</span><del>-    WEBCORE_EXPORT void setHTTPHeaderField(HTTPHeaderName, const String&amp; value);
</del><ins>+    void setHTTPHeaderField(HTTPHeaderName, const String&amp; value);
</ins><span class="cx"> 
</span><span class="cx">     void addHTTPHeaderField(HTTPHeaderName, const String&amp; value);
</span><span class="cx">     void addHTTPHeaderField(const String&amp; name, const String&amp; value);
</span></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/CMakeLists.txt        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -181,7 +181,6 @@
</span><span class="cx"> set(NetworkProcess_COMMON_SOURCES
</span><span class="cx">     NetworkProcess/NetworkConnectionToWebProcess.cpp
</span><span class="cx">     NetworkProcess/NetworkDataTask.cpp
</span><del>-    NetworkProcess/NetworkDataTaskBlob.cpp
</del><span class="cx">     NetworkProcess/NetworkLoad.cpp
</span><span class="cx">     NetworkProcess/NetworkProcess.cpp
</span><span class="cx">     NetworkProcess/NetworkProcessPlatformStrategies.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/ChangeLog        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-11-03  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Unreviewed, rolling out r208298.
+        https://bugs.webkit.org/show_bug.cgi?id=163939
+
+        caused asan crashes
+
+        Reverted changeset:
+
+        &quot;NetworkSession: Add NetworkDataTask implementation for blobs&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=163939
+        http://trac.webkit.org/changeset/208298
+
</ins><span class="cx"> 2016-11-03  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r208330.
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsBlobDownloadClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -26,8 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;BlobDownloadClient.h&quot;
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
-
</del><span class="cx"> #include &quot;DataReference.h&quot;
</span><span class="cx"> #include &quot;Download.h&quot;
</span><span class="cx"> #include &quot;WebErrors.h&quot;
</span><span class="lines">@@ -99,5 +97,3 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // !USE(NETWORK_SESSION)
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsBlobDownloadClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/BlobDownloadClient.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -25,8 +25,6 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
-
</del><span class="cx"> #include &lt;WebCore/FileSystem.h&gt;
</span><span class="cx"> #include &lt;WebCore/ResourceHandleClient.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -57,5 +55,3 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span><del>-
-#endif // !USE(NETWORK_SESSION)
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsDownloadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -45,10 +45,10 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-Download::Download(DownloadManager&amp; downloadManager, DownloadID downloadID, NetworkDataTask&amp; download, const SessionID&amp; sessionID, const String&amp; suggestedName)
</del><ins>+Download::Download(DownloadManager&amp; downloadManager, DownloadID downloadID, PlatformDownloadTaskRef download, const WebCore::SessionID&amp; sessionID, const String&amp; suggestedName)
</ins><span class="cx">     : m_downloadManager(downloadManager)
</span><span class="cx">     , m_downloadID(downloadID)
</span><del>-    , m_download(&amp;download)
</del><ins>+    , m_download(download)
</ins><span class="cx">     , m_sessionID(sessionID)
</span><span class="cx">     , m_suggestedName(suggestedName)
</span><span class="cx"> {
</span><span class="lines">@@ -56,20 +56,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_downloadManager.didCreateDownload();
</span><span class="cx"> }
</span><del>-#if PLATFORM(COCOA)
-Download::Download(DownloadManager&amp; downloadManager, DownloadID downloadID, NSURLSessionDownloadTask* download, const SessionID&amp; sessionID, const String&amp; suggestedName)
-    : m_downloadManager(downloadManager)
-    , m_downloadID(downloadID)
-    , m_downloadTask(download)
-    , m_sessionID(sessionID)
-    , m_suggestedName(suggestedName)
-{
-    ASSERT(m_downloadID.downloadID());
</del><ins>+#endif
</ins><span class="cx"> 
</span><del>-    m_downloadManager.didCreateDownload();
-}
-#endif
-#else
</del><span class="cx"> Download::Download(DownloadManager&amp; downloadManager, DownloadID downloadID, const ResourceRequest&amp; request, const String&amp; suggestedName)
</span><span class="cx">     : m_downloadManager(downloadManager)
</span><span class="cx">     , m_downloadID(downloadID)
</span><span class="lines">@@ -80,11 +68,9 @@
</span><span class="cx"> 
</span><span class="cx">     m_downloadManager.didCreateDownload();
</span><span class="cx"> }
</span><del>-#endif // USE(NETWORK_SESSION)
</del><span class="cx"> 
</span><span class="cx"> Download::~Download()
</span><span class="cx"> {
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx">     if (m_resourceHandle) {
</span><span class="cx">         m_resourceHandle-&gt;clearClient();
</span><span class="cx">         m_resourceHandle-&gt;cancel();
</span><span class="lines">@@ -93,12 +79,10 @@
</span><span class="cx">     m_downloadClient = nullptr;
</span><span class="cx"> 
</span><span class="cx">     platformInvalidate();
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     m_downloadManager.didDestroyDownload();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx"> void Download::start()
</span><span class="cx"> {
</span><span class="cx">     if (m_request.url().protocolIsBlob()) {
</span><span class="lines">@@ -108,7 +92,11 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if USE(NETWORK_SESSION)
+    ASSERT_NOT_REACHED();
+#else
</ins><span class="cx">     startNetworkLoad();
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Download::startWithHandle(ResourceHandle* handle, const ResourceResponse&amp; response)
</span><span class="lines">@@ -120,19 +108,17 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if USE(NETWORK_SESSION)
+    UNUSED_PARAM(handle);
+    UNUSED_PARAM(response);
+    ASSERT_NOT_REACHED();
+#else
</ins><span class="cx">     startNetworkLoadWithHandle(handle, response);
</span><ins>+#endif
</ins><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> void Download::cancel()
</span><span class="cx"> {
</span><del>-#if USE(NETWORK_SESSION)
-    if (m_download) {
-        m_download-&gt;cancel();
-        didCancel({ });
-        return;
-    }
-#else
</del><span class="cx">     if (m_request.url().protocolIsBlob()) {
</span><span class="cx">         auto resourceHandle = WTFMove(m_resourceHandle);
</span><span class="cx">         resourceHandle-&gt;cancel();
</span><span class="lines">@@ -139,20 +125,20 @@
</span><span class="cx">         static_cast&lt;BlobDownloadClient*&gt;(m_downloadClient.get())-&gt;didCancel();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-#endif
-    platformCancelNetworkLoad();
</del><ins>+    cancelNetworkLoad();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx"> void Download::didStart()
</span><span class="cx"> {
</span><span class="cx">     send(Messages::DownloadProxy::DidStart(m_request, m_suggestedName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !USE(NETWORK_SESSION)
</ins><span class="cx"> void Download::didReceiveAuthenticationChallenge(const AuthenticationChallenge&amp; authenticationChallenge)
</span><span class="cx"> {
</span><span class="cx">     m_downloadManager.downloadsAuthenticationManager().didReceiveAuthenticationChallenge(*this, authenticationChallenge);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> void Download::didReceiveResponse(const ResourceResponse&amp; response)
</span><span class="cx"> {
</span><span class="lines">@@ -161,6 +147,16 @@
</span><span class="cx">     send(Messages::DownloadProxy::DidReceiveResponse(response));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Download::didReceiveData(uint64_t length)
+{
+    if (!m_hasReceivedData) {
+        RELEASE_LOG_IF_ALLOWED(&quot;didReceiveData: Started receiving data (id = %&quot; PRIu64 &quot;)&quot;, downloadID().downloadID());
+        m_hasReceivedData = true;
+    }
+
+    send(Messages::DownloadProxy::DidReceiveData(length));
+}
+
</ins><span class="cx"> bool Download::shouldDecodeSourceDataOfMIMEType(const String&amp; mimeType)
</span><span class="cx"> {
</span><span class="cx">     bool result;
</span><span class="lines">@@ -170,6 +166,8 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !USE(NETWORK_SESSION)
+
</ins><span class="cx"> String Download::decideDestinationWithSuggestedFilename(const String&amp; filename, bool&amp; allowOverwrite)
</span><span class="cx"> {
</span><span class="cx">     String destination;
</span><span class="lines">@@ -184,6 +182,8 @@
</span><span class="cx">     return destination;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#endif
+
</ins><span class="cx"> void Download::decideDestinationWithSuggestedFilenameAsync(const String&amp; suggestedFilename)
</span><span class="cx"> {
</span><span class="cx">     send(Messages::DownloadProxy::DecideDestinationWithSuggestedFilenameAsync(downloadID(), suggestedFilename));
</span><span class="lines">@@ -209,7 +209,6 @@
</span><span class="cx"> {
</span><span class="cx">     m_resourceHandle-&gt;continueDidReceiveResponse();
</span><span class="cx"> }
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx"> void Download::didCreateDestination(const String&amp; path)
</span><span class="cx"> {
</span><span class="lines">@@ -216,23 +215,11 @@
</span><span class="cx">     send(Messages::DownloadProxy::DidCreateDestination(path));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Download::didReceiveData(uint64_t length)
-{
-    if (!m_hasReceivedData) {
-        RELEASE_LOG_IF_ALLOWED(&quot;didReceiveData: Started receiving data (id = %&quot; PRIu64 &quot;)&quot;, downloadID().downloadID());
-        m_hasReceivedData = true;
-    }
-
-    send(Messages::DownloadProxy::DidReceiveData(length));
-}
-
</del><span class="cx"> void Download::didFinish()
</span><span class="cx"> {
</span><span class="cx">     RELEASE_LOG_IF_ALLOWED(&quot;didFinish: (id = %&quot; PRIu64 &quot;)&quot;, downloadID().downloadID());
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx">     platformDidFinish();
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     send(Messages::DownloadProxy::DidFinish());
</span><span class="cx"> 
</span><span class="lines">@@ -290,10 +277,4 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if !PLATFORM(COCOA)
-void Download::platformCancelNetworkLoad()
-{
-}
-#endif
-
</del><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsDownloadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -40,6 +40,12 @@
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> OBJC_CLASS NSURLSessionDownloadTask;
</span><ins>+typedef NSURLSessionDownloadTask* PlatformDownloadTaskRef;
+#elif USE(SOUP)
+namespace WebKit {
+class NetworkDataTask;
+}
+typedef WebKit::NetworkDataTask* PlatformDownloadTaskRef;
</ins><span class="cx"> #endif
</span><span class="cx"> #else // USE(NETWORK_SESSION)
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="lines">@@ -67,7 +73,6 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class DownloadManager;
</span><del>-class NetworkDataTask;
</del><span class="cx"> class NetworkSession;
</span><span class="cx"> class WebPage;
</span><span class="cx"> 
</span><span class="lines">@@ -75,43 +80,39 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(Download); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-    Download(DownloadManager&amp;, DownloadID, NetworkDataTask&amp;, const WebCore::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
-#if PLATFORM(COCOA)
-    Download(DownloadManager&amp;, DownloadID, NSURLSessionDownloadTask*, const WebCore::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
</del><ins>+    Download(DownloadManager&amp;, DownloadID, PlatformDownloadTaskRef, const WebCore::SessionID&amp; sessionID, const String&amp; suggestedFilename = { });
</ins><span class="cx"> #endif
</span><del>-#else
</del><span class="cx">     Download(DownloadManager&amp;, DownloadID, const WebCore::ResourceRequest&amp;, const String&amp; suggestedFilename = { });
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     ~Download();
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx">     void start();
</span><span class="cx">     void startWithHandle(WebCore::ResourceHandle*, const WebCore::ResourceResponse&amp;);
</span><del>-#endif
</del><span class="cx">     void resume(const IPC::DataReference&amp; resumeData, const String&amp; path, const SandboxExtension::Handle&amp;);
</span><span class="cx">     void cancel();
</span><span class="cx"> 
</span><span class="cx">     DownloadID downloadID() const { return m_downloadID; }
</span><span class="cx">     const String&amp; suggestedName() const { return m_suggestedName; }
</span><ins>+    const WebCore::ResourceRequest&amp; request() const { return m_request; }
</ins><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx">     void setSandboxExtension(RefPtr&lt;SandboxExtension&gt;&amp;&amp; sandboxExtension) { m_sandboxExtension = WTFMove(sandboxExtension); }
</span><span class="cx"> #else
</span><del>-    const WebCore::ResourceRequest&amp; request() const { return m_request; }
</del><span class="cx">     void didReceiveAuthenticationChallenge(const WebCore::AuthenticationChallenge&amp;);
</span><ins>+#endif
</ins><span class="cx">     void didStart();
</span><span class="cx">     void didReceiveResponse(const WebCore::ResourceResponse&amp;);
</span><ins>+    void didReceiveData(uint64_t length);
</ins><span class="cx">     bool shouldDecodeSourceDataOfMIMEType(const String&amp; mimeType);
</span><ins>+#if !USE(NETWORK_SESSION)
</ins><span class="cx">     String decideDestinationWithSuggestedFilename(const String&amp; filename, bool&amp; allowOverwrite);
</span><ins>+#endif
</ins><span class="cx">     void decideDestinationWithSuggestedFilenameAsync(const String&amp;);
</span><span class="cx">     void didDecideDownloadDestination(const String&amp; destinationPath, const SandboxExtension::Handle&amp;, bool allowOverwrite);
</span><span class="cx">     void continueDidReceiveResponse();
</span><del>-    void platformDidFinish();
-#endif
</del><span class="cx">     void didCreateDestination(const String&amp; path);
</span><del>-    void didReceiveData(uint64_t length);
</del><span class="cx">     void didFinish();
</span><ins>+    void platformDidFinish();
</ins><span class="cx">     void didFail(const WebCore::ResourceError&amp;, const IPC::DataReference&amp; resumeData);
</span><span class="cx">     void didCancel(const IPC::DataReference&amp; resumeData);
</span><span class="cx"> 
</span><span class="lines">@@ -123,35 +124,37 @@
</span><span class="cx"> #if !USE(NETWORK_SESSION)
</span><span class="cx">     void startNetworkLoad();
</span><span class="cx">     void startNetworkLoadWithHandle(WebCore::ResourceHandle*, const WebCore::ResourceResponse&amp;);
</span><del>-    void platformInvalidate();
</del><span class="cx"> #endif
</span><del>-    void platformCancelNetworkLoad();
</del><ins>+    void cancelNetworkLoad();
</ins><span class="cx"> 
</span><ins>+    void platformInvalidate();
+
</ins><span class="cx">     bool isAlwaysOnLoggingAllowed() const;
</span><span class="cx"> 
</span><span class="cx">     DownloadManager&amp; m_downloadManager;
</span><span class="cx">     DownloadID m_downloadID;
</span><ins>+    WebCore::ResourceRequest m_request;
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;SandboxExtension&gt; m_sandboxExtension;
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><ins>+#if PLATFORM(COCOA)
+    RetainPtr&lt;NSURLSessionDownloadTask&gt; m_download;
+#elif USE(SOUP)
</ins><span class="cx">     RefPtr&lt;NetworkDataTask&gt; m_download;
</span><del>-#if PLATFORM(COCOA)
-    RetainPtr&lt;NSURLSessionDownloadTask&gt; m_downloadTask;
</del><span class="cx"> #endif
</span><span class="cx">     WebCore::SessionID m_sessionID;
</span><span class="cx"> #else // USE(NETWORK_SESSION)
</span><del>-    WebCore::ResourceRequest m_request;
</del><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     RetainPtr&lt;NSURLDownload&gt; m_nsURLDownload;
</span><span class="cx">     RetainPtr&lt;WKDownloadAsDelegate&gt; m_delegate;
</span><span class="cx"> #endif
</span><ins>+#endif // USE(NETWORK_SESSION)
</ins><span class="cx"> #if USE(CFURLCONNECTION)
</span><span class="cx">     RetainPtr&lt;CFURLDownloadRef&gt; m_download;
</span><span class="cx"> #endif
</span><span class="cx">     std::unique_ptr&lt;WebCore::ResourceHandleClient&gt; m_downloadClient;
</span><span class="cx">     RefPtr&lt;WebCore::ResourceHandle&gt; m_resourceHandle;
</span><del>-#endif // USE(NETWORK_SESSION)
</del><span class="cx">     String m_suggestedName;
</span><span class="cx">     bool m_hasReceivedData { false };
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsDownloadManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -47,21 +47,23 @@
</span><span class="cx"> void DownloadManager::startDownload(SessionID sessionID, DownloadID downloadID, const ResourceRequest&amp; request, const String&amp; suggestedName)
</span><span class="cx"> {
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-    auto* networkSession = SessionTracker::networkSession(sessionID);
-    if (!networkSession)
</del><ins>+    if (!request.url().protocolIsBlob()) {
+        auto* networkSession = SessionTracker::networkSession(sessionID);
+        if (!networkSession)
+            return;
+        NetworkLoadParameters parameters;
+        parameters.sessionID = sessionID;
+        parameters.request = request;
+        parameters.clientCredentialPolicy = ClientCredentialPolicy::MayAskClientForCredentials;
+        m_pendingDownloads.add(downloadID, std::make_unique&lt;PendingDownload&gt;(WTFMove(parameters), downloadID, *networkSession, suggestedName));
</ins><span class="cx">         return;
</span><del>-    NetworkLoadParameters parameters;
-    parameters.sessionID = sessionID;
-    parameters.request = request;
-    parameters.clientCredentialPolicy = ClientCredentialPolicy::MayAskClientForCredentials;
-    m_pendingDownloads.add(downloadID, std::make_unique&lt;PendingDownload&gt;(WTFMove(parameters), downloadID, *networkSession, suggestedName));
-#else
</del><ins>+    }
+#endif
</ins><span class="cx">     auto download = std::make_unique&lt;Download&gt;(*this, downloadID, request, suggestedName);
</span><span class="cx">     download-&gt;start();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!m_downloads.contains(downloadID));
</span><span class="cx">     m_downloads.add(downloadID, WTFMove(download));
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="lines">@@ -97,7 +99,8 @@
</span><span class="cx">     auto addResult = m_downloadsWaitingForDestination.set(downloadID, std::make_pair&lt;RefPtr&lt;NetworkDataTask&gt;, ResponseCompletionHandler&gt;(&amp;networkDataTask, WTFMove(completionHandler)));
</span><span class="cx">     ASSERT_UNUSED(addResult, addResult.isNewEntry);
</span><span class="cx"> }
</span><del>-#else
</del><ins>+#endif
+
</ins><span class="cx"> void DownloadManager::convertHandleToDownload(DownloadID downloadID, ResourceHandle* handle, const ResourceRequest&amp; request, const ResourceResponse&amp; response)
</span><span class="cx"> {
</span><span class="cx">     auto download = std::make_unique&lt;Download&gt;(*this, downloadID, request);
</span><span class="lines">@@ -106,7 +109,6 @@
</span><span class="cx">     ASSERT(!m_downloads.contains(downloadID));
</span><span class="cx">     m_downloads.add(downloadID, WTFMove(download));
</span><span class="cx"> }
</span><del>-#endif // USE(NETWORK_SESSION)
</del><span class="cx"> 
</span><span class="cx"> void DownloadManager::continueDecidePendingDownloadDestination(DownloadID downloadID, String destination, const SandboxExtension::Handle&amp; sandboxExtensionHandle, bool allowOverwrite)
</span><span class="cx"> {
</span><span class="lines">@@ -132,11 +134,11 @@
</span><span class="cx"> 
</span><span class="cx">         ASSERT(!m_downloadsAfterDestinationDecided.contains(downloadID));
</span><span class="cx">         m_downloadsAfterDestinationDecided.set(downloadID, networkDataTask);
</span><ins>+        return;
</ins><span class="cx">     }
</span><del>-#else
</del><ins>+#endif
</ins><span class="cx">     if (auto* waitingDownload = download(downloadID))
</span><span class="cx">         waitingDownload-&gt;didDecideDownloadDestination(destination, sandboxExtensionHandle, allowOverwrite);
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DownloadManager::resumeDownload(SessionID, DownloadID downloadID, const IPC::DataReference&amp; resumeData, const String&amp; path, const SandboxExtension::Handle&amp; sandboxExtensionHandle)
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsDownloadManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -80,9 +80,8 @@
</span><span class="cx"> #endif
</span><span class="cx">     void continueWillSendRequest(DownloadID, WebCore::ResourceRequest&amp;&amp;);
</span><span class="cx">     void willDecidePendingDownloadDestination(NetworkDataTask&amp;, ResponseCompletionHandler&amp;&amp;);
</span><del>-#else
</del><ins>+#endif
</ins><span class="cx">     void convertHandleToDownload(DownloadID, WebCore::ResourceHandle*, const WebCore::ResourceRequest&amp;, const WebCore::ResourceResponse&amp;);
</span><del>-#endif
</del><span class="cx">     void continueDecidePendingDownloadDestination(DownloadID, String destination, const SandboxExtension::Handle&amp;, bool allowOverwrite);
</span><span class="cx"> 
</span><span class="cx">     void resumeDownload(WebCore::SessionID, DownloadID, const IPC::DataReference&amp; resumeData, const String&amp; path, const SandboxExtension::Handle&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadscocoaDownloadCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -38,10 +38,10 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-void Download::platformCancelNetworkLoad()
</del><ins>+void Download::cancelNetworkLoad()
</ins><span class="cx"> {
</span><del>-    ASSERT(m_downloadTask);
-    [m_downloadTask cancelByProducingResumeData: ^(NSData * _Nullable resumeData)
</del><ins>+    ASSERT(m_download);
+    [m_download cancelByProducingResumeData: ^(NSData * _Nullable resumeData)
</ins><span class="cx">     {
</span><span class="cx">         if (resumeData &amp;&amp; resumeData.bytes &amp;&amp; resumeData.length)
</span><span class="cx">             didCancel(IPC::DataReference(reinterpret_cast&lt;const uint8_t*&gt;(resumeData.bytes), resumeData.length));
</span><span class="lines">@@ -50,6 +50,15 @@
</span><span class="cx">     }];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Download::platformInvalidate()
+{
+    notImplemented();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Download::platformDidFinish()
+{
+}
+    
+}
+
</ins><span class="cx"> #endif // USE(NETWORK_SESSION)
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsiosDownloadIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/ios/DownloadIOS.mm (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/ios/DownloadIOS.mm        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/ios/DownloadIOS.mm        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> #pragma clang diagnostic pop
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Download::platformCancelNetworkLoad()
</del><ins>+void Download::cancelNetworkLoad()
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadsmacDownloadMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/mac/DownloadMac.mm (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/mac/DownloadMac.mm        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/mac/DownloadMac.mm        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     [m_nsURLDownload setDeletesFileUponFailure:NO];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Download::platformCancelNetworkLoad()
</del><ins>+void Download::cancelNetworkLoad()
</ins><span class="cx"> {
</span><span class="cx">     [m_nsURLDownload cancel];
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessDownloadssoupDownloadSoupcppfromrev208297trunkSourceWebKit2NetworkProcessDownloadssoupDownloadSoupcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp (from rev 208297, trunk/Source/WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp) (0 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp                                (rev 0)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/soup/DownloadSoup.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 Brent Fulgham &lt;bfulgham@webkit.org&gt;
+ *
+ * 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;Download.h&quot;
+
+#include &quot;DataReference.h&quot;
+#include &quot;NetworkDataTask.h&quot;
+#include &lt;WebCore/NotImplemented.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+void Download::resume(const IPC::DataReference&amp;, const String&amp;, const SandboxExtension::Handle&amp;)
+{
+    notImplemented();
+}
+
+void Download::cancelNetworkLoad()
+{
+    m_download-&gt;cancel();
+    didCancel({ });
+}
+
+void Download::platformInvalidate()
+{
+}
+
+void Download::platformDidFinish()
+{
+}
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkConnectionToWebProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -207,9 +207,12 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-    loader-&gt;networkLoad()-&gt;convertTaskToDownload(downloadID, request, response);
-    loader-&gt;didConvertToDownload();
-#else
</del><ins>+    if (!request.url().protocolIsBlob()) {
+        loader-&gt;networkLoad()-&gt;convertTaskToDownload(downloadID, request, response);
+        loader-&gt;didConvertToDownload();
+        return;
+    }
+#endif
</ins><span class="cx">     networkProcess.downloadManager().convertHandleToDownload(downloadID, loader-&gt;networkLoad()-&gt;handle(), request, response);
</span><span class="cx"> 
</span><span class="cx">     // Unblock the URL connection operation queue.
</span><span class="lines">@@ -216,7 +219,6 @@
</span><span class="cx">     loader-&gt;networkLoad()-&gt;handle()-&gt;continueDidReceiveResponse();
</span><span class="cx"> 
</span><span class="cx">     loader-&gt;didConvertToDownload();
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkConnectionToWebProcess::cookiesForDOM(SessionID sessionID, const URL&amp; firstParty, const URL&amp; url, String&amp; result)
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkDataTaskcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx"> 
</span><del>-#include &quot;NetworkDataTaskBlob.h&quot;
</del><span class="cx"> #include &quot;NetworkSession.h&quot;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -45,9 +44,6 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;NetworkDataTask&gt; NetworkDataTask::create(NetworkSession&amp; session, NetworkDataTaskClient&amp; client, const ResourceRequest&amp; request, StoredCredentials storedCredentials, ContentSniffingPolicy shouldContentSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect)
</span><span class="cx"> {
</span><del>-    if (request.url().protocolIsBlob())
-        return NetworkDataTaskBlob::create(session, client, request, shouldContentSniff);
-
</del><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     return NetworkDataTaskCocoa::create(session, client, request, storedCredentials, shouldContentSniff, shouldClearReferrerOnHTTPSToHTTPRedirect);
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkDataTaskh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -80,7 +80,6 @@
</span><span class="cx">     virtual void suspend() = 0;
</span><span class="cx">     virtual void cancel() = 0;
</span><span class="cx">     virtual void resume() = 0;
</span><del>-    virtual void invalidateAndCancel() = 0;
</del><span class="cx"> 
</span><span class="cx">     enum class State {
</span><span class="cx">         Running,
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkDataTaskBlobcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,582 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2016 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;NetworkDataTaskBlob.h&quot;
-
-#if USE(NETWORK_SESSION)
-
-#include &quot;DataReference.h&quot;
-#include &quot;Download.h&quot;
-#include &quot;Logging.h&quot;
-#include &quot;NetworkProcess.h&quot;
-#include &quot;NetworkSession.h&quot;
-#include &quot;WebErrors.h&quot;
-#include &lt;WebCore/AsyncFileStream.h&gt;
-#include &lt;WebCore/BlobData.h&gt;
-#include &lt;WebCore/BlobRegistryImpl.h&gt;
-#include &lt;WebCore/FileStream.h&gt;
-#include &lt;WebCore/HTTPHeaderNames.h&gt;
-#include &lt;WebCore/HTTPParsers.h&gt;
-#include &lt;WebCore/ParsedContentRange.h&gt;
-#include &lt;WebCore/ResourceError.h&gt;
-#include &lt;WebCore/ResourceResponse.h&gt;
-#include &lt;WebCore/SharedBuffer.h&gt;
-#include &lt;WebCore/URL.h&gt;
-#include &lt;wtf/MainThread.h&gt;
-#include &lt;wtf/RunLoop.h&gt;
-
-using namespace WebCore;
-
-namespace WebKit {
-
-static const unsigned bufferSize = 512 * 1024;
-
-static const int httpOK = 200;
-static const int httpPartialContent = 206;
-static const int httpNotAllowed = 403;
-static const int httpRequestedRangeNotSatisfiable = 416;
-static const int httpInternalError = 500;
-static const char* httpOKText = &quot;OK&quot;;
-static const char* httpPartialContentText = &quot;Partial Content&quot;;
-static const char* httpNotAllowedText = &quot;Not Allowed&quot;;
-static const char* httpRequestedRangeNotSatisfiableText = &quot;Requested Range Not Satisfiable&quot;;
-static const char* httpInternalErrorText = &quot;Internal Server Error&quot;;
-
-static const char* const webKitBlobResourceDomain = &quot;WebKitBlobResource&quot;;
-
-NetworkDataTaskBlob::NetworkDataTaskBlob(NetworkSession&amp; session, NetworkDataTaskClient&amp; client, const ResourceRequest&amp; request, ContentSniffingPolicy shouldContentSniff)
-    : NetworkDataTask(session, client, request, DoNotAllowStoredCredentials, false)
-    , m_blobData(static_cast&lt;BlobRegistryImpl&amp;&gt;(blobRegistry()).getBlobDataFromURL(request.url()))
-    , m_stream(std::make_unique&lt;AsyncFileStream&gt;(*this))
-{
-    m_session-&gt;registerNetworkDataTask(*this);
-    LOG(NetworkSession, &quot;%p - Created NetworkDataTaskBlob for %s&quot;, this, request.url().string().utf8().data());
-}
-
-NetworkDataTaskBlob::~NetworkDataTaskBlob()
-{
-    clearStream();
-    m_session-&gt;unregisterNetworkDataTask(*this);
-}
-
-void NetworkDataTaskBlob::clearStream()
-{
-    if (m_state == State::Completed)
-        return;
-
-    m_state = State::Completed;
-
-    if (m_fileOpened) {
-        m_fileOpened = false;
-        m_stream-&gt;close();
-    }
-    m_stream = nullptr;
-}
-
-void NetworkDataTaskBlob::resume()
-{
-    ASSERT(m_state != State::Running);
-    if (m_state == State::Canceling || m_state == State::Completed)
-        return;
-
-    m_state = State::Running;
-
-    if (m_scheduledFailureType != NoFailure) {
-        ASSERT(m_failureTimer.isActive());
-        return;
-    }
-
-    RunLoop::main().dispatch([this, protectedThis = makeRef(*this)] {
-        if (m_state == State::Canceling || m_state == State::Completed || !m_client) {
-            clearStream();
-            return;
-        }
-
-        if (!equalLettersIgnoringASCIICase(m_firstRequest.httpMethod(), &quot;get&quot;)) {
-            didFail(Error::MethodNotAllowed);
-            return;
-        }
-
-        // If the blob data is not found, fail now.
-        if (!m_blobData) {
-            didFail(Error::NotFoundError);
-            return;
-        }
-
-        // Parse the &quot;Range&quot; header we care about.
-        String range = m_firstRequest.httpHeaderField(HTTPHeaderName::Range);
-        if (!range.isEmpty() &amp;&amp; !parseRange(range, m_rangeOffset, m_rangeEnd, m_rangeSuffixLength)) {
-            didReceiveResponse(Error::RangeError);
-            return;
-        }
-
-        getSizeForNext();
-    });
-}
-
-void NetworkDataTaskBlob::suspend()
-{
-    // FIXME: can this happen?
-}
-
-void NetworkDataTaskBlob::cancel()
-{
-    if (m_state == State::Canceling || m_state == State::Completed)
-        return;
-
-    m_state = State::Canceling;
-
-    if (m_fileOpened) {
-        m_fileOpened = false;
-        m_stream-&gt;close();
-    }
-
-    if (isDownload())
-        cleanDownloadFiles();
-}
-
-void NetworkDataTaskBlob::invalidateAndCancel()
-{
-    cancel();
-    clearStream();
-}
-
-void NetworkDataTaskBlob::getSizeForNext()
-{
-    ASSERT(isMainThread());
-
-    // Do we finish validating and counting size for all items?
-    if (m_sizeItemCount &gt;= m_blobData-&gt;items().size()) {
-        seek();
-        didReceiveResponse();
-        return;
-    }
-
-    const BlobDataItem&amp; item = m_blobData-&gt;items().at(m_sizeItemCount);
-    switch (item.type()) {
-    case BlobDataItem::Type::Data:
-        didGetSize(item.length());
-        break;
-    case BlobDataItem::Type::File:
-        // Files know their sizes, but asking the stream to verify that the file wasn't modified.
-        m_stream-&gt;getSize(item.file()-&gt;path(), item.file()-&gt;expectedModificationTime());
-        break;
-    default:
-        ASSERT_NOT_REACHED();
-    }
-}
-
-void NetworkDataTaskBlob::didGetSize(long long size)
-{
-    ASSERT(isMainThread());
-
-    if (m_state == State::Canceling || m_state == State::Completed || (!m_client &amp;&amp; !isDownload())) {
-        clearStream();
-        return;
-    }
-
-    // If the size is -1, it means the file has been moved or changed. Fail now.
-    if (size == -1) {
-        didFail(Error::NotFoundError);
-        return;
-    }
-
-    // The size passed back is the size of the whole file. If the underlying item is a sliced file, we need to use the slice length.
-    const BlobDataItem&amp; item = m_blobData-&gt;items().at(m_sizeItemCount);
-    size = item.length();
-
-    // Cache the size.
-    m_itemLengthList.append(size);
-
-    // Count the size.
-    m_totalSize += size;
-    m_totalRemainingSize += size;
-    m_sizeItemCount++;
-
-    // Continue with the next item.
-    getSizeForNext();
-}
-
-void NetworkDataTaskBlob::seek()
-{
-    ASSERT(isMainThread());
-
-    // Convert from the suffix length to the range.
-    if (m_rangeSuffixLength != kPositionNotSpecified) {
-        m_rangeOffset = m_totalRemainingSize - m_rangeSuffixLength;
-        m_rangeEnd = m_rangeOffset + m_rangeSuffixLength - 1;
-    }
-
-    // Bail out if the range is not provided.
-    if (m_rangeOffset == kPositionNotSpecified)
-        return;
-
-    // Skip the initial items that are not in the range.
-    long long offset = m_rangeOffset;
-    for (m_readItemCount = 0; m_readItemCount &lt; m_blobData-&gt;items().size() &amp;&amp; offset &gt;= m_itemLengthList[m_readItemCount]; ++m_readItemCount)
-        offset -= m_itemLengthList[m_readItemCount];
-
-    // Set the offset that need to jump to for the first item in the range.
-    m_currentItemReadSize = offset;
-
-    // Adjust the total remaining size in order not to go beyond the range.
-    if (m_rangeEnd != kPositionNotSpecified) {
-        long long rangeSize = m_rangeEnd - m_rangeOffset + 1;
-        if (m_totalRemainingSize &gt; rangeSize)
-            m_totalRemainingSize = rangeSize;
-    } else
-        m_totalRemainingSize -= m_rangeOffset;
-}
-
-void NetworkDataTaskBlob::didReceiveResponse(Error errorCode)
-{
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didReceiveResponse(%u)&quot;, this, static_cast&lt;unsigned&gt;(errorCode));
-
-    Ref&lt;NetworkDataTaskBlob&gt; protectedThis(*this);
-    ResourceResponse response(m_firstRequest.url(), errorCode != Error::NoError ? &quot;text/plain&quot; : m_blobData-&gt;contentType(), errorCode != Error::NoError ? 0 : m_totalRemainingSize, String());
-    switch (errorCode) {
-    case Error::NoError: {
-        bool isRangeRequest = m_rangeOffset != kPositionNotSpecified;
-        response.setHTTPStatusCode(isRangeRequest ? httpPartialContent : httpOK);
-        response.setHTTPStatusText(isRangeRequest ? httpPartialContentText : httpOKText);
-
-        response.setHTTPHeaderField(HTTPHeaderName::ContentType, m_blobData-&gt;contentType());
-        response.setHTTPHeaderField(HTTPHeaderName::ContentLength, String::number(m_totalRemainingSize));
-
-        if (isRangeRequest)
-            response.setHTTPHeaderField(HTTPHeaderName::ContentRange, ParsedContentRange(m_rangeOffset, m_rangeEnd, m_totalSize).headerValue());
-        // FIXME: If a resource identified with a blob: URL is a File object, user agents must use that file's name attribute,
-        // as if the response had a Content-Disposition header with the filename parameter set to the File's name attribute.
-        // Notably, this will affect a name suggested in &quot;File Save As&quot;.
-        break;
-    }
-    case Error::RangeError:
-        response.setHTTPStatusCode(httpRequestedRangeNotSatisfiable);
-        response.setHTTPStatusText(httpRequestedRangeNotSatisfiableText);
-        break;
-    case Error::SecurityError:
-        response.setHTTPStatusCode(httpNotAllowed);
-        response.setHTTPStatusText(httpNotAllowedText);
-        break;
-    default:
-        response.setHTTPStatusCode(httpInternalError);
-        response.setHTTPStatusText(httpInternalErrorText);
-        break;
-    }
-
-    m_client-&gt;didReceiveResponseNetworkSession(WTFMove(response), [this, protectedThis = WTFMove(protectedThis), errorCode](PolicyAction policyAction) {
-        LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didReceiveResponse completionHandler (%u)&quot;, this, static_cast&lt;unsigned&gt;(policyAction));
-
-        if (m_state == State::Canceling || m_state == State::Completed) {
-            clearStream();
-            return;
-        }
-
-        if (errorCode != Error::NoError) {
-            didFinish();
-            return;
-        }
-
-        switch (policyAction) {
-        case PolicyAction::PolicyUse:
-            m_buffer.resize(bufferSize);
-            read();
-            break;
-        case PolicyAction::PolicyIgnore:
-            break;
-        case PolicyAction::PolicyDownload:
-            download();
-            break;
-        }
-    });
-}
-
-void NetworkDataTaskBlob::read()
-{
-    ASSERT(isMainThread());
-
-    // If there is no more remaining data to read, we are done.
-    if (!m_totalRemainingSize || m_readItemCount &gt;= m_blobData-&gt;items().size()) {
-        didFinish();
-        return;
-    }
-
-    const BlobDataItem&amp; item = m_blobData-&gt;items().at(m_readItemCount);
-    if (item.type() == BlobDataItem::Type::Data)
-        readData(item);
-    else if (item.type() == BlobDataItem::Type::File)
-        readFile(item);
-    else
-        ASSERT_NOT_REACHED();
-}
-
-void NetworkDataTaskBlob::readData(const BlobDataItem&amp; item)
-{
-    ASSERT(item.data().data());
-
-    long long bytesToRead = item.length() - m_currentItemReadSize;
-    if (bytesToRead &gt; m_totalRemainingSize)
-        bytesToRead = m_totalRemainingSize;
-    consumeData(reinterpret_cast&lt;const char*&gt;(item.data().data()-&gt;data()) + item.offset() + m_currentItemReadSize, static_cast&lt;int&gt;(bytesToRead));
-    m_currentItemReadSize = 0;
-}
-
-void NetworkDataTaskBlob::readFile(const BlobDataItem&amp; item)
-{
-    ASSERT(m_client);
-    ASSERT(m_stream);
-
-    if (m_fileOpened) {
-        m_stream-&gt;read(m_buffer.data(), m_buffer.size());
-        return;
-    }
-
-    long long bytesToRead = m_itemLengthList[m_readItemCount] - m_currentItemReadSize;
-    if (bytesToRead &gt; m_totalRemainingSize)
-        bytesToRead = static_cast&lt;int&gt;(m_totalRemainingSize);
-    m_stream-&gt;openForRead(item.file()-&gt;path(), item.offset() + m_currentItemReadSize, bytesToRead);
-    m_fileOpened = true;
-    m_currentItemReadSize = 0;
-}
-
-void NetworkDataTaskBlob::didOpen(bool success)
-{
-    if (m_state == State::Canceling || m_state == State::Completed || (!m_client &amp;&amp; !isDownload())) {
-        clearStream();
-        return;
-    }
-
-    if (!success) {
-        didFail(Error::NotReadableError);
-        return;
-    }
-
-    Ref&lt;NetworkDataTaskBlob&gt; protectedThis(*this);
-    read();
-}
-
-void NetworkDataTaskBlob::didRead(int bytesRead)
-{
-    if (m_state == State::Canceling || m_state == State::Completed || (!m_client &amp;&amp; !isDownload())) {
-        clearStream();
-        return;
-    }
-
-    if (bytesRead &lt; 0) {
-        didFail(Error::NotReadableError);
-        return;
-    }
-
-    Ref&lt;NetworkDataTaskBlob&gt; protectedThis(*this);
-    consumeData(m_buffer.data(), bytesRead);
-}
-
-void NetworkDataTaskBlob::consumeData(const char* data, int bytesRead)
-{
-    m_totalRemainingSize -= bytesRead;
-
-    if (bytesRead) {
-        if (m_downloadFile != invalidPlatformFileHandle) {
-            if (!writeDownload(data, bytesRead))
-                return;
-        } else {
-            ASSERT(m_client);
-            m_client-&gt;didReceiveData(SharedBuffer::create(data, bytesRead));
-        }
-    }
-
-    if (m_fileOpened) {
-        // When the current item is a file item, the reading is completed only if bytesRead is 0.
-        if (!bytesRead) {
-            // Close the file.
-            m_fileOpened = false;
-            m_stream-&gt;close();
-
-            // Move to the next item.
-            m_readItemCount++;
-        }
-    } else {
-        // Otherwise, we read the current text item as a whole and move to the next item.
-        m_readItemCount++;
-    }
-
-    read();
-}
-
-void NetworkDataTaskBlob::setPendingDownloadLocation(const String&amp; filename, const SandboxExtension::Handle&amp; sandboxExtensionHandle, bool allowOverwrite)
-{
-    NetworkDataTask::setPendingDownloadLocation(filename, sandboxExtensionHandle, allowOverwrite);
-
-    ASSERT(!m_sandboxExtension);
-    m_sandboxExtension = SandboxExtension::create(sandboxExtensionHandle);
-    if (m_sandboxExtension)
-        m_sandboxExtension-&gt;consume();
-
-    if (allowOverwrite &amp;&amp; fileExists(m_pendingDownloadLocation))
-        deleteFile(m_pendingDownloadLocation);
-}
-
-String NetworkDataTaskBlob::suggestedFilename() const
-{
-    if (!m_suggestedFilename.isEmpty())
-        return m_suggestedFilename;
-
-    return ASCIILiteral(&quot;unknown&quot;);
-}
-
-void NetworkDataTaskBlob::download()
-{
-    ASSERT(isDownload());
-    ASSERT(m_pendingDownloadLocation);
-
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::download to %s&quot;, this, m_pendingDownloadLocation.utf8().data());
-
-    m_downloadFile = openFile(m_pendingDownloadLocation, OpenForWrite);
-    if (m_downloadFile == invalidPlatformFileHandle) {
-        didFailDownload(cancelledError(m_firstRequest));
-        return;
-    }
-
-    auto&amp; downloadManager = NetworkProcess::singleton().downloadManager();
-    auto download = std::make_unique&lt;Download&gt;(downloadManager, m_pendingDownloadID, *this, m_session-&gt;sessionID(), suggestedFilename());
-    auto* downloadPtr = download.get();
-    downloadManager.dataTaskBecameDownloadTask(m_pendingDownloadID, WTFMove(download));
-    downloadPtr-&gt;didCreateDestination(m_pendingDownloadLocation);
-
-    ASSERT(m_client);
-    m_client-&gt;didBecomeDownload();
-
-    m_buffer.resize(bufferSize);
-    read();
-}
-
-bool NetworkDataTaskBlob::writeDownload(const char* data, int bytesRead)
-{
-    ASSERT(isDownload());
-    int bytesWritten = writeToFile(m_downloadFile, data, bytesRead);
-    if (bytesWritten == -1) {
-        didFailDownload(cancelledError(m_firstRequest));
-        return false;
-    }
-
-    ASSERT(bytesWritten == bytesRead);
-    auto* download = NetworkProcess::singleton().downloadManager().download(m_pendingDownloadID);
-    ASSERT(download);
-    download-&gt;didReceiveData(bytesWritten);
-    return true;
-}
-
-void NetworkDataTaskBlob::cleanDownloadFiles()
-{
-    if (m_downloadFile != invalidPlatformFileHandle) {
-        closeFile(m_downloadFile);
-        m_downloadFile = invalidPlatformFileHandle;
-    }
-    deleteFile(m_pendingDownloadLocation);
-}
-
-void NetworkDataTaskBlob::didFailDownload(const ResourceError&amp; error)
-{
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didFailDownload&quot;, this);
-
-    clearStream();
-    cleanDownloadFiles();
-
-    if (m_sandboxExtension) {
-        m_sandboxExtension-&gt;revoke();
-        m_sandboxExtension = nullptr;
-    }
-
-    if (m_client)
-        m_client-&gt;didCompleteWithError(error);
-    else {
-        auto* download = NetworkProcess::singleton().downloadManager().download(m_pendingDownloadID);
-        ASSERT(download);
-        download-&gt;didFail(error, IPC::DataReference());
-    }
-}
-
-void NetworkDataTaskBlob::didFinishDownload()
-{
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didFinishDownload&quot;, this);
-
-    ASSERT(isDownload());
-    closeFile(m_downloadFile);
-    m_downloadFile = invalidPlatformFileHandle;
-
-    if (m_sandboxExtension) {
-        m_sandboxExtension-&gt;revoke();
-        m_sandboxExtension = nullptr;
-    }
-
-    clearStream();
-    auto* download = NetworkProcess::singleton().downloadManager().download(m_pendingDownloadID);
-    ASSERT(download);
-    download-&gt;didFinish();
-}
-
-void NetworkDataTaskBlob::didFail(Error errorCode)
-{
-    ASSERT(!m_sandboxExtension);
-
-    Ref&lt;NetworkDataTaskBlob&gt; protectedThis(*this);
-    if (isDownload()) {
-        didFailDownload(ResourceError(webKitBlobResourceDomain, static_cast&lt;int&gt;(errorCode), m_firstRequest.url(), String()));
-        return;
-    }
-
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didFail&quot;, this);
-
-    clearStream();
-    ASSERT(m_client);
-    m_client-&gt;didCompleteWithError(ResourceError(webKitBlobResourceDomain, static_cast&lt;int&gt;(errorCode), m_firstRequest.url(), String()));
-}
-
-void NetworkDataTaskBlob::didFinish()
-{
-    if (m_downloadFile != invalidPlatformFileHandle) {
-        didFinishDownload();
-        return;
-    }
-
-    ASSERT(!m_sandboxExtension);
-
-    LOG(NetworkSession, &quot;%p - NetworkDataTaskBlob::didFinish&quot;, this);
-
-    clearStream();
-    ASSERT(m_client);
-    m_client-&gt;didCompleteWithError({ });
-}
-
-} // namespace WebKit
-
-#endif // USE(NETWORK_SESSION)
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkDataTaskBlobh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTaskBlob.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1,121 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2016 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#pragma once
-
-#if USE(NETWORK_SESSION)
-
-#include &quot;NetworkDataTask.h&quot;
-#include &lt;WebCore/FileStreamClient.h&gt;
-#include &lt;WebCore/FileSystem.h&gt;
-
-namespace WebCore {
-class AsyncFileStream;
-class BlobData;
-class BlobDataItem;
-}
-
-namespace WebKit {
-
-class NetworkDataTaskBlob final : public NetworkDataTask, public WebCore::FileStreamClient {
-public:
-    static Ref&lt;NetworkDataTask&gt; create(NetworkSession&amp; session, NetworkDataTaskClient&amp; client, const WebCore::ResourceRequest&amp; request, WebCore::ContentSniffingPolicy shouldContentSniff)
-    {
-        return adoptRef(*new NetworkDataTaskBlob(session, client, request, shouldContentSniff));
-    }
-
-    ~NetworkDataTaskBlob();
-
-private:
-    NetworkDataTaskBlob(NetworkSession&amp;, NetworkDataTaskClient&amp;, const WebCore::ResourceRequest&amp;, WebCore::ContentSniffingPolicy);
-
-    void suspend() override;
-    void cancel() override;
-    void resume() override;
-    void invalidateAndCancel() override;
-    NetworkDataTask::State state() const override { return m_state; }
-
-    void setPendingDownloadLocation(const String&amp;, const SandboxExtension::Handle&amp;, bool /*allowOverwrite*/) override;
-    String suggestedFilename() const override;
-
-    // FileStreamClient methods.
-    void didGetSize(long long) override;
-    void didOpen(bool) override;
-    void didRead(int) override;
-
-    enum class Error {
-        NoError = 0,
-        NotFoundError = 1,
-        SecurityError = 2,
-        RangeError = 3,
-        NotReadableError = 4,
-        MethodNotAllowed = 5
-    };
-
-    void clearStream();
-    void getSizeForNext();
-    void didReceiveResponse(Error = Error::NoError);
-    void seek();
-    void consumeData(const char* data, int bytesRead);
-    void read();
-    void readData(const WebCore::BlobDataItem&amp;);
-    void readFile(const WebCore::BlobDataItem&amp;);
-    void download();
-    bool writeDownload(const char* data, int bytesRead);
-    void cleanDownloadFiles();
-    void didFailDownload(const WebCore::ResourceError&amp;);
-    void didFinishDownload();
-    void didFail(Error);
-    void didFinish();
-
-    enum { kPositionNotSpecified = -1 };
-
-    RefPtr&lt;WebCore::BlobData&gt; m_blobData;
-    std::unique_ptr&lt;WebCore::AsyncFileStream&gt; m_stream; // For asynchronous loading.
-    Vector&lt;char&gt; m_buffer;
-    Vector&lt;long long&gt; m_itemLengthList;
-    State m_state { State::Suspended };
-    long long m_rangeOffset { kPositionNotSpecified };
-    long long m_rangeEnd { kPositionNotSpecified };
-    long long m_rangeSuffixLength { kPositionNotSpecified };
-    long long m_totalSize { 0 };
-    long long m_totalRemainingSize { 0 };
-    long long m_currentItemReadSize { 0 };
-    unsigned m_sizeItemCount { 0 };
-    unsigned m_readItemCount { 0 };
-    bool m_fileOpened { false };
-    WebCore::PlatformFileHandle m_downloadFile { WebCore::invalidPlatformFileHandle };
-    RefPtr&lt;SandboxExtension&gt; m_sandboxExtension;
-};
-
-} // namespace WebKit
-
-#endif // USE(NETWORK_SESSION)
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkLoadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -67,6 +67,10 @@
</span><span class="cx">     , m_parameters(WTFMove(parameters))
</span><span class="cx">     , m_currentRequest(m_parameters.request)
</span><span class="cx"> {
</span><ins>+    if (m_parameters.request.url().protocolIsBlob()) {
+        m_handle = ResourceHandle::create(nullptr, m_parameters.request, this, m_parameters.defersLoading, m_parameters.contentSniffingPolicy == SniffContent);
+        return;
+    }
</ins><span class="cx">     m_task = NetworkDataTask::create(networkSession, *this, m_parameters.request, m_parameters.allowStoredCredentials, m_parameters.contentSniffingPolicy, m_parameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
</span><span class="cx">     if (!m_parameters.defersLoading)
</span><span class="cx">         m_task-&gt;resume();
</span><span class="lines">@@ -97,14 +101,12 @@
</span><span class="cx"> #endif
</span><span class="cx">     if (m_task)
</span><span class="cx">         m_task-&gt;clearClient();
</span><del>-#else
-#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</del><ins>+#elif USE(PROTECTION_SPACE_AUTH_CALLBACK)
</ins><span class="cx">     if (m_handle &amp;&amp; m_waitingForContinueCanAuthenticateAgainstProtectionSpace)
</span><span class="cx">         m_handle-&gt;continueCanAuthenticateAgainstProtectionSpace(false);
</span><span class="cx"> #endif
</span><span class="cx">     if (m_handle)
</span><span class="cx">         m_handle-&gt;clearClient();
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkLoad::setDefersLoading(bool defers)
</span><span class="lines">@@ -116,10 +118,9 @@
</span><span class="cx">         else
</span><span class="cx">             m_task-&gt;resume();
</span><span class="cx">     }
</span><del>-#else
</del><ins>+#endif
</ins><span class="cx">     if (m_handle)
</span><span class="cx">         m_handle-&gt;setDefersLoading(defers);
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkLoad::cancel()
</span><span class="lines">@@ -127,10 +128,9 @@
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx">     if (m_task)
</span><span class="cx">         m_task-&gt;cancel();
</span><del>-#else
</del><ins>+#endif
</ins><span class="cx">     if (m_handle)
</span><span class="cx">         m_handle-&gt;cancel();
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void NetworkLoad::continueWillSendRequest(WebCore::ResourceRequest&amp;&amp; newRequest)
</span><span class="lines">@@ -143,21 +143,27 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-    auto redirectCompletionHandler = std::exchange(m_redirectCompletionHandler, nullptr);
-    if (m_currentRequest.isNull())
-        didCompleteWithError(cancelledError(m_currentRequest));
</del><ins>+    auto redirectCompletionHandler = std::exchange(m_redirectCompletionHandler, nullptr);    
</ins><span class="cx">     ASSERT(redirectCompletionHandler);
</span><del>-    if (redirectCompletionHandler)
-        redirectCompletionHandler(m_currentRequest);
-#else
</del><ins>+#endif
+    
</ins><span class="cx">     if (m_currentRequest.isNull()) {
</span><span class="cx">         if (m_handle)
</span><span class="cx">             m_handle-&gt;cancel();
</span><span class="cx">         didFail(m_handle.get(), cancelledError(m_currentRequest));
</span><ins>+#if USE(NETWORK_SESSION)
+        if (redirectCompletionHandler)
+            redirectCompletionHandler({ });
+#endif
+        return;
</ins><span class="cx">     } else if (m_handle) {
</span><span class="cx">         auto currentRequestCopy = m_currentRequest;
</span><span class="cx">         m_handle-&gt;continueWillSendRequest(WTFMove(currentRequestCopy));
</span><span class="cx">     }
</span><ins>+
+#if USE(NETWORK_SESSION)
+    if (redirectCompletionHandler)
+        redirectCompletionHandler(m_currentRequest);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -165,13 +171,12 @@
</span><span class="cx"> {
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx">     if (m_responseCompletionHandler) {
</span><del>-        auto responseCompletionHandler = std::exchange(m_responseCompletionHandler, nullptr);
-        responseCompletionHandler(PolicyUse);
</del><ins>+        m_responseCompletionHandler(PolicyUse);
+        m_responseCompletionHandler = nullptr;
</ins><span class="cx">     }
</span><del>-#else
</del><ins>+#endif
</ins><span class="cx">     if (m_handle)
</span><span class="cx">         m_handle-&gt;continueDidReceiveResponse();
</span><del>-#endif
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> NetworkLoadClient::ShouldContinueDidReceiveResponse NetworkLoad::sharedDidReceiveResponse(ResourceResponse&amp;&amp; response)
</span><span class="lines">@@ -280,23 +285,6 @@
</span><span class="cx">         NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge(m_parameters.webPageID, m_parameters.webFrameID, *m_challenge, WTFMove(completionHandler));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
-void NetworkLoad::continueCanAuthenticateAgainstProtectionSpace(bool result)
-{
-    ASSERT(m_challengeCompletionHandler);
-    auto completionHandler = std::exchange(m_challengeCompletionHandler, nullptr);
-    if (!result) {
-        if (m_task &amp;&amp; m_task-&gt;allowsSpecificHTTPSCertificateForHost(*m_challenge))
-            completionHandler(AuthenticationChallengeDisposition::UseCredential, serverTrustCredential(*m_challenge));
-        else
-            completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { });
-        return;
-    }
-
-    completeAuthenticationChallenge(WTFMove(completionHandler));
-}
-#endif
-
</del><span class="cx"> void NetworkLoad::didReceiveResponseNetworkSession(ResourceResponse&amp;&amp; response, ResponseCompletionHandler&amp;&amp; completionHandler)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="lines">@@ -374,9 +362,9 @@
</span><span class="cx"> {
</span><span class="cx">     m_client.didFailLoading(cannotShowURLError(m_currentRequest));
</span><span class="cx"> }
</span><ins>+    
+#endif
</ins><span class="cx"> 
</span><del>-#else
-
</del><span class="cx"> void NetworkLoad::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&amp;&amp; receivedResponse)
</span><span class="cx"> {
</span><span class="cx">     ASSERT_UNUSED(handle, handle == m_handle);
</span><span class="lines">@@ -430,13 +418,32 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if !USE(NETWORK_SESSION)
</ins><span class="cx">     m_waitingForContinueCanAuthenticateAgainstProtectionSpace = true;
</span><ins>+#endif
</ins><span class="cx">     m_client.canAuthenticateAgainstProtectionSpaceAsync(protectionSpace);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><ins>+#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</ins><span class="cx"> void NetworkLoad::continueCanAuthenticateAgainstProtectionSpace(bool result)
</span><span class="cx"> {
</span><ins>+#if USE(NETWORK_SESSION)
+    ASSERT_WITH_MESSAGE(!m_handle, &quot;Blobs should never give authentication challenges&quot;);
+    ASSERT(m_challengeCompletionHandler);
+    auto completionHandler = std::exchange(m_challengeCompletionHandler, nullptr);
+    if (!result) {
+        if (m_task &amp;&amp; m_task-&gt;allowsSpecificHTTPSCertificateForHost(*m_challenge))
+            completionHandler(AuthenticationChallengeDisposition::UseCredential, serverTrustCredential(*m_challenge));
+        else
+            completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { });
+        return;
+    }
+
+    completeAuthenticationChallenge(WTFMove(completionHandler));
+#else
</ins><span class="cx">     m_waitingForContinueCanAuthenticateAgainstProtectionSpace = false;
</span><ins>+#endif
</ins><span class="cx">     if (m_handle)
</span><span class="cx">         m_handle-&gt;continueCanAuthenticateAgainstProtectionSpace(result);
</span><span class="cx"> }
</span><span class="lines">@@ -508,6 +515,5 @@
</span><span class="cx">     m_handle-&gt;cancel();
</span><span class="cx">     didFail(m_handle.get(), cancelledError(m_currentRequest));
</span><span class="cx"> }
</span><del>-#endif // USE(NETWORK_SESSION)
</del><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkLoadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -40,11 +40,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><del>-class NetworkLoad final :
</del><ins>+class NetworkLoad final : private WebCore::ResourceHandleClient
</ins><span class="cx"> #if USE(NETWORK_SESSION)
</span><del>-    private NetworkDataTaskClient
-#else
-    private WebCore::ResourceHandleClient
</del><ins>+    , private NetworkDataTaskClient
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="lines">@@ -71,8 +69,7 @@
</span><span class="cx">     void setSuggestedFilename(const String&amp;);
</span><span class="cx">     void setPendingDownload(PendingDownload&amp;);
</span><span class="cx">     DownloadID pendingDownloadID() { return m_task-&gt;pendingDownloadID(); }
</span><del>-#else
-    WebCore::ResourceHandle* handle() const { return m_handle.get(); }
</del><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</span><span class="cx">     void canAuthenticateAgainstProtectionSpaceAsync(WebCore::ResourceHandle*, const WebCore::ProtectionSpace&amp;) override;
</span><span class="lines">@@ -88,17 +85,17 @@
</span><span class="cx">     void willCacheResponseAsync(WebCore::ResourceHandle*, NSCachedURLResponse *) override;
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><del>-#endif // USE(NETWORK_SESSION)
</del><span class="cx"> 
</span><span class="cx"> #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
</span><span class="cx">     void continueCanAuthenticateAgainstProtectionSpace(bool);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    WebCore::ResourceHandle* handle() const { return m_handle.get(); }
+
</ins><span class="cx"> private:
</span><span class="cx">     NetworkLoadClient::ShouldContinueDidReceiveResponse sharedDidReceiveResponse(WebCore::ResourceResponse&amp;&amp;);
</span><span class="cx">     void sharedWillSendRedirectedRequest(WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;);
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
</del><span class="cx">     // ResourceHandleClient
</span><span class="cx">     void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp; redirectResponse) final;
</span><span class="cx">     void didSendData(WebCore::ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) final;
</span><span class="lines">@@ -114,7 +111,8 @@
</span><span class="cx">     void receivedCancellation(WebCore::ResourceHandle*, const WebCore::AuthenticationChallenge&amp;) final;
</span><span class="cx">     bool usesAsyncCallbacks() final { return true; }
</span><span class="cx">     bool loadingSynchronousXHR() final { return m_client.isSynchronous(); }
</span><del>-#else
</del><ins>+
+#if USE(NETWORK_SESSION)
</ins><span class="cx">     // NetworkDataTaskClient
</span><span class="cx">     void willPerformHTTPRedirection(WebCore::ResourceResponse&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, RedirectCompletionHandler&amp;&amp;) final;
</span><span class="cx">     void didReceiveChallenge(const WebCore::AuthenticationChallenge&amp;, ChallengeCompletionHandler&amp;&amp;) final;
</span><span class="lines">@@ -148,8 +146,8 @@
</span><span class="cx"> #else
</span><span class="cx">     bool m_waitingForContinueCanAuthenticateAgainstProtectionSpace { false };
</span><span class="cx">     RefPtr&lt;RemoteNetworkingContext&gt; m_networkingContext;
</span><ins>+#endif
</ins><span class="cx">     RefPtr&lt;WebCore::ResourceHandle&gt; m_handle;
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     WebCore::ResourceRequest m_currentRequest; // Updated on redirects.
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkSessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkSession.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkSession.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkSession.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx"> 
</span><del>-#include &quot;NetworkDataTask.h&quot;
</del><span class="cx"> #include &lt;WebCore/NetworkStorageSession.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -82,12 +81,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void NetworkSession::invalidateAndCancel()
-{
-    for (auto* task : m_dataTaskSet)
-        task-&gt;invalidateAndCancel();
-}
-
</del><span class="cx"> } // namespace WebKit
</span><span class="cx"> 
</span><span class="cx"> #endif // USE(NETWORK_SESSION)
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkSessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkSession.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkSession.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkSession.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #if USE(NETWORK_SESSION)
</span><span class="cx"> 
</span><span class="cx"> #include &lt;WebCore/SessionID.h&gt;
</span><del>-#include &lt;wtf/HashSet.h&gt;
</del><span class="cx"> #include &lt;wtf/Ref.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -39,7 +38,6 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class CustomProtocolManager;
</span><del>-class NetworkDataTask;
</del><span class="cx"> 
</span><span class="cx"> class NetworkSession : public RefCounted&lt;NetworkSession&gt; {
</span><span class="cx"> public:
</span><span class="lines">@@ -47,21 +45,16 @@
</span><span class="cx">     static NetworkSession&amp; defaultSession();
</span><span class="cx">     virtual ~NetworkSession();
</span><span class="cx"> 
</span><del>-    virtual void invalidateAndCancel();
</del><ins>+    virtual void invalidateAndCancel() = 0;
</ins><span class="cx">     virtual void clearCredentials() { };
</span><span class="cx"> 
</span><span class="cx">     WebCore::SessionID sessionID() const { return m_sessionID; }
</span><span class="cx">     WebCore::NetworkStorageSession&amp; networkStorageSession() const;
</span><span class="cx"> 
</span><del>-    void registerNetworkDataTask(NetworkDataTask&amp; task) { m_dataTaskSet.add(&amp;task); }
-    void unregisterNetworkDataTask(NetworkDataTask&amp; task) { m_dataTaskSet.remove(&amp;task); }
-
</del><span class="cx"> protected:
</span><span class="cx">     NetworkSession(WebCore::SessionID);
</span><span class="cx"> 
</span><span class="cx">     WebCore::SessionID m_sessionID;
</span><del>-
-    HashSet&lt;NetworkDataTask*&gt; m_dataTaskSet;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscocoaNetworkDataTaskCocoah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -61,7 +61,6 @@
</span><span class="cx">     void suspend() override;
</span><span class="cx">     void cancel() override;
</span><span class="cx">     void resume() override;
</span><del>-    void invalidateAndCancel() override { }
</del><span class="cx">     NetworkDataTask::State state() const override;
</span><span class="cx"> 
</span><span class="cx">     void setPendingDownloadLocation(const String&amp;, const SandboxExtension::Handle&amp;, bool /*allowOverwrite*/) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscocoaNetworkSessionCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -466,8 +466,6 @@
</span><span class="cx"> 
</span><span class="cx"> void NetworkSessionCocoa::invalidateAndCancel()
</span><span class="cx"> {
</span><del>-    NetworkSession::invalidateAndCancel();
-
</del><span class="cx">     [m_sessionWithCredentialStorage invalidateAndCancel];
</span><span class="cx">     [m_sessionWithoutCredentialStorage invalidateAndCancel];
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessmacNetworkLoadMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/mac/NetworkLoadMac.mm (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkLoadMac.mm        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkLoadMac.mm        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -26,8 +26,6 @@
</span><span class="cx"> #import &quot;config.h&quot;
</span><span class="cx"> #import &quot;NetworkLoad.h&quot;
</span><span class="cx"> 
</span><del>-#if !USE(NETWORK_SESSION)
-
</del><span class="cx"> #import &lt;WebCore/CFNetworkSPI.h&gt;
</span><span class="cx"> #import &lt;WebCore/ResourceHandle.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -56,5 +54,3 @@
</span><span class="cx"> #endif // !USE(CFURLCONNECTION)
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span><del>-
-#endif // !USE(NETWORK_SESSION)
</del></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesssoupNetworkDataTaskSoupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     , m_shouldContentSniff(shouldContentSniff)
</span><span class="cx">     , m_timeoutSource(RunLoop::main(), this, &amp;NetworkDataTaskSoup::timeoutFired)
</span><span class="cx"> {
</span><del>-    m_session-&gt;registerNetworkDataTask(*this);
</del><ins>+    static_cast&lt;NetworkSessionSoup&amp;&gt;(m_session.get()).registerNetworkDataTask(*this);
</ins><span class="cx">     if (m_scheduledFailureType != NoFailure)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> NetworkDataTaskSoup::~NetworkDataTaskSoup()
</span><span class="cx"> {
</span><span class="cx">     clearRequest();
</span><del>-    m_session-&gt;unregisterNetworkDataTask(*this);
</del><ins>+    static_cast&lt;NetworkSessionSoup&amp;&gt;(m_session.get()).unregisterNetworkDataTask(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String NetworkDataTaskSoup::suggestedFilename() const
</span><span class="lines">@@ -863,7 +863,7 @@
</span><span class="cx">     m_downloadOutputStream = adoptGRef(G_OUTPUT_STREAM(outputStream.leakRef()));
</span><span class="cx"> 
</span><span class="cx">     auto&amp; downloadManager = NetworkProcess::singleton().downloadManager();
</span><del>-    auto download = std::make_unique&lt;Download&gt;(downloadManager, m_pendingDownloadID, *this, m_session-&gt;sessionID(), suggestedFilename());
</del><ins>+    auto download = std::make_unique&lt;Download&gt;(downloadManager, m_pendingDownloadID, this, m_session-&gt;sessionID(), suggestedFilename());
</ins><span class="cx">     auto* downloadPtr = download.get();
</span><span class="cx">     downloadManager.dataTaskBecameDownloadTask(m_pendingDownloadID, WTFMove(download));
</span><span class="cx">     downloadPtr-&gt;didCreateDestination(m_pendingDownloadLocation);
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesssoupNetworkDataTaskSouph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/soup/NetworkDataTaskSoup.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -42,6 +42,8 @@
</span><span class="cx"> 
</span><span class="cx">     ~NetworkDataTaskSoup();
</span><span class="cx"> 
</span><ins>+    void invalidateAndCancel();
+
</ins><span class="cx"> private:
</span><span class="cx">     NetworkDataTaskSoup(NetworkSession&amp;, NetworkDataTaskClient&amp;, const WebCore::ResourceRequest&amp;, WebCore::StoredCredentials, WebCore::ContentSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect);
</span><span class="cx"> 
</span><span class="lines">@@ -48,7 +50,6 @@
</span><span class="cx">     void suspend() override;
</span><span class="cx">     void cancel() override;
</span><span class="cx">     void resume() override;
</span><del>-    void invalidateAndCancel() override;
</del><span class="cx">     NetworkDataTask::State state() const override;
</span><span class="cx"> 
</span><span class="cx">     void setPendingDownloadLocation(const String&amp;, const SandboxExtension::Handle&amp;, bool /*allowOverwrite*/) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesssoupNetworkSessionSoupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.cpp (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.cpp        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.cpp        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -26,8 +26,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;NetworkSessionSoup.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;NetworkDataTaskSoup.h&quot;
</ins><span class="cx"> #include &lt;WebCore/NetworkStorageSession.h&gt;
</span><span class="cx"> #include &lt;WebCore/SoupNetworkSession.h&gt;
</span><ins>+#include &lt;wtf/MainThread.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><span class="lines">@@ -47,4 +49,10 @@
</span><span class="cx">     return networkStorageSession().soupNetworkSession().soupSession();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void NetworkSessionSoup::invalidateAndCancel()
+{
+    for (auto* task : m_dataTaskSet)
+        task-&gt;invalidateAndCancel();
+}
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesssoupNetworkSessionSouph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.h (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.h        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/NetworkProcess/soup/NetworkSessionSoup.h        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -26,11 +26,14 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;NetworkSession.h&quot;
</span><ins>+#include &lt;wtf/HashSet.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> typedef struct _SoupSession SoupSession;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+class NetworkDataTaskSoup;
+
</ins><span class="cx"> class NetworkSessionSoup final : public NetworkSession {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;NetworkSession&gt; create(WebCore::SessionID sessionID)
</span><span class="lines">@@ -41,8 +44,15 @@
</span><span class="cx"> 
</span><span class="cx">     SoupSession* soupSession() const;
</span><span class="cx"> 
</span><ins>+    void registerNetworkDataTask(NetworkDataTaskSoup&amp; task) { m_dataTaskSet.add(&amp;task); }
+    void unregisterNetworkDataTask(NetworkDataTaskSoup&amp; task) { m_dataTaskSet.remove(&amp;task); }
+
</ins><span class="cx"> private:
</span><span class="cx">     NetworkSessionSoup(WebCore::SessionID);
</span><ins>+
+    void invalidateAndCancel() override;
+
+    HashSet&lt;NetworkDataTaskSoup*&gt; m_dataTaskSet;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformEfl.cmake (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformEfl.cmake        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/PlatformEfl.cmake        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -6,6 +6,8 @@
</span><span class="cx"> 
</span><span class="cx">     NetworkProcess/Downloads/efl/DownloadSoupErrorsEfl.cpp
</span><span class="cx"> 
</span><ins>+    NetworkProcess/Downloads/soup/DownloadSoup.cpp
+
</ins><span class="cx">     NetworkProcess/cache/NetworkCacheCodersSoup.cpp
</span><span class="cx">     NetworkProcess/cache/NetworkCacheDataSoup.cpp
</span><span class="cx">     NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformGTK.cmake (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformGTK.cmake        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/PlatformGTK.cmake        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -33,6 +33,8 @@
</span><span class="cx"> 
</span><span class="cx">     NetworkProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp
</span><span class="cx"> 
</span><ins>+    NetworkProcess/Downloads/soup/DownloadSoup.cpp
+
</ins><span class="cx">     NetworkProcess/cache/NetworkCacheCodersSoup.cpp
</span><span class="cx">     NetworkProcess/cache/NetworkCacheDataSoup.cpp
</span><span class="cx">     NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (208343 => 208344)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-11-03 20:53:27 UTC (rev 208343)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-11-03 21:06:31 UTC (rev 208344)
</span><span class="lines">@@ -1043,8 +1043,6 @@
</span><span class="cx">                 532159541DBAE71D0054AA3C /* NetworkDataTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 532159511DBAE6FC0054AA3C /* NetworkDataTask.cpp */; };
</span><span class="cx">                 532159551DBAE7290054AA3C /* NetworkSessionCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 532159501DBAE6D70054AA3C /* NetworkSessionCocoa.h */; };
</span><span class="cx">                 532159561DBAE72D0054AA3C /* NetworkDataTaskCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 5321594F1DBAE6D70054AA3C /* NetworkDataTaskCocoa.h */; };
</span><del>-                53BA47D01DC2EF5E004DF4AD /* NetworkDataTaskBlob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 539EB5461DC2EE40009D48CF /* NetworkDataTaskBlob.cpp */; };
-                53BA47D11DC2EF5E004DF4AD /* NetworkDataTaskBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 539EB5471DC2EE40009D48CF /* NetworkDataTaskBlob.h */; };
</del><span class="cx">                 5C052F261C6D3BD30076E919 /* AuthenticationManagerCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C052F241C6D3AB60076E919 /* AuthenticationManagerCocoa.mm */; };
</span><span class="cx">                 5C1426EC1C23F80900D41183 /* NetworkProcessCreationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C1426E21C23F80500D41183 /* NetworkProcessCreationParameters.cpp */; };
</span><span class="cx">                 5C1426ED1C23F80900D41183 /* NetworkProcessCreationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C1426E31C23F80500D41183 /* NetworkProcessCreationParameters.h */; };
</span><span class="lines">@@ -3133,8 +3131,6 @@
</span><span class="cx">                 532159501DBAE6D70054AA3C /* NetworkSessionCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSessionCocoa.h; path = NetworkProcess/cocoa/NetworkSessionCocoa.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 532159511DBAE6FC0054AA3C /* NetworkDataTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkDataTask.cpp; path = NetworkProcess/NetworkDataTask.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 532159521DBAE6FC0054AA3C /* NetworkSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkSession.cpp; path = NetworkProcess/NetworkSession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                539EB5461DC2EE40009D48CF /* NetworkDataTaskBlob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkDataTaskBlob.cpp; path = NetworkProcess/NetworkDataTaskBlob.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                539EB5471DC2EE40009D48CF /* NetworkDataTaskBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkDataTaskBlob.h; path = NetworkProcess/NetworkDataTaskBlob.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 579D18B71CCFE34B00B1974C /* PhotosSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhotosSPI.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5C052F241C6D3AB60076E919 /* AuthenticationManagerCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AuthenticationManagerCocoa.mm; path = Authentication/cocoa/AuthenticationManagerCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5C1426E21C23F80500D41183 /* NetworkProcessCreationParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessCreationParameters.cpp; path = NetworkProcess/NetworkProcessCreationParameters.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5469,8 +5465,6 @@
</span><span class="cx">                                 5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */,
</span><span class="cx">                                 839901FF1BE9A01B000F3653 /* NetworkLoad.cpp */,
</span><span class="cx">                                 839901FE1BE9A01B000F3653 /* NetworkLoad.h */,
</span><del>-                                539EB5461DC2EE40009D48CF /* NetworkDataTaskBlob.cpp */,
-                                539EB5471DC2EE40009D48CF /* NetworkDataTaskBlob.h */,
</del><span class="cx">                                 83D454D61BE9D3C4006C93BD /* NetworkLoadClient.h */,
</span><span class="cx">                                 839149631BEA838500D2D953 /* NetworkLoadParameters.h */,
</span><span class="cx">                                 510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */,
</span><span class="lines">@@ -7833,7 +7827,6 @@
</span><span class="cx">                                 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */,
</span><span class="cx">                                 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */,
</span><span class="cx">                                 1A043B5E124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h in Headers */,
</span><del>-                                53BA47D11DC2EF5E004DF4AD /* NetworkDataTaskBlob.h in Headers */,
</del><span class="cx">                                 1A043DC1124FF87500FFBFB5 /* PluginProxy.h in Headers */,
</span><span class="cx">                                 1A8EFA711252B84100F7067F /* PluginProxyMessages.h in Headers */,
</span><span class="cx">                                 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */,
</span><span class="lines">@@ -9327,7 +9320,6 @@
</span><span class="cx">                                 1A2D92211281DC1B001EB962 /* PluginProxyMac.mm in Sources */,
</span><span class="cx">                                 1A8EFA701252B84100F7067F /* PluginProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 7CD622771739D863005BD7FF /* PluginSandboxProfile.mm in Sources */,
</span><del>-                                53BA47D01DC2EF5E004DF4AD /* NetworkDataTaskBlob.cpp in Sources */,
</del><span class="cx">                                 BC82844D16B5081C00A278FE /* PluginServiceEntryPoint.mm in Sources */,
</span><span class="cx">                                 1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */,
</span><span class="cx">                                 E18C92F412DB9E7100CF2AEB /* PrintInfo.cpp in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>