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