Home | History | Annotate | Download | only in WebCoreSupport
      1 /*
      2  * Copyright (C) 2010, 2011 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  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
     14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     23  * THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef WebFrameLoaderClient_h
     27 #define WebFrameLoaderClient_h
     28 
     29 #include <WebCore/FrameLoaderClient.h>
     30 
     31 namespace WebKit {
     32 
     33 class PluginView;
     34 class WebFrame;
     35 
     36 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
     37 public:
     38     WebFrameLoaderClient(WebFrame*);
     39     ~WebFrameLoaderClient();
     40 
     41     WebFrame* webFrame() const { return m_frame; }
     42 
     43     bool frameHasCustomRepresentation() const { return m_frameHasCustomRepresentation; }
     44 
     45 private:
     46     virtual void frameLoaderDestroyed();
     47 
     48     virtual bool hasHTMLView() const;
     49     virtual bool hasWebView() const;
     50 
     51     virtual void makeRepresentation(WebCore::DocumentLoader*);
     52     virtual void forceLayout();
     53     virtual void forceLayoutForNonHTML();
     54 
     55     virtual void setCopiesOnScroll();
     56 
     57     virtual void detachedFromParent2();
     58     virtual void detachedFromParent3();
     59 
     60     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
     61 
     62     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
     63     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
     64     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     65     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     66 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
     67     virtual bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&);
     68 #endif
     69     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
     70     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength);
     71     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
     72     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
     73     virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length);
     74     virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const WTF::String&);
     75 
     76     virtual void dispatchDidHandleOnloadEvents();
     77     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
     78     virtual void dispatchDidCancelClientRedirect();
     79     virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
     80     virtual void dispatchDidChangeLocationWithinPage();
     81     virtual void dispatchDidPushStateWithinPage();
     82     virtual void dispatchDidReplaceStateWithinPage();
     83     virtual void dispatchDidPopStateWithinPage();
     84     virtual void dispatchWillClose();
     85     virtual void dispatchDidReceiveIcon();
     86     virtual void dispatchDidStartProvisionalLoad();
     87     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
     88     virtual void dispatchDidChangeIcons();
     89     virtual void dispatchDidCommitLoad();
     90     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
     91     virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
     92     virtual void dispatchDidFinishDocumentLoad();
     93     virtual void dispatchDidFinishLoad();
     94     virtual void dispatchDidFirstLayout();
     95     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
     96 
     97     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
     98     virtual void dispatchShow();
     99 
    100     virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&);
    101     virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const String& frameName);
    102     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
    103     virtual void cancelPolicyCheck();
    104 
    105     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
    106 
    107     virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { }
    108     virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>);
    109 
    110     virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
    111     virtual void revertToProvisionalState(WebCore::DocumentLoader*);
    112     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
    113 
    114     // Maybe these should go into a ProgressTrackerClient some day
    115     virtual void willChangeEstimatedProgress();
    116     virtual void didChangeEstimatedProgress();
    117     virtual void postProgressStartedNotification();
    118     virtual void postProgressEstimateChangedNotification();
    119     virtual void postProgressFinishedNotification();
    120 
    121     virtual void setMainFrameDocumentReady(bool);
    122 
    123     virtual void startDownload(const WebCore::ResourceRequest&);
    124 
    125     virtual void willChangeTitle(WebCore::DocumentLoader*);
    126     virtual void didChangeTitle(WebCore::DocumentLoader*);
    127 
    128     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
    129     virtual void finishedLoading(WebCore::DocumentLoader*);
    130 
    131     virtual void updateGlobalHistory();
    132     virtual void updateGlobalHistoryRedirectLinks();
    133 
    134     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
    135     virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
    136     virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
    137     virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
    138     virtual void dispatchDidChangeBackForwardIndex() const;
    139 
    140     virtual void didDisplayInsecureContent();
    141     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
    142 
    143     virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
    144     virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
    145     virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
    146     virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&);
    147 
    148     virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
    149     virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
    150     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
    151 
    152     virtual bool shouldFallBack(const WebCore::ResourceError&);
    153 
    154     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
    155     virtual bool canShowMIMEType(const String& MIMEType) const;
    156     virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const;
    157     virtual bool representationExistsForURLScheme(const String& URLScheme) const;
    158     virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const;
    159 
    160     virtual void frameLoadCompleted();
    161     virtual void saveViewStateToItem(WebCore::HistoryItem*);
    162     virtual void restoreViewState();
    163     virtual void provisionalLoadStarted();
    164     virtual void didFinishLoad();
    165     virtual void prepareForDataSourceReplacement();
    166 
    167     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
    168     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
    169 
    170     virtual String userAgent(const WebCore::KURL&);
    171 
    172     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
    173     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
    174     virtual void transitionToCommittedForNewPage();
    175 
    176     virtual void didSaveToPageCache();
    177     virtual void didRestoreFromPageCache();
    178 
    179     virtual void dispatchDidBecomeFrameset(bool);
    180 
    181     virtual bool canCachePage() const;
    182     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
    183 
    184     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
    185                                           const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
    186     virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
    187     virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
    188 
    189     virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually);
    190     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
    191 
    192     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
    193 
    194     virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const String& mimeType, bool shouldPreferPlugInsForImages);
    195     virtual String overrideMediaType() const;
    196 
    197     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
    198 
    199     virtual void documentElementAvailable();
    200     virtual void didPerformFirstNavigation() const; // "Navigation" here means a transition from one page to another that ends up in the back/forward list.
    201 
    202     virtual void registerForIconNotification(bool listen = true);
    203 
    204 #if PLATFORM(MAC)
    205     virtual RemoteAXObjectRef accessibilityRemoteObject();
    206 
    207 #if ENABLE(MAC_JAVA_BRIDGE)
    208     virtual jobject javaApplet(NSView*);
    209 #endif
    210     virtual NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const;
    211 #endif
    212 #if USE(CFNETWORK)
    213     virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
    214 #endif
    215 
    216     virtual bool shouldUsePluginDocument(const String& /*mimeType*/) const;
    217 
    218     virtual void didChangeScrollOffset();
    219 
    220     virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
    221 
    222     WebFrame* m_frame;
    223     RefPtr<PluginView> m_pluginView;
    224     bool m_hasSentResponseToPluginView;
    225     bool m_frameHasCustomRepresentation;
    226 };
    227 
    228 } // namespace WebKit
    229 
    230 #endif // WebFrameLoaderClient_h
    231