1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 32bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2011 Apple Inc. All rights reserved. 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef FrameLoaderClientImpl_h 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define FrameLoaderClientImpl_h 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FrameLoaderClient.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "KURL.h" 376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "WebNavigationPolicy.h" 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/PassOwnPtr.h> 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <wtf/RefPtr.h> 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebFrameImpl; 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebPluginContainerImpl; 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebPluginLoadObserver; 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass FrameLoaderClientImpl : public WebCore::FrameLoaderClient { 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic: 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block FrameLoaderClientImpl(WebFrameImpl* webFrame); 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ~FrameLoaderClientImpl(); 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrameImpl* webFrame() const { return m_webFrame; } 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // WebCore::FrameLoaderClient ---------------------------------------------- 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void frameLoaderDestroyed(); 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Notifies the WebView delegate that the JS window object has been cleared, 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // giving it a chance to bind native objects to the window before script 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // parsing begins. 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*); 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void documentElementAvailable(); 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A frame's V8 context was created or destroyed. 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateScriptContextForFrame(); 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didDestroyScriptContextForFrame(); 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 68d0825bca7fe65beaee391d30da42e937db621564Steve Block // A context untied to a frame was created (through evaluateInIsolatedWorld). 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // This context is not tied to the lifetime of its frame, and is destroyed 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // in garbage collection. 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didCreateIsolatedScriptContext(); 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // Returns true if we should allow the given V8 extension to be added to 74bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen // the script context at the currently loading page and given extension group. 75bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual bool allowScriptExtension(const String& extensionName, int extensionGroup); 76bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool hasWebView() const; 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool hasFrameView() const; 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void makeRepresentation(WebCore::DocumentLoader*); 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void forceLayout(); 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void forceLayoutForNonHTML(); 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setCopiesOnScroll(); 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void detachedFromParent2(); 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void detachedFromParent3(); 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse); 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier); 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&); 912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength); 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier); 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&); 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length); 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidHandleOnloadEvents(); 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidCancelClientRedirect(); 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double interval, double fireDate); 99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void dispatchDidNavigateWithinPage(); 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidChangeLocationWithinPage(); 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidPushStateWithinPage(); 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReplaceStateWithinPage(); 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidPopStateWithinPage(); 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchWillClose(); 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReceiveIcon(); 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidStartProvisionalLoad(); 1072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&); 10821939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void dispatchDidChangeIcons(); 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidCommitLoad(); 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&); 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFailLoad(const WebCore::ResourceError&); 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFinishDocumentLoad(); 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFinishLoad(); 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFirstLayout(); 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 116e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&); 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchShow(); 11881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void dispatchDecidePolicyForResponse(WebCore::FramePolicyFunction function, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&); 119dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state, const WTF::String& frame_name); 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state); 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void cancelPolicyCheck(); 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&); 12321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*); 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, PassRefPtr<WebCore::FormState>); 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*); 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void revertToProvisionalState(WebCore::DocumentLoader*); 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&); 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willChangeEstimatedProgress() { } 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeEstimatedProgress() { } 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void postProgressStartedNotification(); 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void postProgressEstimateChangedNotification(); 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void postProgressFinishedNotification(); 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setMainFrameDocumentReady(bool); 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void startDownload(const WebCore::ResourceRequest&); 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void willChangeTitle(WebCore::DocumentLoader*); 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeTitle(WebCore::DocumentLoader*); 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void committedLoad(WebCore::DocumentLoader*, const char*, int); 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void finishedLoading(WebCore::DocumentLoader*); 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void updateGlobalHistory(); 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void updateGlobalHistoryRedirectLinks(); 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const; 14281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const; 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const; 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const; 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidChangeBackForwardIndex() const; 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didDisplayInsecureContent(); 1472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::KURL& insecureURL); 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&); 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&); 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&); 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&); 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&); 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&); 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&); 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool shouldFallBack(const WebCore::ResourceError&); 156643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool canHandleRequest(const WebCore::ResourceRequest&) const; 157dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual bool canShowMIMEType(const WTF::String& MIMEType) const; 15868513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; 159dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const; 160dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const; 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void frameLoadCompleted(); 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void saveViewStateToItem(WebCore::HistoryItem*); 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void restoreViewState(); 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void provisionalLoadStarted(); 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didFinishLoad(); 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void prepareForDataSourceReplacement(); 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader( 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::ResourceRequest&, const WebCore::SubstituteData&); 1692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::KURL&); 170dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual WTF::String userAgent(const WebCore::KURL&); 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void transitionToCommittedForNewPage(); 174cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didSaveToPageCache(); 175cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didRestoreFromPageCache(); 176e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void dispatchDidBecomeFrameset(bool); 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool canCachePage() const; 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void download( 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::ResourceHandle*, const WebCore::ResourceRequest&, 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::ResourceRequest& initialRequest, 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::ResourceResponse&); 182643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual PassRefPtr<WebCore::Frame> createFrame( 183dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const WebCore::KURL& url, const WTF::String& name, 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::HTMLFrameOwnerElement* ownerElement, 185dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const WTF::String& referrer, bool allowsScrolling, 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int marginWidth, int marginHeight); 187bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void didTransferChildFrameToNewDocument(WebCore::Page*); 188e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*); 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual PassRefPtr<WebCore::Widget> createPlugin( 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, 191dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const Vector<WTF::String>&, const Vector<WTF::String>&, 192dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const WTF::String&, bool loadManually); 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget); 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget( 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::IntSize&, 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::HTMLAppletElement*, 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::KURL& /* base_url */, 198dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const Vector<WTF::String>& paramNames, 199dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const Vector<WTF::String>& paramValues); 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual WebCore::ObjectContentType objectContentType( 2012bde8e466a4451c7319e3a072d118917957d6554Steve Block const WebCore::KURL&, const WTF::String& mimeType, bool shouldPreferPlugInsForImages); 202dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual WTF::String overrideMediaType() const; 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didPerformFirstNavigation() const; 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void registerForIconNotification(bool listen = true); 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeScrollOffset(); 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool allowJavaScript(bool enabledPerSettings); 207d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowPlugins(bool enabledPerSettings); 208d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowImages(bool enabledPerSettings); 209dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowScript(); 210dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowPlugins(); 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext(); 2135abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate: 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void makeDocumentView(); 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Given a NavigationAction, determine the associated WebNavigationPolicy. 218643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // For example, a middle click means "open in background tab". 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static bool actionSpecifiesNavigationPolicy( 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const WebCore::NavigationAction& action, WebNavigationPolicy* policy); 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block PassOwnPtr<WebPluginLoadObserver> pluginLoadObserver(); 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 224643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The WebFrame that owns this object and manages its lifetime. Therefore, 225643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the web frame object is guaranteed to exist. 226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebFrameImpl* m_webFrame; 227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // True if makeRepresentation was called. We don't actually have a concept 229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // of a "representation", but we need to know when we're expected to have one. 230643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // See finishedLoading(). 231643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_hasRepresentation; 232643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 233643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Used to help track client redirects. When a provisional load starts, it 234643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // has no redirects in its chain. But in the case of client redirects, we want 235643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // to add that initial load as a redirect. When we get a new provisional load 236643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // and the dest URL matches that load, we know that it was the result of a 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // previous client redirect and the source should be added as a redirect. 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Both should be empty if unused. 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::KURL m_expectedClientRedirectSrc; 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCore::KURL m_expectedClientRedirectDest; 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Contains a pointer to the plugin widget. 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RefPtr<WebPluginContainerImpl> m_pluginWidget; 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Indicates if we need to send over the initial notification to the plugin 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // which specifies that the plugin should be ready to accept data. 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool m_sentInitialResponseToPlugin; 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The navigation policy to use for the next call to dispatchCreatePage. 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebNavigationPolicy m_nextNavigationPolicy; 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 254643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 256