webengine/osswebengine/WebKit/WebView/WebViewPrivate.h
changeset 0 dd21522fd290
--- /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