Home | History | Annotate | Download | only in WebCoreSupport
      1 /*
      2  * Copyright (C) 2006, 2007, 2008, 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  *
      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 #import <WebCore/FrameLoaderClient.h>
     30 #import <WebCore/Timer.h>
     31 #import <wtf/Forward.h>
     32 #import <wtf/HashMap.h>
     33 #import <wtf/RetainPtr.h>
     34 
     35 @class WebDownload;
     36 @class WebFrame;
     37 @class WebFramePolicyListener;
     38 @class WebHistoryItem;
     39 @class WebResource;
     40 
     41 namespace WebCore {
     42     class AuthenticationChallenge;
     43     class CachedFrame;
     44     class HistoryItem;
     45     class ProtectionSpace;
     46     class ResourceLoader;
     47     class ResourceRequest;
     48 }
     49 
     50 typedef HashMap<RefPtr<WebCore::ResourceLoader>, RetainPtr<WebResource> > ResourceMap;
     51 
     52 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
     53 public:
     54     WebFrameLoaderClient(WebFrame*);
     55 
     56     WebFrame* webFrame() const { return m_webFrame.get(); }
     57 
     58     virtual void frameLoaderDestroyed();
     59     void receivedPolicyDecison(WebCore::PolicyAction);
     60 
     61 private:
     62     virtual bool hasWebView() const; // mainly for assertions
     63 
     64     virtual void makeRepresentation(WebCore::DocumentLoader*);
     65     virtual bool hasHTMLView() const;
     66     virtual void forceLayout();
     67     virtual void forceLayoutForNonHTML();
     68 
     69     virtual void setCopiesOnScroll();
     70 
     71     virtual void detachedFromParent2();
     72     virtual void detachedFromParent3();
     73 
     74     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
     75 
     76     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
     77 
     78     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
     79     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
     80     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     81     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
     82 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
     83     virtual bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&);
     84 #endif
     85     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
     86     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength);
     87     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
     88     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
     89 
     90     virtual NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const;
     91 
     92     virtual void dispatchDidHandleOnloadEvents();
     93     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
     94     virtual void dispatchDidCancelClientRedirect();
     95     virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate);
     96     virtual void dispatchDidChangeLocationWithinPage();
     97     virtual void dispatchDidPushStateWithinPage();
     98     virtual void dispatchDidReplaceStateWithinPage();
     99     virtual void dispatchDidPopStateWithinPage();
    100 
    101     virtual void dispatchWillClose();
    102     virtual void dispatchDidReceiveIcon();
    103     virtual void dispatchDidStartProvisionalLoad();
    104     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&);
    105     virtual void dispatchDidChangeIcons();
    106     virtual void dispatchDidCommitLoad();
    107     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
    108     virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
    109     virtual void dispatchDidFinishDocumentLoad();
    110     virtual void dispatchDidFinishLoad();
    111     virtual void dispatchDidFirstLayout();
    112     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
    113 
    114     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
    115     virtual void dispatchShow();
    116 
    117     virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction,
    118         const WebCore::ResourceResponse&, const WebCore::ResourceRequest&);
    119     virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction,
    120         const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
    121     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction,
    122         const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
    123     virtual void cancelPolicyCheck();
    124 
    125     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
    126 
    127     virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { }
    128     virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>);
    129 
    130     virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
    131     virtual void revertToProvisionalState(WebCore::DocumentLoader*);
    132     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
    133     virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length);
    134 
    135     virtual void willChangeEstimatedProgress();
    136     virtual void didChangeEstimatedProgress();
    137     virtual void postProgressStartedNotification();
    138     virtual void postProgressEstimateChangedNotification();
    139     virtual void postProgressFinishedNotification();
    140 
    141     virtual void setMainFrameDocumentReady(bool);
    142 
    143     virtual void startDownload(const WebCore::ResourceRequest&);
    144 
    145     virtual void willChangeTitle(WebCore::DocumentLoader*);
    146     virtual void didChangeTitle(WebCore::DocumentLoader*);
    147 
    148     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
    149     virtual void finishedLoading(WebCore::DocumentLoader*);
    150     virtual void updateGlobalHistory();
    151     virtual void updateGlobalHistoryRedirectLinks();
    152 
    153     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
    154     virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const;
    155     virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
    156     virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
    157     virtual void dispatchDidChangeBackForwardIndex() const;
    158     virtual void updateGlobalHistoryItemForPage();
    159 
    160     virtual void didDisplayInsecureContent();
    161     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL&);
    162 
    163     virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
    164     virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
    165     virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
    166     virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&);
    167 
    168     virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
    169     virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
    170     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
    171 
    172     virtual bool shouldFallBack(const WebCore::ResourceError&);
    173 
    174     virtual WTF::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 void didSaveToPageCache();
    181     virtual void didRestoreFromPageCache();
    182 
    183     virtual void dispatchDidBecomeFrameset(bool);
    184 
    185     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
    186     virtual bool canShowMIMEType(const WTF::String& MIMEType) const;
    187     virtual bool canShowMIMETypeAsHTML(const WTF::String& MIMEType) const;
    188     virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const;
    189     virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const;
    190 
    191     virtual void frameLoadCompleted();
    192     virtual void saveViewStateToItem(WebCore::HistoryItem*);
    193     virtual void restoreViewState();
    194     virtual void provisionalLoadStarted();
    195     virtual void didFinishLoad();
    196     virtual void prepareForDataSourceReplacement();
    197     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
    198 
    199     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&);
    200 
    201     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement*,
    202                                         const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
    203     virtual void didTransferChildFrameToNewDocument(WebCore::Page* oldPage);
    204     virtual void transferLoadingResourceFromPage(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page* oldPage);
    205     virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&,
    206                                           const Vector<WTF::String>&, const WTF::String&, bool);
    207     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
    208 
    209     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL,
    210                                                     const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues);
    211 
    212 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
    213     virtual PassRefPtr<WebCore::Widget> createMediaPlayerProxyPlugin(const WebCore::IntSize&, WebCore::HTMLMediaElement*, const WebCore::KURL&,
    214                                         const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&);
    215     virtual void hideMediaPlayerProxyPlugin(WebCore::Widget*);
    216     virtual void showMediaPlayerProxyPlugin(WebCore::Widget*);
    217 #endif
    218 
    219     virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages);
    220     virtual WTF::String overrideMediaType() const;
    221 
    222     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
    223     virtual void documentElementAvailable();
    224     virtual void didPerformFirstNavigation() const;
    225 
    226     virtual void registerForIconNotification(bool listen);
    227 
    228 #if ENABLE(JAVA_BRIDGE)
    229     virtual jobject javaApplet(NSView*);
    230 #endif
    231 
    232 #if PLATFORM(MAC)
    233     virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
    234 #endif
    235 
    236     void setOriginalURLForDownload(WebDownload *, const WebCore::ResourceRequest&) const;
    237 
    238     RetainPtr<WebFramePolicyListener> setUpPolicyListener(WebCore::FramePolicyFunction);
    239 
    240     NSDictionary *actionDictionary(const WebCore::NavigationAction&, PassRefPtr<WebCore::FormState>) const;
    241 
    242     virtual bool canCachePage() const;
    243 
    244     virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
    245 
    246     virtual bool shouldPaintBrokenImage(const WebCore::KURL&) const;
    247 
    248     RetainPtr<WebFrame> m_webFrame;
    249 
    250     RetainPtr<WebFramePolicyListener> m_policyListener;
    251     WebCore::FramePolicyFunction m_policyFunction;
    252 };
    253