WebKit:
[WebKit-https.git] / WebKit / WebView.subproj / WebViewPrivate.h
1 /*      
2     WebViewPrivate.h
3     Copyright 2001 Apple, Inc. All rights reserved.
4 */
5
6 #import <WebKit/WebView.h>
7 #import <WebKit/WebFramePrivate.h>
8
9 @class NSError;
10 @class WebFrame;
11 @class WebPreferences;
12 @class WebCoreSettings;
13
14 @protocol WebFormDelegate;
15
16 typedef struct _WebResourceDelegateImplementationCache {
17     uint delegateImplementsDidCancelAuthenticationChallenge:1;
18     uint delegateImplementsDidReceiveAuthenticationChallenge:1;
19     uint delegateImplementsDidReceiveResponse:1;
20     uint delegateImplementsDidReceiveContentLength:1;
21     uint delegateImplementsDidFinishLoadingFromDataSource:1;
22     uint delegateImplementsWillSendRequest:1;
23     uint delegateImplementsIdentifierForRequest:1;
24 } WebResourceDelegateImplementationCache;
25
26 extern NSString *_WebCanGoBackKey;
27 extern NSString *_WebCanGoForwardKey;
28 extern NSString *_WebEstimatedProgressKey;
29 extern NSString *_WebIsLoadingKey;
30 extern NSString *_WebMainFrameIconKey;
31 extern NSString *_WebMainFrameTitleKey;
32 extern NSString *_WebMainFrameURLKey;
33
34 typedef enum {
35         WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows,
36         WebDashboardBehaviorAlwaysSendActiveNullEventsToPlugIns,
37         WebDashboardBehaviorAlwaysAcceptsFirstMouse,
38         WebDashboardBehaviorAllowWheelScrolling
39 } WebDashboardBehavior;
40
41
42 @interface WebView (WebPendingPublic)
43
44 - (void)setMainFrameURL:(NSString *)URLString;
45 - (NSString *)mainFrameURL;
46 - (BOOL)isLoading;
47 - (NSString *)mainFrameTitle;
48 - (NSImage *)mainFrameIcon;
49
50 - (void)setDrawsBackground:(BOOL)drawsBackround;
51 - (BOOL)drawsBackground;
52
53 - (IBAction)toggleContinuousSpellChecking:(id)sender;
54
55 - (BOOL)isContinuousGrammarCheckingEnabled;
56 - (void)setContinuousGrammarCheckingEnabled:(BOOL)flag;
57 - (void)toggleContinuousGrammarChecking:(id)sender;
58
59 - (void)toggleSmartInsertDelete:(id)sender;
60
61 - (BOOL)canMakeTextStandardSize;
62 - (IBAction)makeTextStandardSize:(id)sender;
63
64 @end
65
66 @interface WebView (WebPrivate)
67
68 + (BOOL)_viewClass:(Class *)vClass andRepresentationClass:(Class *)rClass forMIMEType:(NSString *)MIMEType;
69
70 + (NSArray *)_supportedFileExtensions;
71
72 /*!
73     @method canShowFile:
74     @abstract Checks if the WebKit can show the content of the file at the specified path.
75     @param path The path of the file to check
76     @result YES if the WebKit can show the content of the file at the specified path.
77 */
78 + (BOOL)canShowFile:(NSString *)path;
79
80 /*!
81     @method suggestedFileExtensionForMIMEType:
82     @param MIMEType The MIME type to check.
83     @result The extension based on the MIME type
84 */
85 + (NSString *)suggestedFileExtensionForMIMEType: (NSString *)MIMEType;
86
87 /*!
88     @method frameForDataSource:
89     @abstract Return the frame associated with the data source.
90     @discussion Traverses the frame tree to find the frame associated
91     with a datasource.
92     @param datasource The datasource to  match against each frame.
93     @result The frame that has the associated datasource.
94 */
95 - (WebFrame *)_frameForDataSource: (WebDataSource *)dataSource;
96
97     /*!
98             @method frameForView:
99      @abstract Return the frame associated with the view.
100      @discussion Traverses the frame tree to find the view.
101      @param aView The view to match against each frame.
102      @result The frame that has the associated view.
103      */
104 - (WebFrame *)_frameForView: (WebFrameView *)aView;
105
106 - (WebFrame *)_createFrameNamed:(NSString *)name inParent:(WebFrame *)parent allowsScrolling:(BOOL)allowsScrolling;
107
108 - (void)_finishedLoadingResourceFromDataSource:(WebDataSource *)dataSource;
109 - (void)_receivedError:(NSError *)error fromDataSource:(WebDataSource *)dataSource;
110 - (void)_mainReceivedBytesSoFar:(unsigned)bytesSoFar fromDataSource:(WebDataSource *)dataSource complete:(BOOL)isComplete;
111 - (void)_mainReceivedError:(NSError *)error fromDataSource:(WebDataSource *)dataSource complete:(BOOL)isComplete;
112 + (NSString *)_MIMETypeForFile:(NSString *)path;
113 - (void)_downloadURL:(NSURL *)URL;
114 - (void)_downloadURL:(NSURL *)URL toDirectory:(NSString *)directoryPath;
115
116 - (BOOL)defersCallbacks;
117 - (void)setDefersCallbacks:(BOOL)defers;
118
119 - (void)_setTopLevelFrameName:(NSString *)name;
120 - (WebFrame *)_findFrameInThisWindowNamed:(NSString *)name sourceFrame:(WebFrame *)source;
121 - (WebFrame *)_findFrameNamed:(NSString *)name sourceFrame:(WebFrame *)source;
122
123 - (WebView *)_openNewWindowWithRequest:(NSURLRequest *)request;
124
125 - (NSMenu *)_menuForElement:(NSDictionary *)element;
126
127 - (void)_mouseDidMoveOverElement:(NSDictionary *)dictionary modifierFlags:(unsigned)modifierFlags;
128
129 /*!
130 Could be worth adding to the API.
131     @method loadItem:
132     @abstract Loads the view with the contents described by the item, including frame content
133         described by child items.
134     @param item   The item to load.  It is not retained, but a copy will appear in the
135         BackForwardList on this WebView.
136 */
137 - (void)_loadItem:(WebHistoryItem *)item;
138 /*!
139 Could be worth adding to the API.
140     @method loadItemsFromOtherView:
141     @abstract Loads the view with the contents of the other view, including its backforward list.
142     @param otherView   The WebView from which to copy contents.
143 */
144 - (void)_loadBackForwardListFromOtherView:(WebView *)otherView;
145
146 - (void)_goToItem:(WebHistoryItem *)item withLoadType:(WebFrameLoadType)type;
147
148 // May well become public
149 - (void)_setFormDelegate:(id<WebFormDelegate>)delegate;
150 - (id<WebFormDelegate>)_formDelegate;
151
152 - (WebCoreSettings *)_settings;
153 - (void)_updateWebCoreSettingsFromPreferences:(WebPreferences *)prefs;
154
155 - (id)_frameLoadDelegateForwarder;
156 - (id)_resourceLoadDelegateForwarder;
157 - (void)_cacheResourceLoadDelegateImplementations;
158 - (WebResourceDelegateImplementationCache)_resourceLoadDelegateImplementations;
159 - (id)_policyDelegateForwarder;
160 - (id)_UIDelegateForwarder;
161 - (id)_editingDelegateForwarder;
162
163 - (void)_closeWindow;
164
165 - (void)_setInitiatedDrag:(BOOL)initiatedDrag;
166
167 - (void)_close;
168
169 /*!
170     @method _registerViewClass:representationClass:forURLScheme:
171     @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
172     @param viewClass The WebDocumentView class to use to render data for a given MIME type.
173     @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
174     @param scheme The URL scheme to represent with an object of the given class.
175 */
176 + (void)_registerViewClass:(Class)viewClass representationClass:(Class)representationClass forURLScheme:(NSString *)URLScheme;
177
178 + (void)_unregisterViewClassAndRepresentationClassForMIMEType:(NSString *)MIMEType;
179
180 + (NSString *)_generatedMIMETypeForURLScheme:(NSString *)URLScheme;
181 + (BOOL)_representationExistsForURLScheme:(NSString *)URLScheme;
182 /*!
183      @method _canHandleRequest:
184      @abstract Performs a "preflight" operation that performs some
185      speculative checks to see if a request can be used to create
186      a WebDocumentView and WebDocumentRepresentation.
187      @discussion The result of this method is valid only as long as no
188      protocols or schemes are registered or unregistered, and as long as
189      the request is not mutated (if the request is mutable). Hence, clients
190      should be prepared to handle failures even if they have performed request
191      preflighting by caling this method.
192      @param request The request to preflight.
193      @result YES if it is likely that a WebDocumentView and WebDocumentRepresentation
194      can be created for the request, NO otherwise.
195 */
196 + (BOOL)_canHandleRequest:(NSURLRequest *)request;
197
198 + (NSString *)_decodeData:(NSData *)data;
199
200 - (void)_pushPerformingProgrammaticFocus;
201 - (void)_popPerformingProgrammaticFocus;
202 - (BOOL)_isPerformingProgrammaticFocus;
203
204 // Methods dealing with the estimated progress completion.
205 - (void)_progressStarted:(WebFrame *)frame;
206 - (void)_progressCompleted:(WebFrame *)frame;
207 - (void)_incrementProgressForConnectionDelegate:(id)connectionDelegate response:(NSURLResponse *)response;
208 - (void)_incrementProgressForConnectionDelegate:(id)connectionDelegate data:(NSData *)dataSource;
209 - (void)_completeProgressForConnectionDelegate:(id)connectionDelegate;
210
211 - (void)_didStartProvisionalLoadForFrame:(WebFrame *)frame;
212 - (void)_didCommitLoadForFrame:(WebFrame *)frame;
213 - (void)_didFinishLoadForFrame:(WebFrame *)frame;
214 - (void)_didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
215 - (void)_didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
216
217 - (void)_willChangeValueForKey:(NSString *)key;
218 - (void)_didChangeValueForKey:(NSString *)key;
219
220 - (void)_reloadForPluginChanges;
221 + (void)_setAlwaysUseATSU:(BOOL)f;
222
223 - (NSCachedURLResponse *)_cachedResponseForURL:(NSURL *)URL;
224
225 - (void)_writeImageElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
226 - (void)_writeLinkElement:(NSDictionary *)element withPasteboardTypes:(NSArray *)types toPasteboard:(NSPasteboard *)pasteboard;
227
228 - (void)_addScrollerDashboardRegions:(NSMutableDictionary *)regions;
229 - (NSDictionary *)_dashboardRegions;
230
231 - (void)_setDashboardBehavior:(WebDashboardBehavior)behavior to:(BOOL)flag;
232 - (BOOL)_dashboardBehavior:(WebDashboardBehavior)behavior;
233
234 - (void)handleAuthenticationForResource:(id)identifier challenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource;
235
236 + (void)_setShouldUseFontSmoothing:(BOOL)f;
237 + (BOOL)_shouldUseFontSmoothing;
238
239 @end
240
241 @interface WebView (WebViewPrintingPrivate)
242 /*!
243     @method _adjustPrintingMarginsForHeaderAndFooter:
244     @abstract Increase the top and bottom margins for the current print operation to
245     account for the header and footer height. 
246     @discussion Called by <WebDocument> implementors once when a print job begins. If the
247     <WebDocument> implementor implements knowsPageRange:, this should be called from there.
248     Otherwise this should be called from beginDocument. The <WebDocument> implementors need
249     to also call _drawHeaderAndFooter.
250 */
251 - (void)_adjustPrintingMarginsForHeaderAndFooter;
252
253 /*!
254     @method _drawHeaderAndFooter
255     @abstract Gives the WebView's UIDelegate a chance to draw a header and footer on the
256     printed page. 
257     @discussion This should be called by <WebDocument> implementors from an override of
258     drawPageBorderWithSize:.
259 */
260 - (void)_drawHeaderAndFooter;
261 @end
262
263 @interface WebView (WebViewEditingInMail)
264 - (void)_insertNewlineInQuotedContent;
265 - (BOOL)_selectWordBeforeMenuEvent;
266 - (void)_setSelectWordBeforeMenuEvent:(BOOL)flag;
267 @end
268
269 @interface _WebSafeForwarder : NSObject
270 {
271     id target;  // Non-retained.  Don't retain delegates;
272     id defaultTarget;
273     Class templateClass;
274 }
275 - (id)initWithTarget:(id)t defaultTarget:(id)dt templateClass:(Class)aClass;
276 + (id)safeForwarderWithTarget:(id)t defaultTarget:(id)dt templateClass:(Class)aClass;
277 @end
278
279 @interface NSObject (WebFrameLoadDelegatePrivate)
280 - (void)webView:(WebView *)sender didFirstLayoutInFrame:(WebFrame *)frame;
281 @end