1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/* 2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved. 3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without 5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions 6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met: 7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright 9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer. 10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright 11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer in the 12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * documentation and/or other materials provided with the distribution. 13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * its contributors may be used to endorse or promote products derived 15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * from this software without specific prior written permission. 16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#ifndef FrameLoadDelegate_h 30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define FrameLoadDelegate_h 31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebKit/WebKit.h> 33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <wtf/OwnPtr.h> 34563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass AccessibilityController; 36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass GCController; 37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass FrameLoadDelegate : public IWebFrameLoadDelegate, public IWebFrameLoadDelegatePrivate2 { 39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic: 40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark FrameLoadDelegate(); 41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual ~FrameLoadDelegate(); 42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void processWork(); 44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void resetToConsistentState(); 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 47d0825bca7fe65beaee391d30da42e937db621564Steve Block AccessibilityController* accessibilityController() const { return m_accessibilityController.get(); } 48d0825bca7fe65beaee391d30da42e937db621564Steve Block 49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // IUnknown 50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); 51563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual ULONG STDMETHODCALLTYPE AddRef(void); 52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual ULONG STDMETHODCALLTYPE Release(void); 53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // IWebFrameLoadDelegate 55563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didStartProvisionalLoadForFrame( 56563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didReceiveServerRedirectForProvisionalLoadForFrame( 60563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame); 62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 63563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didFailProvisionalLoadWithError( 64563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebError *error, 66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didCommitLoadForFrame( 69563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 70563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didReceiveTitle( 73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR title, 75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 76563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 7721939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual HRESULT STDMETHODCALLTYPE didChangeIcons( 7821939df44de1705786c545cd1bf519d47250322dBen Murdoch /* [in] */ IWebView *webView, 7921939df44de1705786c545cd1bf519d47250322dBen Murdoch /* [in] */ IWebFrame *frame); 8021939df44de1705786c545cd1bf519d47250322dBen Murdoch 81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didReceiveIcon( 82563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 83563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ OLE_HANDLE image, 84563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 85563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didFinishLoadForFrame( 87563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 88563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 89563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 90563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didFailLoadWithError( 91563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 92563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebError *error, 93563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *forFrame); 94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 95563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didChangeLocationWithinPageForFrame( 96563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 97563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 98563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 99563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE willPerformClientRedirectToURL( 100563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR url, 102563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ double delaySeconds, 103563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ DATE fireDate, 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame); 105563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 106563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didCancelClientRedirectForFrame( 107563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame); 109563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 110563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE willCloseFrame( 111563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *webView, 112563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 113563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 114563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE windowScriptObjectAvailable( 115563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 116563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ JSContextRef context, 117563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ JSObjectRef windowObject) { return E_NOTIMPL; } 118563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual /* [local] */ HRESULT STDMETHODCALLTYPE didClearWindowObject( 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView* webView, 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ JSContextRef context, 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ JSObjectRef windowObject, 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame* frame); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 125563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // IWebFrameLoadDelegatePrivate 126563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didFinishDocumentLoadForFrame( 127563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 128563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 129563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 130563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didFirstLayoutInFrame( 131563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 132563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 133563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 134563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark virtual HRESULT STDMETHODCALLTYPE didHandleOnloadEventsForFrame( 135563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 136563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame); 137563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual HRESULT STDMETHODCALLTYPE didFirstVisuallyNonEmptyLayoutInFrame( 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender, 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame); 141563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 142231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // IWebFrameLoadDelegatePrivate2 143231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual HRESULT STDMETHODCALLTYPE didDisplayInsecureContent( 144231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* [in] */ IWebView *sender); 145231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual HRESULT STDMETHODCALLTYPE didRunInsecureContent( 147231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* [in] */ IWebView *sender, 148231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /* [in] */ IWebSecurityOrigin *origin); 149231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual HRESULT STDMETHODCALLTYPE didClearWindowObjectForFrameInScriptWorld(IWebView*, IWebFrame*, IWebScriptWorld*); 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual HRESULT STDMETHODCALLTYPE didPushStateWithinPageForFrame( 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebView *sender, 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 156643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual HRESULT STDMETHODCALLTYPE didReplaceStateWithinPageForFrame( 157643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebView *sender, 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual HRESULT STDMETHODCALLTYPE didPopStateWithinPageForFrame( 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebView *sender, 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate: 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void didClearWindowObjectForFrameInIsolatedWorld(IWebFrame*, IWebScriptWorld*); 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void didClearWindowObjectForFrameInStandardWorld(IWebFrame*); 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 168563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void locationChangeDone(IWebError*, IWebFrame*); 169563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 170563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ULONG m_refCount; 171563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark OwnPtr<GCController> m_gcController; 172563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark OwnPtr<AccessibilityController> m_accessibilityController; 173563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}; 174563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 175563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif // FrameLoadDelegate_h 176