Diff
Modified: trunk/Source/WebKit2/ChangeLog (141007 => 141008)
--- trunk/Source/WebKit2/ChangeLog 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/ChangeLog 2013-01-28 22:22:16 UTC (rev 141008)
@@ -1,3 +1,49 @@
+2013-01-28 Christophe Dumez <christophe.du...@intel.com>
+
+ [EFL][WK2] Use C API inside ewk_download_job
+ https://bugs.webkit.org/show_bug.cgi?id=107810
+
+ Reviewed by Anders Carlsson.
+
+ Use C API inside ewk_download_job instead of accessing internal C++
+ classes directly, to avoid violating API layering.
+
+ * UIProcess/API/C/WKDownload.cpp:
+ (WKDownloadGetID): Add C API to get the download ID as we need it to
+ support our public API and it seems like a useful addition.
+ * UIProcess/API/C/WKDownload.h:
+ * UIProcess/API/efl/ewk_download_job.cpp:
+ (EwkDownloadJob::EwkDownloadJob):
+ (EwkDownloadJob::id):
+ (EwkDownloadJob::request):
+ (EwkDownloadJob::cancel):
+ * UIProcess/API/efl/ewk_download_job_private.h:
+ (EwkDownloadJob::create):
+ (EwkDownloadJob):
+ * UIProcess/efl/DownloadManagerEfl.cpp:
+ (WebKit::DownloadManagerEfl::decideDestinationWithSuggestedFilename):
+ (WebKit::DownloadManagerEfl::didReceiveResponse):
+ (WebKit::DownloadManagerEfl::didCreateDestination):
+ (WebKit::DownloadManagerEfl::didReceiveData):
+ (WebKit::DownloadManagerEfl::didFail):
+ (WebKit::DownloadManagerEfl::didCancel):
+ (WebKit::DownloadManagerEfl::didFinish):
+ (WebKit::DownloadManagerEfl::registerDownloadJob): Rename
+ registerDownload() to registerDownloadJob() for consistency with
+ unregisterDownloadJob().
+ (WebKit::DownloadManagerEfl::ewkDownloadJob): Rename downloadJob() to
+ ewkDownloadJob() for clarity since it returns a EwkDownload object.
+ Also take a WKDownloadRef in argument instead of an identifier since
+ all the callers have a WKDownloadRef and it makes their code simpler.
+ Finally, make the getter non-const since it returns a non-const pointer.
+ (WebKit::DownloadManagerEfl::unregisterDownloadJob): Take a
+ WKDownloadRef in argument instead of an identifier since all the
+ callers have a WKDownloadRef and it makes their code simpler.
+ * UIProcess/efl/DownloadManagerEfl.h:
+ (DownloadManagerEfl):
+ * UIProcess/efl/PageClientBase.cpp:
+ (WebKit::PageClientBase::handleDownloadRequest):
+
2013-01-28 Tim Horton <timothy_hor...@apple.com>
PDFPlugin: getMainResourceDataOfFrame should return PDFPlugin's data so that Save... works
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKDownload.cpp (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/API/C/WKDownload.cpp 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKDownload.cpp 2013-01-28 22:22:16 UTC (rev 141008)
@@ -37,6 +37,11 @@
return toAPI(DownloadProxy::APIType);
}
+uint64_t WKDownloadGetID(WKDownloadRef download)
+{
+ return toImpl(download)->downloadID();
+}
+
WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download)
{
return toAPI(WebURLRequest::create(toImpl(download)->request()).leakRef());
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKDownload.h (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/API/C/WKDownload.h 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKDownload.h 2013-01-28 22:22:16 UTC (rev 141008)
@@ -38,6 +38,7 @@
WK_EXPORT WKTypeID WKDownloadGetTypeID();
+WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download);
WK_EXPORT WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download);
WK_EXPORT WKDataRef WKDownloadGetResumeData(WKDownloadRef download);
WK_EXPORT void WKDownloadCancel(WKDownloadRef download);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp 2013-01-28 22:22:16 UTC (rev 141008)
@@ -26,18 +26,17 @@
#include "config.h"
#include "ewk_download_job.h"
-#include "DownloadProxy.h"
#include "WKAPICast.h"
#include "WKRetainPtr.h"
-#include "WebURLRequest.h"
+#include "WKURLRequest.h"
#include "ewk_download_job_private.h"
#include "ewk_url_response_private.h"
#include <Ecore.h>
using namespace WebKit;
-EwkDownloadJob::EwkDownloadJob(WebKit::DownloadProxy* download, EwkView* viewImpl)
- : m_downloadProxy(download)
+EwkDownloadJob::EwkDownloadJob(WKDownloadRef download, EwkView* viewImpl)
+ : m_download(download)
, m_viewImpl(viewImpl)
, m_state(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED)
, m_startTime(-1)
@@ -51,7 +50,7 @@
*/
uint64_t EwkDownloadJob::id() const
{
- return m_downloadProxy->downloadID();
+ return WKDownloadGetID(m_download.get());
}
/**
@@ -86,7 +85,7 @@
EwkUrlRequest* EwkDownloadJob::request() const
{
if (!m_request) {
- WKRetainPtr<WKURLRequestRef> wkURLRequest(AdoptWK, toAPI(WebURLRequest::create(m_downloadProxy->request()).leakRef()));
+ WKRetainPtr<WKURLRequestRef> wkURLRequest(AdoptWK, WKDownloadCopyRequest(m_download.get()));
m_request = EwkUrlRequest::create(wkURLRequest.get());
}
@@ -157,7 +156,8 @@
return false;
m_state = EWK_DOWNLOAD_JOB_STATE_CANCELLING;
- m_downloadProxy->cancel();
+ WKDownloadCancel(m_download.get());
+
return true;
}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h 2013-01-28 22:22:16 UTC (rev 141008)
@@ -27,24 +27,22 @@
#define ewk_download_job_private_h
#include "WKBase.h"
+#include "WKDownload.h"
#include "WKEinaSharedString.h"
+#include "WKRetainPtr.h"
#include "ewk_download_job.h"
#include "ewk_url_request_private.h"
#include "ewk_url_response_private.h"
#include <Evas.h>
#include <wtf/PassRefPtr.h>
-namespace WebKit {
-class DownloadProxy;
-}
-
class EwkView;
class EwkDownloadJob : public EwkObject {
public:
EWK_OBJECT_DECLARE(EwkDownloadJob)
- static PassRefPtr<EwkDownloadJob> create(WebKit::DownloadProxy* download, EwkView* viewImpl)
+ static PassRefPtr<EwkDownloadJob> create(WKDownloadRef download, EwkView* viewImpl)
{
return adoptRef(new EwkDownloadJob(download, viewImpl));
}
@@ -72,9 +70,9 @@
void incrementReceivedData(uint64_t length);
private:
- EwkDownloadJob(WebKit::DownloadProxy* download, EwkView* view);
+ EwkDownloadJob(WKDownloadRef download, EwkView* view);
- WebKit::DownloadProxy* m_downloadProxy;
+ WKRetainPtr<WKDownloadRef> m_download;
EwkView* m_viewImpl;
Ewk_Download_Job_State m_state;
mutable RefPtr<EwkUrlRequest> m_request;
Modified: trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp 2013-01-28 22:22:16 UTC (rev 141008)
@@ -26,9 +26,9 @@
#include "config.h"
#include "DownloadManagerEfl.h"
-#include "DownloadProxy.h"
#include "EwkView.h"
#include "WKContext.h"
+#include "WKDownload.h"
#include "WKString.h"
#include "ewk_context_private.h"
#include "ewk_error_private.h"
@@ -45,7 +45,7 @@
WKStringRef DownloadManagerEfl::decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef wkDownload, WKStringRef filename, bool* /*allowOverwrite*/, const void* clientInfo)
{
- EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
+ EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
ASSERT(download);
download->setSuggestedFileName(toImpl(filename)->string().utf8().data());
@@ -62,14 +62,14 @@
void DownloadManagerEfl::didReceiveResponse(WKContextRef, WKDownloadRef wkDownload, WKURLResponseRef wkResponse, const void* clientInfo)
{
- EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
+ EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
ASSERT(download);
download->setResponse(EwkUrlResponse::create(wkResponse));
}
void DownloadManagerEfl::didCreateDestination(WKContextRef, WKDownloadRef wkDownload, WKStringRef /*path*/, const void* clientInfo)
{
- EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
+ EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
ASSERT(download);
download->setState(EWK_DOWNLOAD_JOB_STATE_DOWNLOADING);
@@ -77,7 +77,7 @@
void DownloadManagerEfl::didReceiveData(WKContextRef, WKDownloadRef wkDownload, uint64_t length, const void* clientInfo)
{
- EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
+ EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
ASSERT(download);
download->incrementReceivedData(length);
}
@@ -85,39 +85,36 @@
void DownloadManagerEfl::didFail(WKContextRef, WKDownloadRef wkDownload, WKErrorRef error, const void* clientInfo)
{
DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
- uint64_t downloadId = toImpl(wkDownload)->downloadID();
- EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
+ EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
ASSERT(download);
OwnPtr<EwkError> ewkError = EwkError::create(error);
download->setState(EWK_DOWNLOAD_JOB_STATE_FAILED);
Ewk_Download_Job_Error downloadError = { download, ewkError.get() };
download->view()->smartCallback<DownloadJobFailed>().call(&downloadError);
- downloadManager->unregisterDownloadJob(downloadId);
+ downloadManager->unregisterDownloadJob(wkDownload);
}
void DownloadManagerEfl::didCancel(WKContextRef, WKDownloadRef wkDownload, const void* clientInfo)
{
DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
- uint64_t downloadId = toImpl(wkDownload)->downloadID();
- EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
+ EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
ASSERT(download);
download->setState(EWK_DOWNLOAD_JOB_STATE_CANCELLED);
download->view()->smartCallback<DownloadJobCancelled>().call(download);
- downloadManager->unregisterDownloadJob(downloadId);
+ downloadManager->unregisterDownloadJob(wkDownload);
}
void DownloadManagerEfl::didFinish(WKContextRef, WKDownloadRef wkDownload, const void* clientInfo)
{
DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
- uint64_t downloadId = toImpl(wkDownload)->downloadID();
- EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
+ EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
ASSERT(download);
download->setState(EWK_DOWNLOAD_JOB_STATE_FINISHED);
download->view()->smartCallback<DownloadJobFinished>().call(download);
- downloadManager->unregisterDownloadJob(downloadId);
+ downloadManager->unregisterDownloadJob(wkDownload);
}
DownloadManagerEfl::DownloadManagerEfl(EwkContext* context)
@@ -144,9 +141,9 @@
WKContextSetDownloadClient(toAPI(m_context->webContext().get()), 0);
}
-void DownloadManagerEfl::registerDownload(DownloadProxy* download, EwkView* viewImpl)
+void DownloadManagerEfl::registerDownloadJob(WKDownloadRef download, EwkView* viewImpl)
{
- uint64_t downloadId = download->downloadID();
+ uint64_t downloadId = WKDownloadGetID(download);
if (m_downloadJobs.contains(downloadId))
return;
@@ -154,14 +151,14 @@
m_downloadJobs.add(downloadId, ewkDownload);
}
-EwkDownloadJob* DownloadManagerEfl::downloadJob(uint64_t id) const
+EwkDownloadJob* DownloadManagerEfl::ewkDownloadJob(WKDownloadRef wkDownload)
{
- return m_downloadJobs.get(id).get();
+ return m_downloadJobs.get(WKDownloadGetID(wkDownload)).get();
}
-void DownloadManagerEfl::unregisterDownloadJob(uint64_t id)
+void DownloadManagerEfl::unregisterDownloadJob(WKDownloadRef wkDownload)
{
- m_downloadJobs.remove(id);
+ m_downloadJobs.remove(WKDownloadGetID(wkDownload));
}
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h 2013-01-28 22:22:16 UTC (rev 141008)
@@ -45,13 +45,13 @@
~DownloadManagerEfl();
- void registerDownload(DownloadProxy*, EwkView*);
+ void registerDownloadJob(WKDownloadRef, EwkView*);
private:
explicit DownloadManagerEfl(EwkContext*);
- EwkDownloadJob* downloadJob(uint64_t id) const;
- void unregisterDownloadJob(uint64_t id);
+ EwkDownloadJob* ewkDownloadJob(WKDownloadRef);
+ void unregisterDownloadJob(WKDownloadRef);
static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef, WKStringRef filename, bool* allowOverwrite, const void* clientInfo);
static void didReceiveResponse(WKContextRef, WKDownloadRef, WKURLResponseRef, const void* clientInfo);
Modified: trunk/Source/WebKit2/UIProcess/efl/PageClientBase.cpp (141007 => 141008)
--- trunk/Source/WebKit2/UIProcess/efl/PageClientBase.cpp 2013-01-28 22:06:01 UTC (rev 141007)
+++ trunk/Source/WebKit2/UIProcess/efl/PageClientBase.cpp 2013-01-28 22:22:16 UTC (rev 141008)
@@ -298,7 +298,7 @@
void PageClientBase::handleDownloadRequest(DownloadProxy* download)
{
EwkContext* context = m_view->ewkContext();
- context->downloadManager()->registerDownload(download, m_view);
+ context->downloadManager()->registerDownloadJob(toAPI(download), m_view);
}
} // namespace WebKit