• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef WebFrameLoaderClient_h
27 #define WebFrameLoaderClient_h
28 
29 #include <WebCore/FrameLoaderClient.h>
30 
31 namespace WebKit {
32 
33 class PluginView;
34 class WebFrame;
35 
36 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
37 public:
38     WebFrameLoaderClient(WebFrame*);
39     ~WebFrameLoaderClient();
40 
webFrame()41     WebFrame* webFrame() const { return m_frame; }
42 
frameHasCustomRepresentation()43     bool frameHasCustomRepresentation() const { return m_frameHasCustomRepresentation; }
44 
45 private:
46     virtual void frameLoaderDestroyed();
47 
48     virtual bool hasHTMLView() const;
49     virtual bool hasWebView() const;
50 
51     virtual void makeRepresentation(WebCore::DocumentLoader*);
52     virtual void forceLayout();
53     virtual void forceLayoutForNonHTML();
54 
55     virtual void setCopiesOnScroll();
56 
57     virtual void detachedFromParent2();
58     virtual void detachedFromParent3();
59 
60     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
61 
62     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
63     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
64     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
65     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
66 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
67     virtual bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&);
68 #endif
69     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
70     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength);
71     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
72     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
73     virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length);
74     virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const WTF::String&);
75 
76     virtual void dispatchDidHandleOnloadEvents();
77     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
78     virtual void dispatchDidCancelClientRedirect();
79     virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
80     virtual void dispatchDidChangeLocationWithinPage();
81     virtual void dispatchDidPushStateWithinPage();
82     virtual void dispatchDidReplaceStateWithinPage();
83     virtual void dispatchDidPopStateWithinPage();
84     virtual void dispatchWillClose();
85     virtual void dispatchDidReceiveIcon();
86     virtual void dispatchDidStartProvisionalLoad();
87     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
88     virtual void dispatchDidChangeIcons();
89     virtual void dispatchDidCommitLoad();
90     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
91     virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
92     virtual void dispatchDidFinishDocumentLoad();
93     virtual void dispatchDidFinishLoad();
94     virtual void dispatchDidFirstLayout();
95     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
96 
97     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
98     virtual void dispatchShow();
99 
100     virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&);
101     virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const String& frameName);
102     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
103     virtual void cancelPolicyCheck();
104 
105     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
106 
dispatchWillSendSubmitEvent(WebCore::HTMLFormElement *)107     virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { }
108     virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>);
109 
110     virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
111     virtual void revertToProvisionalState(WebCore::DocumentLoader*);
112     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
113 
114     // Maybe these should go into a ProgressTrackerClient some day
115     virtual void willChangeEstimatedProgress();
116     virtual void didChangeEstimatedProgress();
117     virtual void postProgressStartedNotification();
118     virtual void postProgressEstimateChangedNotification();
119     virtual void postProgressFinishedNotification();
120 
121     virtual void setMainFrameDocumentReady(bool);
122 
123     virtual void startDownload(const WebCore::ResourceRequest&);
124 
125     virtual void willChangeTitle(WebCore::DocumentLoader*);
126     virtual void didChangeTitle(WebCore::DocumentLoader*);
127 
128     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
129     virtual void finishedLoading(WebCore::DocumentLoader*);
130 
131     virtual void updateGlobalHistory();
132     virtual void updateGlobalHistoryRedirectLinks();
133 
134     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
135     virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
136     virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
137     virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
138     virtual void dispatchDidChangeBackForwardIndex() const;
139 
140     virtual void didDisplayInsecureContent();
141     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
142 
143     virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
144     virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
145     virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
146     virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&);
147 
148     virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
149     virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
150     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
151 
152     virtual bool shouldFallBack(const WebCore::ResourceError&);
153 
154     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
155     virtual bool canShowMIMEType(const String& MIMEType) const;
156     virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const;
157     virtual bool representationExistsForURLScheme(const String& URLScheme) const;
158     virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const;
159 
160     virtual void frameLoadCompleted();
161     virtual void saveViewStateToItem(WebCore::HistoryItem*);
162     virtual void restoreViewState();
163     virtual void provisionalLoadStarted();
164     virtual void didFinishLoad();
165     virtual void prepareForDataSourceReplacement();
166 
167     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
168     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
169 
170     virtual String userAgent(const WebCore::KURL&);
171 
172     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
173     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
174     virtual void transitionToCommittedForNewPage();
175 
176     virtual void didSaveToPageCache();
177     virtual void didRestoreFromPageCache();
178 
179     virtual void dispatchDidBecomeFrameset(bool);
180 
181     virtual bool canCachePage() const;
182     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
183 
184     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
185                                           const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
186     virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
187     virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
188 
189     virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually);
190     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
191 
192     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
193 
194     virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
195     virtual String overrideMediaType() const;
196 
197     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
198 
199     virtual void documentElementAvailable();
200     virtual void didPerformFirstNavigation() const; // "Navigation" here means a transition from one page to another that ends up in the back/forward list.
201 
202     virtual void registerForIconNotification(bool listen = true);
203 
204 #if PLATFORM(MAC)
205     virtual RemoteAXObjectRef accessibilityRemoteObject();
206 
207 #if ENABLE(MAC_JAVA_BRIDGE)
208     virtual jobject javaApplet(NSView*);
209 #endif
210     virtual NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const;
211 #endif
212 #if USE(CFNETWORK)
213     virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
214 #endif
215 
216     virtual bool shouldUsePluginDocument(const String& /*mimeType*/) const;
217 
218     virtual void didChangeScrollOffset();
219 
220     virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
221 
222     WebFrame* m_frame;
223     RefPtr<PluginView> m_pluginView;
224     bool m_hasSentResponseToPluginView;
225     bool m_frameHasCustomRepresentation;
226 };
227 
228 } // namespace WebKit
229 
230 #endif // WebFrameLoaderClient_h
231