18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 22bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef FrameLoaderClient_h 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define FrameLoaderClient_h 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameLoaderTypes.h" 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "ScrollTypes.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Forward.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 37cad810f21b803229eb11403f9209855525a25d57Steve Block#if PLATFORM(MAC) 38cad810f21b803229eb11403f9209855525a25d57Steve Block#ifdef __OBJC__ 39cad810f21b803229eb11403f9209855525a25d57Steve Block#import <Foundation/Foundation.h> 40cad810f21b803229eb11403f9209855525a25d57Steve Blocktypedef id RemoteAXObjectRef; 41cad810f21b803229eb11403f9209855525a25d57Steve Block#else 42cad810f21b803229eb11403f9209855525a25d57Steve Blocktypedef void* RemoteAXObjectRef; 43cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 44cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 45cad810f21b803229eb11403f9209855525a25d57Steve Block 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef class _jobject* jobject; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) && !defined(__OBJC__) 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSCachedURLResponse; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass NSView; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class AuthenticationChallenge; 56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project class CachedFrame; 57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project class Color; 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block class DOMWrapperWorld; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class DocumentLoader; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Element; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class FormState; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Frame; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class FrameLoader; 645abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick class FrameNetworkingContext; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HistoryItem; 668f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class HTMLAppletElement; 6721939df44de1705786c545cd1bf519d47250322dBen Murdoch class HTMLFormElement; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class HTMLFrameOwnerElement; 69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block class HTMLMediaElement; 71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian class HTMLPlugInElement; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class IntSize; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class KURL; 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class NavigationAction; 76bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen class Page; 7721939df44de1705786c545cd1bf519d47250322dBen Murdoch class ProtectionSpace; 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class PluginView; 79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class PolicyChecker; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceError; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceHandle; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceLoader; 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block class ResourceRequest; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class ResourceResponse; 85231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class SecurityOrigin; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class SharedBuffer; 872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch class StringWithDirection; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class SubstituteData; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class Widget; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 91231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block typedef void (PolicyChecker::*FramePolicyFunction)(PolicyAction); 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class FrameLoaderClient { 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 958f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // An inline function cannot be the first non-abstract virtual function declared 968f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // in the class as it results in the vtable being generated as a weak symbol. 978f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // This hurts performance (in Mac OS X at least, when loadig frameworks), so we 988f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // don't want to do it in WebKit. 998f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool hasHTMLView() const; 1008f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1018f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual ~FrameLoaderClient() { } 1028f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void frameLoaderDestroyed() = 0; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1058f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool hasWebView() const = 0; // mainly for assertions 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void makeRepresentation(DocumentLoader*) = 0; 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void forceLayout() = 0; 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void forceLayoutForNonHTML() = 0; 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setCopiesOnScroll() = 0; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void detachedFromParent2() = 0; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void detachedFromParent3() = 0; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&) = 0; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) = 0; 119635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long identifier) = 0; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) = 0; 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) = 0; 12221939df44de1705786c545cd1bf519d47250322dBen Murdoch#if USE(PROTECTION_SPACE_AUTH_CALLBACK) 12321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long identifier, const ProtectionSpace&) = 0; 12421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) = 0; 1262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int dataLength) = 0; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) = 0; 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&) = 0; 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) = 0; 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidHandleOnloadEvents() = 0; 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() = 0; 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidCancelClientRedirect() = 0; 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate) = 0; 135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void dispatchDidNavigateWithinPage() { } 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidChangeLocationWithinPage() = 0; 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidPushStateWithinPage() = 0; 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidReplaceStateWithinPage() = 0; 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidPopStateWithinPage() = 0; 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchWillClose() = 0; 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidReceiveIcon() = 0; 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidStartProvisionalLoad() = 0; 1432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void dispatchDidReceiveTitle(const StringWithDirection&) = 0; 14421939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void dispatchDidChangeIcons() = 0; 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidCommitLoad() = 0; 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFailProvisionalLoad(const ResourceError&) = 0; 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFailLoad(const ResourceError&) = 0; 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFinishDocumentLoad() = 0; 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFinishLoad() = 0; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidFirstLayout() = 0; 151635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void dispatchDidFirstVisuallyNonEmptyLayout() = 0; 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 153e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual Frame* dispatchCreatePage(const NavigationAction&) = 0; 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchShow() = 0; 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&) = 0; 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String& frameName) = 0; 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) = 0; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void cancelPolicyCheck() = 0; 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchUnableToImplementPolicy(const ResourceError&) = 0; 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 16321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) = 0; 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) = 0; 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void dispatchDidLoadMainResource(DocumentLoader*) = 0; 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void revertToProvisionalState(DocumentLoader*) = 0; 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) = 0; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Maybe these should go into a ProgressTrackerClient some day 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void willChangeEstimatedProgress() { } 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didChangeEstimatedProgress() { } 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void postProgressStartedNotification() = 0; 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void postProgressEstimateChangedNotification() = 0; 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void postProgressFinishedNotification() = 0; 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setMainFrameDocumentReady(bool) = 0; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void startDownload(const ResourceRequest&) = 0; 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void willChangeTitle(DocumentLoader*) = 0; 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didChangeTitle(DocumentLoader*) = 0; 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void committedLoad(DocumentLoader*, const char*, int) = 0; 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void finishedLoading(DocumentLoader*) = 0; 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 187635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void updateGlobalHistory() = 0; 1888f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual void updateGlobalHistoryRedirectLinks() = 0; 189635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool shouldGoToHistoryItem(HistoryItem*) const = 0; 19181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const = 0; 192ed3dcbaa89ede50bb054f63aa1847ae6240fa70dBen Murdoch virtual void dispatchDidAddBackForwardItem(HistoryItem*) const = 0; 193ed3dcbaa89ede50bb054f63aa1847ae6240fa70dBen Murdoch virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const = 0; 194ed3dcbaa89ede50bb054f63aa1847ae6240fa70dBen Murdoch virtual void dispatchDidChangeBackForwardIndex() const = 0; 19581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void updateGlobalHistoryItemForPage() { } 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 197231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // This frame has displayed inactive content (such as an image) from an 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // insecure source. Inactive content cannot spread to other frames. 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void didDisplayInsecureContent() = 0; 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // The indicated security origin has run active content (such as a 202231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // script) from an insecure source. Note that the insecure content can 203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // spread to other frames in the same origin. 2042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) = 0; 205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError cancelledError(const ResourceRequest&) = 0; 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError blockedError(const ResourceRequest&) = 0; 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError cannotShowURLError(const ResourceRequest&) = 0; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) = 0; 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) = 0; 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError fileDoesNotExistError(const ResourceResponse&) = 0; 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) = 0; 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool shouldFallBack(const ResourceError&) = 0; 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canHandleRequest(const ResourceRequest&) const = 0; 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canShowMIMEType(const String& MIMEType) const = 0; 21968513a70bcd92384395513322f1b801e7bf9c729Steve Block virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const = 0; 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool representationExistsForURLScheme(const String& URLScheme) const = 0; 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const = 0; 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void frameLoadCompleted() = 0; 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void saveViewStateToItem(HistoryItem*) = 0; 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void restoreViewState() = 0; 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void provisionalLoadStarted() = 0; 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didFinishLoad() = 0; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void prepareForDataSourceReplacement() = 0; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) = 0; 2312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void setTitle(const StringWithDirection&, const KURL&) = 0; 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual String userAgent(const KURL&) = 0; 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 235635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void savePlatformDataToCachedFrame(CachedFrame*) = 0; 236635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void transitionToCommittedFromCachedFrame(CachedFrame*) = 0; 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void transitionToCommittedForNewPage() = 0; 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 239cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didSaveToPageCache() = 0; 240cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void didRestoreFromPageCache() = 0; 241cad810f21b803229eb11403f9209855525a25d57Steve Block 242e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void dispatchDidBecomeFrameset(bool) = 0; // Can change due to navigation or DOM modification. 243e14391e94c850b8bd03680c23b38978db68687a8John Reck 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool canCachePage() const = 0; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) = 0; 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) = 0; 249bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void didTransferChildFrameToNewDocument(Page* oldPage) = 0; 250e14391e94c850b8bd03680c23b38978db68687a8John Reck virtual void transferLoadingResourceFromPage(unsigned long identifier, DocumentLoader*, const ResourceRequest&, Page* oldPage) = 0; 2510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) = 0; 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void redirectDataToPlugin(Widget* pluginWidget) = 0; 2530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) = 0; 2550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void dispatchDidFailToStartPlugin(const PluginView*) const { } 257dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 258dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) = 0; 259967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void hideMediaPlayerProxyPlugin(Widget*) = 0; 260967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void showMediaPlayerProxyPlugin(Widget*) = 0; 261dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2632bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual ObjectContentType objectContentType(const KURL&, const String& mimeType, bool shouldPreferPlugInsForImages) = 0; 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual String overrideMediaType() const = 0; 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) = 0; 2678f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual void documentElementAvailable() = 0; 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void didPerformFirstNavigation() const = 0; // "Navigation" here means a transition from one page to another that ends up in the back/forward list. 2690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if USE(V8) 2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void didCreateScriptContextForFrame() = 0; 2720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void didDestroyScriptContextForFrame() = 0; 2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual void didCreateIsolatedScriptContext() = 0; 274bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual bool allowScriptExtension(const String& extensionName, int extensionGroup) = 0; 2750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 2760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void registerForIconNotification(bool listen = true) = 0; 278f1c0bbb9bf698154c206e842f94b72d277a96094Patrick Scott#ifdef ANDROID_APPLE_TOUCH_ICON 279c6fbc06882c120f5f51090203775eb0421550d13Patrick Scott virtual void dispatchDidReceiveTouchIconURL(const String& url, bool precomposed) = 0; 280f1c0bbb9bf698154c206e842f94b72d277a96094Patrick Scott#endif 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if PLATFORM(MAC) 283cad810f21b803229eb11403f9209855525a25d57Steve Block // Allow an accessibility object to retrieve a Frame parent if there's no PlatformWidget. 284cad810f21b803229eb11403f9209855525a25d57Steve Block virtual RemoteAXObjectRef accessibilityRemoteObject() = 0; 28521939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JAVA_BRIDGE) 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual jobject javaApplet(NSView*) { return 0; } 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const = 0; 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2908f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#if USE(CFNETWORK) 2918f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool shouldCacheResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&, const unsigned char* data, unsigned long long length) = 0; 2928f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif 293635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 294635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool shouldUsePluginDocument(const String& /*mimeType*/) const { return false; } 295231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool shouldLoadMediaElementURL(const KURL&) const { return true; } 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void didChangeScrollOffset() { } 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool allowJavaScript(bool enabledPerSettings) { return enabledPerSettings; } 300d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowPlugins(bool enabledPerSettings) { return enabledPerSettings; } 301d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool allowImages(bool enabledPerSettings) { return enabledPerSettings; } 302dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 303dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // This callback notifies the client that the frame was about to run 304dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // JavaScript but did not because allowJavaScript returned false. We 305dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // have a separate callback here because there are a number of places 306dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // that need to know if JavaScript is enabled but are not necessarily 307dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // preparing to execute script. 308dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowScript() { } 309dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // This callback is similar, but for plugins. 310dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didNotAllowPlugins() { } 3115abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 3125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() = 0; 31381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 31481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool shouldPaintBrokenImage(const KURL&) const { return true; } 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // FrameLoaderClient_h 320