755286c915d93a8c231080ff6096cb20b80de9d5
[WebKit-https.git] / Source / WebCore / platform / mac / WebCoreSystemInterface.h
1 /*
2  * Copyright 2006, 2007, 2008, 2009, 2010 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  * 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 #ifndef WebCoreSystemInterface_h
27 #define WebCoreSystemInterface_h
28
29 #include <objc/objc.h>
30
31 typedef const struct __CFString * CFStringRef;
32 typedef const struct __CFNumber * CFNumberRef;
33 typedef const struct __CFDictionary * CFDictionaryRef;
34 typedef struct CGPoint CGPoint;
35 typedef struct CGSize CGSize;
36 typedef struct CGRect CGRect;
37 typedef struct CGAffineTransform CGAffineTransform;
38 typedef struct CGContext *CGContextRef;
39 typedef struct CGImage *CGImageRef;
40 typedef struct CGColor *CGColorRef;
41 typedef struct CGFont *CGFontRef;
42 typedef struct CGColorSpace *CGColorSpaceRef;
43 typedef unsigned short CGGlyph;
44 typedef struct __CFReadStream * CFReadStreamRef;
45 typedef struct __CFRunLoop * CFRunLoopRef;
46 typedef struct __CFHTTPMessage *CFHTTPMessageRef;
47 typedef struct _CFURLResponse *CFURLResponseRef;
48 typedef const struct _CFURLRequest *CFURLRequestRef;
49 typedef const struct __CTLine * CTLineRef;
50 typedef const struct __CTTypesetter * CTTypesetterRef;
51 typedef const struct __AXUIElement *AXUIElementRef;
52 typedef struct _NSRange NSRange;
53
54 typedef UInt32 FMFont;
55 typedef FMFont ATSUFontID;
56 typedef UInt16 ATSGlyphRef;
57
58 #if PLATFORM(MAC) && USE(CA) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
59 typedef struct __IOSurface *IOSurfaceRef;
60 #endif
61
62 #ifdef NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES
63 typedef struct CGPoint NSPoint;
64 typedef struct CGRect NSRect;
65 #else
66 typedef struct _NSPoint NSPoint;
67 typedef struct _NSRect NSRect;
68 #endif
69
70 #if USE(CFNETWORK)
71 typedef struct OpaqueCFHTTPCookieStorage*  CFHTTPCookieStorageRef;
72 typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef;
73 typedef struct _CFURLCredential* WKCFURLCredentialRef;
74 typedef struct _CFURLRequest* CFMutableURLRequestRef;
75 typedef const struct _CFURLRequest* CFURLRequestRef;
76 #endif
77
78 #ifdef __OBJC__
79 @class AVAsset;
80 @class NSArray;
81 @class NSButtonCell;
82 @class NSControl;
83 @class NSCursor;
84 @class NSData;
85 @class NSDate;
86 @class NSEvent;
87 @class NSFont;
88 @class NSHTTPCookie;
89 @class NSImage;
90 @class NSMenu;
91 @class NSMutableURLRequest;
92 @class NSString;
93 @class NSTextFieldCell;
94 @class NSURL;
95 @class NSURLConnection;
96 @class NSURLRequest;
97 @class NSURLResponse;
98 @class NSView;
99 @class NSWindow;
100 @class QTMovie;
101 @class QTMovieView;
102 #else
103 class AVAsset;
104 class NSArray;
105 class NSButtonCell;
106 class NSControl;
107 class NSCursor;
108 class NSData;
109 class NSDate;
110 class NSEvent;
111 class NSFont;
112 class NSHTTPCookie;
113 class NSImage;
114 class NSMenu;
115 class NSMutableArray;
116 class NSMutableURLRequest;
117 class NSURL;
118 class NSURLRequest;
119 class NSString;
120 class NSTextFieldCell;
121 class NSURLConnection;
122 class NSURLResponse;
123 class NSView;
124 class NSWindow;
125 class QTMovie;
126 class QTMovieView;
127 #endif
128
129 extern "C" {
130
131 // In alphabetical order.
132
133 extern void (*wkAdvanceDefaultButtonPulseAnimation)(NSButtonCell *);
134 extern BOOL (*wkCGContextGetShouldSmoothFonts)(CGContextRef);
135 extern CFReadStreamRef (*wkCreateCustomCFReadStream)(void *(*formCreate)(CFReadStreamRef, void *), 
136     void (*formFinalize)(CFReadStreamRef, void *), 
137     Boolean (*formOpen)(CFReadStreamRef, CFStreamError *, Boolean *, void *), 
138     CFIndex (*formRead)(CFReadStreamRef, UInt8 *, CFIndex, CFStreamError *, Boolean *, void *), 
139     Boolean (*formCanRead)(CFReadStreamRef, void *), 
140     void (*formClose)(CFReadStreamRef, void *), 
141     void (*formSchedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *), 
142     void (*formUnschedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
143     void *context);
144 extern CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
145 extern NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
146 extern id (*wkCreateNSURLConnectionDelegateProxy)(void);
147 extern void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);
148 extern void (*wkDrawTextFieldCellFocusRing)(NSTextFieldCell*, NSRect);
149 extern void (*wkDrawCapsLockIndicator)(CGContextRef, CGRect);
150 extern void (*wkDrawBezeledTextArea)(NSRect, BOOL enabled);
151 extern void (*wkDrawFocusRing)(CGContextRef, CGColorRef, int radius);
152 extern NSFont* (*wkGetFontInLanguageForRange)(NSFont*, NSString*, NSRange);
153 extern NSFont* (*wkGetFontInLanguageForCharacter)(NSFont*, UniChar);
154 extern BOOL (*wkGetGlyphTransformedAdvances)(CGFontRef, NSFont*, CGAffineTransform*, ATSGlyphRef*, CGSize* advance);
155 extern void (*wkDrawMediaSliderTrack)(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, 
156     float duration, unsigned state);
157 extern void (*wkDrawMediaUIPart)(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state);
158 extern CFStringRef (*wkSignedPublicKeyAndChallengeString)(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
159 extern NSString* (*wkGetPreferredExtensionForMIMEType)(NSString*);
160 extern NSArray* (*wkGetExtensionsForMIMEType)(NSString*);
161 extern NSString* (*wkGetMIMETypeForExtension)(NSString*);
162 extern ATSUFontID (*wkGetNSFontATSUFontId)(NSFont*);
163 extern double (*wkGetNSURLResponseCalculatedExpiration)(NSURLResponse *response);
164 extern NSDate *(*wkGetNSURLResponseLastModifiedDate)(NSURLResponse *response);
165 extern BOOL (*wkGetNSURLResponseMustRevalidate)(NSURLResponse *response);
166 extern void (*wkGetWheelEventDeltas)(NSEvent*, float* deltaX, float* deltaY, BOOL* continuous);
167 extern BOOL (*wkHitTestMediaUIPart)(int part, int themeStyle, CGRect bounds, CGPoint point);
168 extern void (*wkMeasureMediaUIPart)(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
169 extern NSView *(*wkCreateMediaUIBackgroundView)(void);
170
171 typedef enum {
172     wkMediaUIControlTimeline,
173     wkMediaUIControlSlider,
174     wkMediaUIControlPlayPauseButton,
175     wkMediaUIControlExitFullscreenButton,
176     wkMediaUIControlRewindButton,
177     wkMediaUIControlFastForwardButton,
178     wkMediaUIControlVolumeUpButton,
179     wkMediaUIControlVolumeDownButton
180 } wkMediaUIControlType;
181 extern NSControl *(*wkCreateMediaUIControl)(int);
182
183 extern void (*wkWindowSetAlpha)(NSWindow *, float);
184 extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
185 extern BOOL (*wkMediaControllerThemeAvailable)(int themeStyle);
186 extern void (*wkPopupMenu)(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
187 extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void);
188 extern int (*wkQTMovieDataRate)(QTMovie*);
189 extern void (*wkQTMovieDisableComponent)(uint32_t[5]);
190 extern float (*wkQTMovieMaxTimeLoaded)(QTMovie*);
191 extern NSString *(*wkQTMovieMaxTimeLoadedChangeNotification)(void);
192 extern float (*wkQTMovieMaxTimeSeekable)(QTMovie*);
193 extern int (*wkQTMovieGetType)(QTMovie*);
194 extern BOOL (*wkQTMovieHasClosedCaptions)(QTMovie*);
195 extern NSURL *(*wkQTMovieResolvedURL)(QTMovie*);
196 extern void (*wkQTMovieSetShowClosedCaptions)(QTMovie*, BOOL);
197 extern void (*wkQTMovieSelectPreferredAlternates)(QTMovie*);
198 extern void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL);
199 extern NSArray *(*wkQTGetSitesInMediaDownloadCache)();
200 extern void (*wkQTClearMediaDownloadCacheForSite)(NSString *site);
201 extern void (*wkQTClearMediaDownloadCache)();
202 extern void (*wkSetCGFontRenderingMode)(CGContextRef, NSFont*);
203 extern void (*wkSetCookieStoragePrivateBrowsingEnabled)(BOOL);
204 extern void (*wkSetDragImage)(NSImage*, NSPoint offset);
205 extern void (*wkSetNSURLConnectionDefersCallbacks)(NSURLConnection *, BOOL);
206 extern void (*wkSetNSURLRequestShouldContentSniff)(NSMutableURLRequest *, BOOL);
207 extern void (*wkSetPatternBaseCTM)(CGContextRef, CGAffineTransform);
208 extern void (*wkSetPatternPhaseInUserSpace)(CGContextRef, CGPoint);
209 extern CGAffineTransform (*wkGetUserToBaseCTM)(CGContextRef);
210 extern void (*wkSetUpFontCache)();
211 extern void (*wkSignalCFReadStreamEnd)(CFReadStreamRef stream);
212 extern void (*wkSignalCFReadStreamError)(CFReadStreamRef stream, CFStreamError *error);
213 extern void (*wkSignalCFReadStreamHasBytes)(CFReadStreamRef stream);
214 extern unsigned (*wkInitializeMaximumHTTPConnectionCountPerHost)(unsigned preferredConnectionCount);
215 extern int (*wkGetHTTPPipeliningPriority)(CFURLRequestRef);
216 extern void (*wkSetHTTPPipeliningMaximumPriority)(int maximumPriority);
217 extern void (*wkSetHTTPPipeliningPriority)(CFURLRequestRef, int priority);
218 extern void (*wkSetHTTPPipeliningMinimumFastLanePriority)(int priority);
219 extern void (*wkSetCONNECTProxyForStream)(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
220 extern void (*wkSetCONNECTProxyAuthorizationForStream)(CFReadStreamRef, CFStringRef proxyAuthorizationString);
221 extern CFHTTPMessageRef (*wkCopyCONNECTProxyResponse)(CFReadStreamRef, CFURLRef responseURL);
222
223 extern void (*wkGetGlyphsForCharacters)(CGFontRef, const UniChar[], CGGlyph[], size_t);
224
225 extern BOOL (*wkUseSharedMediaUI)();
226
227 #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
228 extern void* wkGetHyphenationLocationBeforeIndex;
229 #else
230 extern CFIndex (*wkGetHyphenationLocationBeforeIndex)(CFStringRef string, CFIndex index);
231
232 typedef enum {
233     wkEventPhaseNone = 0,
234     wkEventPhaseBegan = 1,
235     wkEventPhaseChanged = 2,
236     wkEventPhaseEnded = 3,
237 } wkEventPhase;
238
239 extern int (*wkGetNSEventMomentumPhase)(NSEvent *);
240 #endif
241
242 extern CTLineRef (*wkCreateCTLineWithUniCharProvider)(const UniChar* (*provide)(CFIndex stringIndex, CFIndex* charCount, CFDictionaryRef* attributes, void*), void (*dispose)(const UniChar* chars, void*), void*);
243
244 #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
245
246 extern CTTypesetterRef (*wkCreateCTTypesetterWithUniCharProviderAndOptions)(const UniChar* (*provide)(CFIndex stringIndex, CFIndex* charCount, CFDictionaryRef* attributes, void*), void (*dispose)(const UniChar* chars, void*), void*, CFDictionaryRef options);
247
248 extern CGContextRef (*wkIOSurfaceContextCreate)(IOSurfaceRef surface, unsigned width, unsigned height, CGColorSpaceRef colorSpace);
249 extern CGImageRef (*wkIOSurfaceContextCreateImage)(CGContextRef context);
250
251 typedef struct __WKScrollbarPainter *WKScrollbarPainterRef;
252 typedef struct __WKScrollbarPainterController *WKScrollbarPainterControllerRef;
253
254 extern WKScrollbarPainterRef (*wkMakeScrollbarPainter)(int controlSize, bool isHorizontal);
255 extern WKScrollbarPainterRef (*wkMakeScrollbarReplacementPainter)(WKScrollbarPainterRef oldPainter, int newStyle, int controlSize, bool isHorizontal);
256 extern void (*wkScrollbarPainterSetDelegate)(WKScrollbarPainterRef, id scrollbarPainterDelegate);
257 extern void (*wkScrollbarPainterSetEnabled)(WKScrollbarPainterRef, bool enabled);
258 extern void (*wkScrollbarPainterPaint)(WKScrollbarPainterRef, bool enabled, double value, CGFloat proportion, CGRect frameRect);
259 extern void (*wkScrollbarPainterForceFlashScrollers)(WKScrollbarPainterControllerRef);
260 extern int (*wkScrollbarThickness)(int controlSize);
261 extern int (*wkScrollbarMinimumThumbLength)(WKScrollbarPainterRef);
262 extern int (*wkScrollbarMinimumTotalLengthNeededForThumb)(WKScrollbarPainterRef);
263 extern CGFloat (*wkScrollbarPainterKnobAlpha)(WKScrollbarPainterRef);
264 extern void (*wkSetScrollbarPainterKnobAlpha)(WKScrollbarPainterRef, CGFloat);
265 extern CGFloat (*wkScrollbarPainterTrackAlpha)(WKScrollbarPainterRef);
266 extern void (*wkSetScrollbarPainterTrackAlpha)(WKScrollbarPainterRef, CGFloat);
267 extern bool (*wkScrollbarPainterIsHorizontal)(WKScrollbarPainterRef);
268 extern CGRect (*wkScrollbarPainterKnobRect)(WKScrollbarPainterRef);
269 extern void (*wkScrollbarPainterSetOverlayState)(WKScrollbarPainterRef, int overlayScrollerState);
270
271 enum {
272     wkScrollerKnobStyleDefault = 0,
273     wkScrollerKnobStyleDark = 1,
274     wkScrollerKnobStyleLight = 2
275 };
276 typedef uint32 wkScrollerKnobStyle;
277 extern void (*wkSetScrollbarPainterKnobStyle)(WKScrollbarPainterRef, wkScrollerKnobStyle);
278     
279 extern WKScrollbarPainterControllerRef (*wkMakeScrollbarPainterController)(id painterControllerDelegate);
280 extern void (*wkSetPainterForPainterController)(WKScrollbarPainterControllerRef, WKScrollbarPainterRef, bool isHorizontal);
281 extern WKScrollbarPainterRef (*wkVerticalScrollbarPainterForController)(WKScrollbarPainterControllerRef);
282 extern WKScrollbarPainterRef (*wkHorizontalScrollbarPainterForController)(WKScrollbarPainterControllerRef);
283 extern int (*wkScrollbarPainterControllerStyle)(WKScrollbarPainterControllerRef);
284 extern void (*wkSetScrollbarPainterControllerStyle)(WKScrollbarPainterControllerRef, int newStyle);
285 extern void (*wkContentAreaScrolled)(WKScrollbarPainterControllerRef);
286 extern void (*wkContentAreaWillPaint)(WKScrollbarPainterControllerRef);
287 extern void (*wkMouseEnteredContentArea)(WKScrollbarPainterControllerRef);
288 extern void (*wkMouseExitedContentArea)(WKScrollbarPainterControllerRef);
289 extern void (*wkMouseMovedInContentArea)(WKScrollbarPainterControllerRef);
290 extern void (*wkWillStartLiveResize)(WKScrollbarPainterControllerRef);
291 extern void (*wkContentAreaResized)(WKScrollbarPainterControllerRef);
292 extern void (*wkWillEndLiveResize)(WKScrollbarPainterControllerRef);
293 extern void (*wkContentAreaDidShow)(WKScrollbarPainterControllerRef);
294 extern void (*wkContentAreaDidHide)(WKScrollbarPainterControllerRef);
295 extern void (*wkDidBeginScrollGesture)(WKScrollbarPainterControllerRef);
296 extern void (*wkDidEndScrollGesture)(WKScrollbarPainterControllerRef);
297
298 extern bool (*wkScrollbarPainterUsesOverlayScrollers)(void);
299
300 extern bool (*wkExecutableWasLinkedOnOrBeforeSnowLeopard)(void);
301
302 extern CFStringRef (*wkCopyDefaultSearchProviderDisplayName)(void);
303
304 extern NSURL *(*wkAVAssetResolvedURL)(AVAsset*);
305
306 extern NSCursor *(*wkCursor)(const char*);
307
308 #endif
309
310 extern void (*wkUnregisterUniqueIdForElement)(id element);
311 extern void (*wkAccessibilityHandleFocusChanged)(void);    
312 extern CFTypeID (*wkGetAXTextMarkerTypeID)(void);
313 extern CFTypeID (*wkGetAXTextMarkerRangeTypeID)(void);
314 extern CFTypeRef (*wkCreateAXTextMarkerRange)(CFTypeRef start, CFTypeRef end);
315 extern CFTypeRef (*wkCopyAXTextMarkerRangeStart)(CFTypeRef range);
316 extern CFTypeRef (*wkCopyAXTextMarkerRangeEnd)(CFTypeRef range);
317 extern CFTypeRef (*wkCreateAXTextMarker)(const void *bytes, size_t len);
318 extern BOOL (*wkGetBytesFromAXTextMarker)(CFTypeRef textMarker, void *bytes, size_t length);
319 extern AXUIElementRef (*wkCreateAXUIElementRef)(id element);
320
321 #if defined(BUILDING_ON_SNOW_LEOPARD) || defined(BUILDING_ON_LEOPARD)
322 typedef struct __CFURLStorageSession* CFURLStorageSessionRef;
323 #else
324 typedef const struct __CFURLStorageSession* CFURLStorageSessionRef;
325 #endif
326 extern CFURLStorageSessionRef (*wkCreatePrivateStorageSession)(CFStringRef);
327 extern NSURLRequest* (*wkCopyRequestWithStorageSession)(CFURLStorageSessionRef, NSURLRequest*);
328
329 typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef;
330 extern CFHTTPCookieStorageRef (*wkCopyHTTPCookieStorage)(CFURLStorageSessionRef);
331 extern unsigned (*wkGetHTTPCookieAcceptPolicy)(CFHTTPCookieStorageRef);
332 extern void (*wkSetHTTPCookieAcceptPolicy)(CFHTTPCookieStorageRef, unsigned);
333 extern NSArray *(*wkHTTPCookiesForURL)(CFHTTPCookieStorageRef, NSURL *);
334 extern void (*wkSetHTTPCookiesForURL)(CFHTTPCookieStorageRef, NSArray *, NSURL *, NSURL *);
335 extern void (*wkDeleteHTTPCookie)(CFHTTPCookieStorageRef, NSHTTPCookie *);
336
337 extern CFStringRef (*wkGetCFURLResponseMIMEType)(CFURLResponseRef);
338 extern CFURLRef (*wkGetCFURLResponseURL)(CFURLResponseRef);
339 extern CFHTTPMessageRef (*wkGetCFURLResponseHTTPResponse)(CFURLResponseRef);
340 extern CFStringRef (*wkCopyCFURLResponseSuggestedFilename)(CFURLResponseRef);
341 extern void (*wkSetCFURLResponseMIMEType)(CFURLResponseRef, CFStringRef mimeType);
342
343 #if USE(CFNETWORK)
344 extern CFHTTPCookieStorageRef (*wkGetDefaultHTTPCookieStorage)();
345 extern WKCFURLCredentialRef (*wkCopyCredentialFromCFPersistentStorage)(CFURLProtectionSpaceRef protectionSpace);
346 extern void (*wkSetCFURLRequestShouldContentSniff)(CFMutableURLRequestRef, bool);
347 extern CFArrayRef (*wkCFURLRequestCopyHTTPRequestBodyParts)(CFURLRequestRef);
348 extern void (*wkCFURLRequestSetHTTPRequestBodyParts)(CFMutableURLRequestRef, CFArrayRef bodyParts);
349 extern void (*wkSetRequestStorageSession)(CFURLStorageSessionRef, CFMutableURLRequestRef);
350 #endif
351 }
352
353 #endif