WebCore:
[WebKit-https.git] / WebKit / mac / WebView / WebFrameInternal.h
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008 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 Computer, 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 // This header contains WebFrame declarations that can be used anywhere in WebKit, but are neither SPI nor API.
30
31 #import "WebFramePrivate.h"
32 #import "WebPreferencesPrivate.h"
33
34 #import <WebCore/EditAction.h>
35 #import <WebCore/FrameLoaderTypes.h>
36 #import <WebCore/SelectionController.h>
37 #import <WebCore/Settings.h>
38
39 @class DOMCSSStyleDeclaration;
40 @class DOMDocumentFragment;
41 @class DOMElement;
42 @class DOMNode;
43 @class DOMRange;
44 @class WebFrameView;
45 @class WebHistoryItem;
46
47 class WebScriptDebugger;
48
49 namespace WebCore {
50     class CSSStyleDeclaration;
51     class Document;
52     class DocumentLoader;
53     class Element;
54     class Frame;
55     class Frame;
56     class FrameLoader;
57     class HistoryItem;
58     class HTMLElement;
59     class HTMLFrameOwnerElement;
60     class Node;
61     class Page;
62     class Range;
63 }
64
65 typedef WebCore::HistoryItem WebCoreHistoryItem;
66
67 WebCore::CSSStyleDeclaration* core(DOMCSSStyleDeclaration *);
68 DOMCSSStyleDeclaration *kit(WebCore::CSSStyleDeclaration*);
69
70 WebCore::Frame* core(WebFrame *);
71 WebFrame *kit(WebCore::Frame *);
72
73 WebCore::Element* core(DOMElement *);
74 DOMElement *kit(WebCore::Element*);
75
76 WebCore::Node* core(DOMNode *);
77 DOMNode *kit(WebCore::Node*);
78
79 WebCore::Document* core(DOMDocument *);
80 DOMDocument *kit(WebCore::Document*);
81
82 WebCore::HTMLElement* core(DOMHTMLElement *);
83 DOMHTMLElement *kit(WebCore::HTMLElement*);
84
85 WebCore::Range* core(DOMRange *);
86 DOMRange *kit(WebCore::Range*);
87
88 WebCore::Page* core(WebView *);
89 WebView *kit(WebCore::Page*);
90
91 WebCore::EditableLinkBehavior core(WebKitEditableLinkBehavior);
92
93 WebView *getWebView(WebFrame *webFrame);
94
95 @interface WebFramePrivate : NSObject {
96 @public
97     WebCore::Frame* coreFrame;
98     WebFrameView *webFrameView;
99     WebScriptDebugger* scriptDebugger;
100     id internalLoadDelegate;
101     BOOL shouldCreateRenderers;
102 }
103 @end
104
105 @protocol WebCoreRenderTreeCopier <NSObject>
106 - (NSObject *)nodeWithName:(NSString *)name position:(NSPoint)position rect:(NSRect)rect view:(NSView *)view children:(NSArray *)children;
107 @end
108
109 @interface WebFrame (WebInternal)
110
111 + (void)_createMainFrameWithPage:(WebCore::Page*)page frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView;
112 + (PassRefPtr<WebCore::Frame>)_createSubframeWithOwnerElement:(WebCore::HTMLFrameOwnerElement*)ownerElement frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView;
113
114 - (void)_updateBackground;
115 - (void)_setInternalLoadDelegate:(id)internalLoadDelegate;
116 - (id)_internalLoadDelegate;
117 #ifndef BUILDING_ON_TIGER
118 - (void)_unmarkAllBadGrammar;
119 #endif
120 - (void)_unmarkAllMisspellings;
121 // Note that callers should not perform any ops on these views that could change the set of frames
122 - (NSArray *)_documentViews;
123
124 - (BOOL)_hasSelection;
125 - (void)_clearSelection;
126 - (WebFrame *)_findFrameWithSelection;
127 - (void)_clearSelectionInOtherFrames;
128 - (id)_initWithWebFrameView:(WebFrameView *)webFrameView webView:(WebView *)webView;
129
130 - (BOOL)_isMainFrame;
131
132 - (WebCore::FrameLoader*)_frameLoader;
133 - (WebDataSource *)_dataSourceForDocumentLoader:(WebCore::DocumentLoader*)loader;
134
135 - (void)_addDocumentLoader:(WebCore::DocumentLoader*)loader toUnarchiveState:(WebArchive *)archive;
136
137 - (void)_loadURL:(NSURL *)URL referrer:(NSString *)referrer intoChild:(WebFrame *)childFrame;
138
139 - (void)_viewWillMoveToHostWindow:(NSWindow *)hostWindow;
140 - (void)_viewDidMoveToHostWindow;
141
142 - (void)_addChild:(WebFrame *)child;
143
144 + (CFAbsoluteTime)_timeOfLastCompletedLoad;
145
146 - (int)_numPendingOrLoadingRequests:(BOOL)recurse;
147
148 - (void)_attachScriptDebugger;
149 - (void)_detachScriptDebugger;
150
151 // dataSource reports null for the initial empty document's data source; this is needed
152 // to preserve compatibility with Mail and Safari among others. But internal to WebKit,
153 // we need to be able to get the initial data source as well, so the _dataSource method
154 // should be used instead.
155 - (WebDataSource *)_dataSource;
156
157 #if ENABLE(NETSCAPE_PLUGIN_API)
158 - (void)_recursive_resumeNullEventsForAllNetscapePlugins;
159 - (void)_recursive_pauseNullEventsForAllNetscapePlugins;
160 #endif
161
162 - (NSURL *)_baseURL;
163
164 - (void)_forceLayoutAdjustingViewSize:(BOOL)adjustSizeFlag;
165 - (void)_forceLayoutWithMinimumPageWidth:(float)minPageWidth maximumPageWidth:(float)maxPageWidth adjustingViewSize:(BOOL)adjustSizeFlag;
166 - (void)_sendScrollEvent;
167 - (BOOL)_needsLayout;
168 - (void)_drawRect:(NSRect)rect;
169 - (void)_adjustPageHeightNew:(float *)newBottom top:(float)oldTop bottom:(float)oldBottom limit:(float)bottomLimit;
170 - (NSArray*)_computePageRectsWithPrintWidthScaleFactor:(float)printWidthScaleFactor printHeight:(float)printHeight;
171
172 - (NSObject *)_copyRenderTree:(id <WebCoreRenderTreeCopier>)copier;
173 - (NSString *)_renderTreeAsExternalRepresentation;
174
175 - (NSURL *)_URLWithAttributeString:(NSString *)string;
176
177 - (DOMElement *)_elementWithName:(NSString *)name inForm:(DOMElement *)form;
178 - (BOOL)_elementDoesAutoComplete:(DOMElement *)element;
179 - (BOOL)_elementIsPassword:(DOMElement *)element;
180 - (DOMElement *)_formForElement:(DOMElement *)element;
181 - (DOMElement *)_currentForm;
182 - (NSArray *)_controlsInForm:(DOMElement *)form;
183 - (NSString *)_searchForLabels:(NSArray *)labels beforeElement:(DOMElement *)element;
184 - (NSString *)_matchLabels:(NSArray *)labels againstElement:(DOMElement *)element;
185
186 - (BOOL)_searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag startInSelection:(BOOL)startInSelection;
187 - (unsigned)_markAllMatchesForText:(NSString *)string caseSensitive:(BOOL)caseFlag limit:(unsigned)limit;
188 - (BOOL)_markedTextMatchesAreHighlighted;
189 - (void)_setMarkedTextMatchesAreHighlighted:(BOOL)doHighlight;
190 - (void)_unmarkAllTextMatches;
191 - (NSArray *)_rectsForTextMatches;
192
193 - (NSString *)_stringByEvaluatingJavaScriptFromString:(NSString *)string;
194 - (NSString *)_stringByEvaluatingJavaScriptFromString:(NSString *)string forceUserGesture:(BOOL)forceUserGesture;
195 - (NSAppleEventDescriptor *)_aeDescByEvaluatingJavaScriptFromString:(NSString *)string;
196
197 - (NSString *)_selectedString;
198
199 - (NSString *)_stringForRange:(DOMRange *)range;
200
201 - (NSString *)_markupStringFromNode:(DOMNode *)node nodes:(NSArray **)nodes;
202 - (NSString *)_markupStringFromRange:(DOMRange *)range nodes:(NSArray **)nodes;
203
204 - (NSRect)_caretRectAtNode:(DOMNode *)node offset:(int)offset affinity:(NSSelectionAffinity)affinity;
205 - (NSRect)_firstRectForDOMRange:(DOMRange *)range;
206 - (void)_scrollDOMRangeToVisible:(DOMRange *)range;
207
208 - (NSFont *)_fontForSelection:(BOOL *)hasMultipleFonts;
209
210 - (NSString *)_stringWithData:(NSData *)data; // using the encoding of the frame's main resource
211 + (NSString *)_stringWithData:(NSData *)data textEncodingName:(NSString *)textEncodingName; // nil for textEncodingName means Latin-1
212
213 - (void)_setBaseBackgroundColor:(NSColor *)backgroundColor;
214 - (void)_setDrawsBackground:(BOOL)drawsBackround;
215
216 - (id)_accessibilityTree;
217
218 - (DOMRange *)_rangeByAlteringCurrentSelection:(WebCore::SelectionController::EAlteration)alteration direction:(WebCore::SelectionController::EDirection)direction granularity:(WebCore::TextGranularity)granularity;
219 - (WebCore::TextGranularity)_selectionGranularity;
220 - (void)_smartInsertForString:(NSString *)pasteString replacingRange:(DOMRange *)charRangeToReplace beforeString:(NSString **)beforeString afterString:(NSString **)afterString;
221 - (NSRange)_markedTextNSRange;
222 - (DOMRange *)_convertNSRangeToDOMRange:(NSRange)range;
223 - (NSRange)_convertDOMRangeToNSRange:(DOMRange *)range;
224
225 - (DOMDocumentFragment *)_documentFragmentWithMarkupString:(NSString *)markupString baseURLString:(NSString *)baseURLString;
226 - (DOMDocumentFragment *)_documentFragmentWithText:(NSString *)text inContext:(DOMRange *)context;
227 - (DOMDocumentFragment *)_documentFragmentWithNodesAsParagraphs:(NSArray *)nodes;
228
229 - (void)_replaceSelectionWithFragment:(DOMDocumentFragment *)fragment selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace matchStyle:(BOOL)matchStyle;
230 - (void)_replaceSelectionWithNode:(DOMNode *)node selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace matchStyle:(BOOL)matchStyle;
231 - (void)_replaceSelectionWithMarkupString:(NSString *)markupString baseURLString:(NSString *)baseURLString selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace;
232 - (void)_replaceSelectionWithText:(NSString *)text selectReplacement:(BOOL)selectReplacement smartReplace:(BOOL)smartReplace;
233
234 - (void)_insertParagraphSeparatorInQuotedContent;
235
236 - (DOMRange *)_characterRangeAtPoint:(NSPoint)point;
237
238 - (DOMCSSStyleDeclaration *)_typingStyle;
239 - (void)_setTypingStyle:(DOMCSSStyleDeclaration *)style withUndoAction:(WebCore::EditAction)undoAction;
240
241 - (void)_dragSourceMovedTo:(NSPoint)windowLoc;
242 - (void)_dragSourceEndedAt:(NSPoint)windowLoc operation:(NSDragOperation)operation;
243
244 - (BOOL)_getData:(NSData **)data andResponse:(NSURLResponse **)response forURL:(NSString *)URL;
245 - (void)_getAllResourceDatas:(NSArray **)datas andResponses:(NSArray **)responses;
246
247 - (BOOL)_canProvideDocumentSource;
248 - (BOOL)_canSaveAsWebArchive;
249
250 - (void)_receivedData:(NSData *)data textEncodingName:(NSString *)textEncodingName;
251
252 @end
253
254 @interface NSObject (WebInternalFrameLoadDelegate)
255 - (void)webFrame:(WebFrame *)webFrame didFinishLoadWithError:(NSError *)error;
256 @end