10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*
20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without
50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions
60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met:
70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1.  Redistributions of source code must retain the above copyright
90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     notice, this list of conditions and the following disclaimer.
100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2.  Redistributions in binary form must reproduce the above copyright
110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     notice, this list of conditions and the following disclaimer in the
120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     documentation and/or other materials provided with the distribution.
130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     its contributors may be used to endorse or promote products derived
150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *     from this software without specific prior written permission.
160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *
170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */
280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// This header contains WebView declarations that can be used anywhere in WebKit, but are neither SPI nor API.
300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebTypesInternal.h"
320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebView;
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstruct WebResourceDelegateImplementationCache {
360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didCancelAuthenticationChallengeFunc;
370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveAuthenticationChallengeFunc;
3821939df44de1705786c545cd1bf519d47250322dBen Murdoch#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
3921939df44de1705786c545cd1bf519d47250322dBen Murdoch    IMP canAuthenticateAgainstProtectionSpaceFunc;
4021939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP identifierForRequestFunc;
420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willSendRequestFunc;
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveResponseFunc;
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveContentLengthFunc;
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFinishLoadingFromDataSourceFunc;
460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFailLoadingWithErrorFromDataSourceFunc;
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didLoadResourceFromMemoryCacheFunc;
480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willCacheResponseFunc;
490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP plugInFailedWithErrorFunc;
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP shouldUseCredentialStorageFunc;
5181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    IMP shouldPaintBrokenImageForURLFunc;
520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch};
530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstruct WebFrameLoadDelegateImplementationCache {
550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didClearWindowObjectForFrameFunc;
56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    IMP didClearWindowObjectForFrameInScriptWorldFunc;
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didClearInspectorWindowObjectForFrameFunc;
580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP windowScriptObjectAvailableFunc;
590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didHandleOnloadEventsForFrameFunc;
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveServerRedirectForProvisionalLoadForFrameFunc;
610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didCancelClientRedirectForFrameFunc;
620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willPerformClientRedirectToURLDelayFireDateForFrameFunc;
630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didChangeLocationWithinPageForFrameFunc;
64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    IMP didPushStateWithinPageForFrameFunc;
65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    IMP didReplaceStateWithinPageForFrameFunc;
66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    IMP didPopStateWithinPageForFrameFunc;
670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willCloseFrameFunc;
680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didStartProvisionalLoadForFrameFunc;
690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveTitleForFrameFunc;
700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didCommitLoadForFrameFunc;
710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFailProvisionalLoadWithErrorForFrameFunc;
720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFailLoadWithErrorForFrameFunc;
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFinishLoadForFrameFunc;
740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFirstLayoutInFrameFunc;
750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFirstVisuallyNonEmptyLayoutInFrameFunc;
760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didReceiveIconForFrameFunc;
770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didFinishDocumentLoadForFrameFunc;
78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP didDisplayInsecureContentFunc;
79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP didRunInsecureContentFunc;
800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch};
810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstruct WebScriptDebugDelegateImplementationCache {
830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    BOOL didParseSourceExpectsBaseLineNumber;
84ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    BOOL exceptionWasRaisedExpectsHasHandlerFlag;
850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didParseSourceFunc;
860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP failedToParseSourceFunc;
870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP didEnterCallFrameFunc;
880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willExecuteStatementFunc;
890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP willLeaveCallFrameFunc;
900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    IMP exceptionWasRaisedFunc;
910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch};
920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
93231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstruct WebHistoryDelegateImplementationCache {
94231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP navigatedFunc;
95231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP clientRedirectFunc;
96231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP serverRedirectFunc;
97231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    IMP setTitleFunc;
98cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    IMP populateVisitedLinksFunc;
99231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block};
100231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochWebResourceDelegateImplementationCache* WebViewGetResourceLoadDelegateImplementations(WebView *);
1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochWebFrameLoadDelegateImplementationCache* WebViewGetFrameLoadDelegateImplementations(WebView *);
1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochWebScriptDebugDelegateImplementationCache* WebViewGetScriptDebugDelegateImplementations(WebView *);
104231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockWebHistoryDelegateImplementationCache* WebViewGetHistoryDelegateImplementations(WebView *webView);
1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFormDelegate(WebView *, SEL, id, id);
1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFormDelegate(WebView *self, SEL selector, id object1, id object2, id object3, id object4, id object5);
1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallFormDelegateReturningBoolean(BOOL, WebView *, SEL, id, SEL, id);
1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL);
1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, id);
1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, NSRect);
1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, id, id);
1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, id, BOOL);
1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, id, id, id);
1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallUIDelegate(WebView *, SEL, id, NSUInteger);
1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfloat CallUIDelegateReturningFloat(WebView *, SEL);
1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallUIDelegateReturningBoolean(BOOL, WebView *, SEL);
1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallUIDelegateReturningBoolean(BOOL, WebView *, SEL, id);
1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallUIDelegateReturningBoolean(BOOL, WebView *, SEL, id, id);
1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallUIDelegateReturningBoolean(BOOL, WebView *, SEL, id, BOOL);
122643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockBOOL CallUIDelegateReturningBoolean(BOOL, WebView *, SEL, id, BOOL, id);
1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL);
1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL, id);
1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL, id, id);
1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL, id, id, id);
1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL, id, id, id, id);
1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallFrameLoadDelegate(IMP, WebView *, SEL, id, NSTimeInterval, id, id);
1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallResourceLoadDelegate(IMP, WebView *, SEL, id, id);
1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallResourceLoadDelegate(IMP, WebView *, SEL, id, id, id);
1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallResourceLoadDelegate(IMP, WebView *, SEL, id, id, id, id);
1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallResourceLoadDelegate(IMP, WebView *, SEL, id, NSInteger, id);
1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallResourceLoadDelegate(IMP, WebView *, SEL, id, id, NSInteger, id);
1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
13781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochBOOL CallResourceLoadDelegateReturningBoolean(BOOL, IMP, WebView *, SEL, id);
1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBOOL CallResourceLoadDelegateReturningBoolean(BOOL, IMP, WebView *, SEL, id, id);
13921939df44de1705786c545cd1bf519d47250322dBen MurdochBOOL CallResourceLoadDelegateReturningBoolean(BOOL, IMP, WebView *, SEL, id, id, id);
1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallScriptDebugDelegate(IMP, WebView *, SEL, id, id, NSInteger, id);
1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallScriptDebugDelegate(IMP, WebView *, SEL, id, NSInteger, id, NSInteger, id);
1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochid CallScriptDebugDelegate(IMP, WebView *, SEL, id, NSInteger, id, id, id);
144ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochid CallScriptDebugDelegate(IMP, WebView *, SEL, id, NSInteger, int, id);
145ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochid CallScriptDebugDelegate(IMP, WebView *, SEL, id, BOOL, NSInteger, int, id);
146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
147cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockid CallHistoryDelegate(IMP, WebView *, SEL);
148231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockid CallHistoryDelegate(IMP, WebView *, SEL, id, id);
149231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockid CallHistoryDelegate(IMP, WebView *, SEL, id, id, id);
150