1 /* 2 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 4 * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> All rights reserved. 5 * 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef FrameLoaderClientHaiku_h 30 #define FrameLoaderClientHaiku_h 31 32 #include "FrameLoader.h" 33 #include "FrameLoaderClient.h" 34 #include "KURL.h" 35 #include "ResourceResponse.h" 36 37 class BMessenger; 38 class WebView; 39 40 namespace WebCore { 41 class AuthenticationChallenge; 42 class DocumentLoader; 43 class Element; 44 class FormState; 45 class NavigationAction; 46 class ResourceLoader; 47 class String; 48 49 struct LoadErrorResetToken; 50 51 class FrameLoaderClientHaiku : public FrameLoaderClient { 52 public: 53 FrameLoaderClientHaiku(); ~FrameLoaderClientHaiku()54 ~FrameLoaderClientHaiku() { } 55 void setFrame(Frame*); 56 void setWebView(WebView*); 57 virtual void detachFrameLoader(); 58 59 virtual bool hasWebView() const; 60 61 virtual bool hasBackForwardList() const; 62 virtual void resetBackForwardList(); 63 64 virtual bool provisionalItemIsTarget() const; 65 66 virtual void makeRepresentation(DocumentLoader*); 67 virtual void forceLayout(); 68 virtual void forceLayoutForNonHTML(); 69 70 virtual void updateHistoryForCommit(); 71 72 virtual void updateHistoryForBackForwardNavigation(); 73 virtual void updateHistoryForReload(); 74 virtual void updateHistoryForStandardLoad(); 75 virtual void updateHistoryForInternalLoad(); 76 77 virtual void updateHistoryAfterClientRedirect(); 78 79 virtual void setCopiesOnScroll(); 80 81 virtual LoadErrorResetToken* tokenForLoadErrorReset(); 82 virtual void resetAfterLoadError(LoadErrorResetToken*); 83 virtual void doNotResetAfterLoadError(LoadErrorResetToken*); 84 85 virtual void willCloseDocument(); 86 87 virtual void detachedFromParent2(); 88 virtual void detachedFromParent3(); 89 90 virtual void frameLoaderDestroyed(); 91 92 virtual bool canHandleRequest(const ResourceRequest&) const; 93 94 virtual void dispatchDidHandleOnloadEvents(); 95 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 96 virtual void dispatchDidCancelClientRedirect(); 97 virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, 98 double fireDate); 99 virtual void dispatchDidChangeLocationWithinPage(); 100 virtual void dispatchWillClose(); 101 virtual void dispatchDidReceiveIcon(); 102 virtual void dispatchDidStartProvisionalLoad(); 103 virtual void dispatchDidReceiveTitle(const String& title); 104 virtual void dispatchDidCommitLoad(); 105 virtual void dispatchDidFinishDocumentLoad(); 106 virtual void dispatchDidFinishLoad(); 107 virtual void dispatchDidFirstLayout(); 108 virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 109 110 virtual void dispatchShow(); 111 virtual void cancelPolicyCheck(); 112 113 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>); 114 115 virtual void dispatchDidLoadMainResource(DocumentLoader*); 116 virtual void revertToProvisionalState(DocumentLoader*); 117 118 virtual void postProgressStartedNotification(); 119 virtual void postProgressEstimateChangedNotification(); 120 virtual void postProgressFinishedNotification(); 121 122 virtual void progressStarted(); 123 virtual void progressCompleted(); 124 virtual void setMainFrameDocumentReady(bool); 125 virtual void willChangeTitle(DocumentLoader*); 126 virtual void didChangeTitle(DocumentLoader*); 127 virtual void finishedLoading(DocumentLoader*); 128 129 virtual bool canShowMIMEType(const String& MIMEType) const; 130 virtual bool representationExistsForURLScheme(const String& URLScheme) const; 131 virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const; 132 133 virtual void frameLoadCompleted(); 134 virtual void saveViewStateToItem(HistoryItem*); 135 virtual void restoreViewState(); 136 virtual void restoreScrollPositionAndViewState(); 137 virtual void provisionalLoadStarted(); 138 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const; 139 virtual void addHistoryItemForFragmentScroll(); 140 virtual void didFinishLoad(); 141 virtual void prepareForDataSourceReplacement(); 142 virtual void setTitle(const String& title, const KURL&); 143 144 virtual String userAgent(const KURL&); 145 146 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); 147 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); 148 virtual void transitionToCommittedForNewPage(); 149 150 virtual void updateGlobalHistory(); 151 virtual void updateGlobalHistoryRedirectLinks(); 152 virtual bool shouldGoToHistoryItem(HistoryItem*) const; 153 virtual void saveScrollPositionAndViewStateToItem(HistoryItem*); 154 virtual bool canCachePage() const; 155 156 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 157 virtual void committedLoad(DocumentLoader*, const char*, int); 158 virtual ResourceError cancelledError(const ResourceRequest&); 159 virtual ResourceError blockedError(const ResourceRequest&); 160 virtual ResourceError cannotShowURLError(const ResourceRequest&); 161 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&); 162 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 163 virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 164 virtual bool shouldFallBack(const ResourceError&); 165 virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, 166 const SubstituteData&); 167 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, 168 const ResourceResponse&); 169 170 virtual void assignIdentifierToInitialRequest(unsigned long identifier, 171 DocumentLoader*, 172 const ResourceRequest&); 173 174 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, 175 const ResourceResponse&); 176 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier); 177 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, 178 unsigned long identifier, 179 const AuthenticationChallenge&); 180 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, 181 unsigned long identifier, 182 const AuthenticationChallenge&); 183 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, 184 const ResourceResponse&); 185 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int); 186 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long); 187 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, 188 const ResourceError&); 189 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, 190 const ResourceRequest&, 191 const ResourceResponse&, int); 192 virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const ScriptString&); 193 194 virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 195 virtual void dispatchDidFailLoad(const ResourceError&); 196 virtual Frame* dispatchCreatePage(); 197 virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, 198 const String&, 199 const ResourceRequest&); 200 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, 201 const NavigationAction&, 202 const ResourceRequest&, 203 PassRefPtr<FormState>, const String&); 204 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, 205 const NavigationAction&, 206 const ResourceRequest&, 207 PassRefPtr<FormState>); 208 virtual void dispatchUnableToImplementPolicy(const ResourceError&); 209 210 virtual void startDownload(const ResourceRequest&); 211 212 // FIXME: This should probably not be here, but it's needed for the tests currently. 213 virtual void partClearedInBegin(); 214 215 virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, 216 HTMLFrameOwnerElement*, const String& referrer, 217 bool allowsScrolling, int marginWidth, int marginHeight); 218 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, 219 const Vector<String>&, const Vector<String>&, const String&, 220 bool loadManually); 221 virtual void redirectDataToPlugin(Widget* pluginWidget); 222 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 223 224 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, 225 const KURL& baseURL, const Vector<String>& paramNames, 226 const Vector<String>& paramValues); 227 228 virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType); 229 virtual String overrideMediaType() const; 230 231 virtual void windowObjectCleared(); 232 virtual void documentElementAvailable(); 233 234 virtual void didPerformFirstNavigation() const; 235 236 virtual void registerForIconNotification(bool listen = true); 237 238 private: 239 Frame* m_frame; 240 WebView* m_webView; 241 BMessenger* m_messenger; 242 ResourceResponse m_response; 243 bool m_firstData; 244 }; 245 } // namespace WebCore 246 247 #endif // FrameLoaderClientHaiku_h 248 249