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