2 * Copyright (C) 2006 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2006, 2011 Apple Inc. All rights reserved.
4 * Copyright (C) 2008 Collabora Ltd. All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
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.
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.
30 #ifndef FrameLoaderClientGtk_h
31 #define FrameLoaderClientGtk_h
33 #include "FrameLoaderClient.h"
34 #include "ResourceResponse.h"
35 #include "PluginView.h"
36 #include "webkitwebpolicydecision.h"
38 typedef struct _WebKitWebFrame WebKitWebFrame;
42 class FrameLoaderClient : public WebCore::FrameLoaderClient {
44 FrameLoaderClient(WebKitWebFrame*);
45 virtual ~FrameLoaderClient();
46 virtual void frameLoaderDestroyed();
48 WebKitWebFrame* webFrame() const { return m_frame; }
50 virtual bool hasWebView() const;
52 virtual void makeRepresentation(WebCore::DocumentLoader*);
53 virtual void forceLayout();
54 virtual void forceLayoutForNonHTML();
56 virtual void setCopiesOnScroll();
58 virtual void detachedFromParent2();
59 virtual void detachedFromParent3();
61 virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
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 dataLength);
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);
73 virtual void dispatchDidHandleOnloadEvents();
74 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
75 virtual void dispatchDidCancelClientRedirect();
76 virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double, double);
77 virtual void dispatchDidChangeLocationWithinPage();
78 virtual void dispatchDidPushStateWithinPage();
79 virtual void dispatchDidReplaceStateWithinPage();
80 virtual void dispatchDidPopStateWithinPage();
81 virtual void dispatchWillClose();
82 virtual void dispatchDidReceiveIcon();
83 virtual void dispatchDidStartProvisionalLoad();
84 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
85 virtual void dispatchDidChangeIcons(WebCore::IconType);
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();
94 virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
95 virtual void dispatchShow();
97 virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&);
98 virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
99 virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>);
100 virtual void cancelPolicyCheck();
102 virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
104 virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { }
105 virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, WTF::PassRefPtr<WebCore::FormState>);
107 virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
108 virtual void revertToProvisionalState(WebCore::DocumentLoader*);
109 virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
111 virtual void postProgressStartedNotification();
112 virtual void postProgressEstimateChangedNotification();
113 virtual void postProgressFinishedNotification();
115 virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
116 const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
117 virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
118 virtual void transferLoadingResourceFromPage(WebCore::ResourceLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
119 virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool);
120 virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
121 virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues);
122 virtual WTF::String overrideMediaType() const;
123 virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
124 virtual void documentElementAvailable();
125 virtual void didPerformFirstNavigation() const;
127 virtual void registerForIconNotification(bool);
129 virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
131 virtual void setMainFrameDocumentReady(bool);
133 virtual void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String());
135 virtual void willChangeTitle(WebCore::DocumentLoader*);
136 virtual void didChangeTitle(WebCore::DocumentLoader*);
138 virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
139 virtual void finishedLoading(WebCore::DocumentLoader*);
141 virtual void updateGlobalHistory();
142 virtual void updateGlobalHistoryRedirectLinks();
143 virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
144 virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
145 virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
146 virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
147 virtual void dispatchDidChangeBackForwardIndex() const;
149 virtual void didDisplayInsecureContent();
150 virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
152 virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
153 virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
154 virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
155 virtual WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&);
157 virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
158 virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
159 virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
161 virtual bool shouldFallBack(const WebCore::ResourceError&);
163 virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
164 virtual bool canShowMIMEType(const WTF::String&) const;
165 virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const;
166 virtual bool representationExistsForURLScheme(const WTF::String&) const;
167 virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String&) const;
169 virtual void frameLoadCompleted();
170 virtual void saveViewStateToItem(WebCore::HistoryItem*);
171 virtual void restoreViewState();
172 virtual void provisionalLoadStarted();
173 virtual void didFinishLoad();
174 virtual void prepareForDataSourceReplacement();
176 virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
177 virtual void setTitle(const WebCore::StringWithDirection& title, const WebCore::KURL&);
179 virtual WTF::String userAgent(const WebCore::KURL&);
181 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
182 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
183 virtual void transitionToCommittedForNewPage();
185 virtual void didSaveToPageCache();
186 virtual void didRestoreFromPageCache();
188 virtual void dispatchDidBecomeFrameset(bool);
190 virtual bool canCachePage() const;
191 virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
193 virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
196 WebKitWebFrame* m_frame;
197 WebCore::ResourceResponse m_response;
198 WebKitWebPolicyDecision* m_policyDecision;
200 bool m_loadingErrorPage;
202 // Plugin view to redirect data to
203 WebCore::PluginView* m_pluginView;
204 bool m_hasSentResponseToPlugin;
206 bool m_hasRepresentation;