Title: [141008] trunk/Source/WebKit2
Revision
141008
Author
christophe.du...@intel.com
Date
2013-01-28 14:22:16 -0800 (Mon, 28 Jan 2013)

Log Message

[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):

Modified Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to