Home | History | Annotate | Download | only in UIProcess
      1 /*
      2  * Copyright (C) 2010 Apple Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
     14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     23  * THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #include "config.h"
     27 #include "WebDownloadClient.h"
     28 
     29 #include "WKAPICast.h"
     30 #include "WebURLResponse.h"
     31 #include "WKRetainPtr.h"
     32 
     33 using namespace WebCore;
     34 
     35 namespace WebKit {
     36 
     37 void WebDownloadClient::didStart(WebContext* webContext, DownloadProxy* downloadProxy)
     38 {
     39     if (!m_client.didStart)
     40         return;
     41 
     42     m_client.didStart(toAPI(webContext), toAPI(downloadProxy), m_client.clientInfo);
     43 }
     44 
     45 void WebDownloadClient::didReceiveAuthenticationChallenge(WebContext* webContext, DownloadProxy* downloadProxy, AuthenticationChallengeProxy* authenticationChallengeProxy)
     46 {
     47     if (!m_client.didReceiveAuthenticationChallenge)
     48         return;
     49 
     50     m_client.didReceiveAuthenticationChallenge(toAPI(webContext), toAPI(downloadProxy), toAPI(authenticationChallengeProxy), m_client.clientInfo);
     51 }
     52 
     53 void WebDownloadClient::didReceiveResponse(WebContext* webContext, DownloadProxy* downloadProxy, const ResourceResponse& response)
     54 {
     55     if (!m_client.didReceiveResponse)
     56         return;
     57 
     58     m_client.didReceiveResponse(toAPI(webContext), toAPI(downloadProxy), toAPI(WebURLResponse::create(response).get()), m_client.clientInfo);
     59 }
     60 
     61 void WebDownloadClient::didReceiveData(WebContext* webContext, DownloadProxy* downloadProxy, uint64_t length)
     62 {
     63     if (!m_client.didReceiveData)
     64         return;
     65 
     66     m_client.didReceiveData(toAPI(webContext), toAPI(downloadProxy), length, m_client.clientInfo);
     67 }
     68 
     69 bool WebDownloadClient::shouldDecodeSourceDataOfMIMEType(WebContext* webContext, DownloadProxy* downloadProxy, const String& mimeType)
     70 {
     71     if (!m_client.shouldDecodeSourceDataOfMIMEType)
     72         return true;
     73 
     74     return m_client.shouldDecodeSourceDataOfMIMEType(toAPI(webContext), toAPI(downloadProxy), toAPI(mimeType.impl()), m_client.clientInfo);
     75 }
     76 
     77 String WebDownloadClient::decideDestinationWithSuggestedFilename(WebContext* webContext, DownloadProxy* downloadProxy, const String& filename, bool& allowOverwrite)
     78 {
     79     if (!m_client.decideDestinationWithSuggestedFilename)
     80         return String();
     81 
     82     WKRetainPtr<WKStringRef> destination(AdoptWK, m_client.decideDestinationWithSuggestedFilename(toAPI(webContext), toAPI(downloadProxy), toAPI(filename.impl()), &allowOverwrite, m_client.clientInfo));
     83     return toWTFString(destination.get());
     84 }
     85 
     86 void WebDownloadClient::didCreateDestination(WebContext* webContext, DownloadProxy* downloadProxy, const String& path)
     87 {
     88     if (!m_client.didCreateDestination)
     89         return;
     90 
     91     m_client.didCreateDestination(toAPI(webContext), toAPI(downloadProxy), toAPI(path.impl()), m_client.clientInfo);
     92 }
     93 
     94 void WebDownloadClient::didFinish(WebContext* webContext, DownloadProxy* downloadProxy)
     95 {
     96     if (!m_client.didFinish)
     97         return;
     98 
     99     m_client.didFinish(toAPI(webContext), toAPI(downloadProxy), m_client.clientInfo);
    100 }
    101 
    102 void WebDownloadClient::didFail(WebContext* webContext, DownloadProxy* downloadProxy, const ResourceError& error)
    103 {
    104     if (!m_client.didFail)
    105         return;
    106 
    107     m_client.didFail(toAPI(webContext), toAPI(downloadProxy), toAPI(error), m_client.clientInfo);
    108 }
    109 
    110 void WebDownloadClient::didCancel(WebContext* webContext, DownloadProxy* downloadProxy)
    111 {
    112     if (!m_client.didCancel)
    113         return;
    114 
    115     m_client.didCancel(toAPI(webContext), toAPI(downloadProxy), m_client.clientInfo);
    116 }
    117 
    118 void WebDownloadClient::processDidCrash(WebContext* webContext, DownloadProxy* downloadProxy)
    119 {
    120     if (!m_client.processDidCrash)
    121         return;
    122 
    123     m_client.processDidCrash(toAPI(webContext), toAPI(downloadProxy), m_client.clientInfo);
    124 }
    125 
    126 } // namespace WebKit
    127