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 "WebLoaderClient.h"
     28 
     29 #include "ImmutableArray.h"
     30 #include "WebBackForwardListItem.h"
     31 #include "WKAPICast.h"
     32 #include <string.h>
     33 
     34 using namespace WebCore;
     35 
     36 namespace WebKit {
     37 
     38 void WebLoaderClient::didStartProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
     39 {
     40     if (!m_client.didStartProvisionalLoadForFrame)
     41         return;
     42 
     43     m_client.didStartProvisionalLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
     44 }
     45 
     46 void WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
     47 {
     48     if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
     49         return;
     50 
     51     m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
     52 }
     53 
     54 void WebLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, const ResourceError& error, APIObject* userData)
     55 {
     56     if (!m_client.didFailProvisionalLoadWithErrorForFrame)
     57         return;
     58 
     59     m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), toAPI(userData), m_client.clientInfo);
     60 }
     61 
     62 void WebLoaderClient::didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
     63 {
     64     if (!m_client.didCommitLoadForFrame)
     65         return;
     66 
     67     m_client.didCommitLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
     68 }
     69 
     70 void WebLoaderClient::didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
     71 {
     72     if (!m_client.didFinishDocumentLoadForFrame)
     73         return;
     74 
     75     m_client.didFinishDocumentLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
     76 }
     77 
     78 void WebLoaderClient::didFinishLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
     79 {
     80     if (!m_client.didFinishLoadForFrame)
     81         return;
     82 
     83     m_client.didFinishLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
     84 }
     85 
     86 void WebLoaderClient::didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, const ResourceError& error, APIObject* userData)
     87 {
     88     if (!m_client.didFailLoadWithErrorForFrame)
     89         return;
     90 
     91     m_client.didFailLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), toAPI(userData), m_client.clientInfo);
     92 }
     93 
     94 void WebLoaderClient::didSameDocumentNavigationForFrame(WebPageProxy* page, WebFrameProxy* frame, SameDocumentNavigationType type, APIObject* userData)
     95 {
     96     if (!m_client.didSameDocumentNavigationForFrame)
     97         return;
     98 
     99     m_client.didSameDocumentNavigationForFrame(toAPI(page), toAPI(frame), toAPI(type), toAPI(userData), m_client.clientInfo);
    100 }
    101 
    102 void WebLoaderClient::didReceiveTitleForFrame(WebPageProxy* page, const String& title, WebFrameProxy* frame, APIObject* userData)
    103 {
    104     if (!m_client.didReceiveTitleForFrame)
    105         return;
    106 
    107     m_client.didReceiveTitleForFrame(toAPI(page), toAPI(title.impl()), toAPI(frame), toAPI(userData), m_client.clientInfo);
    108 }
    109 
    110 void WebLoaderClient::didFirstLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
    111 {
    112     if (!m_client.didFirstLayoutForFrame)
    113         return;
    114 
    115     m_client.didFirstLayoutForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
    116 }
    117 
    118 void WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
    119 {
    120     if (!m_client.didFirstVisuallyNonEmptyLayoutForFrame)
    121         return;
    122 
    123     m_client.didFirstVisuallyNonEmptyLayoutForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
    124 }
    125 
    126 void WebLoaderClient::didRemoveFrameFromHierarchy(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
    127 {
    128     if (!m_client.didRemoveFrameFromHierarchy)
    129         return;
    130 
    131     m_client.didRemoveFrameFromHierarchy(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
    132 }
    133 
    134 void WebLoaderClient::didDisplayInsecureContentForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
    135 {
    136     if (!m_client.didDisplayInsecureContentForFrame)
    137         return;
    138 
    139     m_client.didDisplayInsecureContentForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
    140 }
    141 
    142 void WebLoaderClient::didRunInsecureContentForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
    143 {
    144     if (!m_client.didRunInsecureContentForFrame)
    145         return;
    146 
    147     m_client.didRunInsecureContentForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.clientInfo);
    148 }
    149 
    150 bool WebLoaderClient::canAuthenticateAgainstProtectionSpaceInFrame(WebPageProxy* page, WebFrameProxy* frame, WebProtectionSpace* protectionSpace)
    151 {
    152     if (!m_client.canAuthenticateAgainstProtectionSpaceInFrame)
    153         return false;
    154 
    155     return m_client.canAuthenticateAgainstProtectionSpaceInFrame(toAPI(page), toAPI(frame), toAPI(protectionSpace), m_client.clientInfo);
    156 }
    157 
    158 void WebLoaderClient::didReceiveAuthenticationChallengeInFrame(WebPageProxy* page, WebFrameProxy* frame, AuthenticationChallengeProxy* authenticationChallenge)
    159 {
    160     if (!m_client.didReceiveAuthenticationChallengeInFrame)
    161         return;
    162 
    163     m_client.didReceiveAuthenticationChallengeInFrame(toAPI(page), toAPI(frame), toAPI(authenticationChallenge), m_client.clientInfo);
    164 }
    165 
    166 void WebLoaderClient::didStartProgress(WebPageProxy* page)
    167 {
    168     if (!m_client.didStartProgress)
    169         return;
    170 
    171     m_client.didStartProgress(toAPI(page), m_client.clientInfo);
    172 }
    173 
    174 void WebLoaderClient::didChangeProgress(WebPageProxy* page)
    175 {
    176     if (!m_client.didChangeProgress)
    177         return;
    178 
    179     m_client.didChangeProgress(toAPI(page), m_client.clientInfo);
    180 }
    181 
    182 void WebLoaderClient::didFinishProgress(WebPageProxy* page)
    183 {
    184     if (!m_client.didFinishProgress)
    185         return;
    186 
    187     m_client.didFinishProgress(toAPI(page), m_client.clientInfo);
    188 }
    189 
    190 void WebLoaderClient::processDidBecomeUnresponsive(WebPageProxy* page)
    191 {
    192     if (!m_client.processDidBecomeUnresponsive)
    193         return;
    194 
    195     m_client.processDidBecomeUnresponsive(toAPI(page), m_client.clientInfo);
    196 }
    197 
    198 void WebLoaderClient::processDidBecomeResponsive(WebPageProxy* page)
    199 {
    200     if (!m_client.processDidBecomeResponsive)
    201         return;
    202 
    203     m_client.processDidBecomeResponsive(toAPI(page), m_client.clientInfo);
    204 }
    205 
    206 void WebLoaderClient::processDidCrash(WebPageProxy* page)
    207 {
    208     if (!m_client.processDidCrash)
    209         return;
    210 
    211     m_client.processDidCrash(toAPI(page), m_client.clientInfo);
    212 }
    213 
    214 void WebLoaderClient::didChangeBackForwardList(WebPageProxy* page, WebBackForwardListItem* addedItem, Vector<RefPtr<APIObject> >* removedItems)
    215 {
    216     if (!m_client.didChangeBackForwardList)
    217         return;
    218 
    219     RefPtr<ImmutableArray> removedItemsArray;
    220     if (removedItems && !removedItems->isEmpty())
    221         removedItemsArray = ImmutableArray::adopt(*removedItems);
    222 
    223     m_client.didChangeBackForwardList(toAPI(page), toAPI(addedItem), toAPI(removedItemsArray.get()), m_client.clientInfo);
    224 }
    225 
    226 bool WebLoaderClient::shouldGoToBackForwardListItem(WebPageProxy* page, WebBackForwardListItem* item)
    227 {
    228     if (!m_client.shouldGoToBackForwardListItem)
    229         return true;
    230 
    231     return m_client.shouldGoToBackForwardListItem(toAPI(page), toAPI(item), m_client.clientInfo);
    232 }
    233 
    234 } // namespace WebKit
    235