1 /* 2 * Copyright (C) 2006 Zack Rusin <zack (at) kde.org> 3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 5 * Copyright (C) 2008 Collabora Ltd. All rights reserved. 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 #ifndef FrameLoaderClientQt_H 31 #define FrameLoaderClientQt_H 32 33 #include <qobject.h> 34 #include <QUrl> 35 36 #include "FrameLoaderClient.h" 37 #include "KURL.h" 38 #include "Frame.h" 39 #include "FrameLoader.h" 40 #include "RefCounted.h" 41 #include "ResourceResponse.h" 42 #include "PluginView.h" 43 class QWebFrame; 44 45 namespace WebCore { 46 47 class AuthenticationChallenge; 48 class DocumentLoader; 49 class Element; 50 class FormState; 51 class NavigationAction; 52 class String; 53 class ResourceLoader; 54 55 struct LoadErrorResetToken; 56 57 class FrameLoaderClientQt : public QObject, public FrameLoaderClient { 58 Q_OBJECT 59 60 friend class ::QWebFrame; 61 void callPolicyFunction(FramePolicyFunction function, PolicyAction action); 62 void callErrorPageExtension(const ResourceError&); 63 signals: 64 void loadStarted(); 65 void loadProgress(int d); 66 void loadFinished(bool); 67 void titleChanged(const QString& title); 68 69 public: 70 FrameLoaderClientQt(); 71 ~FrameLoaderClientQt(); 72 virtual void frameLoaderDestroyed(); 73 74 void setFrame(QWebFrame* webFrame, Frame* frame); 75 QWebFrame* webFrame() const; 76 77 virtual bool hasWebView() const; // mainly for assertions 78 79 virtual void makeRepresentation(DocumentLoader*); 80 virtual void forceLayout(); 81 virtual void forceLayoutForNonHTML(); 82 83 virtual void setCopiesOnScroll(); 84 85 virtual void detachedFromParent2(); 86 virtual void detachedFromParent3(); 87 88 virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); 89 90 virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, const WebCore::ResourceResponse&); 91 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier); 92 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 93 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 94 virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceResponse&); 95 virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long, int); 96 virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long); 97 virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceError&); 98 virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int); 99 virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const WebCore::ScriptString& sourceString); 100 101 virtual void dispatchDidHandleOnloadEvents(); 102 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 103 virtual void dispatchDidCancelClientRedirect(); 104 virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate); 105 virtual void dispatchDidChangeLocationWithinPage(); 106 virtual void dispatchDidPushStateWithinPage(); 107 virtual void dispatchDidReplaceStateWithinPage(); 108 virtual void dispatchDidPopStateWithinPage(); 109 virtual void dispatchWillClose(); 110 virtual void dispatchDidReceiveIcon(); 111 virtual void dispatchDidStartProvisionalLoad(); 112 virtual void dispatchDidReceiveTitle(const String& title); 113 virtual void dispatchDidCommitLoad(); 114 virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 115 virtual void dispatchDidFailLoad(const WebCore::ResourceError&); 116 virtual void dispatchDidFinishDocumentLoad(); 117 virtual void dispatchDidFinishLoad(); 118 virtual void dispatchDidFirstLayout(); 119 virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 120 121 virtual WebCore::Frame* dispatchCreatePage(); 122 virtual void dispatchShow(); 123 124 virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WebCore::String&, const WebCore::ResourceRequest&); 125 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>, const WebCore::String&); 126 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>); 127 virtual void cancelPolicyCheck(); 128 129 virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&); 130 131 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>); 132 133 virtual void dispatchDidLoadMainResource(DocumentLoader*); 134 virtual void revertToProvisionalState(DocumentLoader*); 135 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 136 137 virtual void postProgressStartedNotification(); 138 virtual void postProgressEstimateChangedNotification(); 139 virtual void postProgressFinishedNotification(); 140 141 virtual void setMainFrameDocumentReady(bool); 142 143 virtual void startDownload(const WebCore::ResourceRequest&); 144 145 virtual void willChangeTitle(DocumentLoader*); 146 virtual void didChangeTitle(DocumentLoader*); 147 148 virtual void committedLoad(WebCore::DocumentLoader*, const char*, int); 149 virtual void finishedLoading(DocumentLoader*); 150 151 virtual void updateGlobalHistory(); 152 virtual void updateGlobalHistoryRedirectLinks(); 153 virtual bool shouldGoToHistoryItem(HistoryItem*) const; 154 virtual void dispatchDidAddBackForwardItem(HistoryItem*) const; 155 virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const; 156 virtual void dispatchDidChangeBackForwardIndex() const; 157 virtual void didDisplayInsecureContent(); 158 virtual void didRunInsecureContent(SecurityOrigin*); 159 160 virtual ResourceError cancelledError(const ResourceRequest&); 161 virtual ResourceError blockedError(const ResourceRequest&); 162 virtual ResourceError cannotShowURLError(const ResourceRequest&); 163 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&); 164 165 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 166 virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 167 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 168 169 virtual bool shouldFallBack(const ResourceError&); 170 171 virtual bool canHandleRequest(const WebCore::ResourceRequest&) const; 172 virtual bool canShowMIMEType(const String& MIMEType) const; 173 virtual bool representationExistsForURLScheme(const String& URLScheme) const; 174 virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const; 175 176 virtual void frameLoadCompleted(); 177 virtual void saveViewStateToItem(WebCore::HistoryItem*); 178 virtual void restoreViewState(); 179 virtual void provisionalLoadStarted(); 180 virtual void didFinishLoad(); 181 virtual void prepareForDataSourceReplacement(); 182 183 virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); 184 virtual void setTitle(const String& title, const KURL&); 185 186 virtual String userAgent(const WebCore::KURL&); 187 188 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); 189 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); 190 virtual void transitionToCommittedForNewPage(); 191 192 virtual bool canCachePage() const; 193 virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&); 194 195 virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, 196 const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) ; 197 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool); 198 virtual void redirectDataToPlugin(Widget* pluginWidget); 199 200 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues); 201 202 virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType); 203 virtual String overrideMediaType() const; 204 205 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*); 206 virtual void documentElementAvailable(); 207 virtual void didPerformFirstNavigation() const; 208 209 virtual void registerForIconNotification(bool); 210 211 QString chooseFile(const QString& oldFile); 212 213 private: 214 Frame *m_frame; 215 QWebFrame *m_webFrame; 216 ResourceResponse m_response; 217 bool m_firstData; 218 219 // Plugin view to redirect data to 220 WebCore::PluginView* m_pluginView; 221 bool m_hasSentResponseToPlugin; 222 223 ResourceError m_loadError; 224 }; 225 226 } 227 228 #endif 229