18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Zack Rusin <zack@kde.org> 32bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2006, 2011 Apple Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Collabora Ltd. All rights reserved. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * All rights reserved. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#ifndef FrameLoaderClientQt_h 31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#define FrameLoaderClientQt_h 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameLoader.h" 36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "FrameLoaderClient.h" 37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "KURL.h" 385abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include <wtf/OwnPtr.h> 39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "PluginView.h" 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RefCounted.h" 41e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "ResourceError.h" 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceResponse.h" 43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <QUrl> 44545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <qobject.h> 45dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h> 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QWebFrame; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass AuthenticationChallenge; 51545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass DocumentLoader; 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass Element; 53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass FormState; 54545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass NavigationAction; 555abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickclass FrameNetworkingContext; 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass ResourceLoader; 57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstruct LoadErrorResetToken; 59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass FrameLoaderClientQt : public QObject, public FrameLoaderClient { 61545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Q_OBJECT 62545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 63545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch friend class ::QWebFrame; 64545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void callPolicyFunction(FramePolicyFunction function, PolicyAction action); 65545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void callErrorPageExtension(const ResourceError&); 66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochsignals: 67545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void loadStarted(); 68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void loadProgress(int d); 69545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void loadFinished(bool); 70545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void titleChanged(const QString& title); 71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic: 73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch FrameLoaderClientQt(); 74545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ~FrameLoaderClientQt(); 75545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void frameLoaderDestroyed(); 76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void setFrame(QWebFrame* webFrame, Frame* frame); 78545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool hasWebView() const; // mainly for assertions 80545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 81545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void makeRepresentation(DocumentLoader*); 82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void forceLayout(); 83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void forceLayoutForNonHTML(); 84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 85545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void setCopiesOnScroll(); 86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void detachedFromParent2(); 88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void detachedFromParent3(); 89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); 91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 92545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceRequest&, const WebCore::ResourceResponse&); 93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier); 94545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&); 96545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceResponse&); 97545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long, int); 98545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long); 99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long, const WebCore::ResourceError&); 100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int); 101545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 102545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidHandleOnloadEvents(); 103545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); 104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidCancelClientRedirect(); 105545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate); 106545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidChangeLocationWithinPage(); 107545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidPushStateWithinPage(); 108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReplaceStateWithinPage(); 109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidPopStateWithinPage(); 110545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchWillClose(); 111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidReceiveIcon(); 112545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidStartProvisionalLoad(); 1132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dispatchDidReceiveTitle(const StringWithDirection&); 114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidChangeIcons(); 115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidCommitLoad(); 116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFailProvisionalLoad(const ResourceError&); 117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFailLoad(const WebCore::ResourceError&); 118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFinishDocumentLoad(); 119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFinishLoad(); 120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFirstLayout(); 121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidFirstVisuallyNonEmptyLayout(); 122545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 123e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&); 124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchShow(); 125545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 12681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void dispatchDecidePolicyForResponse(FramePolicyFunction function, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&); 127dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>, const WTF::String&); 128545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>); 129545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void cancelPolicyCheck(); 130545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 131545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&); 132545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 133545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { } 134545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>); 135545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 136545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidLoadMainResource(DocumentLoader*); 137545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void revertToProvisionalState(DocumentLoader*); 138545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void setMainDocumentError(DocumentLoader*, const ResourceError&); 139545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 140545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void postProgressStartedNotification(); 141545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void postProgressEstimateChangedNotification(); 142545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void postProgressFinishedNotification(); 143545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 144545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void setMainFrameDocumentReady(bool); 145545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 146545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void startDownload(const WebCore::ResourceRequest&); 147545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 148545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void willChangeTitle(DocumentLoader*); 149545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void didChangeTitle(DocumentLoader*); 150545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 151545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void committedLoad(WebCore::DocumentLoader*, const char*, int); 152545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void finishedLoading(DocumentLoader*); 153545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 154545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void updateGlobalHistory(); 155545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void updateGlobalHistoryRedirectLinks(); 156545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool shouldGoToHistoryItem(HistoryItem*) const; 15781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const; 158545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidAddBackForwardItem(HistoryItem*) const; 159545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const; 160545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidChangeBackForwardIndex() const; 161545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void didDisplayInsecureContent(); 1622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void didRunInsecureContent(SecurityOrigin*, const KURL&); 163545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 164545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError cancelledError(const ResourceRequest&); 165545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError blockedError(const ResourceRequest&); 166545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError cannotShowURLError(const ResourceRequest&); 167545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&); 168545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 169545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&); 170545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError fileDoesNotExistError(const ResourceResponse&); 171545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&); 172545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 173545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool shouldFallBack(const ResourceError&); 174545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 175545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool canHandleRequest(const WebCore::ResourceRequest&) const; 176545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool canShowMIMEType(const String& MIMEType) const; 17768513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; 178545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool representationExistsForURLScheme(const String& URLScheme) const; 179545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const; 180545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 181545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void frameLoadCompleted(); 182545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void saveViewStateToItem(WebCore::HistoryItem*); 183545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void restoreViewState(); 184545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void provisionalLoadStarted(); 185545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void didFinishLoad(); 186545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void prepareForDataSourceReplacement(); 187545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 188545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); 1892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void setTitle(const StringWithDirection&, const KURL&); 190545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 191545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual String userAgent(const WebCore::KURL&); 192545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 193545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); 194545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); 195545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void transitionToCommittedForNewPage(); 196545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 197cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didSaveToPageCache(); 198cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didRestoreFromPageCache(); 199cad810f21b803229eb11403f9209855525a25d57Steve Block 200e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void dispatchDidBecomeFrameset(bool); 201e14391e94c850b8bd03680c23b38978db68687a8John Reck 202545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual bool canCachePage() const; 203545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&); 204545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 205545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, 206545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight); 207bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void didTransferChildFrameToNewDocument(WebCore::Page*); 208e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*); 209545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool); 210545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void redirectDataToPlugin(Widget* pluginWidget); 211545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 212545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues); 213545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 2142bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual ObjectContentType objectContentType(const KURL&, const String& mimeTypeIn, bool shouldPreferPlugInsForImages); 215545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual String overrideMediaType() const; 216545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 217545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*); 218545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void documentElementAvailable(); 219545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void didPerformFirstNavigation() const; 220545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 22168513a70bcd92384395513322f1b801e7bf9c729Steve Block#if USE(V8) 22268513a70bcd92384395513322f1b801e7bf9c729Steve Block // A frame's V8 context was created or destroyed. 22368513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void didCreateScriptContextForFrame(); 22468513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void didDestroyScriptContextForFrame(); 22568513a70bcd92384395513322f1b801e7bf9c729Steve Block 22668513a70bcd92384395513322f1b801e7bf9c729Steve Block // A context untied to a frame was created (through evaluateInIsolatedWorld). 22768513a70bcd92384395513322f1b801e7bf9c729Steve Block // This context is not tied to the lifetime of its frame, and is destroyed 22868513a70bcd92384395513322f1b801e7bf9c729Steve Block // in garbage collection. 22968513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual void didCreateIsolatedScriptContext(); 23068513a70bcd92384395513322f1b801e7bf9c729Steve Block 23168513a70bcd92384395513322f1b801e7bf9c729Steve Block // Returns true if we should allow the given V8 extension to be added to 23268513a70bcd92384395513322f1b801e7bf9c729Steve Block // the script context at the currently loading page and given extension group. 23368513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual bool allowScriptExtension(const String& extensionName, int extensionGroup) { return false; } 23468513a70bcd92384395513322f1b801e7bf9c729Steve Block#endif 23568513a70bcd92384395513322f1b801e7bf9c729Steve Block 236545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void registerForIconNotification(bool); 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch QString chooseFile(const QString& oldFile); 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext(); 2415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 2422bde8e466a4451c7319e3a072d118917957d6554Steve Block const KURL& lastRequestedUrl() const { return m_lastRequestedUrl; } 2432bde8e466a4451c7319e3a072d118917957d6554Steve Block 244545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static bool dumpFrameLoaderCallbacks; 245e14391e94c850b8bd03680c23b38978db68687a8John Reck static bool dumpUserGestureInFrameLoaderCallbacks; 246545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static bool dumpResourceLoadCallbacks; 247ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static bool dumpResourceResponseMIMETypes; 248545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static QString dumpResourceLoadCallbacksPath; 249545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static bool sendRequestReturnsNullOnRedirect; 250545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static bool sendRequestReturnsNull; 251545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static QStringList sendRequestClearHeaders; 252ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static bool policyDelegateEnabled; 253ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block static bool policyDelegatePermissive; 254967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch static bool deferMainResourceDataLoad; 25568513a70bcd92384395513322f1b801e7bf9c729Steve Block static bool dumpHistoryCallbacks; 2562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block static QMap<QString, QString> URLsToRedirect; 2576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 2582bde8e466a4451c7319e3a072d118917957d6554Steve Blockprivate slots: 2592bde8e466a4451c7319e3a072d118917957d6554Steve Block void onIconLoadedForPageURL(const QString&); 2602bde8e466a4451c7319e3a072d118917957d6554Steve Block 261545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochprivate: 262545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch Frame *m_frame; 263545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch QWebFrame *m_webFrame; 264545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ResourceResponse m_response; 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 266545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // Plugin view to redirect data to 267545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebCore::PluginView* m_pluginView; 268545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool m_hasSentResponseToPlugin; 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 27068513a70bcd92384395513322f1b801e7bf9c729Steve Block // True if makeRepresentation was called. We don't actually have a concept 27168513a70bcd92384395513322f1b801e7bf9c729Steve Block // of a "representation", but we need to know when we're expected to have one. 27268513a70bcd92384395513322f1b801e7bf9c729Steve Block // See finishedLoading(). 27368513a70bcd92384395513322f1b801e7bf9c729Steve Block bool m_hasRepresentation; 27468513a70bcd92384395513322f1b801e7bf9c729Steve Block 2752bde8e466a4451c7319e3a072d118917957d6554Steve Block KURL m_lastRequestedUrl; 276545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ResourceError m_loadError; 277545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}; 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 282