Changeset 141008 in webkit


Ignore:
Timestamp:
Jan 28, 2013, 2:22:16 PM (12 years ago)
Author:
Christophe Dumez
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):

Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r141004 r141008  
     12013-01-28  Christophe Dumez  <christophe.dumez@intel.com>
     2
     3        [EFL][WK2] Use C API inside ewk_download_job
     4        https://bugs.webkit.org/show_bug.cgi?id=107810
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Use C API inside ewk_download_job instead of accessing internal C++
     9        classes directly, to avoid violating API layering.
     10
     11        * UIProcess/API/C/WKDownload.cpp:
     12        (WKDownloadGetID): Add C API to get the download ID as we need it to
     13        support our public API and it seems like a useful addition.
     14        * UIProcess/API/C/WKDownload.h:
     15        * UIProcess/API/efl/ewk_download_job.cpp:
     16        (EwkDownloadJob::EwkDownloadJob):
     17        (EwkDownloadJob::id):
     18        (EwkDownloadJob::request):
     19        (EwkDownloadJob::cancel):
     20        * UIProcess/API/efl/ewk_download_job_private.h:
     21        (EwkDownloadJob::create):
     22        (EwkDownloadJob):
     23        * UIProcess/efl/DownloadManagerEfl.cpp:
     24        (WebKit::DownloadManagerEfl::decideDestinationWithSuggestedFilename):
     25        (WebKit::DownloadManagerEfl::didReceiveResponse):
     26        (WebKit::DownloadManagerEfl::didCreateDestination):
     27        (WebKit::DownloadManagerEfl::didReceiveData):
     28        (WebKit::DownloadManagerEfl::didFail):
     29        (WebKit::DownloadManagerEfl::didCancel):
     30        (WebKit::DownloadManagerEfl::didFinish):
     31        (WebKit::DownloadManagerEfl::registerDownloadJob): Rename
     32        registerDownload() to registerDownloadJob() for consistency with
     33        unregisterDownloadJob().
     34        (WebKit::DownloadManagerEfl::ewkDownloadJob): Rename downloadJob() to
     35        ewkDownloadJob() for clarity since it returns a EwkDownload object.
     36        Also take a WKDownloadRef in argument instead of an identifier since
     37        all the callers have a WKDownloadRef and it makes their code simpler.
     38        Finally, make the getter non-const since it returns a non-const pointer.
     39        (WebKit::DownloadManagerEfl::unregisterDownloadJob): Take a
     40        WKDownloadRef in argument instead of an identifier since all the
     41        callers have a WKDownloadRef and it makes their code simpler.
     42        * UIProcess/efl/DownloadManagerEfl.h:
     43        (DownloadManagerEfl):
     44        * UIProcess/efl/PageClientBase.cpp:
     45        (WebKit::PageClientBase::handleDownloadRequest):
     46
    1472013-01-28  Tim Horton  <timothy_horton@apple.com>
    248
  • trunk/Source/WebKit2/UIProcess/API/C/WKDownload.cpp

    r95901 r141008  
    3838}
    3939
     40uint64_t WKDownloadGetID(WKDownloadRef download)
     41{
     42    return toImpl(download)->downloadID();
     43}
     44
    4045WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download)
    4146{
  • trunk/Source/WebKit2/UIProcess/API/C/WKDownload.h

    r95901 r141008  
    3939WK_EXPORT WKTypeID WKDownloadGetTypeID();
    4040
     41WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download);
    4142WK_EXPORT WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download);
    4243WK_EXPORT WKDataRef WKDownloadGetResumeData(WKDownloadRef download);
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp

    r140686 r141008  
    2727#include "ewk_download_job.h"
    2828
    29 #include "DownloadProxy.h"
    3029#include "WKAPICast.h"
    3130#include "WKRetainPtr.h"
    32 #include "WebURLRequest.h"
     31#include "WKURLRequest.h"
    3332#include "ewk_download_job_private.h"
    3433#include "ewk_url_response_private.h"
     
    3736using namespace WebKit;
    3837
    39 EwkDownloadJob::EwkDownloadJob(WebKit::DownloadProxy* download, EwkView* viewImpl)
    40     : m_downloadProxy(download)
     38EwkDownloadJob::EwkDownloadJob(WKDownloadRef download, EwkView* viewImpl)
     39    : m_download(download)
    4140    , m_viewImpl(viewImpl)
    4241    , m_state(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED)
     
    5251uint64_t EwkDownloadJob::id() const
    5352{
    54     return m_downloadProxy->downloadID();
     53    return WKDownloadGetID(m_download.get());
    5554}
    5655
     
    8786{
    8887    if (!m_request) {
    89         WKRetainPtr<WKURLRequestRef> wkURLRequest(AdoptWK, toAPI(WebURLRequest::create(m_downloadProxy->request()).leakRef()));
     88        WKRetainPtr<WKURLRequestRef> wkURLRequest(AdoptWK, WKDownloadCopyRequest(m_download.get()));
    9089        m_request = EwkUrlRequest::create(wkURLRequest.get());
    9190    }
     
    158157
    159158    m_state = EWK_DOWNLOAD_JOB_STATE_CANCELLING;
    160     m_downloadProxy->cancel();
     159    WKDownloadCancel(m_download.get());
     160
    161161    return true;
    162162}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h

    r140686 r141008  
    2828
    2929#include "WKBase.h"
     30#include "WKDownload.h"
    3031#include "WKEinaSharedString.h"
     32#include "WKRetainPtr.h"
    3133#include "ewk_download_job.h"
    3234#include "ewk_url_request_private.h"
     
    3436#include <Evas.h>
    3537#include <wtf/PassRefPtr.h>
    36 
    37 namespace WebKit {
    38 class DownloadProxy;
    39 }
    4038
    4139class EwkView;
     
    4543    EWK_OBJECT_DECLARE(EwkDownloadJob)
    4644
    47     static PassRefPtr<EwkDownloadJob> create(WebKit::DownloadProxy* download, EwkView* viewImpl)
     45    static PassRefPtr<EwkDownloadJob> create(WKDownloadRef download, EwkView* viewImpl)
    4846    {
    4947        return adoptRef(new EwkDownloadJob(download, viewImpl));
     
    7371
    7472private:
    75     EwkDownloadJob(WebKit::DownloadProxy* download, EwkView* view);
     73    EwkDownloadJob(WKDownloadRef download, EwkView* view);
    7674
    77     WebKit::DownloadProxy* m_downloadProxy;
     75    WKRetainPtr<WKDownloadRef> m_download;
    7876    EwkView* m_viewImpl;
    7977    Ewk_Download_Job_State m_state;
  • trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp

    r140686 r141008  
    2727#include "DownloadManagerEfl.h"
    2828
    29 #include "DownloadProxy.h"
    3029#include "EwkView.h"
    3130#include "WKContext.h"
     31#include "WKDownload.h"
    3232#include "WKString.h"
    3333#include "ewk_context_private.h"
     
    4646WKStringRef DownloadManagerEfl::decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef wkDownload, WKStringRef filename, bool* /*allowOverwrite*/, const void* clientInfo)
    4747{
    48     EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
     48    EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
    4949    ASSERT(download);
    5050
     
    6363void DownloadManagerEfl::didReceiveResponse(WKContextRef, WKDownloadRef wkDownload, WKURLResponseRef wkResponse, const void* clientInfo)
    6464{
    65     EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
     65    EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
    6666    ASSERT(download);
    6767    download->setResponse(EwkUrlResponse::create(wkResponse));
     
    7070void DownloadManagerEfl::didCreateDestination(WKContextRef, WKDownloadRef wkDownload, WKStringRef /*path*/, const void* clientInfo)
    7171{
    72     EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
     72    EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
    7373    ASSERT(download);
    7474
     
    7878void DownloadManagerEfl::didReceiveData(WKContextRef, WKDownloadRef wkDownload, uint64_t length, const void* clientInfo)
    7979{
    80     EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->downloadJob(toImpl(wkDownload)->downloadID());
     80    EwkDownloadJob* download = toDownloadManagerEfl(clientInfo)->ewkDownloadJob(wkDownload);
    8181    ASSERT(download);
    8282    download->incrementReceivedData(length);
     
    8686{
    8787    DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
    88     uint64_t downloadId = toImpl(wkDownload)->downloadID();
    89     EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
     88    EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
    9089    ASSERT(download);
    9190
     
    9493    Ewk_Download_Job_Error downloadError = { download, ewkError.get() };
    9594    download->view()->smartCallback<DownloadJobFailed>().call(&downloadError);
    96     downloadManager->unregisterDownloadJob(downloadId);
     95    downloadManager->unregisterDownloadJob(wkDownload);
    9796}
    9897
     
    10099{
    101100    DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
    102     uint64_t downloadId = toImpl(wkDownload)->downloadID();
    103     EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
     101    EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
    104102    ASSERT(download);
    105103
    106104    download->setState(EWK_DOWNLOAD_JOB_STATE_CANCELLED);
    107105    download->view()->smartCallback<DownloadJobCancelled>().call(download);
    108     downloadManager->unregisterDownloadJob(downloadId);
     106    downloadManager->unregisterDownloadJob(wkDownload);
    109107}
    110108
     
    112110{
    113111    DownloadManagerEfl* downloadManager = toDownloadManagerEfl(clientInfo);
    114     uint64_t downloadId = toImpl(wkDownload)->downloadID();
    115     EwkDownloadJob* download = downloadManager->downloadJob(downloadId);
     112    EwkDownloadJob* download = downloadManager->ewkDownloadJob(wkDownload);
    116113    ASSERT(download);
    117114
    118115    download->setState(EWK_DOWNLOAD_JOB_STATE_FINISHED);
    119116    download->view()->smartCallback<DownloadJobFinished>().call(download);
    120     downloadManager->unregisterDownloadJob(downloadId);
     117    downloadManager->unregisterDownloadJob(wkDownload);
    121118}
    122119
     
    145142}
    146143
    147 void DownloadManagerEfl::registerDownload(DownloadProxy* download, EwkView* viewImpl)
     144void DownloadManagerEfl::registerDownloadJob(WKDownloadRef download, EwkView* viewImpl)
    148145{
    149     uint64_t downloadId = download->downloadID();
     146    uint64_t downloadId = WKDownloadGetID(download);
    150147    if (m_downloadJobs.contains(downloadId))
    151148        return;
     
    155152}
    156153
    157 EwkDownloadJob* DownloadManagerEfl::downloadJob(uint64_t id) const
     154EwkDownloadJob* DownloadManagerEfl::ewkDownloadJob(WKDownloadRef wkDownload)
    158155{
    159     return m_downloadJobs.get(id).get();
     156    return m_downloadJobs.get(WKDownloadGetID(wkDownload)).get();
    160157}
    161158
    162 void DownloadManagerEfl::unregisterDownloadJob(uint64_t id)
     159void DownloadManagerEfl::unregisterDownloadJob(WKDownloadRef wkDownload)
    163160{
    164     m_downloadJobs.remove(id);
     161    m_downloadJobs.remove(WKDownloadGetID(wkDownload));
    165162}
    166163
  • trunk/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h

    r140686 r141008  
    4646    ~DownloadManagerEfl();
    4747
    48     void registerDownload(DownloadProxy*, EwkView*);
     48    void registerDownloadJob(WKDownloadRef, EwkView*);
    4949
    5050private:
    5151    explicit DownloadManagerEfl(EwkContext*);
    5252
    53     EwkDownloadJob* downloadJob(uint64_t id) const;
    54     void unregisterDownloadJob(uint64_t id);
     53    EwkDownloadJob* ewkDownloadJob(WKDownloadRef);
     54    void unregisterDownloadJob(WKDownloadRef);
    5555
    5656    static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef, WKStringRef filename, bool* allowOverwrite, const void* clientInfo);
  • trunk/Source/WebKit2/UIProcess/efl/PageClientBase.cpp

    r140686 r141008  
    299299{
    300300    EwkContext* context = m_view->ewkContext();
    301     context->downloadManager()->registerDownload(download, m_view);
     301    context->downloadManager()->registerDownloadJob(toAPI(download), m_view);
    302302}
    303303
Note: See TracChangeset for help on using the changeset viewer.