Modified: trunk/Source/WebKit2/ChangeLog (101194 => 101195)
--- trunk/Source/WebKit2/ChangeLog 2011-11-26 15:51:44 UTC (rev 101194)
+++ trunk/Source/WebKit2/ChangeLog 2011-11-26 16:09:39 UTC (rev 101195)
@@ -1,3 +1,28 @@
+2011-11-26 Caio Marcelo de Oliveira Filho <[email protected]>
+
+ [Qt] [WK2] QtDownloadManager doesn't need to be RefCounted
+ https://bugs.webkit.org/show_bug.cgi?id=73151
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ QtDownloadManager is owned by QtWebContext, and doesn't need to be a RefCounted
+ class. This commit also makes the callback handlers private -- following the similar
+ approach we take in other clients of the C API.
+
+ * UIProcess/qt/QtDownloadManager.cpp:
+ (WebKit::QtDownloadManager::QtDownloadManager):
+ (WebKit::QtDownloadManager::addDownload):
+ (WebKit::toQtDownloadManager):
+ (WebKit::QtDownloadManager::didReceiveResponse):
+ (WebKit::QtDownloadManager::didCreateDestination):
+ (WebKit::QtDownloadManager::didFinishDownload): remove unused failingUrl local variable.
+ (WebKit::QtDownloadManager::didFailDownload):
+ (WebKit::QtDownloadManager::didReceiveDataForDownload):
+ * UIProcess/qt/QtDownloadManager.h:
+ * UIProcess/qt/QtWebContext.cpp:
+ (WebKit::QtWebContext::initialize):
+ * UIProcess/qt/QtWebContext.h:
+
2011-11-26 Sheriff Bot <[email protected]>
Unreviewed, rolling out r101193.
Modified: trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp (101194 => 101195)
--- trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp 2011-11-26 15:51:44 UTC (rev 101194)
+++ trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp 2011-11-26 16:09:39 UTC (rev 101195)
@@ -31,62 +31,27 @@
namespace WebKit {
-static inline QtDownloadManager* toQtDownloadManager(const void* clientInfo)
+QtDownloadManager::QtDownloadManager(WebContext* context)
{
- ASSERT(clientInfo);
- return reinterpret_cast<QtDownloadManager*>(const_cast<void*>(clientInfo));
+ WKContextDownloadClient downloadClient;
+ memset(&downloadClient, 0, sizeof(WKContextDownloadClient));
+ downloadClient.version = kWKContextDownloadClientCurrentVersion;
+ downloadClient.clientInfo = this;
+ downloadClient.didReceiveResponse = didReceiveResponse;
+ downloadClient.didReceiveData = didReceiveDataForDownload;
+ downloadClient.didCreateDestination = didCreateDestination;
+ downloadClient.didFinish = didFinishDownload;
+ downloadClient.didFail = didFailDownload;
+ WKContextSetDownloadClient(toAPI(context), &downloadClient);
}
-static void qt_wk_didReceiveResponse(WKContextRef context, WKDownloadRef download, WKURLResponseRef response, const void *clientInfo)
-{
- toQtDownloadManager(clientInfo)->downloadReceivedResponse(toImpl(download), toImpl(response)->resourceResponse());
-}
-
-static void qt_wk_didCreateDestination(WKContextRef context, WKDownloadRef download, WKStringRef path, const void *clientInfo)
-{
- toQtDownloadManager(clientInfo)->downloadCreatedDestination(toImpl(download), WKStringCopyQString(path));
-}
-
-static void qt_wk_didFinishDownload(WKContextRef context, WKDownloadRef download, const void *clientInfo)
-{
- toQtDownloadManager(clientInfo)->downloadFinished(toImpl(download));
-}
-
-static void qt_wk_didFailDownload(WKContextRef context, WKDownloadRef download, WKErrorRef error, const void *clientInfo)
-{
- QUrl failingUrl = WKURLCopyQUrl(adoptWK(WKErrorCopyFailingURL(error)).get());
-
- toQtDownloadManager(clientInfo)->downloadFailed(toImpl(download), QtWebError(error));
-}
-
-static void qt_wk_didReceiveDataForDownload(WKContextRef context, WKDownloadRef download, uint64_t length, const void *clientInfo)
-{
- toQtDownloadManager(clientInfo)->downloadDataReceived(toImpl(download), length);
-}
-
-QtDownloadManager::QtDownloadManager()
-{
-}
-
QtDownloadManager::~QtDownloadManager()
{
}
-PassRefPtr<QtDownloadManager> QtDownloadManager::create(WebContext* context)
+void QtDownloadManager::addDownload(DownloadProxy* download, QWebDownloadItem* downloadItem)
{
- QtDownloadManager* manager = new QtDownloadManager();
-
- WKContextDownloadClient downloadClient;
- memset(&downloadClient, 0, sizeof(WKContextDownloadClient));
- downloadClient.version = kWKContextDownloadClientCurrentVersion;
- downloadClient.clientInfo = manager;
- downloadClient.didReceiveResponse = qt_wk_didReceiveResponse;
- downloadClient.didReceiveData = qt_wk_didReceiveDataForDownload;
- downloadClient.didCreateDestination = qt_wk_didCreateDestination;
- downloadClient.didFinish = qt_wk_didFinishDownload;
- downloadClient.didFail = qt_wk_didFailDownload;
- WKContextSetDownloadClient(toAPI(context), &downloadClient);
- return adoptRef(manager);
+ m_downloads[download->downloadID()] = downloadItem;
}
void QtDownloadManager::downloadReceivedResponse(DownloadProxy* download, const WebCore::ResourceResponse& response)
@@ -136,9 +101,35 @@
emit downloadItem->totalBytesReceivedChanged(length);
}
-void QtDownloadManager::addDownload(DownloadProxy* download, QWebDownloadItem* downloadItem)
+static inline QtDownloadManager* toQtDownloadManager(const void* clientInfo)
{
- m_downloads[download->downloadID()] = downloadItem;
+ ASSERT(clientInfo);
+ return reinterpret_cast<QtDownloadManager*>(const_cast<void*>(clientInfo));
}
+void QtDownloadManager::didReceiveResponse(WKContextRef, WKDownloadRef download, WKURLResponseRef response, const void *clientInfo)
+{
+ toQtDownloadManager(clientInfo)->downloadReceivedResponse(toImpl(download), toImpl(response)->resourceResponse());
}
+
+void QtDownloadManager::didCreateDestination(WKContextRef, WKDownloadRef download, WKStringRef path, const void *clientInfo)
+{
+ toQtDownloadManager(clientInfo)->downloadCreatedDestination(toImpl(download), WKStringCopyQString(path));
+}
+
+void QtDownloadManager::didFinishDownload(WKContextRef, WKDownloadRef download, const void *clientInfo)
+{
+ toQtDownloadManager(clientInfo)->downloadFinished(toImpl(download));
+}
+
+void QtDownloadManager::didFailDownload(WKContextRef, WKDownloadRef download, WKErrorRef error, const void *clientInfo)
+{
+ toQtDownloadManager(clientInfo)->downloadFailed(toImpl(download), QtWebError(error));
+}
+
+void QtDownloadManager::didReceiveDataForDownload(WKContextRef, WKDownloadRef download, uint64_t length, const void *clientInfo)
+{
+ toQtDownloadManager(clientInfo)->downloadDataReceived(toImpl(download), length);
+}
+
+}
Modified: trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.h (101194 => 101195)
--- trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.h 2011-11-26 15:51:44 UTC (rev 101194)
+++ trunk/Source/WebKit2/UIProcess/qt/QtDownloadManager.h 2011-11-26 16:09:39 UTC (rev 101195)
@@ -22,8 +22,7 @@
#define QtDownloadManager_h
#include <QMap>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
+#include <WKContext.h>
class QtWebError;
class QWebDownloadItem;
@@ -37,21 +36,26 @@
class DownloadProxy;
class WebContext;
-class QtDownloadManager : public RefCounted<QtDownloadManager> {
+class QtDownloadManager {
public:
+ QtDownloadManager(WebContext*);
~QtDownloadManager();
void addDownload(DownloadProxy*, QWebDownloadItem*);
+private:
void downloadReceivedResponse(DownloadProxy*, const WebCore::ResourceResponse&);
void downloadCreatedDestination(DownloadProxy*, const QString& path);
void downloadFinished(DownloadProxy*);
void downloadFailed(DownloadProxy*, const QtWebError&);
void downloadDataReceived(DownloadProxy*, uint64_t length);
- static PassRefPtr<QtDownloadManager> create(WebContext*);
-private:
- QtDownloadManager();
+ // WKContextDownloadClient callbacks.
+ static void didReceiveResponse(WKContextRef, WKDownloadRef, WKURLResponseRef, const void* clientInfo);
+ static void didCreateDestination(WKContextRef, WKDownloadRef, WKStringRef path, const void* clientInfo);
+ static void didFinishDownload(WKContextRef, WKDownloadRef, const void* clientInfo);
+ static void didFailDownload(WKContextRef, WKDownloadRef, WKErrorRef, const void* clientInfo);
+ static void didReceiveDataForDownload(WKContextRef, WKDownloadRef, uint64_t length, const void* clientInfo);
QMap<uint64_t, QWebDownloadItem*> m_downloads;
};
Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebContext.cpp (101194 => 101195)
--- trunk/Source/WebKit2/UIProcess/qt/QtWebContext.cpp 2011-11-26 15:51:44 UTC (rev 101194)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebContext.cpp 2011-11-26 16:09:39 UTC (rev 101195)
@@ -92,7 +92,7 @@
void QtWebContext::initialize()
{
- m_downloadManager = QtDownloadManager::create(m_context.get());
+ m_downloadManager = adoptPtr(new QtDownloadManager(m_context.get()));
initializeContextInjectedBundleClient();
}
Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebContext.h (101194 => 101195)
--- trunk/Source/WebKit2/UIProcess/qt/QtWebContext.h 2011-11-26 15:51:44 UTC (rev 101194)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebContext.h 2011-11-26 16:09:39 UTC (rev 101195)
@@ -22,6 +22,7 @@
#define QtWebContext_h
#include <WKContext.h>
+#include <wtf/OwnPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
@@ -59,7 +60,7 @@
static QtWebContext* s_defaultContext;
RefPtr<WebContext> m_context;
- RefPtr<QtDownloadManager> m_downloadManager;
+ OwnPtr<QtDownloadManager> m_downloadManager;
};
}