WebCore:
[WebKit-https.git] / WebCore / loader / gdk / FrameLoaderClientGdk.cpp
1 /*
2  * Copyright (C) 2006 Don Gibson <dgibson77@gmail.com>
3  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
4  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
5  * Copyright (C) 2007 Trolltech ASA
6  *
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30  
31 #include "config.h"
32 #include "FrameLoaderClientGdk.h"
33 #include "DocumentLoader.h"
34 #include "FrameGdk.h"
35 #include "FrameLoader.h"
36 #include "NotImplementedGdk.h"
37 #include "PlatformString.h"
38 #include "ResourceRequest.h"
39 #include <stdio.h>
40
41 namespace WebCore {
42
43 FrameLoaderClientGdk::FrameLoaderClientGdk()
44     : m_frame(0)
45     , m_firstData(false)
46 {
47 }
48
49 Frame* FrameLoaderClientGdk::frame()
50
51     return static_cast<Frame*>(m_frame);
52 }
53
54 String FrameLoaderClientGdk::userAgent(const KURL&)
55 {
56     return "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/420+ (KHTML, like Gecko)";
57 }
58
59 WTF::PassRefPtr<WebCore::DocumentLoader> FrameLoaderClientGdk::createDocumentLoader(const WebCore::ResourceRequest& request, const SubstituteData& substituteData)
60 {
61     RefPtr<DocumentLoader> loader = new DocumentLoader(request, substituteData);
62     return loader.release();
63 }
64
65 void FrameLoaderClientGdk::dispatchWillSubmitForm(FramePolicyFunction policyFunction,  PassRefPtr<FormState>)
66 {
67     // FIXME: This is surely too simple
68     ASSERT(frame() && policyFunction);
69     if (!frame() || !policyFunction)
70         return;
71     (frame()->loader()->*policyFunction)(PolicyUse);
72 }
73
74
75 void FrameLoaderClientGdk::committedLoad(DocumentLoader* loader, const char* data, int length)
76 {
77     if (!frame())
78         return;
79     FrameLoader *fl = loader->frameLoader();
80     fl->setEncoding(m_response.textEncodingName(), false);
81     fl->addData(data, length);
82 }
83
84 void FrameLoaderClientGdk::dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long  identifier, const AuthenticationChallenge&)
85 {
86     notImplementedGdk();
87 }
88
89 void FrameLoaderClientGdk::dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long  identifier, const AuthenticationChallenge&)
90 {
91     notImplementedGdk();
92 }
93
94 void FrameLoaderClientGdk::dispatchWillSendRequest(DocumentLoader*, unsigned long , ResourceRequest&, const ResourceResponse&)
95 {
96     notImplementedGdk();
97 }
98
99 void FrameLoaderClientGdk::assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&)
100 {
101     notImplementedGdk();   
102 }
103
104 void FrameLoaderClientGdk::postProgressStartedNotification()
105 {
106     // no progress notification for now
107 }
108
109 void FrameLoaderClientGdk::postProgressEstimateChangedNotification()
110 {
111     // no progress notification for now    
112 }
113
114 void FrameLoaderClientGdk::postProgressFinishedNotification()
115 {
116     // no progress notification for now
117 }
118
119 void FrameLoaderClientGdk::frameLoaderDestroyed()
120 {
121     m_frame = 0;
122     delete this;
123 }
124
125 void FrameLoaderClientGdk::dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse& response)
126 {
127     m_response = response;
128     m_firstData = true;
129 }
130
131 void FrameLoaderClientGdk::dispatchDecidePolicyForMIMEType(FramePolicyFunction policyFunction, const String&, const ResourceRequest&)
132 {
133     // FIXME: we need to call directly here (comment copied from Qt version)
134     ASSERT(frame() && policyFunction);
135     if (!frame() || !policyFunction)
136         return;
137     (frame()->loader()->*policyFunction)(PolicyUse);
138 }
139
140 void FrameLoaderClientGdk::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction policyFunction, const NavigationAction&, const ResourceRequest&, const String&)
141 {
142     ASSERT(frame() && policyFunction);
143     if (!frame() || !policyFunction)
144         return;
145     // FIXME: I think Qt version marshals this to another thread so when we
146     // have multi-threaded download, we might need to do the same
147     (frame()->loader()->*policyFunction)(PolicyIgnore);
148 }
149
150 void FrameLoaderClientGdk::dispatchDecidePolicyForNavigationAction(FramePolicyFunction policyFunction, const NavigationAction&, const ResourceRequest&)
151 {
152     ASSERT(frame() && policyFunction);
153     if (!frame() || !policyFunction)
154         return;
155     (frame()->loader()->*policyFunction)(PolicyUse);
156 }
157
158 Widget* FrameLoaderClientGdk::createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool)
159 {
160     notImplementedGdk();
161     return 0;
162 }
163
164 Frame* FrameLoaderClientGdk::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
165                                         const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight)
166 {
167     notImplementedGdk();
168     return 0;
169 }
170
171 void FrameLoaderClientGdk::redirectDataToPlugin(Widget* pluginWidget)
172 {
173     notImplementedGdk();
174     return;
175 }
176
177 Widget* FrameLoaderClientGdk::createJavaAppletWidget(const IntSize&, Element*, const KURL& baseURL,
178                                                     const Vector<String>& paramNames, const Vector<String>& paramValues)
179 {
180     notImplementedGdk();
181     return 0;
182 }
183
184 ObjectContentType FrameLoaderClientGdk::objectContentType(const KURL& url, const String& mimeType)
185 {
186     notImplementedGdk();
187     return ObjectContentType();
188 }
189
190 String FrameLoaderClientGdk::overrideMediaType() const
191 {
192     notImplementedGdk();
193     return String();
194 }
195
196 void FrameLoaderClientGdk::windowObjectCleared() const
197 {
198     notImplementedGdk();
199 }
200
201 void FrameLoaderClientGdk::setMainFrameDocumentReady(bool) 
202 {
203     // this is only interesting once we provide an external API for the DOM
204 }
205
206 bool FrameLoaderClientGdk::hasWebView() const
207 {
208     notImplementedGdk();
209     return true;
210 }
211
212 bool FrameLoaderClientGdk::hasFrameView() const
213 {
214     notImplementedGdk();
215     return true;
216 }
217
218 void FrameLoaderClientGdk::dispatchDidFinishLoad() 
219
220     FrameGdk *frameGdk = static_cast<FrameGdk*>(m_frame);
221     frameGdk->onDidFinishLoad();
222 }
223
224 void FrameLoaderClientGdk::frameLoadCompleted() 
225 {
226     notImplementedGdk(); 
227 }
228
229 void FrameLoaderClientGdk::saveViewStateToItem(HistoryItem*)
230 {
231     notImplementedGdk(); 
232 }
233
234 void FrameLoaderClientGdk::restoreViewState()
235 {
236     notImplementedGdk(); 
237 }
238
239 bool FrameLoaderClientGdk::shouldGoToHistoryItem(HistoryItem* item) const 
240 {
241     // FIXME: This is a very simple implementation. More sophisticated
242     // implementation would delegate the decision to a PolicyDelegate.
243     // See mac implementation for example.
244     return item != 0;
245 }
246
247 bool FrameLoaderClientGdk::privateBrowsingEnabled() const { notImplementedGdk(); return false; }
248 void FrameLoaderClientGdk::makeDocumentView() { notImplementedGdk(); }
249 void FrameLoaderClientGdk::makeRepresentation(DocumentLoader*) { notImplementedGdk(); }
250 void FrameLoaderClientGdk::forceLayout() { notImplementedGdk(); }
251 void FrameLoaderClientGdk::forceLayoutForNonHTML() { notImplementedGdk(); }
252 void FrameLoaderClientGdk::setCopiesOnScroll() { notImplementedGdk(); }
253 void FrameLoaderClientGdk::detachedFromParent1() { notImplementedGdk(); }
254 void FrameLoaderClientGdk::detachedFromParent2() { notImplementedGdk(); }
255 void FrameLoaderClientGdk::detachedFromParent3() { notImplementedGdk(); }
256 void FrameLoaderClientGdk::detachedFromParent4() { notImplementedGdk(); }
257 void FrameLoaderClientGdk::loadedFromPageCache() { notImplementedGdk(); }
258 void FrameLoaderClientGdk::dispatchDidHandleOnloadEvents() {notImplementedGdk(); }
259 void FrameLoaderClientGdk::dispatchDidReceiveServerRedirectForProvisionalLoad() { notImplementedGdk(); }
260 void FrameLoaderClientGdk::dispatchDidCancelClientRedirect() { notImplementedGdk(); }
261 void FrameLoaderClientGdk::dispatchWillPerformClientRedirect(const KURL&, double, double) { notImplementedGdk(); }
262 void FrameLoaderClientGdk::dispatchDidChangeLocationWithinPage() { notImplementedGdk(); }
263 void FrameLoaderClientGdk::dispatchWillClose() { notImplementedGdk(); }
264 void FrameLoaderClientGdk::dispatchDidReceiveIcon() { notImplementedGdk(); }
265 void FrameLoaderClientGdk::dispatchDidStartProvisionalLoad() { notImplementedGdk(); }
266 void FrameLoaderClientGdk::dispatchDidReceiveTitle(const String&) { notImplementedGdk(); }
267 void FrameLoaderClientGdk::dispatchDidCommitLoad() { notImplementedGdk(); }
268 void FrameLoaderClientGdk::dispatchDidFinishDocumentLoad() { notImplementedGdk(); }
269 void FrameLoaderClientGdk::dispatchDidFirstLayout() { notImplementedGdk(); }
270 void FrameLoaderClientGdk::dispatchShow() { notImplementedGdk(); }
271 void FrameLoaderClientGdk::cancelPolicyCheck() { notImplementedGdk(); }
272 void FrameLoaderClientGdk::dispatchDidLoadMainResource(DocumentLoader*) { notImplementedGdk(); }
273 void FrameLoaderClientGdk::revertToProvisionalState(DocumentLoader*) { notImplementedGdk(); }
274 void FrameLoaderClientGdk::clearUnarchivingState(DocumentLoader*) { notImplementedGdk(); }
275 void FrameLoaderClientGdk::willChangeTitle(DocumentLoader*) { notImplementedGdk(); }
276 void FrameLoaderClientGdk::didChangeTitle(DocumentLoader *l) { setTitle(l->title(), l->URL()); }
277 void FrameLoaderClientGdk::finishedLoading(DocumentLoader*) { notImplementedGdk(); }
278 void FrameLoaderClientGdk::finalSetupForReplace(DocumentLoader*) { notImplementedGdk(); }
279 void FrameLoaderClientGdk::setDefersLoading(bool) { notImplementedGdk(); }
280 bool FrameLoaderClientGdk::isArchiveLoadPending(ResourceLoader*) const { notImplementedGdk(); return false; }
281 void FrameLoaderClientGdk::cancelPendingArchiveLoad(ResourceLoader*) { notImplementedGdk(); }
282 void FrameLoaderClientGdk::clearArchivedResources() { notImplementedGdk(); }
283 bool FrameLoaderClientGdk::canHandleRequest(const ResourceRequest&) const { notImplementedGdk(); return false; }
284 bool FrameLoaderClientGdk::canShowMIMEType(const String&) const { notImplementedGdk(); return false; }
285 bool FrameLoaderClientGdk::representationExistsForURLScheme(const String&) const { notImplementedGdk(); return false; }
286 String FrameLoaderClientGdk::generatedMIMETypeForURLScheme(const String&) const { notImplementedGdk(); return String(); }
287 void FrameLoaderClientGdk::provisionalLoadStarted() { notImplementedGdk(); }
288 void FrameLoaderClientGdk::didFinishLoad() { notImplementedGdk(); }
289 void FrameLoaderClientGdk::prepareForDataSourceReplacement() { notImplementedGdk(); }
290 void FrameLoaderClientGdk::setTitle(const String&, const KURL&) { notImplementedGdk(); }
291 void FrameLoaderClientGdk::setDocumentViewFromPageCache(WebCore::PageCache*) { notImplementedGdk(); }
292 void FrameLoaderClientGdk::dispatchDidReceiveContentLength(DocumentLoader*, unsigned long  identifier, int lengthReceived) { notImplementedGdk(); }
293 void FrameLoaderClientGdk::dispatchDidFinishLoading(DocumentLoader*, unsigned long  identifier) { notImplementedGdk(); }
294 void FrameLoaderClientGdk::dispatchDidFailLoading(DocumentLoader*, unsigned long  identifier, const ResourceError&) { notImplementedGdk(); }
295 bool FrameLoaderClientGdk::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) { notImplementedGdk(); return false; }
296 void FrameLoaderClientGdk::dispatchDidFailProvisionalLoad(const ResourceError&) { notImplementedGdk(); }
297 void FrameLoaderClientGdk::dispatchDidFailLoad(const ResourceError&) { notImplementedGdk(); }
298 void FrameLoaderClientGdk::download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { notImplementedGdk(); }
299 ResourceError FrameLoaderClientGdk::cancelledError(const ResourceRequest&) { notImplementedGdk(); return ResourceError(); }
300 ResourceError FrameLoaderClientGdk::cannotShowURLError(const ResourceRequest&) { notImplementedGdk(); return ResourceError(); }
301 ResourceError FrameLoaderClientGdk::interruptForPolicyChangeError(const ResourceRequest&) { notImplementedGdk(); return ResourceError(); }
302 ResourceError FrameLoaderClientGdk::cannotShowMIMETypeError(const ResourceResponse&) { notImplementedGdk(); return ResourceError(); }
303 ResourceError FrameLoaderClientGdk::fileDoesNotExistError(const ResourceResponse&) { notImplementedGdk(); return ResourceError(); }
304 bool FrameLoaderClientGdk::shouldFallBack(const ResourceError&) { notImplementedGdk(); return false; }
305 bool FrameLoaderClientGdk::willUseArchive(ResourceLoader*, const ResourceRequest&, const KURL& originalURL) const { notImplementedGdk(); return false; }
306 void FrameLoaderClientGdk::saveDocumentViewToPageCache(PageCache*) { notImplementedGdk(); }
307 bool FrameLoaderClientGdk::canCachePage() const { notImplementedGdk(); return false; }
308 Frame* FrameLoaderClientGdk::dispatchCreatePage() { notImplementedGdk(); return 0; }
309 void FrameLoaderClientGdk::dispatchUnableToImplementPolicy(const ResourceError&) { notImplementedGdk(); }
310 void FrameLoaderClientGdk::setMainDocumentError(DocumentLoader*, const ResourceError&) { notImplementedGdk(); }
311 void FrameLoaderClientGdk::startDownload(const ResourceRequest&) { notImplementedGdk(); }
312 void FrameLoaderClientGdk::updateGlobalHistoryForStandardLoad(const KURL&) { notImplementedGdk(); }
313 void FrameLoaderClientGdk::updateGlobalHistoryForReload(const KURL&) { notImplementedGdk(); }
314
315 }