Reviewed by Darin.
[WebKit-https.git] / WebKit / WebView.subproj / WebFramePrivate.h
1 /*      
2         WebFramePrivate.h
3             
4         Copyright 2001, Apple, Inc. All rights reserved.
5
6         Private header file.
7 */
8
9 // This header contains the WebFrame SPI.
10
11 // But it also contains a bunch of internal stuff that should be moved to WebFrameInternal.h
12
13 #import <WebKit/WebFrame.h>
14 #import <WebKit/WebPolicyDelegatePrivate.h>
15
16 @class DOMDocument;
17 @class DOMElement;
18 @class NSMutableURLRequest;
19 @class NSURLRequest;
20 @class WebArchive;
21 @class WebBridge;
22 @class WebFormState;
23 @class WebFrameBridge;
24 @class WebFrameView;
25 @class WebHistoryItem;
26 @class WebPolicyDecisionListener;
27 @class WebView;
28
29 typedef enum {
30     WebFrameStateProvisional,
31     
32     // This state indicates we are ready to commit to a page,
33     // which means the view will transition to use the new data source.
34     WebFrameStateCommittedPage,
35
36     // This state indicates that it is reasonable to perform a layout.
37     WebFrameStateLayoutAcceptable,
38
39     WebFrameStateComplete
40 } WebFrameState;
41
42 typedef enum {
43     WebFrameLoadTypeStandard,
44     WebFrameLoadTypeBack,
45     WebFrameLoadTypeForward,
46     WebFrameLoadTypeIndexedBackForward,         // a multi-item hop in the backforward list
47     WebFrameLoadTypeReload,
48     WebFrameLoadTypeReloadAllowingStaleData,
49     WebFrameLoadTypeSame,               // user loads same URL again (but not reload button)
50     WebFrameLoadTypeInternal,
51     WebFrameLoadTypeOnLoadEvent
52 } WebFrameLoadType;
53
54 #define WebFrameStateChangedNotification @"WebFrameStateChangedNotification"
55
56 #define WebPreviousFrameState @"WebPreviousFrameState"
57 #define WebCurrentFrameState  @"WebCurrentFrameState"
58
59 // Keys for accessing the values in the page cache dictionary.
60 extern NSString *WebPageCacheEntryDateKey;
61 extern NSString *WebPageCacheDataSourceKey;
62 extern NSString *WebPageCacheDocumentViewKey;
63
64 @interface WebFramePrivate : NSObject
65 {
66 @public
67     NSString *name;
68     WebFrameView *webFrameView;
69     WebDataSource *dataSource;
70     WebDataSource *provisionalDataSource;
71     WebBridge *bridge;
72     WebView *webView;
73     WebFrameState state;
74     NSTimer *scheduledLayoutTimer;
75     WebFrameLoadType loadType;
76     WebFrame *parent;
77     NSMutableArray *children;
78     WebHistoryItem *currentItem;        // BF item for our current content
79     WebHistoryItem *provisionalItem;    // BF item for where we're trying to go
80                                         // (only known when navigating to a pre-existing BF item)
81     WebHistoryItem *previousItem;       // BF item for previous content, see _itemForSavingDocState
82
83     WebPolicyDecisionListener *listener;
84     // state we'll need to continue after waiting for the policy delegate's decision
85     NSURLRequest *policyRequest;
86     NSString *policyFrameName;
87     id policyTarget;
88     SEL policySelector;
89     WebFormState *policyFormState;
90     WebDataSource *policyDataSource;
91     WebFrameLoadType policyLoadType;
92
93     BOOL justOpenedForTargetedLink;
94     BOOL quickRedirectComing;
95     BOOL isStoppingLoad;
96     BOOL delegateIsHandlingProvisionalLoadError;
97     BOOL delegateIsDecidingNavigationPolicy;
98     BOOL delegateIsHandlingUnimplementablePolicy;
99 }
100
101 - (void)setName:(NSString *)name;
102 - (NSString *)name;
103 - (void)setWebView:(WebView *)wv;
104 - (WebView *)webView;
105 - (void)setWebFrameView:(WebFrameView *)v;
106 - (WebFrameView *)webFrameView;
107 - (void)setDataSource:(WebDataSource *)d;
108 - (WebDataSource *)dataSource;
109 - (void)setProvisionalDataSource:(WebDataSource *)d;
110 - (WebDataSource *)provisionalDataSource;
111 - (WebFrameLoadType)loadType;
112 - (void)setLoadType:(WebFrameLoadType)loadType;
113
114 - (void)setProvisionalItem:(WebHistoryItem *)item;
115 - (WebHistoryItem *)provisionalItem;
116 - (void)setPreviousItem:(WebHistoryItem *)item;
117 - (WebHistoryItem *)previousItem;
118 - (void)setCurrentItem:(WebHistoryItem *)item;
119 - (WebHistoryItem *)currentItem;
120
121 @end
122
123 @interface WebFrame (WebPrivate)
124
125 // API Considerations:
126 /*!
127     @method loadArchive:
128     @abstract Causes WebFrame to load a WebArchive.
129     @param archive The archive to be loaded.
130 */
131 - (void)loadArchive:(WebArchive *)archive;
132
133 // Other private methods
134 - (NSURLRequest *)_webDataRequestForData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)URL unreachableURL:(NSURL *)unreachableURL;
135 - (void)_loadRequest:(NSURLRequest *)request subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives;
136
137 - (void)_setWebView:(WebView *)webView;
138 - (void)_setName:(NSString *)name;
139 - (WebFrame *)_descendantFrameNamed:(NSString *)name;
140 - (void)_detachFromParent;
141 - (void)_closeOldDataSources;
142 - (void)_setDataSource:(WebDataSource *)d;
143 - (void)_transitionToCommitted:(NSDictionary *)pageCache;
144 - (void)_transitionToLayoutAcceptable;
145 - (WebFrameState)_state;
146 - (void)_setState:(WebFrameState)newState;
147 - (void)_checkLoadCompleteForThisFrame;
148 - (void)_checkLoadComplete;
149 - (void)_timedLayout:userInfo;
150 - (WebBridge *)_bridge;
151 - (void)_clearProvisionalDataSource;
152 - (void)_setLoadType:(WebFrameLoadType)loadType;
153 - (WebFrameLoadType)_loadType;
154
155 - (void)_addExtraFieldsToRequest:(NSMutableURLRequest *)request alwaysFromRequest:(BOOL)f;
156
157 - (void)_checkNewWindowPolicyForRequest:(NSURLRequest *)request action:(NSDictionary *)action frameName:(NSString *)frameName formState:(WebFormState *)formState andCall:(id)target withSelector:(SEL)selector;
158
159 - (void)_checkNavigationPolicyForRequest:(NSURLRequest *)request dataSource:(WebDataSource *)dataSource formState:(WebFormState *)formState andCall:(id)target withSelector:(SEL)selector;
160
161 - (void)_invalidatePendingPolicyDecisionCallingDefaultAction:(BOOL)call;
162
163 - (void)_goToItem:(WebHistoryItem *)item withLoadType:(WebFrameLoadType)type;
164 - (void)_loadURL:(NSURL *)URL referrer:(NSString *)referrer loadType:(WebFrameLoadType)loadType target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
165 - (void)_loadURL:(NSURL *)URL intoChild:(WebFrame *)childFrame;
166 - (void)_postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
167
168 - (void)_loadRequest:(NSURLRequest *)request inFrameNamed:(NSString *)frameName;
169
170 - (void)_clientRedirectedTo:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction;
171 - (void)_clientRedirectCancelled:(BOOL)cancelWithLoadInProgress;
172
173 - (void)_textSizeMultiplierChanged;
174
175 - (void)_defersCallbacksChanged;
176
177 - (void)_viewWillMoveToHostWindow:(NSWindow *)hostWindow;
178 - (void)_viewDidMoveToHostWindow;
179
180 - (void)_reloadAllowingStaleDataWithOverrideEncoding:(NSString *)encoding;
181
182 - (void)_addChild:(WebFrame *)child;
183 - (void)_removeChild:(WebFrame *)child;
184
185 - (NSString *)_generateFrameName;
186 - (NSDictionary *)_actionInformationForNavigationType:(WebNavigationType)navigationType event:(NSEvent *)event originalURL:(NSURL *)URL;
187
188 - (WebHistoryItem *)_itemForSavingDocState;
189 - (WebHistoryItem *)_itemForRestoringDocState;
190
191 - (void)_saveDocumentAndScrollState;
192
193 - (void)_handleUnimplementablePolicyWithErrorCode:(int)code forURL:(NSURL *)URL;
194
195 - (void)_loadDataSource:(WebDataSource *)dataSource withLoadType:(WebFrameLoadType)type formState:(WebFormState *)formState;
196
197 - (void)_setJustOpenedForTargetedLink:(BOOL)justOpened;
198
199 - (void)_setProvisionalDataSource:(WebDataSource *)d;
200
201 + (CFAbsoluteTime)_timeOfLastCompletedLoad;
202 - (BOOL)_canCachePage;
203 - (void)_purgePageCache;
204
205 - (void)_opened;
206 // used to decide to use loadType=Same
207 - (BOOL)_shouldTreatURLAsSameAsCurrent:(NSURL *)URL;
208
209 - (WebFrame *)_nextFrameWithWrap:(BOOL)wrapFlag;
210 - (WebFrame *)_previousFrameWithWrap:(BOOL)wrapFlag;
211
212 - (void)_setShouldCreateRenderers:(BOOL)f;
213 - (BOOL)_shouldCreateRenderers;
214
215 - (int)_numPendingOrLoadingRequests:(BOOL)recurse;
216
217 - (NSColor *)_bodyBackgroundColor;
218
219 - (void)_reloadForPluginChanges;
220
221 - (NSArray *)_internalChildFrames;
222
223 @end