diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKit/WebView/WebViewPrivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/WebView/WebViewPrivate.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,395 @@ +/* + * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import + +#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 +#define WebNSInteger int +#define WebNSUInteger unsigned int +#else +#define WebNSInteger NSInteger +#define WebNSUInteger NSUInteger +#endif + +@class NSError; +@class WebFrame; +@class WebPreferences; + +@protocol WebFormDelegate; + +extern NSString *_WebCanGoBackKey; +extern NSString *_WebCanGoForwardKey; +extern NSString *_WebEstimatedProgressKey; +extern NSString *_WebIsLoadingKey; +extern NSString *_WebMainFrameIconKey; +extern NSString *_WebMainFrameTitleKey; +extern NSString *_WebMainFrameURLKey; +extern NSString *_WebMainFrameDocumentKey; + +// pending public WebElementDictionary keys +extern NSString *WebElementTitleKey; // NSString of the title of the element (used by Safari) +extern NSString *WebElementSpellingToolTipKey; // NSString of a tooltip representing misspelling or bad grammar (used internally) +extern NSString *WebElementIsContentEditableKey; // NSNumber indicating whether the inner non-shared node is content editable (used internally) + +// other WebElementDictionary keys +extern NSString *WebElementLinkIsLiveKey; // NSNumber of BOOL indictating whether the link is live or not + +typedef enum { + WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows, + WebDashboardBehaviorAlwaysSendActiveNullEventsToPlugIns, + WebDashboardBehaviorAlwaysAcceptsFirstMouse, + WebDashboardBehaviorAllowWheelScrolling, + WebDashboardBehaviorUseBackwardCompatibilityMode +} WebDashboardBehavior; + +@interface WebController : NSTreeController { + IBOutlet WebView *webView; +} +- (WebView *)webView; +- (void)setWebView:(WebView *)newWebView; +@end + +@interface WebView (WebViewEditingActionsPendingPublic) + +- (void)outdent:(id)sender; + +@end + +@interface WebView (WebPendingPublic) + +/*! +@method searchFor:direction:caseSensitive:wrap:startInSelection: + @abstract Searches a document view for a string and highlights the string if it is found. + Starts the search from the current selection. Will search across all frames. + @param string The string to search for. + @param forward YES to search forward, NO to seach backwards. + @param caseFlag YES to for case-sensitive search, NO for case-insensitive search. + @param wrapFlag YES to wrap around, NO to avoid wrapping. + @param startInSelection YES to begin search in the selected text (useful for incremental searching), NO to begin search after the selected text. + @result YES if found, NO if not found. + */ +- (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag startInSelection:(BOOL)startInSelection; + +- (void)setMainFrameDocumentReady:(BOOL)mainFrameDocumentReady; + +- (void)setTabKeyCyclesThroughElements:(BOOL)cyclesElements; +- (BOOL)tabKeyCyclesThroughElements; + +- (void)scrollDOMRangeToVisible:(DOMRange *)range; + +// setHoverFeedbackSuspended: can be called by clients that want to temporarily prevent the webView +// from displaying feedback about mouse position. Each WebDocumentView class that displays feedback +// about mouse position should honor this setting. +- (void)setHoverFeedbackSuspended:(BOOL)newValue; +- (BOOL)isHoverFeedbackSuspended; + +/*! +@method setScriptDebugDelegate: +@abstract Set the WebView's WebScriptDebugDelegate delegate. +@param delegate The WebScriptDebugDelegate to set as the delegate. +*/ +- (void)setScriptDebugDelegate:(id)delegate; + +/*! +@method scriptDebugDelegate +@abstract Return the WebView's WebScriptDebugDelegate. +@result The WebView's WebScriptDebugDelegate. +*/ +- (id)scriptDebugDelegate; + +- (BOOL)shouldClose; + +/*! + @method aeDescByEvaluatingJavaScriptFromString: + @param script The text of the JavaScript. + @result The result of the script, converted to an NSAppleEventDescriptor, or nil for failure. +*/ +- (NSAppleEventDescriptor *)aeDescByEvaluatingJavaScriptFromString:(NSString *)script; + +// Support for displaying multiple text matches. +// These methods might end up moving into a protocol, so different document types can specify +// whether or not they implement the protocol. For now we'll just deal with HTML. +// These methods are still in flux; don't rely on them yet. +- (BOOL)canMarkAllTextMatches; +- (WebNSUInteger)markAllMatchesForText:(NSString *)string caseSensitive:(BOOL)caseFlag highlight:(BOOL)highlight limit:(WebNSUInteger)limit; +- (void)unmarkAllTextMatches; +- (NSArray *)rectsForTextMatches; + +// Support for disabling registration with the undo manager. This is equivalent to the methods with the same names on NSTextView. +- (BOOL)allowsUndo; +- (void)setAllowsUndo:(BOOL)flag; + +@end + +@interface WebView (WebPrivate) + ++ (BOOL)_developerExtrasEnabled; ++ (BOOL)_scriptDebuggerEnabled; + +/*! + @method setBackgroundColor: + @param backgroundColor Color to use as the default background. + @abstract Sets what color the receiver draws under transparent page background colors and images. + This color is also used when no page is loaded. A color with alpha should only be used when the receiver is + in a non-opaque window, since the color is drawn using NSCompositeCopy. +*/ +- (void)setBackgroundColor:(NSColor *)backgroundColor; + +/*! + @method backgroundColor + @result Returns the background color drawn under transparent page background colors and images. + This color is also used when no page is loaded. A color with alpha should only be used when the receiver is + in a non-opaque window, since the color is drawn using NSCompositeCopy. +*/ +- (NSColor *)backgroundColor; + +/*! +Could be worth adding to the API. + @method loadItemsFromOtherView: + @abstract Loads the view with the contents of the other view, including its backforward list. + @param otherView The WebView from which to copy contents. + */ +- (void)_loadBackForwardListFromOtherView:(WebView *)otherView; + ++ (NSArray *)_supportedFileExtensions; + +/*! + @method canShowFile: + @abstract Checks if the WebKit can show the content of the file at the specified path. + @param path The path of the file to check + @result YES if the WebKit can show the content of the file at the specified path. +*/ ++ (BOOL)canShowFile:(NSString *)path; + +/*! + @method suggestedFileExtensionForMIMEType: + @param MIMEType The MIME type to check. + @result The extension based on the MIME type +*/ ++ (NSString *)suggestedFileExtensionForMIMEType: (NSString *)MIMEType; + +// May well become public +- (void)_setFormDelegate:(id)delegate; +- (id)_formDelegate; + +- (BOOL)_isClosed; +- (void)_close; + +/*! + @method _registerViewClass:representationClass:forURLScheme: + @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively. + @param viewClass The WebDocumentView class to use to render data for a given MIME type. + @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type. + @param scheme The URL scheme to represent with an object of the given class. +*/ ++ (void)_registerViewClass:(Class)viewClass representationClass:(Class)representationClass forURLScheme:(NSString *)URLScheme; + ++ (void)_unregisterViewClassAndRepresentationClassForMIMEType:(NSString *)MIMEType; + +/*! + @method _canHandleRequest: + @abstract Performs a "preflight" operation that performs some + speculative checks to see if a request can be used to create + a WebDocumentView and WebDocumentRepresentation. + @discussion The result of this method is valid only as long as no + protocols or schemes are registered or unregistered, and as long as + the request is not mutated (if the request is mutable). Hence, clients + should be prepared to handle failures even if they have performed request + preflighting by caling this method. + @param request The request to preflight. + @result YES if it is likely that a WebDocumentView and WebDocumentRepresentation + can be created for the request, NO otherwise. +*/ ++ (BOOL)_canHandleRequest:(NSURLRequest *)request; + ++ (NSString *)_decodeData:(NSData *)data; + ++ (void)_setAlwaysUseATSU:(BOOL)f; + +- (NSCachedURLResponse *)_cachedResponseForURL:(NSURL *)URL; + +- (void)_addScrollerDashboardRegions:(NSMutableDictionary *)regions; +- (NSDictionary *)_dashboardRegions; + +- (void)_setDashboardBehavior:(WebDashboardBehavior)behavior to:(BOOL)flag; +- (BOOL)_dashboardBehavior:(WebDashboardBehavior)behavior; + ++ (void)_setShouldUseFontSmoothing:(BOOL)f; ++ (BOOL)_shouldUseFontSmoothing; + +- (void)_setCatchesDelegateExceptions:(BOOL)f; +- (BOOL)_catchesDelegateExceptions; + +// These two methods are useful for a test harness that needs a consistent appearance for the focus rings +// regardless of OS X version. ++ (void)_setUsesTestModeFocusRingColor:(BOOL)f; ++ (BOOL)_usesTestModeFocusRingColor; + ++ (NSString *)_minimumRequiredSafariBuildNumber; + +/*! + @method setAlwaysShowVerticalScroller: + @result Forces the vertical scroller to be visible if flag is YES, otherwise + if flag is NO the scroller with automatically show and hide as needed. + */ +- (void)setAlwaysShowVerticalScroller:(BOOL)flag; + +/*! + @method alwaysShowVerticalScroller + @result YES if the vertical scroller is always shown + */ +- (BOOL)alwaysShowVerticalScroller; + +/*! + @method setAlwaysShowHorizontalScroller: + @result Forces the horizontal scroller to be visible if flag is YES, otherwise + if flag is NO the scroller with automatically show and hide as needed. + */ +- (void)setAlwaysShowHorizontalScroller:(BOOL)flag; + +/*! + @method alwaysShowHorizontalScroller + @result YES if the horizontal scroller is always shown + */ +- (BOOL)alwaysShowHorizontalScroller; + +/*! + @method setProhibitsMainFrameScrolling: + @abstract Prohibits scrolling in the WebView's main frame. Used to "lock" a WebView + to a specific scroll position. + */ +- (void)setProhibitsMainFrameScrolling:(BOOL)prohibits; + +/*! + @method _setAdditionalWebPlugInPaths: + @abstract Sets additional plugin search paths for a specific WebView. + */ +- (void)_setAdditionalWebPlugInPaths:(NSArray *)newPaths; + +/*! + @method _setInViewSourceMode: + @abstract Used to place a WebView into a special source-viewing mode. + */ +- (void)_setInViewSourceMode:(BOOL)flag; + +/*! + @method _inViewSourceMode; + @abstract Whether or not the WebView is in source-view mode for HTML. + */ +- (BOOL)_inViewSourceMode; + +/*! + @method _attachScriptDebuggerToAllFrames + @abstract Attaches a script debugger to all frames belonging to the receiver. + */ +- (void)_attachScriptDebuggerToAllFrames; + +/*! + @method _detachScriptDebuggerFromAllFrames + @abstract Detaches any script debuggers from all frames belonging to the receiver. + */ +- (void)_detachScriptDebuggerFromAllFrames; + +- (BOOL)defersCallbacks; // called by QuickTime plug-in +- (void)setDefersCallbacks:(BOOL)defer; // called by QuickTime plug-in + +- (BOOL)usesPageCache; +- (void)setUsesPageCache:(BOOL)usesPageCache; + +// Clients other than dashboard, don't use this. +// Do not remove until Dashboard has moved off it +- (void)handleAuthenticationForResource:(id)identifier challenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource; + +- (void)_clearUndoRedoOperations; + +/* Used to do fast (lower quality) scaling of images so that window resize can be quick. */ +- (BOOL)_inFastImageScalingMode; +- (void)_setUseFastImageScalingMode:(BOOL)flag; + +@end + +@interface WebView (WebViewPrintingPrivate) +/*! + @method _adjustPrintingMarginsForHeaderAndFooter: + @abstract Increase the top and bottom margins for the current print operation to + account for the header and footer height. + @discussion Called by implementors once when a print job begins. If the + implementor implements knowsPageRange:, this should be called from there. + Otherwise this should be called from beginDocument. The implementors need + to also call _drawHeaderAndFooter. +*/ +- (void)_adjustPrintingMarginsForHeaderAndFooter; + +/*! + @method _drawHeaderAndFooter + @abstract Gives the WebView's UIDelegate a chance to draw a header and footer on the + printed page. + @discussion This should be called by implementors from an override of + drawPageBorderWithSize:. +*/ +- (void)_drawHeaderAndFooter; +@end + +@interface WebView (WebViewGrammarChecking) + +// FIXME: These two methods should be merged into WebViewEditing when we're not in API freeze +- (BOOL)isGrammarCheckingEnabled; +#ifndef BUILDING_ON_TIGER +- (void)setGrammarCheckingEnabled:(BOOL)flag; + +// FIXME: This method should be merged into WebIBActions when we're not in API freeze +- (void)toggleGrammarChecking:(id)sender; +#endif +@end + +@interface WebView (WebViewEditingInMail) +- (void)_insertNewlineInQuotedContent; +- (void)_replaceSelectionWithNode:(DOMNode *)node matchStyle:(BOOL)matchStyle; +@end + +@interface NSObject (WebFrameLoadDelegatePrivate) +- (void)webView:(WebView *)sender didFirstLayoutInFrame:(WebFrame *)frame; + +// didFinishDocumentLoadForFrame is sent when the document has finished loading, though not necessarily all +// of its subresources. +// FIXME 5259339: Currently this callback is not sent for (some?) pages loaded entirely from the cache. +- (void)webView:(WebView *)sender didFinishDocumentLoadForFrame:(WebFrame *)frame; + +// Addresses 4192534. SPI for now. +- (void)webView:(WebView *)sender didHandleOnloadEventsForFrame:(WebFrame *)frame; + +@end + +@interface NSObject (WebResourceLoadDelegatePrivate) +// Addresses - SPI for now +- (NSCachedURLResponse *)webView:(WebView *)sender resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource; +@end + +#undef WebNSInteger +#undef WebNSUInteger