[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
andersca at apple.com
andersca at apple.com
Wed Dec 22 15:56:25 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 6676688b01cafc4af75ab9b265666445eb45acf9
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Nov 17 00:19:25 2010 +0000
Handle converting a ResourceHandle to a download
https://bugs.webkit.org/show_bug.cgi?id=49631
Reviewed by Sam Weinig.
* WebProcess/Downloads/Download.h:
Add startWithHandle.
* WebProcess/Downloads/DownloadManager.h:
* WebProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::convertHandleToDownload):
Create a new Download object and call startWithHandle on it.
* WebProcess/Downloads/cf/DownloadCFNet.cpp:
(WebKit::Download::startWithHandle):
Add stub.
* WebProcess/Downloads/mac/DownloadMac.mm:
(WebKit::Download::startWithHandle):
Create an NSURLDownload object from passed in ResourceHandle.
* WebProcess/Downloads/qt/DownloadQt.cpp:
(WebKit::Download::startWithHandle):
Add stub.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::download):
Call WebFrame::convertHandleToDownload.
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::convertHandleToDownload):
Call DownloadManager::convertHandleToDownload.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72148 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 26b422d..e6d1f06 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,40 @@
2010-11-16 Anders Carlsson <andersca at apple.com>
+ Reviewed by Sam Weinig.
+
+ Handle converting a ResourceHandle to a download
+ https://bugs.webkit.org/show_bug.cgi?id=49631
+
+ * WebProcess/Downloads/Download.h:
+ Add startWithHandle.
+
+ * WebProcess/Downloads/DownloadManager.h:
+ * WebProcess/Downloads/DownloadManager.cpp:
+ (WebKit::DownloadManager::convertHandleToDownload):
+ Create a new Download object and call startWithHandle on it.
+
+ * WebProcess/Downloads/cf/DownloadCFNet.cpp:
+ (WebKit::Download::startWithHandle):
+ Add stub.
+
+ * WebProcess/Downloads/mac/DownloadMac.mm:
+ (WebKit::Download::startWithHandle):
+ Create an NSURLDownload object from passed in ResourceHandle.
+
+ * WebProcess/Downloads/qt/DownloadQt.cpp:
+ (WebKit::Download::startWithHandle):
+ Add stub.
+
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::download):
+ Call WebFrame::convertHandleToDownload.
+
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::convertHandleToDownload):
+ Call DownloadManager::convertHandleToDownload.
+
+2010-11-16 Anders Carlsson <andersca at apple.com>
+
Reviewed by John Sullivan.
Set the original URL for downloads
diff --git a/WebKit2/WebProcess/Downloads/Download.h b/WebKit2/WebProcess/Downloads/Download.h
index 45e272c..3474b8f 100644
--- a/WebKit2/WebProcess/Downloads/Download.h
+++ b/WebKit2/WebProcess/Downloads/Download.h
@@ -43,6 +43,7 @@ class WKDownloadAsDelegate;
#endif
namespace WebCore {
+ class ResourceHandle;
class ResourceResponse;
}
@@ -62,6 +63,7 @@ public:
uint64_t destinationID() const { return m_downloadID; }
void start(WebPage* initiatingWebPage);
+ void startWithHandle(WebPage* initiatingPage, WebCore::ResourceHandle*, const WebCore::ResourceRequest& initialRequest, const WebCore::ResourceResponse&);
void didStart();
void didReceiveResponse(const WebCore::ResourceResponse&);
diff --git a/WebKit2/WebProcess/Downloads/DownloadManager.cpp b/WebKit2/WebProcess/Downloads/DownloadManager.cpp
index cfe90e5..f0488fb 100644
--- a/WebKit2/WebProcess/Downloads/DownloadManager.cpp
+++ b/WebKit2/WebProcess/Downloads/DownloadManager.cpp
@@ -52,4 +52,13 @@ void DownloadManager::startDownload(uint64_t downloadID, WebPage* initiatingPage
m_downloads.set(downloadID, download.leakPtr());
}
+void DownloadManager::convertHandleToDownload(uint64_t downloadID, WebPage* initiatingPage, ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest& initialRequest, const ResourceResponse& response)
+{
+ OwnPtr<Download> download = Download::create(downloadID, request);
+
+ download->startWithHandle(initiatingPage, handle, initialRequest, response);
+ ASSERT(!m_downloads.contains(downloadID));
+ m_downloads.set(downloadID, download.leakPtr());
+}
+
} // namespace WebKit
diff --git a/WebKit2/WebProcess/Downloads/DownloadManager.h b/WebKit2/WebProcess/Downloads/DownloadManager.h
index 1a48944..19bbe8c 100644
--- a/WebKit2/WebProcess/Downloads/DownloadManager.h
+++ b/WebKit2/WebProcess/Downloads/DownloadManager.h
@@ -30,7 +30,9 @@
#include <wtf/Noncopyable.h>
namespace WebCore {
+ class ResourceHandle;
class ResourceRequest;
+ class ResourceResponse;
}
namespace WebKit {
@@ -45,6 +47,7 @@ public:
static DownloadManager& shared();
void startDownload(uint64_t downloadID, WebPage* initiatingPage, const WebCore::ResourceRequest&);
+ void convertHandleToDownload(uint64_t downloadID, WebPage* initiatingPage, WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest& initialRequest, const WebCore::ResourceResponse&);
private:
DownloadManager();
diff --git a/WebKit2/WebProcess/Downloads/cf/DownloadCFNet.cpp b/WebKit2/WebProcess/Downloads/cf/DownloadCFNet.cpp
index 505f069..4f56e35 100644
--- a/WebKit2/WebProcess/Downloads/cf/DownloadCFNet.cpp
+++ b/WebKit2/WebProcess/Downloads/cf/DownloadCFNet.cpp
@@ -36,6 +36,11 @@ void Download::start(WebPage* initiatingWebPage)
notImplemented();
}
+void Download::startWithHandle(WebPage* initiatingPage, ResourceHandle*, const ResourceRequest& initialRequest, const ResourceResponse&)
+{
+ notImplemented();
+}
+
void Download::platformInvalidate()
{
notImplemented();
diff --git a/WebKit2/WebProcess/Downloads/mac/DownloadMac.mm b/WebKit2/WebProcess/Downloads/mac/DownloadMac.mm
index 0d106f0..e943848 100644
--- a/WebKit2/WebProcess/Downloads/mac/DownloadMac.mm
+++ b/WebKit2/WebProcess/Downloads/mac/DownloadMac.mm
@@ -28,11 +28,17 @@
#include <WebCore/BackForwardController.h>
#include <WebCore/HistoryItem.h>
#include <WebCore/Page.h>
+#include <WebCore/ResourceHandle.h>
#include <WebCore/ResourceResponse.h>
#include "NotImplemented.h"
#include "WebPage.h"
@interface NSURLDownload (WebNSURLDownloadDetails)
++(id)_downloadWithLoadingConnection:(NSURLConnection *)connection
+ request:(NSURLRequest *)request
+ response:(NSURLResponse *)r
+ delegate:(id)delegate
+ proxy:(id)proxy;
- (void)_setOriginatingURL:(NSURL *)originatingURL;
@end
@@ -118,6 +124,27 @@ void Download::start(WebPage* initiatingPage)
setOriginalURLForDownload(initiatingPage, m_nsURLDownload.get(), m_request);
}
+void Download::startWithHandle(WebPage* initiatingPage, ResourceHandle* handle, const ResourceRequest& initialRequest, const ResourceResponse& response)
+{
+ ASSERT(!m_nsURLDownload);
+ ASSERT(!m_delegate);
+
+ id proxy = handle->releaseProxy();
+ ASSERT(proxy);
+
+ m_delegate.adoptNS([[WKDownloadAsDelegate alloc] initWithDownload:this]);
+ m_nsURLDownload = [NSURLDownload _downloadWithLoadingConnection:handle->connection()
+ request:m_request.nsURLRequest()
+ response:response.nsURLResponse()
+ delegate:m_delegate.get()
+ proxy:proxy];
+
+ // FIXME: Allow this to be changed by the client.
+ [m_nsURLDownload.get() setDeletesFileUponFailure:NO];
+
+ setOriginalURLForDownload(initiatingPage, m_nsURLDownload.get(), initialRequest);
+}
+
void Download::platformInvalidate()
{
ASSERT(m_nsURLDownload);
diff --git a/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp b/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp
index 505f069..4f56e35 100644
--- a/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp
+++ b/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp
@@ -36,6 +36,11 @@ void Download::start(WebPage* initiatingWebPage)
notImplemented();
}
+void Download::startWithHandle(WebPage* initiatingPage, ResourceHandle*, const ResourceRequest& initialRequest, const ResourceResponse&)
+{
+ notImplemented();
+}
+
void Download::platformInvalidate()
{
notImplemented();
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
index ec6ed98..158bada 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
@@ -978,9 +978,9 @@ bool WebFrameLoaderClient::canCachePage() const
return false;
}
-void WebFrameLoaderClient::download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&)
+void WebFrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest& initialRequest, const ResourceResponse& response)
{
- notImplemented();
+ m_frame->convertHandleToDownload(handle, request, initialRequest, response);
}
PassRefPtr<Frame> WebFrameLoaderClient::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
diff --git a/WebKit2/WebProcess/WebPage/WebFrame.cpp b/WebKit2/WebProcess/WebPage/WebFrame.cpp
index a71ce32..bea53d1 100644
--- a/WebKit2/WebProcess/WebPage/WebFrame.cpp
+++ b/WebKit2/WebProcess/WebPage/WebFrame.cpp
@@ -217,6 +217,14 @@ void WebFrame::startDownload(const WebCore::ResourceRequest& request)
m_policyDownloadID = 0;
}
+void WebFrame::convertHandleToDownload(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest& initialRequest, const ResourceResponse& response)
+{
+ ASSERT(m_policyDownloadID);
+
+ DownloadManager::shared().convertHandleToDownload(m_policyDownloadID, page(), handle, request, initialRequest, response);
+ m_policyDownloadID = 0;
+}
+
String WebFrame::source() const
{
if (!m_coreFrame)
diff --git a/WebKit2/WebProcess/WebPage/WebFrame.h b/WebKit2/WebProcess/WebPage/WebFrame.h
index 8986e4a..dc16733 100644
--- a/WebKit2/WebProcess/WebPage/WebFrame.h
+++ b/WebKit2/WebProcess/WebPage/WebFrame.h
@@ -70,6 +70,7 @@ public:
void didReceivePolicyDecision(uint64_t listenerID, WebCore::PolicyAction, uint64_t downloadID);
void startDownload(const WebCore::ResourceRequest&);
+ void convertHandleToDownload(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest& initialRequest, const WebCore::ResourceResponse&);
String source() const;
String contentsAsString() const;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list