Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
[WebKit-https.git] / Source / WebKitLegacy / mac / WebView / WebUIDelegate.h
1 /*
2  * Copyright (C) 2003, 2004, 2005, 2006 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 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 #import <Foundation/Foundation.h>
30 #import <Foundation/NSURLRequest.h>
31 #import <WebKitLegacy/WebKitAvailability.h>
32
33 #if !TARGET_OS_IPHONE
34 #import <AppKit/AppKit.h>
35 #else
36 #import <WebKitLegacy/WAKAppKitStubs.h>
37 #import <WebKitLegacy/WAKView.h>
38 #endif
39
40 /*!
41     @enum WebMenuItemTag
42     @discussion Each menu item in the default menu items array passed in
43     contextMenuItemsForElement:defaultMenuItems: has its tag set to one of the WebMenuItemTags.
44     When iterating through the default menu items array, use the tag to differentiate between them.
45 */
46
47 enum {
48     WebMenuItemTagOpenLinkInNewWindow=1,
49     WebMenuItemTagDownloadLinkToDisk,
50     WebMenuItemTagCopyLinkToClipboard,
51     WebMenuItemTagOpenImageInNewWindow,
52     WebMenuItemTagDownloadImageToDisk,
53     WebMenuItemTagCopyImageToClipboard,
54     WebMenuItemTagOpenFrameInNewWindow,
55     WebMenuItemTagCopy,
56     WebMenuItemTagGoBack,
57     WebMenuItemTagGoForward,
58     WebMenuItemTagStop,
59     WebMenuItemTagReload,
60     WebMenuItemTagCut,
61     WebMenuItemTagPaste,
62     WebMenuItemTagSpellingGuess,
63     WebMenuItemTagNoGuessesFound,
64     WebMenuItemTagIgnoreSpelling,
65     WebMenuItemTagLearnSpelling,
66     WebMenuItemTagOther,
67     WebMenuItemTagSearchInSpotlight,
68     WebMenuItemTagSearchWeb,
69     WebMenuItemTagLookUpInDictionary,
70     WebMenuItemTagOpenWithDefaultApplication,
71     WebMenuItemPDFActualSize,
72     WebMenuItemPDFZoomIn,
73     WebMenuItemPDFZoomOut,
74     WebMenuItemPDFAutoSize,
75     WebMenuItemPDFSinglePage,
76     WebMenuItemPDFFacingPages,
77     WebMenuItemPDFContinuous,
78     WebMenuItemPDFNextPage,
79     WebMenuItemPDFPreviousPage,
80 };
81
82 /*!
83     @enum WebDragDestinationAction
84     @abstract Actions that the destination of a drag can perform.
85     @constant WebDragDestinationActionNone No action
86     @constant WebDragDestinationActionDHTML Allows DHTML (such as JavaScript) to handle the drag
87     @constant WebDragDestinationActionEdit Allows editable documents to be edited from the drag
88     @constant WebDragDestinationActionLoad Allows a location change from the drag
89     @constant WebDragDestinationActionAny Allows any of the above to occur
90 */
91 typedef NS_OPTIONS(NSUInteger, WebDragDestinationAction) {
92     WebDragDestinationActionNone    = 0,
93     WebDragDestinationActionDHTML   = 1,
94     WebDragDestinationActionEdit    = 2,
95     WebDragDestinationActionLoad    = 4,
96     WebDragDestinationActionAny     = UINT_MAX
97 };
98
99 /*!
100     @enum WebDragSourceAction
101     @abstract Actions that the source of a drag can perform.
102     @constant WebDragSourceActionNone No action
103     @constant WebDragSourceActionDHTML Allows DHTML (such as JavaScript) to start a drag
104     @constant WebDragSourceActionImage Allows an image drag to occur
105     @constant WebDragSourceActionLink Allows a link drag to occur
106     @constant WebDragSourceActionSelection Allows a selection drag to occur
107     @constant WebDragSourceActionAny Allows any of the above to occur
108 */
109 typedef NS_OPTIONS(NSUInteger, WebDragSourceAction) {
110     WebDragSourceActionNone         = 0,
111     WebDragSourceActionDHTML        = 1,
112     WebDragSourceActionImage        = 2,
113     WebDragSourceActionLink         = 4,
114     WebDragSourceActionSelection    = 8,
115     WebDragSourceActionAny          = UINT_MAX
116 };
117
118 /*!
119     @protocol WebOpenPanelResultListener
120     @discussion This protocol is used to call back with the results of
121     the file open panel requested by runOpenPanelForFileButtonWithResultListener:
122 */
123 @protocol WebOpenPanelResultListener <NSObject>
124
125 /*!
126     @method chooseFilename:
127     @abstract Call this method to return a filename from the file open panel.
128     @param fileName the path of the selected file
129 */
130 - (void)chooseFilename:(NSString *)fileName;
131
132 /*!
133     @method chooseFilenames:
134     @abstract Call this method to return an array of filenames from the file open panel.
135     @param fileNames an array of paths of selected files
136 */
137 - (void)chooseFilenames:(NSArray *)fileNames WEBKIT_AVAILABLE_MAC(10_6);
138
139 /*!
140     @method cancel
141     @abstract Call this method to indicate that the file open panel was cancelled.
142 */
143 - (void)cancel;
144
145 #if TARGET_OS_IPHONE
146 - (void)chooseFilename:(NSString *)filename displayString:(NSString *)displayString iconImage:(CGImageRef)imageRef;
147 - (void)chooseFilenames:(NSArray *)filenames displayString:(NSString *)displayString iconImage:(CGImageRef)imageRef;
148 #endif
149
150 @end
151
152 @class WebFrame;
153 @class WebFrameView;
154 @class WebView;
155
156 /*!
157     @category WebUIDelegate
158     @discussion A class that implements WebUIDelegate provides
159     window-related methods that may be used by Javascript, plugins and
160     other aspects of web pages. These methods are used to open new
161     windows and control aspects of existing windows.
162 */
163 @protocol WebUIDelegate <NSObject>
164
165 @optional
166
167 /*!
168     @method webView:createWebViewWithRequest:
169     @abstract Create a new window and begin to load the specified request.
170     @discussion The newly created window is hidden, and the window operations delegate on the
171     new WebViews will get a webViewShow: call.
172     @param sender The WebView sending the delegate method.
173     @param request The request to load.
174     @result The WebView for the new window.
175 */
176 - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request;
177
178 /*!
179     @method webViewShow:
180     @param sender The WebView sending the delegate method.
181     @abstract Show the window that contains the top level view of the WebView,
182     ordering it frontmost.
183     @discussion This will only be called just after createWindowWithRequest:
184     is used to create a new window.
185 */
186 - (void)webViewShow:(WebView *)sender;
187
188 /*!
189     @method webView:createWebViewModalDialogWithRequest:
190     @abstract Create a new window and begin to load the specified request.
191     @discussion The newly created window is hidden, and the window operations delegate on the
192     new WebViews will get a webViewShow: call.
193     @param sender The WebView sending the delegate method.
194     @param request The request to load.
195     @result The WebView for the new window.
196 */
197 - (WebView *)webView:(WebView *)sender createWebViewModalDialogWithRequest:(NSURLRequest *)request;
198
199 /*!
200     @method webViewRunModal:
201     @param sender The WebView sending the delegate method.
202     @abstract Show the window that contains the top level view of the WebView,
203     ordering it frontmost. The window should be run modal in the application.
204     @discussion This will only be called just after createWebViewModalDialogWithRequest:
205     is used to create a new window.
206 */
207 - (void)webViewRunModal:(WebView *)sender;
208
209 /*!
210     @method webViewClose:
211     @abstract Close the current window. 
212     @param sender The WebView sending the delegate method.
213     @discussion Clients showing multiple views in one window may
214     choose to close only the one corresponding to this
215     WebView. Other clients may choose to ignore this method
216     entirely.
217 */
218 - (void)webViewClose:(WebView *)sender;
219
220 /*!
221     @method webViewFocus:
222     @abstract Focus the current window (i.e. makeKeyAndOrderFront:).
223     @param sender The WebView sending the delegate method.
224     @discussion Clients showing multiple views in one window may want to
225     also do something to focus the one corresponding to this WebView.
226 */
227 - (void)webViewFocus:(WebView *)sender;
228
229 /*!
230     @method webViewUnfocus:
231     @abstract Unfocus the current window.
232     @param sender The WebView sending the delegate method.
233     @discussion Clients showing multiple views in one window may want to
234     also do something to unfocus the one corresponding to this WebView.
235 */
236 - (void)webViewUnfocus:(WebView *)sender;
237
238 /*!
239     @method webViewFirstResponder:
240     @abstract Get the first responder for this window.
241     @param sender The WebView sending the delegate method.
242     @discussion This method should return the focused control in the
243     WebView's view, if any. If the view is out of the window
244     hierarchy, this might return something than calling firstResponder
245     on the real NSWindow would. It's OK to return either nil or the
246     real first responder if some control not in the window has focus.
247 */
248 - (NSResponder *)webViewFirstResponder:(WebView *)sender;
249
250 /*!
251     @method webView:makeFirstResponder:
252     @abstract Set the first responder for this window.
253     @param sender The WebView sending the delegate method.
254     @param responder The responder to make first (will always be a view)
255     @discussion responder will always be a view that is in the view
256     subhierarchy of the top-level web view for this WebView. If the
257     WebView's top level view is currently out of the view
258     hierarchy, it may be desirable to save the first responder
259     elsewhere, or possibly ignore this call.
260 */
261 - (void)webView:(WebView *)sender makeFirstResponder:(NSResponder *)responder;
262
263 /*!
264     @method webView:setStatusText:
265     @abstract Set the window's status display, if any, to the specified string.
266     @param sender The WebView sending the delegate method.
267     @param text The status text to set
268 */
269 - (void)webView:(WebView *)sender setStatusText:(NSString *)text;
270
271 /*!
272     @method webViewStatusText:
273     @abstract Get the currently displayed status text.
274     @param sender The WebView sending the delegate method.
275     @result The status text
276 */
277 - (NSString *)webViewStatusText:(WebView *)sender;
278
279 /*!
280     @method webViewAreToolbarsVisible:
281     @abstract Determine whether the window's toolbars are currently visible
282     @param sender The WebView sending the delegate method.
283     @discussion This method should return YES if the window has any
284     toolbars that are currently on, besides the status bar. If the app
285     has more than one toolbar per window, for example a regular
286     command toolbar and a favorites bar, it should return YES from
287     this method if at least one is on.
288     @result YES if at least one toolbar is visible, otherwise NO.
289 */
290 - (BOOL)webViewAreToolbarsVisible:(WebView *)sender;
291
292 /*!
293     @method webView:setToolbarsVisible:
294     @param sender The WebView sending the delegate method.
295     @abstract Set whether the window's toolbars are currently visible.
296     @param visible New value for toolbar visibility
297     @discussion Setting this to YES should turn on all toolbars
298     (except for a possible status bar). Setting it to NO should turn
299     off all toolbars (with the same exception).
300 */
301 - (void)webView:(WebView *)sender setToolbarsVisible:(BOOL)visible;
302
303 /*!
304     @method webViewIsStatusBarVisible:
305     @abstract Determine whether the status bar is visible.
306     @param sender The WebView sending the delegate method.
307     @result YES if the status bar is visible, otherwise NO.
308 */
309 - (BOOL)webViewIsStatusBarVisible:(WebView *)sender;
310
311 /*!
312     @method webView:setStatusBarVisible:
313     @abstract Set whether the status bar is currently visible.
314     @param visible The new visibility value
315     @discussion Setting this to YES should show the status bar,
316     setting it to NO should hide it.
317 */
318 - (void)webView:(WebView *)sender setStatusBarVisible:(BOOL)visible;
319
320 /*!
321     @method webViewIsResizable:
322     @abstract Determine whether the window is resizable or not.
323     @param sender The WebView sending the delegate method.
324     @result YES if resizable, NO if not.
325     @discussion If there are multiple views in the same window, they
326     have have their own separate resize controls and this may need to
327     be handled specially.
328 */
329 - (BOOL)webViewIsResizable:(WebView *)sender;
330
331 /*!
332     @method webView:setResizable:
333     @abstract Set the window to resizable or not
334     @param sender The WebView sending the delegate method.
335     @param resizable YES if the window should be made resizable, NO if not.
336     @discussion If there are multiple views in the same window, they
337     have have their own separate resize controls and this may need to
338     be handled specially.
339 */
340 - (void)webView:(WebView *)sender setResizable:(BOOL)resizable;
341
342 /*!
343     @method webView:setFrame:
344     @abstract Set the window's frame rect
345     @param sender The WebView sending the delegate method.
346     @param frame The new window frame size
347     @discussion Even though a caller could set the frame directly using the NSWindow,
348     this method is provided so implementors of this protocol can do special
349     things on programmatic move/resize, like avoiding autosaving of the size.
350 */
351 - (void)webView:(WebView *)sender setFrame:(NSRect)frame;
352
353 /*!
354     @method webViewFrame:
355     @param sender The WebView sending the delegate method.
356     @abstract Return the window's frame rect
357 */
358 - (NSRect)webViewFrame:(WebView *)sender;
359
360 /*!
361     @method webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:
362     @abstract Display a JavaScript alert panel.
363     @param sender The WebView sending the delegate method.
364     @param message The message to display.
365     @param frame The WebFrame whose JavaScript initiated this call.
366     @discussion Clients should visually indicate that this panel comes
367     from JavaScript initiated by the specified frame. The panel should have 
368     a single OK button.
369 */
370 - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
371
372 /*!
373     @method webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:
374     @abstract Display a JavaScript confirm panel.
375     @param sender The WebView sending the delegate method.
376     @param message The message to display.
377     @param frame The WebFrame whose JavaScript initiated this call.
378     @result YES if the user hit OK, NO if the user chose Cancel.
379     @discussion Clients should visually indicate that this panel comes
380     from JavaScript initiated by the specified frame. The panel should have 
381     two buttons, e.g. "OK" and "Cancel".
382 */
383 - (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
384
385 /*!
386     @method webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:
387     @abstract Display a JavaScript text input panel.
388     @param sender The WebView sending the delegate method.
389     @param prompt The message to display.
390     @param defaultText The initial text for the text entry area.
391     @param frame The WebFrame whose JavaScript initiated this call.
392     @result The typed text if the user hit OK, otherwise nil.
393     @discussion Clients should visually indicate that this panel comes
394     from JavaScript initiated by the specified frame. The panel should have 
395     two buttons, e.g. "OK" and "Cancel", and an area to type text.
396 */
397 - (NSString *)webView:(WebView *)sender runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WebFrame *)frame;
398
399 /*!
400     @method webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:
401     @abstract Display a confirm panel by an "before unload" event handler.
402     @param sender The WebView sending the delegate method.
403     @param message The message to display.
404     @param frame The WebFrame whose JavaScript initiated this call.
405     @result YES if the user hit OK, NO if the user chose Cancel.
406     @discussion Clients should include a message in addition to the one
407     supplied by the web page that indicates. The panel should have 
408     two buttons, e.g. "OK" and "Cancel".
409 */
410 - (BOOL)webView:(WebView *)sender runBeforeUnloadConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
411
412 /*!
413     @method webView:runOpenPanelForFileButtonWithResultListener:
414     @abstract Display a file open panel for a file input control.
415     @param sender The WebView sending the delegate method.
416     @param resultListener The object to call back with the results.
417     @discussion This method is passed a callback object instead of giving a return
418     value so that it can be handled with a sheet.
419 */
420 - (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id<WebOpenPanelResultListener>)resultListener;
421
422 /*!
423     @method webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles
424     @abstract Display a file open panel for a file input control that may allow multiple files to be selected.
425     @param sender The WebView sending the delegate method.
426     @param resultListener The object to call back with the results.
427     @param allowMultipleFiles YES if the open panel should allow myltiple files to be selected, NO if not.
428     @discussion This method is passed a callback object instead of giving a return
429     value so that it can be handled with a sheet.
430 */
431 - (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id<WebOpenPanelResultListener>)resultListener allowMultipleFiles:(BOOL)allowMultipleFiles WEBKIT_AVAILABLE_MAC(10_6);
432
433 /*!
434     @method webView:mouseDidMoveOverElement:modifierFlags:
435     @abstract Update the window's feedback for mousing over links to reflect a new item the mouse is over
436     or new modifier flags.
437     @param sender The WebView sending the delegate method.
438     @param elementInformation Dictionary that describes the element that the mouse is over, or nil.
439     @param modifierFlags The modifier flags as in NSEvent.
440 */
441 - (void)webView:(WebView *)sender mouseDidMoveOverElement:(NSDictionary *)elementInformation modifierFlags:(NSUInteger)modifierFlags;
442
443 /*!
444     @method webView:contextMenuItemsForElement:defaultMenuItems:
445     @abstract Returns the menu items to display in an element's contextual menu.
446     @param sender The WebView sending the delegate method.
447     @param element A dictionary representation of the clicked element.
448     @param defaultMenuItems An array of default NSMenuItems to include in all contextual menus.
449     @result An array of NSMenuItems to include in the contextual menu.
450 */
451 - (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems;
452
453 #if !TARGET_OS_IPHONE
454 /*!
455     @method webView:validateUserInterfaceItem:defaultValidation:
456     @abstract Controls UI validation
457     @param webView The WebView sending the delegate method
458     @param item The user interface item being validated
459     @pararm defaultValidation Whether or not the WebView thinks the item is valid
460     @discussion This method allows the UI delegate to control WebView's validation of user interface items.
461     See WebView.h to see the methods to that WebView can currently validate. See NSUserInterfaceValidations and
462     NSValidatedUserInterfaceItem for information about UI validation.
463 */
464 - (BOOL)webView:(WebView *)webView validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item defaultValidation:(BOOL)defaultValidation;
465 #endif
466
467 /*!
468     @method webView:shouldPerformAction:fromSender:
469     @abstract Controls actions
470     @param webView The WebView sending the delegate method
471     @param action The action being sent
472     @param sender The sender of the action
473     @discussion This method allows the UI delegate to control WebView's behavior when an action is being sent.
474     For example, if the action is copy:, the delegate can return YES to allow WebView to perform its default
475     copy behavior or return NO and perform copy: in some other way. See WebView.h to see the actions that
476     WebView can perform.
477 */
478 - (BOOL)webView:(WebView *)webView shouldPerformAction:(SEL)action fromSender:(id)sender;
479
480 #if !TARGET_OS_IPHONE
481 /*!
482     @method webView:dragDestinationActionMaskForDraggingInfo:
483     @abstract Controls behavior when dragging to a WebView
484     @param webView The WebView sending the delegate method
485     @param draggingInfo The dragging info of the drag
486     @discussion This method is called periodically as something is dragged over a WebView. The UI delegate can return a mask
487     indicating which drag destination actions can occur, WebDragDestinationActionAny to allow any kind of action or
488     WebDragDestinationActionNone to not accept the drag.
489 */
490 - (NSUInteger)webView:(WebView *)webView dragDestinationActionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo;
491
492 /*!
493     @method webView:willPerformDragDestinationAction:forDraggingInfo:
494     @abstract Informs that WebView will perform a drag destination action
495     @param webView The WebView sending the delegate method
496     @param action The drag destination action
497     @param draggingInfo The dragging info of the drag
498     @discussion This method is called after the last call to webView:dragDestinationActionMaskForDraggingInfo: after something is dropped on a WebView.
499     This method informs the UI delegate of the drag destination action that WebView will perform.
500 */
501 - (void)webView:(WebView *)webView willPerformDragDestinationAction:(WebDragDestinationAction)action forDraggingInfo:(id <NSDraggingInfo>)draggingInfo;
502
503 /*!
504     @method webView:dragSourceActionMaskForPoint:
505     @abstract Controls behavior when dragging from a WebView
506     @param webView The WebView sending the delegate method
507     @param point The point where the drag started in the coordinates of the WebView
508     @discussion This method is called after the user has begun a drag from a WebView. The UI delegate can return a mask indicating
509     which drag source actions can occur, WebDragSourceActionAny to allow any kind of action or WebDragSourceActionNone to not begin a drag.
510 */
511 - (NSUInteger)webView:(WebView *)webView dragSourceActionMaskForPoint:(NSPoint)point;
512
513 /*!
514     @method webView:willPerformDragSourceAction:fromPoint:withPasteboard:
515     @abstract Informs that a drag a has begun from a WebView
516     @param webView The WebView sending the delegate method
517     @param action The drag source action
518     @param point The point where the drag started in the coordinates of the WebView
519     @param pasteboard The drag pasteboard
520     @discussion This method is called after webView:dragSourceActionMaskForPoint: is called after the user has begun a drag from a WebView.
521     This method informs the UI delegate of the drag source action that will be performed and gives the delegate an opportunity to modify
522     the contents of the dragging pasteboard.
523 */
524 - (void)webView:(WebView *)webView willPerformDragSourceAction:(WebDragSourceAction)action fromPoint:(NSPoint)point withPasteboard:(NSPasteboard *)pasteboard;
525 #endif /* !TARGET_OS_IPHONE */
526
527 /*!
528     @method webView:printFrameView:
529     @abstract Informs that a WebFrameView needs to be printed
530     @param sender The WebView sending the delegate method
531     @param frameView The WebFrameView needing to be printed
532     @discussion This method is called when a script or user requests the page to be printed.
533     In this method the delegate can prepare the WebFrameView to be printed. Some content that WebKit
534     displays can be printed directly by the WebFrameView, other content will need to be handled by
535     the delegate. To determine if the WebFrameView can handle printing the delegate should check
536     WebFrameView's documentViewShouldHandlePrint, if YES then the delegate can call printDocumentView
537     on the WebFrameView. Otherwise the delegate will need to request a NSPrintOperation from
538     the WebFrameView's printOperationWithPrintInfo to handle the printing.
539 */
540 - (void)webView:(WebView *)sender printFrameView:(WebFrameView *)frameView;
541
542 /*!
543     @method webViewHeaderHeight:
544     @param sender The WebView sending the delegate method
545     @abstract Reserve a height for the printed page header.
546     @result The height to reserve for the printed page header, return 0.0 to not reserve any space for a header.
547     @discussion The height returned will be used to calculate the rect passed to webView:drawHeaderInRect:.
548 */
549 - (float)webViewHeaderHeight:(WebView *)sender;
550
551 /*!
552     @method webViewFooterHeight:
553     @param sender The WebView sending the delegate method
554     @abstract Reserve a height for the printed page footer.
555     @result The height to reserve for the printed page footer, return 0.0 to not reserve any space for a footer.
556     @discussion The height returned will be used to calculate the rect passed to webView:drawFooterInRect:.
557 */
558 - (float)webViewFooterHeight:(WebView *)sender;
559
560 /*!
561     @method webView:drawHeaderInRect:
562     @param sender The WebView sending the delegate method
563     @param rect The NSRect reserved for the header of the page
564     @abstract The delegate should draw a header for the sender in the supplied rect.
565 */
566 - (void)webView:(WebView *)sender drawHeaderInRect:(NSRect)rect;
567
568 /*!
569     @method webView:drawFooterInRect:
570     @param sender The WebView sending the delegate method
571     @param rect The NSRect reserved for the footer of the page
572     @abstract The delegate should draw a footer for the sender in the supplied rect.
573 */
574 - (void)webView:(WebView *)sender drawFooterInRect:(NSRect)rect;
575
576 // The following delegate methods are deprecated in favor of the ones above that specify
577 // the WebFrame whose JavaScript initiated this call.
578 - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message WEBKIT_DEPRECATED_MAC(10_3, 10_5);
579 - (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message WEBKIT_DEPRECATED_MAC(10_3, 10_5);
580 - (NSString *)webView:(WebView *)sender runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText WEBKIT_DEPRECATED_MAC(10_3, 10_5);
581
582 // The following delegate methods are deprecated. Content rect calculations are now done automatically.
583 - (void)webView:(WebView *)sender setContentRect:(NSRect)frame WEBKIT_DEPRECATED_MAC(10_3, 10_5);
584 - (NSRect)webViewContentRect:(WebView *)sender WEBKIT_DEPRECATED_MAC(10_3, 10_5);
585
586 @end