1 /* 2 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 3 * Copyright (C) 2006, 2011 Apple 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 #include <wtf/Forward.h> 37 38 class BMessenger; 39 class WebView; 40 41 namespace WebCore { 42 class AuthenticationChallenge; 43 class DocumentLoader; 44 class Element; 45 class FormState; 46 class NavigationAction; 47 class ResourceLoader; 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, double fireDate); 98 virtual void dispatchDidChangeLocationWithinPage(); 99 virtual void dispatchDidPushStateWithinPage(); 100 virtual void dispatchDidReplaceStateWithinPage(); 101 virtual void dispatchDidPopStateWithinPage(); 102 virtual void dispatchWillClose(); 103 virtual void dispatchDidReceiveIcon(); 104 virtual void dispatchDidStartProvisionalLoad(); 105 virtual void dispatchDidReceiveTitle(const StringWithDirection& title); 106 virtual void dispatchDidCommitLoad(); 107 virtual void dispatchDidFinishDocumentLoad(); 108 virtual void dispatchDidFinishLoad(); 109 virtual void dispatchDidFirstLayout(); 110 virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 111 112 virtual void dispatchShow(); 113 virtual void cancelPolicyCheck(); 114 dispatchWillSendSubmitEvent(HTMLFormElement *)115 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { } 116 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>); 117 118 virtual void dispatchDidLoadMainResource(DocumentLoader*); 119 virtual void revertToProvisionalState(DocumentLoader*); 120 121 virtual void postProgressStartedNotification(); 122 virtual void postProgressEstimateChangedNotification(); 123 virtual void postProgressFinishedNotification(); 124 125 virtual void progressStarted(); 126 virtual void progressCompleted(); 127 virtual void setMainFrameDocumentReady(bool); 128 virtual void willChangeTitle(DocumentLoader*); 129 virtual void didChangeTitle(DocumentLoader*); 130 virtual void finishedLoading(DocumentLoader*); 131 132 virtual bool canShowMIMEType(const String& MIMEType) const; 133 virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; 134 virtual bool representationExistsForURLScheme(const String& URLScheme) const; 135 virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const; 136 137 virtual void frameLoadCompleted(); 138 virtual void saveViewStateToItem(HistoryItem*); 139 virtual void restoreViewState(); 140 virtual void restoreScrollPositionAndViewState(); 141 virtual void provisionalLoadStarted(); 142 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const; 143 virtual void addHistoryItemForFragmentScroll(); 144 virtual void didFinishLoad(); 145 virtual void prepareForDataSourceReplacement(); 146 virtual void setTitle(const StringWithDirection&, const KURL&); 147 148 virtual String userAgent(const KURL&); 149 150 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); 151 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); 152 virtual void transitionToCommittedForNewPage(); 153 154 virtual void didSaveToPageCache(); 155 virtual void didRestoreFromPageCache(); 156 157 virtual void dispatchDidBecomeFrameset(bool); 158 159 virtual void updateGlobalHistory(); 160 virtual void updateGlobalHistoryRedirectLinks(); 161 virtual bool shouldGoToHistoryItem(HistoryItem*) const; 162 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const; 163 virtual void dispatchDidAddBackForwardItem(HistoryItem*) const; 164 virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const; 165 virtual void dispatchDidChangeBackForwardIndex() const; 166 virtual void saveScrollPositionAndViewStateToItem(HistoryItem*); 167 virtual bool canCachePage() const; 168 169 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 170 virtual void committedLoad(DocumentLoader*, const char*, int); 171 virtual ResourceError cancelledError(const ResourceRequest&); 172 virtual ResourceError blockedError(const ResourceRequest&); 173 virtual ResourceError cannotShowURLError(const ResourceRequest&); 174 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&); 175 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 176 virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 177 virtual bool shouldFallBack(const ResourceError&); 178 virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, 179 const SubstituteData&); 180 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, 181 const ResourceResponse&); 182 183 virtual void assignIdentifierToInitialRequest(unsigned long identifier, 184 DocumentLoader*, 185 const ResourceRequest&); 186 187 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, 188 const ResourceResponse&); 189 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier); 190 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, 191 unsigned long identifier, 192 const AuthenticationChallenge&); 193 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, 194 unsigned long identifier, 195 const AuthenticationChallenge&); 196 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, 197 const ResourceResponse&); 198 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int); 199 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long); 200 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, 201 const ResourceError&); 202 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, 203 const ResourceRequest&, 204 const ResourceResponse&, int); 205 206 virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 207 virtual void dispatchDidFailLoad(const ResourceError&); 208 virtual Frame* dispatchCreatePage(const NavigationAction&); 209 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, 210 const ResourceResponse&, 211 const ResourceRequest&); 212 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, 213 const NavigationAction&, 214 const ResourceRequest&, 215 PassRefPtr<FormState>, const String&); 216 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, 217 const NavigationAction&, 218 const ResourceRequest&, 219 PassRefPtr<FormState>); 220 virtual void dispatchUnableToImplementPolicy(const ResourceError&); 221 222 virtual void startDownload(const ResourceRequest&); 223 224 // FIXME: This should probably not be here, but it's needed for the tests currently. 225 virtual void partClearedInBegin(); 226 227 virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, 228 HTMLFrameOwnerElement*, const String& referrer, 229 bool allowsScrolling, int marginWidth, int marginHeight); 230 virtual void didTransferChildFrameToNewDocument(WebCore::Page*); 231 virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const ResourceRequest&, WebCore::Page*); 232 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, 233 const Vector<String>&, const Vector<String>&, const String&, 234 bool loadManually); 235 virtual void redirectDataToPlugin(Widget* pluginWidget); 236 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 237 238 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, 239 const KURL& baseURL, const Vector<String>& paramNames, 240 const Vector<String>& paramValues); 241 242 virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages); 243 virtual String overrideMediaType() const; 244 245 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*); 246 virtual void documentElementAvailable(); 247 248 virtual void didPerformFirstNavigation() const; 249 250 virtual void registerForIconNotification(bool listen = true); 251 252 private: 253 Frame* m_frame; 254 WebView* m_webView; 255 BMessenger* m_messenger; 256 ResourceResponse m_response; 257 bool m_firstData; 258 }; 259 } // namespace WebCore 260 261 #endif // FrameLoaderClientHaiku_h 262