Home | History | Annotate | Download | only in WebCoreSupport
      1 /*
      2  * Copyright (C) 2006 Zack Rusin <zack (at) kde.org>
      3  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
      4  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
      5  *
      6  * All rights reserved.
      7  *
      8  * Redistribution and use in source and binary forms, with or without
      9  * modification, are permitted provided that the following conditions
     10  * are met:
     11  * 1. Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  * 2. Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in the
     15  *    documentation and/or other materials provided with the distribution.
     16  *
     17  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     20  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     25  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28  */
     29 
     30 #ifndef FrameLoaderClientGtk_h
     31 #define FrameLoaderClientGtk_h
     32 
     33 #include "FrameLoaderClient.h"
     34 #include "ResourceResponse.h"
     35 #include "PluginView.h"
     36 #include "webkitwebpolicydecision.h"
     37 
     38 typedef struct _WebKitWebFrame WebKitWebFrame;
     39 
     40 namespace WebKit {
     41 
     42     class FrameLoaderClient : public WebCore::FrameLoaderClient {
     43     public:
     44         FrameLoaderClient(WebKitWebFrame*);
     45         virtual ~FrameLoaderClient();
     46         virtual void frameLoaderDestroyed();
     47 
     48         WebKitWebFrame*  webFrame() const { return m_frame; }
     49 
     50         virtual bool hasWebView() const;
     51 
     52         virtual void makeRepresentation(WebCore::DocumentLoader*);
     53         virtual void forceLayout();
     54         virtual void forceLayoutForNonHTML();
     55 
     56         virtual void setCopiesOnScroll();
     57 
     58         virtual void detachedFromParent2();
     59         virtual void detachedFromParent3();
     60 
     61         virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
     62 
     63         virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long  identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
     64         virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
     65         virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     66         virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::AuthenticationChallenge&);
     67         virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::ResourceResponse&);
     68         virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived);
     69         virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long  identifier);
     70         virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::ResourceError&);
     71         virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length);
     72         virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const WebCore::ScriptString&);
     73 
     74         virtual void dispatchDidHandleOnloadEvents();
     75         virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
     76         virtual void dispatchDidCancelClientRedirect();
     77         virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double, double);
     78         virtual void dispatchDidChangeLocationWithinPage();
     79         virtual void dispatchDidPushStateWithinPage();
     80         virtual void dispatchDidReplaceStateWithinPage();
     81         virtual void dispatchDidPopStateWithinPage();
     82         virtual void dispatchWillClose();
     83         virtual void dispatchDidReceiveIcon();
     84         virtual void dispatchDidStartProvisionalLoad();
     85         virtual void dispatchDidReceiveTitle(const WebCore::String&);
     86         virtual void dispatchDidCommitLoad();
     87         virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
     88         virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
     89         virtual void dispatchDidFinishDocumentLoad();
     90         virtual void dispatchDidFinishLoad();
     91         virtual void dispatchDidFirstLayout();
     92         virtual void dispatchDidFirstVisuallyNonEmptyLayout();
     93 
     94         virtual WebCore::Frame* dispatchCreatePage();
     95         virtual void dispatchShow();
     96 
     97         virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WebCore::String& MIMEType, const WebCore::ResourceRequest&);
     98         virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WebCore::String& frameName);
     99         virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>);
    100         virtual void cancelPolicyCheck();
    101 
    102         virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
    103 
    104         virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, WTF::PassRefPtr<WebCore::FormState>);
    105 
    106         virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
    107         virtual void revertToProvisionalState(WebCore::DocumentLoader*);
    108         virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
    109 
    110         virtual void postProgressStartedNotification();
    111         virtual void postProgressEstimateChangedNotification();
    112         virtual void postProgressFinishedNotification();
    113 
    114         virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
    115                                    const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
    116         virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WebCore::String>&, const WTF::Vector<WebCore::String>&, const WebCore::String&, bool);
    117         virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
    118         virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues);
    119         virtual WebCore::String overrideMediaType() const;
    120         virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
    121         virtual void documentElementAvailable();
    122         virtual void didPerformFirstNavigation() const;
    123 
    124         virtual void registerForIconNotification(bool);
    125 
    126         virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WebCore::String& mimeType);
    127 
    128         virtual void setMainFrameDocumentReady(bool);
    129 
    130         virtual void startDownload(const WebCore::ResourceRequest&);
    131 
    132         virtual void willChangeTitle(WebCore::DocumentLoader*);
    133         virtual void didChangeTitle(WebCore::DocumentLoader*);
    134 
    135         virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
    136         virtual void finishedLoading(WebCore::DocumentLoader*);
    137 
    138         virtual void updateGlobalHistory();
    139         virtual void updateGlobalHistoryRedirectLinks();
    140         virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
    141         virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
    142         virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
    143         virtual void dispatchDidChangeBackForwardIndex() const;
    144 
    145         virtual void didDisplayInsecureContent();
    146         virtual void didRunInsecureContent(WebCore::SecurityOrigin*);
    147 
    148         virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
    149         virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
    150         virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
    151         virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&);
    152 
    153         virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
    154         virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
    155         virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
    156 
    157         virtual bool shouldFallBack(const WebCore::ResourceError&);
    158 
    159         virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
    160         virtual bool canShowMIMEType(const WebCore::String&) const;
    161         virtual bool representationExistsForURLScheme(const WebCore::String&) const;
    162         virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String&) const;
    163 
    164         virtual void frameLoadCompleted();
    165         virtual void saveViewStateToItem(WebCore::HistoryItem*);
    166         virtual void restoreViewState();
    167         virtual void provisionalLoadStarted();
    168         virtual void didFinishLoad();
    169         virtual void prepareForDataSourceReplacement();
    170 
    171         virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
    172         virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
    173 
    174         virtual WebCore::String userAgent(const WebCore::KURL&);
    175 
    176         virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
    177         virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
    178         virtual void transitionToCommittedForNewPage();
    179 
    180         virtual bool canCachePage() const;
    181         virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
    182     private:
    183         WebKitWebFrame* m_frame;
    184         WebCore::ResourceResponse m_response;
    185         WebKitWebPolicyDecision* m_policyDecision;
    186 
    187         bool m_loadingErrorPage;
    188 
    189         // Plugin view to redirect data to
    190         WebCore::PluginView* m_pluginView;
    191         bool m_hasSentResponseToPlugin;
    192     };
    193 
    194 }
    195 
    196 #endif
    197