Reviewed by Kevin Ollivier.
[WebKit-https.git] / WebKit / wx / WebKitSupport / FrameLoaderClientWx.h
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@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 "RefCounted.h"
35 #include "ResourceResponse.h"
36
37 class wxWebView;
38
39 namespace WebCore {
40
41     class AuthenticationChallenge;
42     class DocumentLoader;
43     class Element;
44     class FormState;
45     class NavigationAction;
46     class String;
47     class ResourceLoader;
48
49     struct LoadErrorResetToken;
50
51     class FrameLoaderClientWx : public FrameLoaderClient, public RefCounted<FrameLoaderClientWx> {
52     public:
53         FrameLoaderClientWx();
54         ~FrameLoaderClientWx();
55         void setFrame(Frame *frame);
56         void setWebView(wxWebView *webview);
57         virtual void detachFrameLoader();
58
59         virtual void ref();
60         virtual void deref();
61
62         virtual bool hasWebView() const; // mainly for assertions
63         virtual bool hasFrameView() const; // ditto
64
65         virtual bool hasBackForwardList() const;
66         virtual void resetBackForwardList();
67
68         virtual bool provisionalItemIsTarget() const;
69
70         virtual void makeRepresentation(DocumentLoader*);
71         virtual void forceLayout();
72         virtual void forceLayoutForNonHTML();
73
74         virtual void updateHistoryForCommit();
75
76         virtual void updateHistoryForBackForwardNavigation();
77         virtual void updateHistoryForReload();
78         virtual void updateHistoryForStandardLoad();
79         virtual void updateHistoryForInternalLoad();
80
81         virtual void updateHistoryAfterClientRedirect();
82
83         virtual void setCopiesOnScroll();
84
85         virtual LoadErrorResetToken* tokenForLoadErrorReset();
86         virtual void resetAfterLoadError(LoadErrorResetToken*);
87         virtual void doNotResetAfterLoadError(LoadErrorResetToken*);
88
89         virtual void willCloseDocument();
90
91         virtual void detachedFromParent1();
92         virtual void detachedFromParent2();
93         virtual void detachedFromParent3();
94         virtual void detachedFromParent4();
95
96         virtual void loadedFromCachedPage();
97
98         virtual void frameLoaderDestroyed();
99         virtual bool canHandleRequest(const ResourceRequest&) const;
100
101         virtual void dispatchDidHandleOnloadEvents();
102         virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
103         virtual void dispatchDidCancelClientRedirect();
104         virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate);
105         virtual void dispatchDidChangeLocationWithinPage();
106         virtual void dispatchWillClose();
107         virtual void dispatchDidReceiveIcon();
108         virtual void dispatchDidStartProvisionalLoad();
109         virtual void dispatchDidReceiveTitle(const String& title);
110         virtual void dispatchDidCommitLoad();
111         virtual void dispatchDidFinishDocumentLoad();
112         virtual void dispatchDidFinishLoad();
113         virtual void dispatchDidFirstLayout();
114
115         virtual void dispatchShow();
116         virtual void cancelPolicyCheck();
117
118         virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>);
119
120         virtual void dispatchDidLoadMainResource(DocumentLoader*);
121         virtual void revertToProvisionalState(DocumentLoader*);
122
123         virtual void postProgressStartedNotification();
124         virtual void postProgressEstimateChangedNotification();
125         virtual void postProgressFinishedNotification();
126
127         virtual void progressStarted();
128         virtual void progressCompleted();
129         virtual void setMainFrameDocumentReady(bool);
130         virtual void willChangeTitle(DocumentLoader*);
131         virtual void didChangeTitle(DocumentLoader*);
132         virtual void finishedLoading(DocumentLoader*);
133
134         virtual bool canShowMIMEType(const String& MIMEType) const;
135         virtual bool representationExistsForURLScheme(const String& URLScheme) const;
136         virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const;
137
138         virtual void frameLoadCompleted();
139         virtual void saveViewStateToItem(HistoryItem*);
140         virtual void restoreViewState();
141         virtual void restoreScrollPositionAndViewState();
142         virtual void provisionalLoadStarted();
143         virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const;
144         virtual void addHistoryItemForFragmentScroll();
145         virtual void didFinishLoad();
146         virtual void prepareForDataSourceReplacement();
147         virtual void setTitle(const String& title, const KURL&);
148
149         virtual String userAgent(const KURL&);
150
151         virtual void savePlatformDataToCachedPage(WebCore::CachedPage*);
152         virtual void transitionToCommittedFromCachedPage(WebCore::CachedPage*);
153         virtual void transitionToCommittedForNewPage();
154         
155         virtual void updateGlobalHistory(const KURL&);
156         virtual bool shouldGoToHistoryItem(HistoryItem*) const;
157         virtual void saveScrollPositionAndViewStateToItem(HistoryItem*);
158         virtual bool canCachePage() const;
159         
160         virtual void setMainDocumentError(DocumentLoader*, const ResourceError&);
161         virtual void committedLoad(DocumentLoader*, const char*, int);
162         virtual ResourceError cancelledError(const ResourceRequest&);
163         virtual ResourceError blockedError(const ResourceRequest&);
164         virtual ResourceError cannotShowURLError(const ResourceRequest&);
165         virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&);
166         virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&);
167         virtual ResourceError fileDoesNotExistError(const ResourceResponse&);
168         virtual bool shouldFallBack(const ResourceError&);
169         virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&);
170         virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&);
171
172         virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&);
173         
174         virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&);
175         virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
176         virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
177         virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&);
178         virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int);
179         virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long);
180         virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&);
181
182         virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int);
183         virtual void dispatchDidFailProvisionalLoad(const ResourceError&);
184         virtual void dispatchDidFailLoad(const ResourceError&);
185         virtual Frame* dispatchCreatePage();
186         virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const String&, const ResourceRequest&);
187         virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest&, const String&);
188         virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest&);
189         virtual void dispatchUnableToImplementPolicy(const ResourceError&);
190
191         virtual void startDownload(const ResourceRequest&);
192         
193         // FIXME: This should probably not be here, but it's needed for the tests currently
194         virtual void partClearedInBegin();
195
196         virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
197                                    const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
198         virtual Widget* createPlugin(const IntSize&, Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) ;
199         virtual void redirectDataToPlugin(Widget* pluginWidget);
200         
201         virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
202
203         virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
204         virtual String overrideMediaType() const;
205
206         virtual void windowObjectCleared();
207         
208         virtual void didPerformFirstNavigation() const;
209         
210         virtual void registerForIconNotification(bool listen = true);
211
212     private:
213         Frame *m_frame;
214         wxWebView *m_webView;
215         ResourceResponse m_response;
216         bool m_firstData;
217     };
218
219 }
220
221 #endif