[Release] Webkit2-efl-123997_0.11.86
[framework/web/webkit-efl.git] / Source / WebKit / qt / WebCoreSupport / FrameLoaderClientQt.h
1 /*
2  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
3  * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
4  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
5  * Copyright (C) 2008 Collabora Ltd. All rights reserved.
6  *
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 #ifndef FrameLoaderClientQt_h
31 #define FrameLoaderClientQt_h
32
33
34 #include "Frame.h"
35 #include "FrameLoader.h"
36 #include "FrameLoaderClient.h"
37 #include "KURL.h"
38 #include "WebCore/plugins/PluginView.h"
39 #include "ResourceError.h"
40 #include "ResourceResponse.h"
41 #include <QUrl>
42 #include <qobject.h>
43 #include <wtf/Forward.h>
44 #include <wtf/OwnPtr.h>
45 #include <wtf/RefCounted.h>
46
47 QT_BEGIN_NAMESPACE
48 class QNetworkReply;
49 QT_END_NAMESPACE
50
51 class QWebFrame;
52
53 namespace WebCore {
54
55 class AuthenticationChallenge;
56 class DocumentLoader;
57 class Element;
58 class FormState;
59 class NavigationAction;
60 class FrameNetworkingContext;
61 class ResourceLoader;
62
63 struct LoadErrorResetToken;
64
65 class FrameLoaderClientQt : public QObject, public FrameLoaderClient {
66     Q_OBJECT
67
68     friend class ::QWebFrame;
69     void callPolicyFunction(FramePolicyFunction function, PolicyAction action);
70     bool callErrorPageExtension(const ResourceError&);
71
72 signals:
73     void loadProgress(int d);
74     void titleChanged(const QString& title);
75     void unsupportedContent(QNetworkReply*);
76
77 public:
78     FrameLoaderClientQt();
79     ~FrameLoaderClientQt();
80     virtual void frameLoaderDestroyed();
81
82     void setFrame(QWebFrame* webFrame, Frame* frame);
83
84     virtual bool hasWebView() const; // mainly for assertions
85
86     virtual void makeRepresentation(DocumentLoader*) { }
87     virtual void forceLayout();
88     virtual void forceLayoutForNonHTML();
89
90     virtual void setCopiesOnScroll();
91
92     virtual void detachedFromParent2();
93     virtual void detachedFromParent3();
94
95     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
96
97     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
98     virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier);
99     virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
100     virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&);
101     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceResponse&);
102     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long, int);
103     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long);
104     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceError&);
105     virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int);
106
107     virtual void dispatchDidHandleOnloadEvents();
108     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
109     virtual void dispatchDidCancelClientRedirect();
110     virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate);
111     virtual void dispatchDidChangeLocationWithinPage();
112     virtual void dispatchDidPushStateWithinPage();
113     virtual void dispatchDidReplaceStateWithinPage();
114     virtual void dispatchDidPopStateWithinPage();
115     virtual void dispatchWillClose();
116     virtual void dispatchDidReceiveIcon();
117     virtual void dispatchDidStartProvisionalLoad();
118     virtual void dispatchDidReceiveTitle(const StringWithDirection&);
119     virtual void dispatchDidChangeIcons(WebCore::IconType);
120     virtual void dispatchDidCommitLoad();
121     virtual void dispatchDidFailProvisionalLoad(const ResourceError&);
122     virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
123     virtual void dispatchDidFinishDocumentLoad();
124     virtual void dispatchDidFinishLoad();
125     virtual void dispatchDidFirstLayout();
126     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
127
128     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
129     virtual void dispatchShow();
130
131     virtual void dispatchDecidePolicyForResponse(FramePolicyFunction function, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&);
132     virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>, const WTF::String&);
133     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>);
134     virtual void cancelPolicyCheck();
135
136     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
137
138     virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) { }
139     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>);
140
141     virtual void revertToProvisionalState(DocumentLoader*) { }
142     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&);
143
144     virtual void postProgressStartedNotification();
145     virtual void postProgressEstimateChangedNotification();
146     virtual void postProgressFinishedNotification();
147
148     virtual void setMainFrameDocumentReady(bool);
149
150     virtual void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String());
151
152     virtual void willChangeTitle(DocumentLoader*);
153     virtual void didChangeTitle(DocumentLoader*);
154
155     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
156     virtual void finishedLoading(DocumentLoader*);
157
158     virtual void updateGlobalHistory();
159     virtual void updateGlobalHistoryRedirectLinks();
160     virtual bool shouldGoToHistoryItem(HistoryItem*) const;
161     virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const;
162     virtual void didDisplayInsecureContent();
163     virtual void didRunInsecureContent(SecurityOrigin*, const KURL&);
164     virtual void didDetectXSS(const KURL&, bool didBlockEntirePage);
165
166     virtual ResourceError cancelledError(const ResourceRequest&);
167     virtual ResourceError blockedError(const ResourceRequest&);
168     virtual ResourceError cannotShowURLError(const ResourceRequest&);
169     virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&);
170
171     virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&);
172     virtual ResourceError fileDoesNotExistError(const ResourceResponse&);
173     virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&);
174
175     virtual bool shouldFallBack(const ResourceError&);
176
177     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
178     virtual bool canShowMIMEType(const String& MIMEType) const;
179     virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const;
180     virtual bool representationExistsForURLScheme(const String& URLScheme) const;
181     virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const;
182
183     virtual void frameLoadCompleted();
184     virtual void saveViewStateToItem(WebCore::HistoryItem*);
185     virtual void restoreViewState();
186     virtual void provisionalLoadStarted();
187     virtual void didFinishLoad();
188     virtual void prepareForDataSourceReplacement();
189
190     virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
191     virtual void setTitle(const StringWithDirection&, const KURL&);
192
193     virtual String userAgent(const WebCore::KURL&);
194
195     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
196     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
197     virtual void transitionToCommittedForNewPage();
198
199     virtual void didSaveToPageCache();
200     virtual void didRestoreFromPageCache();
201
202     virtual void dispatchDidBecomeFrameset(bool);
203
204     virtual bool canCachePage() const;
205     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
206
207     virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
208                                const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
209     virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool);
210     virtual void redirectDataToPlugin(Widget* pluginWidget);
211
212     virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
213
214     virtual ObjectContentType objectContentType(const KURL&, const String& mimeTypeIn, bool shouldPreferPlugInsForImages);
215     virtual String overrideMediaType() const;
216
217     virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*);
218     virtual void documentElementAvailable();
219     virtual void didPerformFirstNavigation() const;
220
221     virtual void registerForIconNotification(bool);
222
223     QString chooseFile(const QString& oldFile);
224
225     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext();
226
227     const KURL& lastRequestedUrl() const { return m_lastRequestedUrl; }
228
229     static bool dumpFrameLoaderCallbacks;
230     static bool dumpProgressFinishedCallback;
231     static bool dumpUserGestureInFrameLoaderCallbacks;
232     static bool dumpResourceLoadCallbacks;
233     static bool dumpResourceResponseMIMETypes;
234     static bool dumpWillCacheResponseCallbacks;
235     static QString dumpResourceLoadCallbacksPath;
236     static bool sendRequestReturnsNullOnRedirect;
237     static bool sendRequestReturnsNull;
238     static QStringList sendRequestClearHeaders;
239     static bool policyDelegateEnabled;
240     static bool policyDelegatePermissive;
241     static bool deferMainResourceDataLoad;
242     static bool dumpHistoryCallbacks;
243     static QMap<QString, QString> URLsToRedirect;
244
245 private slots:
246     void onIconLoadedForPageURL(const QString&);
247
248 private:
249     void emitLoadStarted();
250     void emitLoadFinished(bool ok);
251
252     Frame *m_frame;
253     QWebFrame *m_webFrame;
254     ResourceResponse m_response;
255
256     // Plugin view to redirect data to
257     WebCore::PluginView* m_pluginView;
258     bool m_hasSentResponseToPlugin;
259
260     KURL m_lastRequestedUrl;
261     bool m_isOriginatingLoad;
262 };
263
264 }
265
266 #endif