• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2006, 2007, 2008 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  *
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.
16  *
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.
27  */
28 
29 #ifndef WebFrameLoaderClient_h
30 #define WebFrameLoaderClient_h
31 
32 #include <WebCore/FrameLoaderClient.h>
33 
34 namespace WebCore {
35     class PluginManualLoader;
36     class PluginView;
37 }
38 
39 template <typename T> class COMPtr;
40 class WebFrame;
41 class WebHistory;
42 
43 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
44 public:
45     virtual bool hasWebView() const;
46 
47     virtual void forceLayout();
48 
49     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
50 
51     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
52     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
53     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
54     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
55     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
56     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength);
57     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
58     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
59     virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
60 
61     virtual void dispatchDidHandleOnloadEvents();
62     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
63     virtual void dispatchDidCancelClientRedirect();
64     virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
65     virtual void dispatchDidChangeLocationWithinPage();
66     virtual void dispatchDidPushStateWithinPage();
67     virtual void dispatchDidReplaceStateWithinPage();
68     virtual void dispatchDidPopStateWithinPage();
69     virtual void dispatchWillClose();
70     virtual void dispatchDidReceiveIcon();
71     virtual void dispatchDidStartProvisionalLoad();
72     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
73     virtual void dispatchDidChangeIcons();
74     virtual void dispatchDidCommitLoad();
75     virtual void dispatchDidFinishDocumentLoad();
76     virtual void dispatchDidFinishLoad();
77     virtual void dispatchDidFirstLayout();
78     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
79 
80     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
81     virtual void dispatchShow();
82 
83     virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
84     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
85 
86     virtual void postProgressStartedNotification();
87     virtual void postProgressEstimateChangedNotification();
88     virtual void postProgressFinishedNotification();
89 
90     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
91     virtual void finishedLoading(WebCore::DocumentLoader*);
92 
93     virtual void updateGlobalHistory();
94     virtual void updateGlobalHistoryRedirectLinks();
95     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
96     virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
97     virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
98     virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
99     virtual void dispatchDidChangeBackForwardIndex() const;
100     virtual void updateGlobalHistoryItemForPage();
101 
102     virtual void didDisplayInsecureContent();
103     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
104 
105     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
106     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
107 
108     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
109     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
110     virtual void transitionToCommittedForNewPage();
111 
112     virtual void didSaveToPageCache();
113     virtual void didRestoreFromPageCache();
114 
115     virtual void dispatchDidBecomeFrameset(bool);
116 
117     virtual bool canCachePage() const;
118 
119     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
120                                const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
121     virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
122     virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
123     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);
124     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
125 
126     virtual bool shouldUsePluginDocument(const WTF::String& mimeType) const;
127 
128     virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
129 
130 protected:
131     WebFrameLoaderClient(WebFrame*);
132     ~WebFrameLoaderClient();
133 
134 private:
135     PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer);
136     WebHistory* webHistory() const;
137 
138     WebFrame* m_webFrame;
139 
140     // Points to the manual loader that data should be redirected to.
141     WebCore::PluginManualLoader* m_manualLoader;
142 
143     bool m_hasSentResponseToPlugin;
144 };
145 
146 #endif // WebFrameLoaderClient_h
147