Home | History | Annotate | Download | only in WebKitSupport
      1 /*
      2  * Copyright (C) 2007 Kevin Ollivier <kevino (at) theolliviers.com>
      3  *
      4  * All rights reserved.
      5  *
      6  * Redistribution and use in source and binary forms, with or without
      7  * modification, are permitted provided that the following conditions
      8  * are met:
      9  * 1. Redistributions of source code must retain the above copyright
     10  *    notice, this list of conditions and the following disclaimer.
     11  * 2. Redistributions in binary form must reproduce the above copyright
     12  *    notice, this list of conditions and the following disclaimer in the
     13  *    documentation and/or other materials provided with the distribution.
     14  *
     15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26  */
     27 
     28 #ifndef FrameLoaderClientWx_H
     29 #define FrameLoaderClientWx_H
     30 
     31 #include "FrameLoaderClient.h"
     32 #include "FrameLoader.h"
     33 #include "KURL.h"
     34 #include "PluginView.h"
     35 #include "ResourceResponse.h"
     36 #include "HTMLPlugInElement.h"
     37 
     38 class wxWebFrame;
     39 class wxWebView;
     40 
     41 namespace WebCore {
     42 
     43     class AuthenticationChallenge;
     44     class DocumentLoader;
     45     class Element;
     46     class FormState;
     47     class NavigationAction;
     48     class String;
     49     class ResourceLoader;
     50 
     51     struct LoadErrorResetToken;
     52 
     53     class FrameLoaderClientWx : public FrameLoaderClient {
     54     public:
     55         FrameLoaderClientWx();
     56         ~FrameLoaderClientWx();
     57         void setFrame(wxWebFrame *frame);
     58         void setWebView(wxWebView *webview);
     59 
     60         virtual bool hasWebView() const; // mainly for assertions
     61 
     62         virtual bool hasBackForwardList() const;
     63         virtual void resetBackForwardList();
     64 
     65         virtual bool provisionalItemIsTarget() const;
     66 
     67         virtual void makeRepresentation(DocumentLoader*);
     68         virtual void forceLayout();
     69         virtual void forceLayoutForNonHTML();
     70 
     71         virtual void updateHistoryForCommit();
     72 
     73         virtual void updateHistoryForBackForwardNavigation();
     74         virtual void updateHistoryForReload();
     75         virtual void updateHistoryForStandardLoad();
     76         virtual void updateHistoryForInternalLoad();
     77 
     78         virtual void updateHistoryAfterClientRedirect();
     79 
     80         virtual void setCopiesOnScroll();
     81 
     82         virtual LoadErrorResetToken* tokenForLoadErrorReset();
     83         virtual void resetAfterLoadError(LoadErrorResetToken*);
     84         virtual void doNotResetAfterLoadError(LoadErrorResetToken*);
     85 
     86         virtual void willCloseDocument();
     87 
     88         virtual void detachedFromParent2();
     89         virtual void detachedFromParent3();
     90 
     91         virtual void frameLoaderDestroyed();
     92         virtual bool canHandleRequest(const ResourceRequest&) const;
     93 
     94         virtual void dispatchDidHandleOnloadEvents();
     95         virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
     96         virtual void dispatchDidCancelClientRedirect();
     97         virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate);
     98         virtual void dispatchDidChangeLocationWithinPage();
     99         virtual void dispatchDidPushStateWithinPage();
    100         virtual void dispatchDidReplaceStateWithinPage();
    101         virtual void dispatchDidPopStateWithinPage();
    102         virtual void dispatchWillClose();
    103         virtual void dispatchDidReceiveIcon();
    104         virtual void dispatchDidStartProvisionalLoad();
    105         virtual void dispatchDidReceiveTitle(const String& title);
    106         virtual void dispatchDidCommitLoad();
    107         virtual void dispatchDidFinishDocumentLoad();
    108         virtual void dispatchDidFinishLoad();
    109         virtual void dispatchDidFirstLayout();
    110         virtual void dispatchDidFirstVisuallyNonEmptyLayout();
    111 
    112         virtual void dispatchShow();
    113         virtual void cancelPolicyCheck();
    114 
    115         virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>);
    116 
    117         virtual void dispatchDidLoadMainResource(DocumentLoader*);
    118         virtual void revertToProvisionalState(DocumentLoader*);
    119 
    120         virtual void postProgressStartedNotification();
    121         virtual void postProgressEstimateChangedNotification();
    122         virtual void postProgressFinishedNotification();
    123 
    124         virtual void progressStarted();
    125         virtual void progressCompleted();
    126         virtual void setMainFrameDocumentReady(bool);
    127         virtual void willChangeTitle(DocumentLoader*);
    128         virtual void didChangeTitle(DocumentLoader*);
    129         virtual void finishedLoading(DocumentLoader*);
    130 
    131         virtual bool canShowMIMEType(const String& MIMEType) const;
    132         virtual bool representationExistsForURLScheme(const String& URLScheme) const;
    133         virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const;
    134 
    135         virtual void frameLoadCompleted();
    136         virtual void saveViewStateToItem(HistoryItem*);
    137         virtual void restoreViewState();
    138         virtual void restoreScrollPositionAndViewState();
    139         virtual void provisionalLoadStarted();
    140         virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const;
    141         virtual void addHistoryItemForFragmentScroll();
    142         virtual void didFinishLoad();
    143         virtual void prepareForDataSourceReplacement();
    144         virtual void setTitle(const String& title, const KURL&);
    145 
    146         virtual String userAgent(const KURL&);
    147 
    148         virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
    149         virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
    150         virtual void transitionToCommittedForNewPage();
    151 
    152         virtual void updateGlobalHistory();
    153         virtual void updateGlobalHistoryRedirectLinks();
    154         virtual bool shouldGoToHistoryItem(HistoryItem*) const;
    155         virtual void dispatchDidAddBackForwardItem(HistoryItem*) const;
    156         virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const;
    157         virtual void dispatchDidChangeBackForwardIndex() const;
    158         virtual void saveScrollPositionAndViewStateToItem(HistoryItem*);
    159         virtual bool canCachePage() const;
    160 
    161         virtual void didDisplayInsecureContent();
    162         virtual void didRunInsecureContent(SecurityOrigin*);
    163 
    164         virtual void setMainDocumentError(DocumentLoader*, const ResourceError&);
    165         virtual void committedLoad(DocumentLoader*, const char*, int);
    166         virtual ResourceError cancelledError(const ResourceRequest&);
    167         virtual ResourceError blockedError(const ResourceRequest&);
    168         virtual ResourceError cannotShowURLError(const ResourceRequest&);
    169         virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&);
    170         virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&);
    171         virtual ResourceError fileDoesNotExistError(const ResourceResponse&);
    172         virtual bool shouldFallBack(const ResourceError&);
    173         virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&);
    174         virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&);
    175 
    176         virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&);
    177 
    178         virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&);
    179         virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier);
    180         virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
    181         virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
    182         virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&);
    183         virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int);
    184         virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long);
    185         virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&);
    186         virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int);
    187         virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const ScriptString&);
    188 
    189         virtual void dispatchDidFailProvisionalLoad(const ResourceError&);
    190         virtual void dispatchDidFailLoad(const ResourceError&);
    191         virtual Frame* dispatchCreatePage();
    192         virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const String&, const ResourceRequest&);
    193         virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&);
    194         virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>);
    195         virtual void dispatchUnableToImplementPolicy(const ResourceError&);
    196 
    197         virtual void startDownload(const ResourceRequest&);
    198 
    199         // FIXME: This should probably not be here, but it's needed for the tests currently
    200         virtual void partClearedInBegin();
    201 
    202         virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
    203                                    const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
    204         virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) ;
    205         virtual void redirectDataToPlugin(Widget* pluginWidget);
    206         virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&);
    207 
    208         virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
    209 
    210         virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
    211         virtual String overrideMediaType() const;
    212 
    213         virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*);
    214         virtual void documentElementAvailable();
    215 
    216         virtual void didPerformFirstNavigation() const;
    217 
    218         virtual void registerForIconNotification(bool listen = true);
    219 
    220         virtual bool shouldUsePluginDocument(const String &mimeType) const;
    221 
    222     private:
    223         wxWebFrame *m_webFrame;
    224         Frame* m_frame;
    225         wxWebView *m_webView;
    226         PluginView* m_pluginView;
    227         bool m_hasSentResponseToPlugin;
    228         ResourceResponse m_response;
    229         bool m_firstData;
    230     };
    231 
    232 }
    233 
    234 #endif
    235