--- /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 <WebKit/WebView.h>
+#import <WebKit/WebFramePrivate.h>
+
+#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<WebFormDelegate>)delegate;
+- (id<WebFormDelegate>)_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;
+
+// <rdar://problem/5217124> 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 <WebDocument> implementors once when a print job begins. If the
+ <WebDocument> implementor implements knowsPageRange:, this should be called from there.
+ Otherwise this should be called from beginDocument. The <WebDocument> 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 <WebDocument> 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 <rdar://problem/5008925> - SPI for now
+- (NSCachedURLResponse *)webView:(WebView *)sender resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource;
+@end
+
+#undef WebNSInteger
+#undef WebNSUInteger