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