1/*
2 * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
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 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef FrameLoaderClientWinCE_h
27#define FrameLoaderClientWinCE_h
28
29#include "FrameLoaderClient.h"
30#include "PluginView.h"
31#include "ResourceResponse.h"
32
33class WebView;
34
35namespace WebKit {
36
37class FrameLoaderClientWinCE : public WebCore::FrameLoaderClient {
38public:
39    FrameLoaderClientWinCE(WebView*);
40    virtual ~FrameLoaderClientWinCE();
41    virtual void frameLoaderDestroyed() override;
42
43    WebView* webView() const { return m_webView; }
44
45    virtual bool hasWebView() const override;
46
47    virtual void makeRepresentation(WebCore::DocumentLoader*) override;
48    virtual void forceLayout() override;
49    virtual void forceLayoutForNonHTML() override;
50
51    virtual void setCopiesOnScroll() override;
52
53    virtual void detachedFromParent2() override;
54    virtual void detachedFromParent3() override;
55
56    virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&) override;
57
58    virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long  identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
59    virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
60    virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
61    virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::AuthenticationChallenge&) override;
62    virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::ResourceResponse&) override;
63    virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
64    virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long  identifier) override;
65    virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long  identifier, const WebCore::ResourceError&) override;
66    virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) override;
67
68    virtual void dispatchDidHandleOnloadEvents() override;
69    virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
70    virtual void dispatchDidCancelClientRedirect() override;
71    virtual void dispatchWillPerformClientRedirect(const WebCore::URL&, double, double) override;
72    virtual void dispatchDidChangeLocationWithinPage() override;
73    virtual void dispatchDidPushStateWithinPage() override;
74    virtual void dispatchDidReplaceStateWithinPage() override;
75    virtual void dispatchDidPopStateWithinPage() override;
76    virtual void dispatchWillClose() override;
77    virtual void dispatchDidReceiveIcon() override;
78    virtual void dispatchDidStartProvisionalLoad() override;
79    virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) override;
80    virtual void dispatchDidChangeIcons(WebCore::IconType) override;
81    virtual void dispatchDidCommitLoad() override;
82    virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) override;
83    virtual void dispatchDidFailLoad(const WebCore::ResourceError&) override;
84    virtual void dispatchDidFinishDocumentLoad() override;
85    virtual void dispatchDidFinishLoad() override;
86    virtual void dispatchDidLayout(WebCore::LayoutMilestones) override;
87
88    virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) override;
89    virtual void dispatchShow() override;
90
91    virtual void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction) override;
92    virtual void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WTF::String& frameName, WebCore::FramePolicyFunction) override;
93    virtual void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
94    virtual void cancelPolicyCheck() override;
95
96    virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) override;
97
98    virtual void dispatchWillSendSubmitEvent(WTF::PassRefPtr<WebCore::FormState>) override { }
99    virtual void dispatchWillSubmitForm(WTF::PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
100
101    virtual void revertToProvisionalState(WebCore::DocumentLoader*) override;
102    virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) override;
103
104    virtual void postProgressStartedNotification() override;
105    virtual void postProgressEstimateChangedNotification() override;
106    virtual void postProgressFinishedNotification() override;
107
108    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::URL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
109    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::URL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool) override;
110    virtual void recreatePlugin(WebCore::Widget*) override { }
111    virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
112    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::URL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues) override;
113    virtual WTF::String overrideMediaType() const override;
114    virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&) override;
115
116    virtual void registerForIconNotification(bool) override;
117
118    virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) override;
119
120    virtual void setMainFrameDocumentReady(bool) override;
121
122    virtual void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override;
123
124    virtual void willChangeTitle(WebCore::DocumentLoader*) override;
125    virtual void didChangeTitle(WebCore::DocumentLoader*) override;
126
127    virtual void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
128    virtual void finishedLoading(WebCore::DocumentLoader*) override;
129
130    virtual void updateGlobalHistory() override;
131    virtual void updateGlobalHistoryRedirectLinks() override;
132    virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const override;
133
134    virtual void didDisplayInsecureContent() override;
135    virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&) override;
136    virtual void didDetectXSS(const WebCore::URL&, bool didBlockEntirePage) override;
137
138    virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) override;
139    virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) override;
140    virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) override;
141    virtual WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) override;
142
143    virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;
144    virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;
145    virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;
146
147    virtual bool shouldFallBack(const WebCore::ResourceError&) override;
148
149    virtual bool canHandleRequest(const WebCore::ResourceRequest&) const override;
150    virtual bool canShowMIMEType(const WTF::String&) const override;
151    virtual bool canShowMIMETypeAsHTML(const WTF::String&) const override;
152    virtual bool representationExistsForURLScheme(const WTF::String&) const override;
153    virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String&) const override;
154
155    virtual void frameLoadCompleted() override;
156    virtual void saveViewStateToItem(WebCore::HistoryItem*) override;
157    virtual void restoreViewState() override;
158    virtual void provisionalLoadStarted() override;
159    virtual void didFinishLoad() override;
160    virtual void prepareForDataSourceReplacement() override;
161
162    virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) override;
163    virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::URL&) override;
164
165    virtual WTF::String userAgent(const WebCore::URL&) override;
166
167    virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
168    virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
169    virtual void transitionToCommittedForNewPage() override;
170
171    virtual void didSaveToPageCache() override;
172    virtual void didRestoreFromPageCache() override;
173
174    virtual void dispatchDidBecomeFrameset(bool) override;
175
176    virtual bool canCachePage() const override;
177    virtual void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override;
178
179    virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext() override;
180
181    void setFrame(WebCore::Frame *frame) { m_frame = frame; }
182    WebCore::Frame *frame() { return m_frame; }
183
184private:
185    WebView* m_webView;
186    WebCore::Frame* m_frame;
187    WebCore::ResourceResponse m_response;
188
189    // Plugin view to redirect data to
190    WebCore::PluginView* m_pluginView;
191    bool m_hasSentResponseToPlugin;
192};
193
194} // namespace WebKit
195
196#endif // FrameLoaderClientWinCE_h
197