WebCore:
[WebKit-https.git] / WebCore / kwq / WebCoreBridge.h
1 /*
2  * Copyright (C) 2004 Apple Computer, 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  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #import <Foundation/Foundation.h>
27 #import <AppKit/NSDragging.h>       // for NSDragOperation typedef
28
29 #import <WebCore/WebCoreKeyboardAccess.h>
30
31 #import <JavaScriptCore/npruntime.h>
32 #import <JavaVM/jni.h>
33
34 #ifdef __cplusplus
35
36 class KWQKHTMLPart;
37 class KHTMLView;
38 class RenderArena;
39
40 namespace khtml {
41     class RenderPart;
42     class RenderObject;
43 }
44
45 typedef khtml::RenderPart KHTMLRenderPart;
46
47 #else
48
49 @class KWQKHTMLPart;
50 @class KHTMLView;
51 @class KHTMLRenderPart;
52 @class RenderArena;
53
54 #endif
55
56 @class DOMCSSStyleDeclaration;
57 @class DOMDocument;
58 @class DOMDocumentFragment;
59 @class DOMElement;
60 @class DOMHTMLElement;
61 @class DOMNode;
62 @class DOMRange;
63 @class WebCoreSettings;
64 @class WebScriptObject;
65
66 @protocol WebCoreDOMTreeCopier;
67 @protocol WebCoreRenderTreeCopier;
68 @protocol WebCoreResourceHandle;
69 @protocol WebCoreResourceLoader;
70 @protocol WebCoreFileButton;
71 @protocol WebCoreFileButtonDelegate;
72
73 extern NSString *WebCoreElementDOMNodeKey;
74 extern NSString *WebCoreElementFrameKey;
75 extern NSString *WebCoreElementImageAltStringKey;
76 extern NSString *WebCoreElementImageKey;
77 extern NSString *WebCoreElementImageRectKey;
78 extern NSString *WebCoreElementImageURLKey;
79 extern NSString *WebCoreElementIsSelectedKey;
80 extern NSString *WebCoreElementLinkURLKey;
81 extern NSString *WebCoreElementLinkTargetFrameKey;
82 extern NSString *WebCoreElementLinkLabelKey;
83 extern NSString *WebCoreElementLinkTitleKey;
84 extern NSString *WebCoreElementTitleKey;
85
86 extern NSString *WebCorePageCacheStateKey;
87
88 typedef enum {
89     WebCoreDeviceScreen,
90     WebCoreDevicePrinter
91 } WebCoreDeviceType;
92
93 typedef enum {
94     WebSelectByMoving,
95     WebSelectByExtending
96 } WebSelectionAlteration;
97
98 typedef enum {
99     WebSelectForward,
100     WebSelectBackward,
101     WebSelectRight,
102     WebSelectLeft
103 } WebSelectionDirection;
104
105 typedef enum {
106     WebSelectByCharacter,
107     WebSelectByWord,
108     WebSelectByLine,
109     WebSelectByParagraph,
110     WebSelectToLineBoundary,
111 } WebSelectionGranularity;
112
113
114 // WebCoreBridge objects are used by WebCore to abstract away operations that need
115 // to be implemented by library clients, for example WebKit. The objects are also
116 // used in the opposite direction, for simple access to WebCore functions without dealing
117 // directly with the KHTML C++ classes.
118
119 // A WebCoreBridge creates and holds a reference to a KHTMLPart.
120
121 // The WebCoreBridge interface contains methods for use by the non-WebCore side of the bridge.
122
123 @interface WebCoreBridge : NSObject
124 {
125     KWQKHTMLPart *_part;
126     KHTMLRenderPart *_renderPart;
127     RenderArena *_renderPartArena;
128     BOOL _shouldCreateRenderers;
129 }
130
131 + (WebCoreBridge *)bridgeForDOMDocument:(DOMDocument *)document;
132
133 - (void)initializeSettings:(WebCoreSettings *)settings;
134
135 - (void)setRenderPart:(KHTMLRenderPart *)renderPart;
136 - (KHTMLRenderPart *)renderPart;
137
138 - (void)setName:(NSString *)name;
139 - (NSString *)name;
140
141 - (KWQKHTMLPart *)part;
142
143 - (void)setParent:(WebCoreBridge *)parent;
144
145 - (void)provisionalLoadStarted;
146
147 - (void)openURL:(NSURL *)URL reload:(BOOL)reload
148     contentType:(NSString *)contentType refresh:(NSString *)refresh lastModified:(NSDate *)lastModified
149     pageCache:(NSDictionary *)pageCache;
150 - (void)setEncoding:(NSString *)encoding userChosen:(BOOL)userChosen;
151 - (void)addData:(NSData *)data;
152 - (void)closeURL;
153
154 - (void)didNotOpenURL:(NSURL *)URL;
155
156 - (void)saveDocumentState;
157 - (void)restoreDocumentState;
158
159 - (BOOL)canCachePage;
160 - (BOOL)saveDocumentToPageCache;
161
162 - (void)end;
163
164 - (NSURL *)URL;
165 - (NSString *)referrer;
166 - (NSString *)domain;
167
168 - (void)installInFrame:(NSView *)view;
169 - (void)removeFromFrame;
170
171 - (void)scrollToAnchor:(NSString *)anchor;
172 - (void)scrollToAnchorWithURL:(NSURL *)URL;
173
174 - (void)createKHTMLViewWithNSView:(NSView *)view marginWidth:(int)mw marginHeight:(int)mh;
175
176 - (BOOL)isFrameSet;
177
178 - (void)reapplyStylesForDeviceType:(WebCoreDeviceType)deviceType;
179 - (void)forceLayoutAdjustingViewSize:(BOOL)adjustSizeFlag;
180 - (void)forceLayoutWithMinimumPageWidth:(float)minPageWidth maximumPageWidth:(float)maxPageWidth adjustingViewSize:(BOOL)adjustSizeFlag;
181 - (void)sendResizeEvent;
182 - (void)sendScrollEvent;
183 - (BOOL)needsLayout;
184 - (void)setNeedsLayout;
185 - (void)drawRect:(NSRect)rect;
186 - (void)adjustPageHeightNew:(float *)newBottom top:(float)oldTop bottom:(float)oldBottom limit:(float)bottomLimit;
187 - (NSArray*)computePageRectsWithPrintWidthScaleFactor:(float)printWidthScaleFactor printHeight:(float)printHeight;
188
189 - (void)setUsesInactiveTextBackgroundColor:(BOOL)uses;
190 - (BOOL)usesInactiveTextBackgroundColor;
191
192 - (void)setShowsFirstResponder:(BOOL)flag;
193
194 - (void)setActivationEventNumber:(int)num;
195 - (void)mouseDown:(NSEvent *)event;
196 - (void)mouseUp:(NSEvent *)event;
197 - (void)mouseMoved:(NSEvent *)event;
198 - (void)mouseDragged:(NSEvent *)event;
199
200 - (BOOL)sendContextMenuEvent:(NSEvent *)event; // return YES if event is eaten by WebCore
201
202 - (NSView *)nextKeyView;
203 - (NSView *)previousKeyView;
204
205 - (NSView *)nextKeyViewInsideWebFrameViews;
206 - (NSView *)previousKeyViewInsideWebFrameViews;
207
208 - (NSObject *)copyDOMTree:(id <WebCoreDOMTreeCopier>)copier;
209 - (NSObject *)copyRenderTree:(id <WebCoreRenderTreeCopier>)copier;
210 - (NSString *)renderTreeAsExternalRepresentation;
211
212 - (NSDictionary *)elementAtPoint:(NSPoint)point;
213 - (NSURL *)URLWithRelativeString:(NSString *)string;
214
215 - (DOMElement *)elementWithName:(NSString *)name inForm:(DOMElement *)form;
216 - (DOMElement *)elementForView:(NSView *)view;
217 - (BOOL)elementDoesAutoComplete:(DOMElement *)element;
218 - (BOOL)elementIsPassword:(DOMElement *)element;
219 - (DOMElement *)formForElement:(DOMElement *)element;
220 - (DOMElement *)currentForm;
221 - (NSArray *)controlsInForm:(DOMElement *)form;
222 - (NSString *)searchForLabels:(NSArray *)labels beforeElement:(DOMElement *)element;
223 - (NSString *)matchLabels:(NSArray *)labels againstElement:(DOMElement *)element;
224
225 - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
226 - (void)jumpToSelection;
227
228 - (void)setTextSizeMultiplier:(float)multiplier;
229
230 - (CFStringEncoding)textEncoding;
231
232 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)string;
233
234 - (DOMDocument *)DOMDocument;
235 - (DOMHTMLElement *)frameElement;
236
237 - (void)setSelectionFrom:(DOMNode *)start startOffset:(int)startOffset to:(DOMNode *)end endOffset:(int) endOffset;
238
239 - (BOOL)isSelectionEditable;
240
241 - (BOOL)haveSelection;
242
243 - (NSAttributedString *)selectedAttributedString;
244 - (NSString *)selectedString;
245
246 - (NSString *)stringForRange:(DOMRange *)range;
247
248 - (NSString *)markupStringFromNode:(DOMNode *)node nodes:(NSArray **)nodes;
249 - (NSString *)markupStringFromRange:(DOMRange *)range nodes:(NSArray **)nodes;
250
251 - (void)selectAll;
252 - (void)deselectAll;
253 - (void)deselectText;
254
255 - (NSRect)selectionRect;
256 - (NSRect)visibleSelectionRect;
257 - (NSImage *)selectionImage;
258
259 - (DOMNode *)selectionStart;
260 - (int)selectionStartOffset;
261 - (DOMNode *)selectionEnd;
262 - (int)selectionEndOffset;
263 - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
264 - (DOMRange *)selectedDOMRange;
265 - (NSSelectionAffinity)selectionAffinity;
266
267 - (NSAttributedString *)attributedStringFrom:(DOMNode *)startNode startOffset:(int)startOffset to:(DOMNode *)endNode endOffset:(int)endOffset;
268 - (NSFont *)renderedFontForNode:(DOMNode *)node;
269
270 + (NSString *)stringWithData:(NSData *)data textEncoding:(CFStringEncoding)textEncoding;
271 + (NSString *)stringWithData:(NSData *)data textEncodingName:(NSString *)textEncodingName;
272
273 - (BOOL)interceptKeyEvent:(NSEvent *)event toView:(NSView *)view;
274
275 - (void)setShouldCreateRenderers:(BOOL)f;
276 - (BOOL)shouldCreateRenderers;
277
278 - (int)numPendingOrLoadingRequests;
279
280 - (void)setDrawsBackground:(BOOL)drawsBackround;
281
282 - (NSColor *)bodyBackgroundColor;
283 - (NSColor *)selectionColor;
284
285 - (void)adjustViewSize;
286
287 + (void)updateAllViews;
288
289 - (id)accessibilityTree;
290
291 - (void)undoEditing:(id)arg;
292 - (void)redoEditing:(id)arg;
293
294 - (DOMRange *)selectedDOMRangeWithGranularity:(WebSelectionGranularity)granularity;
295 - (DOMRange *)rangeByAlteringCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity;
296 - (void)alterCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity;
297
298 - (DOMDocumentFragment *)documentFragmentWithMarkupString:(NSString *)markupString baseURLString:(NSString *)baseURLString;
299 - (DOMDocumentFragment *)documentFragmentWithText:(NSString *)text;
300
301 - (void)replaceSelectionWithFragment:(DOMDocumentFragment *)fragment selectReplacement:(BOOL)selectReplacement;
302 - (void)replaceSelectionWithNode:(DOMNode *)node selectReplacement:(BOOL)selectReplacement;
303 - (void)replaceSelectionWithMarkupString:(NSString *)markupString baseURLString:(NSString *)baseURLString selectReplacement:(BOOL)selectReplacement;
304 - (void)replaceSelectionWithText:(NSString *)text selectReplacement:(BOOL)selectReplacement;
305
306 - (void)insertText:(NSString *)text;
307 - (void)insertNewline;
308
309 - (void)setCaretVisible:(BOOL)flag;
310
311 - (void)setSelectionToDragCaret;
312 - (void)moveSelectionToDragCaret:(DOMDocumentFragment *)selectionFragment;
313 - (void)moveDragCaretToPoint:(NSPoint)point;
314 - (void)removeDragCaret;
315 - (DOMRange *)dragCaretDOMRange;
316 - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
317
318 - (void)deleteSelection;
319 - (void)deleteKeyPressed;
320 - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
321 - (NSFont *)fontForCurrentPosition;
322 - (void)ensureCaretVisible;
323
324 - (WebScriptObject *)windowScriptObject;
325 - (NPObject *)windowScriptNPObject;
326
327 - (BOOL)eventMayStartDrag:(NSEvent *)event;
328 - (NSDragOperation)dragOperationForDraggingInfo:(id <NSDraggingInfo>)info;
329 - (void)dragExitedWithDraggingInfo:(id <NSDraggingInfo>)info;
330 - (BOOL)concludeDragForDraggingInfo:(id <NSDraggingInfo>)info;
331 - (void)dragSourceMovedTo:(NSPoint)windowLoc;
332 - (void)dragSourceEndedAt:(NSPoint)windowLoc operation:(NSDragOperation)operation;
333
334 - (BOOL)mayDHTMLCut;
335 - (BOOL)mayDHTMLCopy;
336 - (BOOL)mayDHTMLPaste;
337 - (BOOL)tryDHTMLCut;
338 - (BOOL)tryDHTMLCopy;
339 - (BOOL)tryDHTMLPaste;
340
341 @end
342
343 // The WebCoreBridge protocol contains methods for use by the WebCore side of the bridge.
344
345 @protocol WebCoreBridge
346
347 - (NSArray *)childFrames; // WebCoreBridge objects
348 - (WebCoreBridge *)mainFrame;
349 - (WebCoreBridge *)findFrameNamed:(NSString *)name;
350 /* Creates a name for an frame unnamed in the HTML.  It should produce repeatable results for loads of the same frameset. */
351 - (NSString *)generateFrameName;
352 - (void)frameDetached;
353 - (NSView *)documentView;
354
355 - (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer reload:(BOOL)reload userGesture:(BOOL)forUser target:(NSString *)target triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
356 - (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(DOMElement *)form formValues:(NSDictionary *)values;
357
358 - (WebCoreBridge *)createWindowWithURL:(NSURL *)URL frameName:(NSString *)name;
359 - (void)showWindow;
360
361 - (NSString *)userAgentForURL:(NSURL *)URL;
362
363 - (void)setTitle:(NSString *)title;
364 - (void)setStatusText:(NSString *)status;
365
366 - (void)setIconURL:(NSURL *)URL;
367 - (void)setIconURL:(NSURL *)URL withType:(NSString *)string;
368
369 - (WebCoreBridge *)createChildFrameNamed:(NSString *)frameName withURL:(NSURL *)URL
370     renderPart:(KHTMLRenderPart *)renderPart
371     allowsScrolling:(BOOL)allowsScrolling marginWidth:(int)width marginHeight:(int)height;
372
373 - (BOOL)areToolbarsVisible;
374 - (void)setToolbarsVisible:(BOOL)visible;
375 - (BOOL)isStatusBarVisible;
376 - (void)setStatusBarVisible:(BOOL)visible;
377 - (BOOL)areScrollbarsVisible;
378 - (void)setScrollbarsVisible:(BOOL)visible;
379 - (NSWindow *)window;
380 - (void)setWindowFrame:(NSRect)frame;
381 - (NSRect)windowFrame;
382 - (void)setWindowContentRect:(NSRect)frame;
383 - (NSRect)windowContentRect;
384
385 - (void)setWindowIsResizable:(BOOL)resizable;
386 - (BOOL)windowIsResizable;
387
388 - (NSResponder *)firstResponder;
389 - (void)makeFirstResponder:(NSResponder *)view;
390
391 - (void)closeWindowSoon;
392
393 - (void)runJavaScriptAlertPanelWithMessage:(NSString *)message;
394 - (BOOL)runJavaScriptConfirmPanelWithMessage:(NSString *)message;
395 - (BOOL)runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText returningText:(NSString **)result;
396 - (void)addMessageToConsole:(NSDictionary *)message;
397
398 - (id <WebCoreResourceHandle>)startLoadingResource:(id <WebCoreResourceLoader>)loader withURL:(NSURL *)URL customHeaders:(NSDictionary *)customHeaders;
399 - (id <WebCoreResourceHandle>)startLoadingResource:(id <WebCoreResourceLoader>)loader withURL:(NSURL *)URL customHeaders:(NSDictionary *)customHeaders postData:(NSData *)data;
400 - (void)objectLoadedFromCacheWithURL:(NSURL *)URL response:(id)response size:(unsigned)bytes;
401
402 - (NSData *)syncLoadResourceWithURL:(NSURL *)URL customHeaders:(NSDictionary *)requestHeaders postData:(NSData *)postData finalURL:(NSURL **)finalNSURL responseHeaders:(NSDictionary **)responseHeaderDict statusCode:(int *)statusCode;
403
404 - (BOOL)isReloading;
405 - (time_t)expiresTimeForResponse:(NSURLResponse *)response;
406
407 - (void)reportClientRedirectToURL:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory isJavaScriptFormAction:(BOOL)isJavaScriptFormAction;
408 - (void)reportClientRedirectCancelled:(BOOL)cancelWithLoadInProgress;
409
410 - (void)focusWindow;
411 - (void)unfocusWindow;
412
413 - (NSView *)nextKeyViewOutsideWebFrameViews;
414 - (NSView *)previousKeyViewOutsideWebFrameViews;
415
416 - (BOOL)defersLoading;
417 - (void)setDefersLoading:(BOOL)loading;
418 - (void)saveDocumentState:(NSArray *)documentState;
419 - (NSArray *)documentState;
420
421 - (void)setNeedsReapplyStyles;
422
423 // OK to be an NSString rather than an NSURL.
424 // This URL is only used for coloring visited links.
425 - (NSString *)requestedURLString;
426 - (NSString *)incomingReferrer;
427
428 - (NSView *)viewForPluginWithURL:(NSURL *)URL
429                       attributes:(NSArray *)attributesArray
430                          baseURL:(NSURL *)baseURL
431                         MIMEType:(NSString *)MIMEType;
432 - (NSView *)viewForJavaAppletWithFrame:(NSRect)frame
433                             attributes:(NSDictionary *)attributes
434                                baseURL:(NSURL *)baseURL;
435
436 - (BOOL)saveDocumentToPageCache:(id)documentInfo;
437
438 - (int)getObjectCacheSize;
439
440 - (BOOL)frameRequiredForMIMEType:(NSString*)MIMEType URL:(NSURL *)URL;
441
442 - (void)loadEmptyDocumentSynchronously;
443
444 - (NSString *)MIMETypeForPath:(NSString *)path;
445
446 - (void)allowDHTMLDrag:(BOOL *)flagDHTML UADrag:(BOOL *)flagUA;
447 - (BOOL)startDraggingImage:(NSImage *)dragImage at:(NSPoint)dragLoc operation:(NSDragOperation)op event:(NSEvent *)event sourceIsDHTML:(BOOL)flag DHTMLWroteData:(BOOL)dhtmlWroteData;
448 - (void)handleAutoscrollForMouseDragged:(NSEvent *)event;
449 - (BOOL)mayStartDragAtEventLocation:(NSPoint)location;
450
451 - (int)historyLength;
452 - (void)goBackOrForward:(int)distance;
453
454 - (void)controlTextDidBeginEditing:(NSNotification *)obj;
455 - (void)controlTextDidEndEditing:(NSNotification *)obj;
456 - (void)controlTextDidChange:(NSNotification *)obj;
457
458 - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor;
459 - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor;
460 - (BOOL)control:(NSControl *)control didFailToFormatString:(NSString *)string errorDescription:(NSString *)error;
461 - (void)control:(NSControl *)control didFailToValidatePartialString:(NSString *)string errorDescription:(NSString *)error;
462 - (BOOL)control:(NSControl *)control isValidObject:(id)obj;
463 - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector;
464
465 - (NSView <WebCoreFileButton> *)fileButtonWithDelegate:(id <WebCoreFileButtonDelegate>)delegate;
466
467 - (void)setHasBorder:(BOOL)hasBorder;
468
469 - (WebCoreKeyboardUIMode)keyboardUIMode;
470
471 - (void)didSetName:(NSString *)name;
472
473 - (NSFileWrapper *)fileWrapperForURL:(NSURL *)URL;
474
475 - (void)print;
476
477 - (jobject)pollForAppletInView:(NSView *)view;
478
479 - (NSUndoManager *)undoManager;
480 - (void)issueCutCommand;
481 - (void)issueCopyCommand;
482 - (void)issuePasteCommand;
483 - (void)respondToChangedSelection;
484 - (void)respondToChangedContents;
485 - (void)setIsSelected:(BOOL)isSelected forView:(NSView *)view;
486 - (BOOL)isEditable;
487 - (BOOL)shouldBeginEditing:(DOMRange *)range;
488 - (BOOL)shouldEndEditing:(DOMRange *)range;
489
490 - (NSString *)overrideMediaType;
491
492 - (void)windowObjectCleared;
493
494 @end
495
496 // This interface definition allows those who hold a WebCoreBridge * to call all the methods
497 // in the WebCoreBridge protocol without requiring the base implementation to supply the methods.
498 // This idiom is appropriate because WebCoreBridge is an abstract class.
499
500 @interface WebCoreBridge (SubclassResponsibility) <WebCoreBridge>
501 @end
502
503 @protocol WebCoreDOMTreeCopier <NSObject>
504 - (NSObject *)nodeWithName:(NSString *)name value:(NSString *)value source:(NSString *)source children:(NSArray *)children;
505 @end
506
507 @protocol WebCoreRenderTreeCopier <NSObject>
508 - (NSObject *)nodeWithName:(NSString *)name position:(NSPoint)p rect:(NSRect)rect view:(NSView *)view children:(NSArray *)children;
509 @end
510
511 @protocol WebCoreFileButton <NSObject>
512 - (void)setFilename:(NSString *)filename;
513 - (void)performClick;
514 - (NSString *)filename;
515 - (float)baseline;
516 - (void)setVisualFrame:(NSRect)rect;
517 - (NSRect)visualFrame;
518 - (NSSize)bestVisualFrameSizeForCharacterCount:(int)count;
519 @end
520
521 @protocol WebCoreFileButtonDelegate <NSObject>
522 - (void)filenameChanged:(NSString *)filename;
523 - (void)focusChanged:(BOOL)nowHasFocus;
524 - (void)clicked;
525 @end