1/* 2 * Copyright (C) 2006, 2007, 2008, 2013 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14 * its contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29#ifndef WebFrameLoaderClient_h 30#define WebFrameLoaderClient_h 31 32#include <WebCore/COMPtr.h> 33#include <WebCore/FrameLoaderClient.h> 34 35namespace WebCore { 36 class PluginManualLoader; 37 class PluginView; 38} 39 40class WebFrame; 41class WebFramePolicyListener; 42class WebHistory; 43 44class WebFrameLoaderClient : public WebCore::FrameLoaderClient { 45public: 46 WebFrameLoaderClient(WebFrame*); 47 ~WebFrameLoaderClient(); 48 49 WebFrame* webFrame() const { return m_webFrame; } 50 51 virtual bool hasWebView() const; 52 53 virtual void forceLayout() OVERRIDE; 54 55 virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext(); 56 57 virtual void frameLoaderDestroyed() OVERRIDE; 58 virtual void makeRepresentation(WebCore::DocumentLoader*) OVERRIDE; 59 virtual void forceLayoutForNonHTML() OVERRIDE; 60 61 virtual void setCopiesOnScroll() OVERRIDE; 62 63 virtual void detachedFromParent2() OVERRIDE; 64 virtual void detachedFromParent3() OVERRIDE; 65 66 virtual void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) OVERRIDE; 67 virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); 68 69 virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) OVERRIDE; 70 virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) OVERRIDE; 71 virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) OVERRIDE; 72 virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) OVERRIDE; 73 virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) OVERRIDE; 74 virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) OVERRIDE; 75 virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) OVERRIDE; 76 virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&) OVERRIDE; 77 virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length); 78 79 virtual void dispatchDidHandleOnloadEvents() OVERRIDE; 80 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() OVERRIDE; 81 virtual void dispatchDidCancelClientRedirect() OVERRIDE; 82 virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate) OVERRIDE; 83 virtual void dispatchDidChangeLocationWithinPage() OVERRIDE; 84 virtual void dispatchDidPushStateWithinPage() OVERRIDE; 85 virtual void dispatchDidReplaceStateWithinPage() OVERRIDE; 86 virtual void dispatchDidPopStateWithinPage() OVERRIDE; 87 virtual void dispatchWillClose() OVERRIDE; 88 virtual void dispatchDidReceiveIcon() OVERRIDE; 89 virtual void dispatchDidStartProvisionalLoad() OVERRIDE; 90 virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) OVERRIDE; 91 virtual void dispatchDidChangeIcons(WebCore::IconType) OVERRIDE; 92 virtual void dispatchDidCommitLoad() OVERRIDE; 93 virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) OVERRIDE; 94 virtual void dispatchDidFailLoad(const WebCore::ResourceError&) OVERRIDE; 95 virtual void dispatchDidFinishDocumentLoad() OVERRIDE; 96 virtual void dispatchDidFinishLoad() OVERRIDE; 97 virtual void dispatchDidLayout(WebCore::LayoutMilestones) OVERRIDE; 98 99 virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&); 100 virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WTF::String& frameName) OVERRIDE; 101 virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>) OVERRIDE; 102 virtual void cancelPolicyCheck() OVERRIDE; 103 104 virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) OVERRIDE; 105 106 virtual void dispatchWillSendSubmitEvent(PassRefPtr<WebCore::FormState>) OVERRIDE; 107 virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>) OVERRIDE; 108 109 virtual void revertToProvisionalState(WebCore::DocumentLoader*) OVERRIDE; 110 virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) OVERRIDE; 111 112 virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) OVERRIDE; 113 virtual void dispatchShow() OVERRIDE; 114 115 virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) OVERRIDE; 116 virtual void setMainFrameDocumentReady(bool) OVERRIDE; 117 118 virtual void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) OVERRIDE; 119 120 virtual void postProgressStartedNotification(); 121 virtual void postProgressEstimateChangedNotification(); 122 virtual void postProgressFinishedNotification(); 123 124 virtual void committedLoad(WebCore::DocumentLoader*, const char*, int) OVERRIDE; 125 virtual void finishedLoading(WebCore::DocumentLoader*) OVERRIDE; 126 127 virtual void willChangeTitle(WebCore::DocumentLoader*) OVERRIDE; 128 virtual void didChangeTitle(WebCore::DocumentLoader*) OVERRIDE; 129 130 virtual void updateGlobalHistory() OVERRIDE; 131 virtual void updateGlobalHistoryRedirectLinks() OVERRIDE; 132 virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const OVERRIDE; 133 virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const OVERRIDE; 134 virtual void updateGlobalHistoryItemForPage() OVERRIDE; 135 136 virtual void didDisplayInsecureContent() OVERRIDE; 137 virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&) OVERRIDE; 138 virtual void didDetectXSS(const WebCore::KURL&, bool didBlockEntirePage) OVERRIDE; 139 140 virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) OVERRIDE; 141 virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) OVERRIDE; 142 virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) OVERRIDE; 143 virtual WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) OVERRIDE; 144 virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) OVERRIDE; 145 virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) OVERRIDE; 146 virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) OVERRIDE; 147 148 virtual bool shouldFallBack(const WebCore::ResourceError&) OVERRIDE; 149 150 virtual WTF::String userAgent(const WebCore::KURL&) OVERRIDE; 151 152 virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); 153 virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&); 154 155 virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*) OVERRIDE; 156 virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) OVERRIDE; 157 virtual void transitionToCommittedForNewPage() OVERRIDE; 158 159 virtual bool canHandleRequest(const WebCore::ResourceRequest&) const OVERRIDE; 160 virtual bool canShowMIMEType(const WTF::String& MIMEType) const OVERRIDE; 161 virtual bool canShowMIMETypeAsHTML(const WTF::String& MIMEType) const OVERRIDE; 162 virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const OVERRIDE; 163 virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const OVERRIDE; 164 165 virtual void frameLoadCompleted() OVERRIDE; 166 virtual void saveViewStateToItem(WebCore::HistoryItem *) OVERRIDE; 167 virtual void restoreViewState() OVERRIDE; 168 virtual void provisionalLoadStarted() OVERRIDE; 169 virtual void didFinishLoad() OVERRIDE; 170 virtual void prepareForDataSourceReplacement() OVERRIDE; 171 172 virtual void didSaveToPageCache() OVERRIDE; 173 virtual void didRestoreFromPageCache() OVERRIDE; 174 175 virtual void dispatchDidBecomeFrameset(bool) OVERRIDE; 176 177 virtual bool canCachePage() const; 178 179 virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, 180 const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) OVERRIDE; 181 virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually) OVERRIDE; 182 virtual void recreatePlugin(WebCore::Widget*) OVERRIDE { } 183 virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget) OVERRIDE; 184 185 virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues) OVERRIDE; 186 187 virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages) OVERRIDE; 188 virtual WTF::String overrideMediaType() const OVERRIDE; 189 190 virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*) OVERRIDE; 191 virtual void documentElementAvailable() OVERRIDE; 192 virtual void didPerformFirstNavigation() const OVERRIDE; 193 194 COMPtr<WebFramePolicyListener> setUpPolicyListener(WebCore::FramePolicyFunction); 195 void receivedPolicyDecision(WebCore::PolicyAction); 196 197 virtual void registerForIconNotification(bool listen) OVERRIDE; 198 199 virtual bool shouldAlwaysUsePluginDocument(const WTF::String& mimeType) const; 200 201 virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const; 202 203protected: 204 class WebFramePolicyListenerPrivate; 205 OwnPtr<WebFramePolicyListenerPrivate> m_policyListenerPrivate; 206 207private: 208 PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer); 209 WebHistory* webHistory() const; 210 211 WebFrame* m_webFrame; 212 213 // Points to the manual loader that data should be redirected to. 214 WebCore::PluginManualLoader* m_manualLoader; 215 216 bool m_hasSentResponseToPlugin; 217}; 218 219#endif // WebFrameLoaderClient_h 220