Rubber-stamped by Mark Rowe.
[WebKit-https.git] / WebKitLibraries / WebKitSystemInterface.h
1 /*      
2     WebKitSystemInterface.h
3     Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
4
5     Public header file.
6 */
7
8 #import <Cocoa/Cocoa.h>
9 #import <Carbon/Carbon.h>
10
11 @class QTMovie;
12 @class QTMovieView;
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
18 typedef enum {
19     WKCertificateParseResultSucceeded  = 0,
20     WKCertificateParseResultFailed     = 1,
21     WKCertificateParseResultPKCS7      = 2,
22 } WKCertificateParseResult;
23
24 CFStringRef WKCopyCFLocalizationPreferredName(CFStringRef localization);
25 CFStringRef WKSignedPublicKeyAndChallengeString(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
26 WKCertificateParseResult WKAddCertificatesToKeychainFromData(const void *bytes, unsigned length);
27
28 NSString *WKGetPreferredExtensionForMIMEType(NSString *type);
29 NSArray *WKGetExtensionsForMIMEType(NSString *type);
30 NSString *WKGetMIMETypeForExtension(NSString *extension);
31
32 NSDate *WKGetNSURLResponseLastModifiedDate(NSURLResponse *response);
33 NSTimeInterval WKGetNSURLResponseFreshnessLifetime(NSURLResponse *response);
34
35 CFStringEncoding WKGetWebDefaultCFStringEncoding(void);
36
37 void WKSetMetadataURL(NSString *URLString, NSString *referrer, NSString *path);
38 void WKSetNSURLConnectionDefersCallbacks(NSURLConnection *connection, BOOL defers);
39
40 void WKShowKeyAndMain(void);
41 #ifndef __LP64__
42 OSStatus WKSyncWindowWithCGAfterMove(WindowRef);
43 unsigned WKCarbonWindowMask(void);
44 void *WKGetNativeWindowFromWindowRef(WindowRef);
45 OSType WKCarbonWindowPropertyCreator(void);
46 OSType WKCarbonWindowPropertyTag(void);
47 #endif
48
49 typedef id WKNSURLConnectionDelegateProxyPtr;
50
51 WKNSURLConnectionDelegateProxyPtr WKCreateNSURLConnectionDelegateProxy(void);
52
53 void WKDisableCGDeferredUpdates(void);
54
55 Class WKNSURLProtocolClassForRequest(NSURLRequest *request);
56 void WKSetNSURLRequestShouldContentSniff(NSMutableURLRequest *request, BOOL shouldContentSniff);
57
58 unsigned WKGetNSAutoreleasePoolCount(void);
59
60 void WKAdvanceDefaultButtonPulseAnimation(NSButtonCell *button);
61
62 NSString *WKMouseMovedNotification(void);
63 NSString *WKWindowWillOrderOnScreenNotification(void);
64 void WKSetNSWindowShouldPostEventNotifications(NSWindow *window, BOOL post);
65
66 CFTypeID WKGetAXTextMarkerTypeID(void);
67 CFTypeID WKGetAXTextMarkerRangeTypeID(void);
68 CFTypeRef WKCreateAXTextMarker(const void *bytes, size_t len);
69 BOOL WKGetBytesFromAXTextMarker(CFTypeRef textMarker, void *bytes, size_t length);
70 CFTypeRef WKCreateAXTextMarkerRange(CFTypeRef start, CFTypeRef end);
71 CFTypeRef WKCopyAXTextMarkerRangeStart(CFTypeRef range);
72 CFTypeRef WKCopyAXTextMarkerRangeEnd(CFTypeRef range);
73 void WKAccessibilityHandleFocusChanged(void);
74 AXUIElementRef WKCreateAXUIElementRef(id element);
75 void WKUnregisterUniqueIdForElement(id element);
76
77 void WKSetUpFontCache(void);
78
79 void WKSignalCFReadStreamEnd(CFReadStreamRef stream);
80 void WKSignalCFReadStreamHasBytes(CFReadStreamRef stream);
81 void WKSignalCFReadStreamError(CFReadStreamRef stream, CFStreamError *error);
82
83 CFReadStreamRef WKCreateCustomCFReadStream(void *(*formCreate)(CFReadStreamRef, void *), 
84     void (*formFinalize)(CFReadStreamRef, void *), 
85     Boolean (*formOpen)(CFReadStreamRef, CFStreamError *, Boolean *, void *), 
86     CFIndex (*formRead)(CFReadStreamRef, UInt8 *, CFIndex, CFStreamError *, Boolean *, void *), 
87     Boolean (*formCanRead)(CFReadStreamRef, void *), 
88     void (*formClose)(CFReadStreamRef, void *), 
89     void (*formSchedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *), 
90     void (*formUnschedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
91     void *context);
92
93 void WKDrawCapsLockIndicator(CGContextRef, CGRect);
94
95 void WKDrawFocusRing(CGContextRef context, CGColorRef color, int radius);
96     // The CG context's current path is the focus ring's path.
97     // A color of 0 means "use system focus ring color".
98     // A radius of 0 means "use default focus ring radius".
99
100 void WKSetDragImage(NSImage *image, NSPoint offset);
101
102 void WKDrawBezeledTextFieldCell(NSRect, BOOL enabled);
103 void WKDrawTextFieldCellFocusRing(NSTextFieldCell*, NSRect);
104 void WKDrawBezeledTextArea(NSRect, BOOL enabled);
105 void WKPopupMenu(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
106
107 void WKSendUserChangeNotifications(void);
108 #ifndef __LP64__
109 BOOL WKConvertNSEventToCarbonEvent(EventRecord *carbonEvent, NSEvent *cocoaEvent);
110 void WKSendKeyEventToTSM(NSEvent *theEvent);
111 void WKCallDrawingNotification(CGrafPtr port, Rect *bounds);
112 #endif
113
114 BOOL WKGetGlyphTransformedAdvances(CGFontRef, NSFont*, CGAffineTransform *m, ATSGlyphRef *glyph, CGSize *advance);
115 NSFont *WKGetFontInLanguageForRange(NSFont *font, NSString *string, NSRange range);
116 NSFont *WKGetFontInLanguageForCharacter(NSFont *font, UniChar ch);
117 void WKSetCGFontRenderingMode(CGContextRef cgContext, NSFont *font);
118 BOOL WKCGContextGetShouldSmoothFonts(CGContextRef cgContext);
119
120 #ifdef BUILDING_ON_TIGER
121 BOOL WKCGContextIsSafeToClip(CGContextRef);
122
123 // CGFontGetAscent, CGFontGetDescent, CGFontGetLeading and CGFontGetUnitsPerEm were not available until Leopard
124 void WKGetFontMetrics(CGFontRef font, int *ascent, int *descent, int *lineGap, unsigned *unitsPerEm);
125 // CTFontCopyGraphicsFont was not available until Leopard
126 CGFontRef WKGetCGFontFromNSFont(NSFont *font);
127 // CTFontGetPlatformFont was not available until Leopard
128 ATSUFontID WKGetNSFontATSUFontId(NSFont *font);
129 // CGFontCopyFullName was not available until Leopard
130 CFStringRef WKCopyFullFontName(CGFontRef font);
131 #endif
132
133 void WKSetPatternBaseCTM(CGContextRef, CGAffineTransform);
134 void WKSetPatternPhaseInUserSpace(CGContextRef, CGPoint);
135
136 #ifndef BUILDING_ON_TIGER
137 void WKGetGlyphsForCharacters(CGFontRef, const UniChar[], CGGlyph[], size_t);
138 #else
139 typedef void *WKGlyphVectorRef;
140 OSStatus WKConvertCharToGlyphs(void *styleGroup, const UniChar *characters, unsigned numCharacters, WKGlyphVectorRef glyphs);
141 OSStatus WKGetATSStyleGroup(ATSUStyle fontStyle, void **styleGroup);
142 void WKReleaseStyleGroup(void *group);
143 OSStatus WKInitializeGlyphVector(int count, WKGlyphVectorRef glyphs);
144 void WKClearGlyphVector(WKGlyphVectorRef glyphs);
145
146 int WKGetGlyphVectorNumGlyphs(WKGlyphVectorRef glyphVector);
147 ATSLayoutRecord *WKGetGlyphVectorFirstRecord(WKGlyphVectorRef glyphVector);
148 size_t WKGetGlyphVectorRecordSize(WKGlyphVectorRef glyphVector);
149 #endif
150
151 #ifndef __LP64__
152 NSEvent *WKCreateNSEventWithCarbonEvent(EventRef eventRef);
153 NSEvent *WKCreateNSEventWithCarbonMouseMoveEvent(EventRef inEvent, NSWindow *window);
154 NSEvent *WKCreateNSEventWithCarbonClickEvent(EventRef inEvent, WindowRef windowRef);
155 #endif
156
157 CGContextRef WKNSWindowOverrideCGContext(NSWindow *, CGContextRef);
158 void WKNSWindowRestoreCGContext(NSWindow *, CGContextRef);
159
160 void WKNSWindowMakeBottomCornersSquare(NSWindow *);
161
162 // These constants match the ones used by ThemeScrollbarArrowStyle (some of the values are private, so we can't just
163 // use that enum directly).
164 typedef enum {
165     WKThemeScrollBarArrowsSingle     = 0,
166     WKThemeScrollBarArrowsLowerRight = 1,
167     WKThemeScrollBarArrowsDouble     = 2,
168     WKThemeScrollBarArrowsUpperLeft  = 3,
169 } WKThemeScrollBarArrowStyle;
170
171 OSStatus WKThemeDrawTrack(const HIThemeTrackDrawInfo* inDrawInfo, CGContextRef inContext, int inArrowStyle);
172
173 #ifdef BUILDING_ON_TIGER
174 // WKSupportsMultipartXMixedReplace is not required on Leopard as multipart/x-mixed-replace is always handled by NSURLRequest
175 BOOL WKSupportsMultipartXMixedReplace(NSMutableURLRequest *request);
176 #endif
177
178 BOOL WKCGContextIsBitmapContext(CGContextRef context);
179
180 void WKGetWheelEventDeltas(NSEvent *, float *deltaX, float *deltaY, BOOL *continuous);
181
182 BOOL WKAppVersionCheckLessThan(NSString *, int, double);
183
184 unsigned WKQTIncludeOnlyModernMediaFileTypes(void);
185 int WKQTMovieDataRate(QTMovie* movie);
186 float WKQTMovieMaxTimeLoaded(QTMovie* movie);
187 float WKQTMovieMaxTimeSeekable(QTMovie* movie);
188 NSString *WKQTMovieMaxTimeLoadedChangeNotification(void);
189 void WKQTMovieViewSetDrawSynchronously(QTMovieView* view, BOOL sync);
190
191 CFStringRef WKCopyFoundationCacheDirectory(void);
192
193 typedef enum {
194     WKMediaUIPartFullscreenButton   = 0,
195     WKMediaUIPartMuteButton         = 1,
196     WKMediaUIPartPlayButton         = 2,
197     WKMediaUIPartSeekBackButton     = 3,
198     WKMediaUIPartSeekForwardButton  = 4,
199     WKMediaUIPartSlider             = 5,
200     WKMediaUIPartSliderThumb        = 6,
201     WKMediaUIPartUnMuteButton       = 7,
202     WKMediaUIPartPauseButton        = 8,
203     WKMediaUIPartTimelineContainer  = 9,
204     WKMediaUIPartCurrentTimeDisplay = 10,
205     WKMediaUIPartTimeRemainingDisplay= 11
206 } WKMediaUIPart;
207
208 typedef enum {
209     WKMediaControllerThemeClassic   = 1,
210     WKMediaControllerThemeQT        = 2
211 } WKMediaControllerThemeStyle;
212
213 BOOL WKHitTestMediaUIPart(int part, int themeStyle, CGRect bounds, CGPoint point);
214 void WKMeasureMediaUIPart(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
215 void WKDrawMediaUIPart(int part, int themeStyle, CGContextRef context, CGRect rect, BOOL active);
216 void WKDrawMediaSliderTrack(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, float duration);
217
218 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && defined(__x86_64__)
219 mach_port_t WKInitializeRenderServer(void);
220     
221 @class CALayer;
222
223 CALayer *WKMakeRenderLayer(uint32_t contextID);
224     
225 typedef struct __WKSoftwareCARendererRef *WKSoftwareCARendererRef;
226
227 WKSoftwareCARendererRef WKSoftwareCARendererCreate(uint32_t contextID);
228 void WKSoftwareCARendererDestroy(WKSoftwareCARendererRef);
229 void WKSoftwareCARendererRender(WKSoftwareCARendererRef, CGContextRef, CGRect);
230
231 #import <mach/mig.h>
232
233 CFRunLoopSourceRef WKCreateMIGServerSource(mig_subsystem_t subsystem, mach_port_t serverPort);
234
235 NSUInteger WKGetInputPanelWindowStyle(void);
236  
237 UInt8 WKGetNSEventKeyChar(NSEvent *);
238     
239 #endif
240
241 @class CAPropertyAnimation;
242 void WKSetCAAnimationValueFunction(CAPropertyAnimation*, NSString* function);
243
244 unsigned WKInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount);
245
246 #ifdef __cplusplus
247 }
248 #endif