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 42namespace WebCore { 43 44class FormState; 45 46class FrameLoaderClientEfl : public FrameLoaderClient { 47 public: 48 explicit FrameLoaderClientEfl(Evas_Object *view); 49 virtual ~FrameLoaderClientEfl() { } 50 virtual void frameLoaderDestroyed(); 51 52 void setWebFrame(Evas_Object *frame) { m_frame = frame; } 53 Evas_Object* webFrame() const { return m_frame; } 54 Evas_Object* webView() const { return m_view; } 55 56 void setCustomUserAgent(const String&); 57 const String& customUserAgent() const; 58 59 virtual bool hasWebView() const; 60 virtual bool hasFrameView() const; 61 62 void callPolicyFunction(FramePolicyFunction, PolicyAction); 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 dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*); 85 86 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 87 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&); 88 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int dataLength); 89 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier); 90 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&); 91 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length); 92 virtual void dispatchDidLoadResourceByXMLHttpRequest(unsigned long identifier, const String& sourceString); 93 94 virtual void dispatchDidHandleOnloadEvents(); 95 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 96 virtual void dispatchDidCancelClientRedirect(); 97 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double); 98 virtual void dispatchDidChangeLocationWithinPage(); 99 virtual void dispatchWillClose(); 100 virtual void dispatchDidReceiveIcon(); 101 virtual void dispatchDidStartProvisionalLoad(); 102 virtual void dispatchDidReceiveTitle(const StringWithDirection&); 103 virtual void dispatchDidChangeIcons(WebCore::IconType); 104 virtual void dispatchDidCommitLoad(); 105 virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 106 virtual void dispatchDidFailLoad(const ResourceError&); 107 virtual void dispatchDidFinishDocumentLoad(); 108 virtual void dispatchDidFinishLoad(); 109 virtual void dispatchDidLayout(LayoutMilestones); 110 111 virtual Frame* dispatchCreatePage(const WebCore::NavigationAction&); 112 virtual void dispatchShow(); 113 114 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&); 115 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, WTF::PassRefPtr<FormState>, const String& frameName); 116 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, WTF::PassRefPtr<FormState>); 117 virtual void cancelPolicyCheck(); 118 119 virtual void dispatchUnableToImplementPolicy(const ResourceError&); 120 121 virtual void dispatchWillSendSubmitEvent(WTF::PassRefPtr<FormState>) { } 122 virtual void dispatchWillSubmitForm(FramePolicyFunction, WTF::PassRefPtr<FormState>); 123 124 virtual void revertToProvisionalState(DocumentLoader*) { } 125 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 126 127 virtual void postProgressStartedNotification(); 128 virtual void postProgressEstimateChangedNotification(); 129 virtual void postProgressFinishedNotification(); 130 131 virtual PassRefPtr<Frame> createFrame(const KURL&, const String& name, HTMLFrameOwnerElement*, 132 const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight); 133 134 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const WTF::Vector<String>&, const WTF::Vector<String>&, const String&, bool); 135 virtual void recreatePlugin(Widget*) { } 136 virtual void redirectDataToPlugin(Widget* pluginWidget); 137 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const WTF::Vector<String>& paramNames, const WTF::Vector<String>& paramValues); 138 virtual String overrideMediaType() const; 139 virtual void documentElementAvailable(); 140 141 virtual void didPerformFirstNavigation() const; 142 143 virtual void registerForIconNotification(bool); 144 145 virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages); 146 147 virtual void setMainFrameDocumentReady(bool); 148 149 virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()); 150 151 virtual void willChangeTitle(DocumentLoader*); 152 virtual void didChangeTitle(DocumentLoader*); 153 154 virtual void committedLoad(DocumentLoader*, const char*, int); 155 virtual void finishedLoading(DocumentLoader*); 156 157 virtual void updateGlobalHistory(); 158 virtual void updateGlobalHistoryRedirectLinks(); 159 virtual bool shouldGoToHistoryItem(HistoryItem*) const; 160 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const; 161 virtual void didDisplayInsecureContent(); 162 virtual void didRunInsecureContent(SecurityOrigin*, const KURL&); 163 virtual void didDetectXSS(const KURL&, bool didBlockEntirePage); 164 165 virtual ResourceError cancelledError(const ResourceRequest&); 166 virtual ResourceError blockedError(const ResourceRequest&); 167 virtual ResourceError cannotShowURLError(const ResourceRequest&); 168 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&); 169 170 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 171 virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 172 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 173 174 virtual bool shouldFallBack(const ResourceError&); 175 176 virtual bool canHandleRequest(const ResourceRequest&) const; 177 virtual bool canShowMIMEType(const String&) const; 178 virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; 179 virtual bool representationExistsForURLScheme(const String&) const; 180 virtual String generatedMIMETypeForURLScheme(const String&) const; 181 182 virtual void frameLoadCompleted(); 183 virtual void saveViewStateToItem(HistoryItem*); 184 virtual void restoreViewState(); 185 virtual void provisionalLoadStarted(); 186 virtual void didFinishLoad(); 187 virtual void prepareForDataSourceReplacement(); 188 189 virtual WTF::PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&); 190 virtual void setTitle(const StringWithDirection& title, const KURL&); 191 192 virtual String userAgent(const KURL&); 193 194 virtual void savePlatformDataToCachedFrame(CachedFrame*); 195 virtual void transitionToCommittedFromCachedFrame(CachedFrame*); 196 virtual void transitionToCommittedForNewPage(); 197 198 virtual void didSaveToPageCache(); 199 virtual void didRestoreFromPageCache(); 200 201 virtual void dispatchDidBecomeFrameset(bool); 202 203 virtual bool canCachePage() const; 204 virtual void convertMainResourceLoadToDownload(DocumentLoader*, const ResourceRequest&, const ResourceResponse&); 205 206 virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext(); 207 private: 208 bool isLoadingMainFrame() const { return m_frame == ewk_view_frame_main_get(m_view); } 209 210 Evas_Object *m_view; 211 Evas_Object *m_frame; 212 213 ResourceResponse m_response; 214 String m_userAgent; 215 String m_customUserAgent; 216 217 ResourceError m_loadError; 218 219 // Plugin view to redirect data to 220 PluginView* m_pluginView; 221 bool m_hasSentResponseToPlugin; 222}; 223 224} 225 226#endif // FrameLoaderClientEfl_h 227