Home | History | Annotate | Download | only in WebCoreSupport
      1 /*
      2  * Copyright (C) 2006, 2007, 2008 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/FrameLoaderClient.h>
     33 
     34 namespace WebCore {
     35     class PluginManualLoader;
     36     class PluginView;
     37 }
     38 
     39 template <typename T> class COMPtr;
     40 class WebFrame;
     41 class WebHistory;
     42 
     43 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
     44 public:
     45     virtual bool hasWebView() const;
     46 
     47     virtual void forceLayout();
     48 
     49     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
     50 
     51     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
     52     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
     53     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     54     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     55     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
     56     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength);
     57     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
     58     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
     59     virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
     60 
     61     virtual void dispatchDidHandleOnloadEvents();
     62     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
     63     virtual void dispatchDidCancelClientRedirect();
     64     virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
     65     virtual void dispatchDidChangeLocationWithinPage();
     66     virtual void dispatchDidPushStateWithinPage();
     67     virtual void dispatchDidReplaceStateWithinPage();
     68     virtual void dispatchDidPopStateWithinPage();
     69     virtual void dispatchWillClose();
     70     virtual void dispatchDidReceiveIcon();
     71     virtual void dispatchDidStartProvisionalLoad();
     72     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
     73     virtual void dispatchDidChangeIcons();
     74     virtual void dispatchDidCommitLoad();
     75     virtual void dispatchDidFinishDocumentLoad();
     76     virtual void dispatchDidFinishLoad();
     77     virtual void dispatchDidFirstLayout();
     78     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
     79 
     80     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
     81     virtual void dispatchShow();
     82 
     83     virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
     84     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
     85 
     86     virtual void postProgressStartedNotification();
     87     virtual void postProgressEstimateChangedNotification();
     88     virtual void postProgressFinishedNotification();
     89 
     90     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
     91     virtual void finishedLoading(WebCore::DocumentLoader*);
     92 
     93     virtual void updateGlobalHistory();
     94     virtual void updateGlobalHistoryRedirectLinks();
     95     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
     96     virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
     97     virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
     98     virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
     99     virtual void dispatchDidChangeBackForwardIndex() const;
    100     virtual void updateGlobalHistoryItemForPage();
    101 
    102     virtual void didDisplayInsecureContent();
    103     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
    104 
    105     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
    106     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
    107 
    108     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
    109     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
    110     virtual void transitionToCommittedForNewPage();
    111 
    112     virtual void didSaveToPageCache();
    113     virtual void didRestoreFromPageCache();
    114 
    115     virtual void dispatchDidBecomeFrameset(bool);
    116 
    117     virtual bool canCachePage() const;
    118 
    119     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
    120                                const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
    121     virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
    122     virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
    123     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);
    124     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
    125 
    126     virtual bool shouldUsePluginDocument(const WTF::String& mimeType) const;
    127 
    128     virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
    129 
    130 protected:
    131     WebFrameLoaderClient(WebFrame*);
    132     ~WebFrameLoaderClient();
    133 
    134 private:
    135     PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer);
    136     WebHistory* webHistory() const;
    137 
    138     WebFrame* m_webFrame;
    139 
    140     // Points to the manual loader that data should be redirected to.
    141     WebCore::PluginManualLoader* m_manualLoader;
    142 
    143     bool m_hasSentResponseToPlugin;
    144 };
    145 
    146 #endif // WebFrameLoaderClient_h
    147