2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #ifndef WebFrameLoaderClient_h
30 #define WebFrameLoaderClient_h
32 #pragma warning(push, 0)
33 #include <WebCore/FrameLoaderClient.h>
37 class PluginManualLoader;
41 template <typename T> class COMPtr;
44 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
46 virtual bool hasWebView() const;
48 virtual void forceLayout();
50 virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
52 virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
53 virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
54 virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
55 virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
56 virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
57 virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived);
58 virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
59 virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
60 virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
62 virtual void dispatchDidHandleOnloadEvents();
63 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
64 virtual void dispatchDidCancelClientRedirect();
65 virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
66 virtual void dispatchDidChangeLocationWithinPage();
67 virtual void dispatchDidPushStateWithinPage();
68 virtual void dispatchDidReplaceStateWithinPage();
69 virtual void dispatchDidPopStateWithinPage();
70 virtual void dispatchWillClose();
71 virtual void dispatchDidReceiveIcon();
72 virtual void dispatchDidStartProvisionalLoad();
73 virtual void dispatchDidReceiveTitle(const WTF::String&);
74 virtual void dispatchDidChangeIcons();
75 virtual void dispatchDidCommitLoad();
76 virtual void dispatchDidFinishDocumentLoad();
77 virtual void dispatchDidFinishLoad();
78 virtual void dispatchDidFirstLayout();
79 virtual void dispatchDidFirstVisuallyNonEmptyLayout();
81 virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
82 virtual void dispatchShow();
84 virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
85 virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
87 virtual void postProgressStartedNotification();
88 virtual void postProgressEstimateChangedNotification();
89 virtual void postProgressFinishedNotification();
91 virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
92 virtual void finishedLoading(WebCore::DocumentLoader*);
94 virtual void updateGlobalHistory();
95 virtual void updateGlobalHistoryRedirectLinks();
96 virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
97 virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
98 virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
99 virtual void dispatchDidChangeBackForwardIndex() const;
101 virtual void didDisplayInsecureContent();
102 virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
104 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
105 virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
107 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
108 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
109 virtual void transitionToCommittedForNewPage();
111 virtual void didSaveToPageCache();
112 virtual void didRestoreFromPageCache();
114 virtual void dispatchDidBecomeFrameset(bool);
116 virtual bool canCachePage() const;
118 virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
119 const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
120 virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
121 virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
122 virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually);
123 virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
125 virtual bool shouldUsePluginDocument(const WTF::String& mimeType) const;
127 virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
130 WebFrameLoaderClient(WebFrame*);
131 ~WebFrameLoaderClient();
134 PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer);
135 WebHistory* webHistory() const;
137 WebFrame* m_webFrame;
139 // Points to the manual loader that data should be redirected to.
140 WebCore::PluginManualLoader* m_manualLoader;
142 bool m_hasSentResponseToPlugin;
145 #endif // WebFrameLoaderClient_h