1 /* 2 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 3 * Copyright (C) 2006, 2011 Apple Inc. All rights reserved. 4 * Copyright (C) 2008 Collabora Ltd. All rights reserved. 5 * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia 6 * Copyright (C) 2009-2010 ProFUSION embedded systems 7 * Copyright (C) 2009-2010 Samsung Electronics 8 * 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the distribution. 19 * 20 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 21 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 28 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef FrameLoaderClientEfl_h 34 #define FrameLoaderClientEfl_h 35 36 #include "EWebKit.h" 37 #include "FrameLoaderClient.h" 38 #include "PluginView.h" 39 #include "ResourceError.h" 40 #include "ResourceResponse.h" 41 42 namespace WebCore { 43 44 class FormState; 45 46 class FrameLoaderClientEfl : public FrameLoaderClient { 47 public: 48 explicit FrameLoaderClientEfl(Evas_Object *view); ~FrameLoaderClientEfl()49 virtual ~FrameLoaderClientEfl() { } 50 virtual void frameLoaderDestroyed(); 51 setWebFrame(Evas_Object * frame)52 void setWebFrame(Evas_Object *frame) { m_frame = frame; } webFrame()53 Evas_Object* webFrame() const { return m_frame; } webView()54 Evas_Object* webView() const { return m_view; } 55 56 void setCustomUserAgent(const String &agent); 57 const String& customUserAgent() const; 58 59 virtual bool hasWebView() const; 60 virtual bool hasFrameView() const; 61 62 void callPolicyFunction(FramePolicyFunction function, PolicyAction action); 63 64 virtual void makeRepresentation(DocumentLoader*); 65 virtual void forceLayout(); 66 virtual void forceLayoutForNonHTML(); 67 68 virtual void setCopiesOnScroll(); 69 70 virtual void detachedFromParent2(); 71 virtual void detachedFromParent3(); 72 73 virtual void loadedFromCachedPage(); 74 75 virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&); 76 77 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse); 78 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier); 79 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 80 81 virtual void dispatchDidPushStateWithinPage(); 82 virtual void dispatchDidPopStateWithinPage(); 83 virtual void dispatchDidReplaceStateWithinPage(); 84 virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const; 85 virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const; 86 virtual void dispatchDidChangeBackForwardIndex() const; 87 virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*); 88 89 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 90 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&); 91 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int dataLength); 92 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier); 93 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&); 94 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length); 95 virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const String& sourceString); 96 97 virtual void dispatchDidHandleOnloadEvents(); 98 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 99 virtual void dispatchDidCancelClientRedirect(); 100 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double); 101 virtual void dispatchDidChangeLocationWithinPage(); 102 virtual void dispatchWillClose(); 103 virtual void dispatchDidReceiveIcon(); 104 virtual void dispatchDidStartProvisionalLoad(); 105 virtual void dispatchDidReceiveTitle(const StringWithDirection&); 106 virtual void dispatchDidChangeIcons(); 107 virtual void dispatchDidCommitLoad(); 108 virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 109 virtual void dispatchDidFailLoad(const ResourceError&); 110 virtual void dispatchDidFinishDocumentLoad(); 111 virtual void dispatchDidFinishLoad(); 112 virtual void dispatchDidFirstLayout(); 113 virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 114 115 virtual Frame* dispatchCreatePage(const WebCore::NavigationAction&); 116 virtual void dispatchShow(); 117 118 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&); 119 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, WTF::PassRefPtr<FormState>, const String& frameName); 120 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, WTF::PassRefPtr<FormState>); 121 virtual void cancelPolicyCheck(); 122 123 virtual void dispatchUnableToImplementPolicy(const ResourceError&); 124 dispatchWillSendSubmitEvent(HTMLFormElement *)125 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { } 126 virtual void dispatchWillSubmitForm(FramePolicyFunction, WTF::PassRefPtr<FormState>); 127 128 virtual void dispatchDidLoadMainResource(DocumentLoader*); 129 virtual void revertToProvisionalState(DocumentLoader*); 130 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 131 132 virtual void postProgressStartedNotification(); 133 virtual void postProgressEstimateChangedNotification(); 134 virtual void postProgressFinishedNotification(); 135 136 virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, 137 const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight); 138 virtual void didTransferChildFrameToNewDocument(Page*); 139 virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const ResourceRequest&, WebCore::Page*); 140 141 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const WTF::Vector<String>&, const WTF::Vector<String>&, const String&, bool); 142 virtual void redirectDataToPlugin(Widget* pluginWidget); 143 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const WTF::Vector<String>& paramNames, const WTF::Vector<String>& paramValues); 144 virtual String overrideMediaType() const; 145 virtual void windowObjectCleared(); 146 virtual void documentElementAvailable(); 147 148 virtual void didPerformFirstNavigation() const; 149 150 virtual void registerForIconNotification(bool); 151 152 virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages); 153 154 virtual void setMainFrameDocumentReady(bool); 155 156 virtual void startDownload(const ResourceRequest&); 157 158 virtual void willChangeTitle(DocumentLoader*); 159 virtual void didChangeTitle(DocumentLoader*); 160 161 virtual void committedLoad(DocumentLoader*, const char*, int); 162 virtual void finishedLoading(DocumentLoader*); 163 164 virtual void updateGlobalHistory(); 165 virtual void updateGlobalHistoryRedirectLinks(); 166 virtual bool shouldGoToHistoryItem(HistoryItem*) const; 167 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const; 168 virtual void didDisplayInsecureContent(); 169 virtual void didRunInsecureContent(SecurityOrigin*, const KURL&); 170 171 virtual ResourceError cancelledError(const ResourceRequest&); 172 virtual ResourceError blockedError(const ResourceRequest&); 173 virtual ResourceError cannotShowURLError(const ResourceRequest&); 174 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&); 175 176 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 177 virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 178 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 179 180 virtual bool shouldFallBack(const ResourceError&); 181 182 virtual bool canHandleRequest(const ResourceRequest&) const; 183 virtual bool canShowMIMEType(const String&) const; 184 virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; 185 virtual bool representationExistsForURLScheme(const String&) const; 186 virtual String generatedMIMETypeForURLScheme(const String&) const; 187 188 virtual void frameLoadCompleted(); 189 virtual void saveViewStateToItem(HistoryItem*); 190 virtual void restoreViewState(); 191 virtual void provisionalLoadStarted(); 192 virtual void didFinishLoad(); 193 virtual void prepareForDataSourceReplacement(); 194 195 virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&); 196 virtual void setTitle(const StringWithDirection& title, const KURL&); 197 198 virtual String userAgent(const KURL&); 199 200 virtual void savePlatformDataToCachedFrame(CachedFrame*); 201 virtual void transitionToCommittedFromCachedFrame(CachedFrame*); 202 virtual void transitionToCommittedForNewPage(); 203 204 virtual void didSaveToPageCache(); 205 virtual void didRestoreFromPageCache(); 206 207 virtual void dispatchDidBecomeFrameset(bool); 208 209 virtual bool canCachePage() const; 210 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&); 211 212 virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext(); 213 private: 214 Evas_Object *m_view; 215 Evas_Object *m_frame; 216 217 ResourceResponse m_response; 218 String m_userAgent; 219 String m_customUserAgent; 220 221 ResourceError m_loadError; 222 223 // Plugin view to redirect data to 224 PluginView* m_pluginView; 225 bool m_hasSentResponseToPlugin; 226 }; 227 228 } 229 230 #endif // FrameLoaderClientEfl_h 231