d6828256d8e8811b7e33877adc5dc06b8b451c3c
[WebKit-https.git] / WebKit / mac / WebView / WebFrameInternal.h
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 // This header contains WebFrame declarations that can be used anywhere in WebKit, but are neither SPI nor API.
30
31 #import "WebFramePrivate.h"
32 #import "WebPreferencesPrivate.h"
33
34 #ifdef __cplusplus
35 #import <WebCore/FrameLoaderTypes.h>
36 #import <WebCore/Settings.h>
37 #endif
38
39 @class DOMCSSStyleDeclaration;
40 @class DOMElement;
41 @class DOMNode;
42 @class DOMRange;
43 @class WebFrameView;
44 @class WebFrameBridge;
45 @class WebHistoryItem;
46 class WebScriptDebugger;
47
48 #ifdef __cplusplus
49
50 namespace WebCore {
51     class CSSStyleDeclaration;
52     class Document;
53     class DocumentLoader;
54     class Element;
55     class Frame;
56     class Frame;
57     class FrameLoader;
58     class HistoryItem;
59     class HTMLElement;
60     class Node;
61     class Page;
62     class Range;
63 }
64
65 typedef WebCore::HistoryItem WebCoreHistoryItem;
66
67 WebCore::CSSStyleDeclaration* core(DOMCSSStyleDeclaration *);
68 DOMCSSStyleDeclaration *kit(WebCore::CSSStyleDeclaration*);
69
70 WebCore::Frame* core(WebFrame *);
71 WebFrame *kit(WebCore::Frame *);
72
73 WebCore::Element* core(DOMElement *);
74 DOMElement *kit(WebCore::Element*);
75
76 WebCore::Node* core(DOMNode *);
77 DOMNode *kit(WebCore::Node*);
78
79 WebCore::Document* core(DOMDocument *);
80 DOMDocument *kit(WebCore::Document*);
81
82 WebCore::HTMLElement* core(DOMHTMLElement *);
83 DOMHTMLElement *kit(WebCore::HTMLElement*);
84
85 WebCore::Range* core(DOMRange *);
86 DOMRange *kit(WebCore::Range*);
87
88 WebCore::Page* core(WebView *);
89 WebView *kit(WebCore::Page*);
90
91 WebCore::EditableLinkBehavior core(WebKitEditableLinkBehavior);
92
93 WebView *getWebView(WebFrame *webFrame);
94
95 @interface WebFramePrivate : NSObject {
96 @public
97     WebFrameView *webFrameView;
98     WebFrameBridge *bridge;
99     WebScriptDebugger* scriptDebugger;
100     id internalLoadDelegate;
101 }
102 @end
103
104 #else
105 struct WebCoreHistoryItem;
106 #endif
107
108 @interface WebFrame (WebInternal)
109
110 - (void)_updateBackground;
111 - (void)_setInternalLoadDelegate:(id)internalLoadDelegate;
112 - (id)_internalLoadDelegate;
113 #ifndef BUILDING_ON_TIGER
114 - (void)_unmarkAllBadGrammar;
115 #endif
116 - (void)_unmarkAllMisspellings;
117 // Note that callers should not perform any ops on these views that could change the set of frames
118 - (NSArray *)_documentViews;
119
120 - (BOOL)_hasSelection;
121 - (void)_clearSelection;
122 - (WebFrame *)_findFrameWithSelection;
123 - (void)_clearSelectionInOtherFrames;
124 #ifdef __cplusplus
125 - (id)_initWithWebFrameView:(WebFrameView *)fv webView:(WebView *)v bridge:(WebFrameBridge *)bridge;
126 #endif
127
128 - (BOOL)_isMainFrame;
129
130 #ifdef __cplusplus
131
132 - (WebCore::FrameLoader*)_frameLoader;
133 - (WebDataSource *)_dataSourceForDocumentLoader:(WebCore::DocumentLoader*)loader;
134
135 - (void)_addDocumentLoader:(WebCore::DocumentLoader*)loader toUnarchiveState:(WebArchive *)archive;
136
137 #endif
138
139 - (WebFrameBridge *)_bridge;
140
141 - (void)_loadURL:(NSURL *)URL referrer:(NSString *)referrer intoChild:(WebFrame *)childFrame;
142
143 - (void)_viewWillMoveToHostWindow:(NSWindow *)hostWindow;
144 - (void)_viewDidMoveToHostWindow;
145
146 - (void)_addChild:(WebFrame *)child;
147
148 + (CFAbsoluteTime)_timeOfLastCompletedLoad;
149
150 - (int)_numPendingOrLoadingRequests:(BOOL)recurse;
151
152 - (void)_reloadForPluginChanges;
153
154 - (void)_attachScriptDebugger;
155 - (void)_detachScriptDebugger;
156
157 // dataSource reports null for the initial empty document's data source; this is needed
158 // to preserve compatibility with Mail and Safari among others. But internal to WebKit,
159 // we need to be able to get the initial data source as well, so the _dataSource method
160 // should be used instead.
161 - (WebDataSource *)_dataSource;
162
163 @end
164
165 @interface NSObject (WebInternalFrameLoadDelegate)
166 - (void)webFrame:(WebFrame *)webFrame didFinishLoadWithError:(NSError *)error;
167 @end