1f53d402e0d496ddaea29842cee2181a666b29ce
[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 #if PLATFORM(IOS)
32 #include "WebCoreSystemInterfaceIOS.h"
33 #endif
34
35 typedef const struct __CFString * CFStringRef;
36 typedef const struct __CFNumber * CFNumberRef;
37 typedef const struct __CFDictionary * CFDictionaryRef;
38 typedef struct CGPoint CGPoint;
39 typedef struct CGSize CGSize;
40 typedef struct CGRect CGRect;
41 typedef struct CGAffineTransform CGAffineTransform;
42 typedef struct CGContext *CGContextRef;
43 typedef struct CGImage *CGImageRef;
44 typedef struct CGColor *CGColorRef;
45 typedef struct CGFont *CGFontRef;
46 typedef struct CGColorSpace *CGColorSpaceRef;
47 typedef struct CGPattern *CGPatternRef;
48 typedef struct CGPath *CGMutablePathRef;
49 typedef unsigned short CGGlyph;
50 typedef struct __CFReadStream * CFReadStreamRef;
51 typedef struct __CFRunLoop * CFRunLoopRef;
52 typedef struct __CFHTTPMessage *CFHTTPMessageRef;
53 typedef struct _CFURLResponse *CFURLResponseRef;
54 typedef const struct _CFURLRequest *CFURLRequestRef;
55 typedef const struct __CTFont * CTFontRef;
56 typedef const struct __CTLine * CTLineRef;
57 typedef const struct __CTRun * CTRunRef;
58 typedef const struct __CTTypesetter * CTTypesetterRef;
59 typedef const struct __AXUIElement *AXUIElementRef;
60 #if !PLATFORM(IOS)
61 typedef struct _NSRange NSRange;
62
63 typedef UInt32 FMFont;
64 typedef FMFont ATSUFontID;
65 typedef UInt16 ATSGlyphRef;
66 #endif
67
68 #if PLATFORM(MAC) && USE(CA)
69 #if !PLATFORM(IOS_SIMULATOR)
70 typedef struct __IOSurface *IOSurfaceRef;
71 #endif // !PLATFORM(IOS_SIMULATOR)
72 #endif
73
74 #if !PLATFORM(IOS)
75 #ifdef NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES
76 typedef struct CGPoint NSPoint;
77 typedef struct CGRect NSRect;
78 #else
79 typedef struct _NSPoint NSPoint;
80 typedef struct _NSRect NSRect;
81 #endif
82 #endif // !PLATFORM(IOS)
83
84 #if PLATFORM(IOS)
85 #include <CoreGraphics/CoreGraphics.h>
86 #endif
87
88 #if USE(CFNETWORK)
89 typedef struct OpaqueCFHTTPCookieStorage*  CFHTTPCookieStorageRef;
90 typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef;
91 typedef struct _CFURLCredential* WKCFURLCredentialRef;
92 typedef struct _CFURLRequest* CFMutableURLRequestRef;
93 typedef const struct _CFURLRequest* CFURLRequestRef;
94 #endif
95
96 OBJC_CLASS AVAsset;
97 OBJC_CLASS CALayer;
98 OBJC_CLASS NSArray;
99 OBJC_CLASS NSButtonCell;
100 OBJC_CLASS NSControl;
101 OBJC_CLASS NSCursor;
102 OBJC_CLASS NSData;
103 OBJC_CLASS NSDate;
104 OBJC_CLASS NSEvent;
105 OBJC_CLASS NSFont;
106 OBJC_CLASS NSHTTPCookie;
107 OBJC_CLASS NSImage;
108 OBJC_CLASS NSLocale;
109 OBJC_CLASS NSMenu;
110 OBJC_CLASS NSMutableURLRequest;
111 OBJC_CLASS NSString;
112 OBJC_CLASS NSTextFieldCell;
113 OBJC_CLASS NSURL;
114 OBJC_CLASS NSURLConnection;
115 OBJC_CLASS NSURLRequest;
116 OBJC_CLASS NSURLResponse;
117 OBJC_CLASS NSView;
118 OBJC_CLASS NSWindow;
119 OBJC_CLASS QTMovie;
120 OBJC_CLASS QTMovieView;
121
122 extern "C" {
123
124 // In alphabetical order.
125
126 extern void (*wkAdvanceDefaultButtonPulseAnimation)(NSButtonCell *);
127 extern void (*wkCALayerEnumerateRectsBeingDrawnWithBlock)(CALayer *, CGContextRef, void (^block)(CGRect rect));
128
129 extern BOOL (*wkCGContextGetShouldSmoothFonts)(CGContextRef);
130 typedef enum {
131     wkPatternTilingNoDistortion,
132     wkPatternTilingConstantSpacingMinimalDistortion,
133     wkPatternTilingConstantSpacing
134 } wkPatternTiling;
135 extern void (*wkCGContextResetClip)(CGContextRef);
136 #if !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
137 extern bool (*wkCGContextDrawsWithCorrectShadowOffsets)(CGContextRef);
138 #endif
139 extern CGPatternRef (*wkCGPatternCreateWithImageAndTransform)(CGImageRef, CGAffineTransform, int);
140 extern CFReadStreamRef (*wkCreateCustomCFReadStream)(void *(*formCreate)(CFReadStreamRef, void *), 
141     void (*formFinalize)(CFReadStreamRef, void *), 
142     Boolean (*formOpen)(CFReadStreamRef, CFStreamError *, Boolean *, void *), 
143     CFIndex (*formRead)(CFReadStreamRef, UInt8 *, CFIndex, CFStreamError *, Boolean *, void *), 
144     Boolean (*formCanRead)(CFReadStreamRef, void *), 
145     void (*formClose)(CFReadStreamRef, void *), 
146     void (*formSchedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *), 
147     void (*formUnschedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
148     void *context);
149 extern CFStringRef (*wkCopyCFLocalizationPreferredName)(CFStringRef);
150 extern NSString* (*wkCopyNSURLResponseStatusLine)(NSURLResponse*);
151 extern CFArrayRef (*wkCopyNSURLResponseCertificateChain)(NSURLResponse*);
152 #if !PLATFORM(IOS)
153 extern void (*wkDrawBezeledTextFieldCell)(NSRect, BOOL enabled);
154 extern void (*wkDrawTextFieldCellFocusRing)(NSTextFieldCell*, NSRect);
155 extern void (*wkDrawCapsLockIndicator)(CGContextRef, CGRect);
156 extern void (*wkDrawBezeledTextArea)(NSRect, BOOL enabled);
157 extern void (*wkDrawFocusRing)(CGContextRef, CGColorRef, int radius);
158 extern NSFont* (*wkGetFontInLanguageForRange)(NSFont*, NSString*, NSRange);
159 extern NSFont* (*wkGetFontInLanguageForCharacter)(NSFont*, UniChar);
160 extern BOOL (*wkGetGlyphTransformedAdvances)(CGFontRef, NSFont*, CGAffineTransform*, ATSGlyphRef*, CGSize* advance);
161 #endif
162 #if !PLATFORM(IOS)
163 extern void (*wkDrawMediaSliderTrack)(CGContextRef context, CGRect rect, float timeLoaded, float currentTime,
164     float duration, unsigned state);
165 extern void (*wkDrawMediaUIPart)(int part, CGContextRef context, CGRect rect, unsigned state);
166 extern CFStringRef (*wkSignedPublicKeyAndChallengeString)(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
167 extern NSString* (*wkGetPreferredExtensionForMIMEType)(NSString*);
168 extern NSArray* (*wkGetExtensionsForMIMEType)(NSString*);
169 #endif
170 extern NSString* (*wkGetMIMETypeForExtension)(NSString*);
171 #if !PLATFORM(IOS)
172 extern ATSUFontID (*wkGetNSFontATSUFontId)(NSFont*);
173 extern double (*wkGetNSURLResponseCalculatedExpiration)(NSURLResponse *response);
174 #endif
175 extern NSDate *(*wkGetNSURLResponseLastModifiedDate)(NSURLResponse *response);
176 #if !PLATFORM(IOS)
177 extern BOOL (*wkGetNSURLResponseMustRevalidate)(NSURLResponse *response);
178 extern void (*wkGetWheelEventDeltas)(NSEvent*, float* deltaX, float* deltaY, BOOL* continuous);
179 extern UInt8 (*wkGetNSEventKeyChar)(NSEvent *);
180 extern BOOL (*wkHitTestMediaUIPart)(int part, CGRect bounds, CGPoint point);
181 extern void (*wkMeasureMediaUIPart)(int part, CGRect *bounds, CGSize *naturalSize);
182 extern NSView *(*wkCreateMediaUIBackgroundView)(void);
183
184 typedef enum {
185     wkMediaUIControlTimeline,
186     wkMediaUIControlSlider,
187     wkMediaUIControlPlayPauseButton,
188     wkMediaUIControlExitFullscreenButton,
189     wkMediaUIControlRewindButton,
190     wkMediaUIControlFastForwardButton,
191     wkMediaUIControlVolumeUpButton,
192     wkMediaUIControlVolumeDownButton
193 } wkMediaUIControlType;
194 extern NSControl *(*wkCreateMediaUIControl)(int);
195
196 extern void (*wkWindowSetAlpha)(NSWindow *, float);
197 extern void (*wkWindowSetScaledFrame)(NSWindow *, NSRect, NSRect);
198 extern void (*wkPopupMenu)(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
199 extern unsigned (*wkQTIncludeOnlyModernMediaFileTypes)(void);
200 extern int (*wkQTMovieDataRate)(QTMovie*);
201 extern void (*wkQTMovieDisableComponent)(uint32_t[5]);
202 extern float (*wkQTMovieMaxTimeLoaded)(QTMovie*);
203 extern NSString *(*wkQTMovieMaxTimeLoadedChangeNotification)(void);
204 extern float (*wkQTMovieMaxTimeSeekable)(QTMovie*);
205 extern int (*wkQTMovieGetType)(QTMovie*);
206 extern BOOL (*wkQTMovieHasClosedCaptions)(QTMovie*);
207 extern NSURL *(*wkQTMovieResolvedURL)(QTMovie*);
208 extern void (*wkQTMovieSetShowClosedCaptions)(QTMovie*, BOOL);
209 extern void (*wkQTMovieSelectPreferredAlternates)(QTMovie*);
210 extern void (*wkQTMovieViewSetDrawSynchronously)(QTMovieView*, BOOL);
211 extern NSArray *(*wkQTGetSitesInMediaDownloadCache)();
212 extern void (*wkQTClearMediaDownloadCacheForSite)(NSString *site);
213 extern void (*wkQTClearMediaDownloadCache)();
214 extern void (*wkSetCGFontRenderingMode)(CGContextRef, NSFont*, BOOL);
215 extern void (*wkSetCookieStoragePrivateBrowsingEnabled)(BOOL);
216 extern void (*wkSetDragImage)(NSImage*, NSPoint offset);
217 #endif
218 extern void (*wkSetNSURLConnectionDefersCallbacks)(NSURLConnection *, BOOL);
219 extern void (*wkSetNSURLRequestShouldContentSniff)(NSMutableURLRequest *, BOOL);
220 extern void (*wkSetBaseCTM)(CGContextRef, CGAffineTransform);
221 extern void (*wkSetPatternPhaseInUserSpace)(CGContextRef, CGPoint);
222 extern CGAffineTransform (*wkGetUserToBaseCTM)(CGContextRef);
223 extern bool (*wkCGContextIsPDFContext)(CGContextRef);
224 extern void (*wkSetUpFontCache)();
225 extern void (*wkSignalCFReadStreamEnd)(CFReadStreamRef stream);
226 extern void (*wkSignalCFReadStreamError)(CFReadStreamRef stream, CFStreamError *error);
227 extern void (*wkSignalCFReadStreamHasBytes)(CFReadStreamRef stream);
228 extern unsigned (*wkInitializeMaximumHTTPConnectionCountPerHost)(unsigned preferredConnectionCount);
229 extern int (*wkGetHTTPRequestPriority)(CFURLRequestRef);
230 extern void (*wkSetHTTPRequestMaximumPriority)(int maximumPriority);
231 extern void (*wkSetHTTPRequestPriority)(CFURLRequestRef, int priority);
232 extern void (*wkSetHTTPRequestMinimumFastLanePriority)(int priority);
233 extern void (*wkHTTPRequestEnablePipelining)(CFURLRequestRef);
234 extern void (*wkSetCONNECTProxyForStream)(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
235 extern void (*wkSetCONNECTProxyAuthorizationForStream)(CFReadStreamRef, CFStringRef proxyAuthorizationString);
236 extern CFHTTPMessageRef (*wkCopyCONNECTProxyResponse)(CFReadStreamRef, CFURLRef responseURL, CFStringRef proxyHost, CFNumberRef proxyPort);
237
238 extern void (*wkGetGlyphsForCharacters)(CGFontRef, const UniChar[], CGGlyph[], size_t);
239 extern bool (*wkGetVerticalGlyphsForCharacters)(CTFontRef, const UniChar[], CGGlyph[], size_t);
240
241 extern BOOL (*wkUseSharedMediaUI)();
242
243 #if !PLATFORM(IOS)
244 extern void* wkGetHyphenationLocationBeforeIndex;
245 #endif
246
247 extern CTLineRef (*wkCreateCTLineWithUniCharProvider)(const UniChar* (*provide)(CFIndex stringIndex, CFIndex* charCount, CFDictionaryRef* attributes, void*), void (*dispose)(const UniChar* chars, void*), void*);
248
249 #if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
250 enum {
251     wkCTFontTransformApplyShaping = (1 << 0),
252     wkCTFontTransformApplyPositioning = (1 << 1)
253 };
254
255 typedef int wkCTFontTransformOptions;
256
257 extern bool (*wkCTFontTransformGlyphs)(CTFontRef font, CGGlyph glyphs[], CGSize advances[], CFIndex count, wkCTFontTransformOptions options);
258 #endif
259
260 extern CTTypesetterRef (*wkCreateCTTypesetterWithUniCharProviderAndOptions)(const UniChar* (*provide)(CFIndex stringIndex, CFIndex* charCount, CFDictionaryRef* attributes, void*), void (*dispose)(const UniChar* chars, void*), void*, CFDictionaryRef options);
261
262 extern CGSize (*wkCTRunGetInitialAdvance)(CTRunRef);
263
264 #if PLATFORM(MAC) && USE(CA) && !PLATFORM(IOS_SIMULATOR)
265 extern CGContextRef (*wkIOSurfaceContextCreate)(IOSurfaceRef surface, unsigned width, unsigned height, CGColorSpaceRef colorSpace);
266 extern CGImageRef (*wkIOSurfaceContextCreateImage)(CGContextRef context);
267 #endif
268
269 #if !PLATFORM(IOS)
270 extern int (*wkRecommendedScrollerStyle)(void);
271
272 extern bool (*wkExecutableWasLinkedOnOrBeforeSnowLeopard)(void);
273
274 extern CFStringRef (*wkCopyDefaultSearchProviderDisplayName)(void);
275 extern void (*wkSetCrashReportApplicationSpecificInformation)(CFStringRef);
276
277 extern NSURL *(*wkAVAssetResolvedURL)(AVAsset*);
278
279 extern NSCursor *(*wkCursor)(const char*);
280 #endif // !PLATFORM(IOS)
281     
282 #if !PLATFORM(IOS)
283 #if PLATFORM(MAC)
284 extern NSArray *(*wkSpeechSynthesisGetVoiceIdentifiers)(void);
285 extern NSString *(*wkSpeechSynthesisGetDefaultVoiceIdentifierForLocale)(NSLocale *);
286 #endif
287
288 extern void (*wkUnregisterUniqueIdForElement)(id element);
289 extern void (*wkAccessibilityHandleFocusChanged)(void);    
290 extern CFTypeID (*wkGetAXTextMarkerTypeID)(void);
291 extern CFTypeID (*wkGetAXTextMarkerRangeTypeID)(void);
292 extern CFTypeRef (*wkCreateAXTextMarkerRange)(CFTypeRef start, CFTypeRef end);
293 extern CFTypeRef (*wkCopyAXTextMarkerRangeStart)(CFTypeRef range);
294 extern CFTypeRef (*wkCopyAXTextMarkerRangeEnd)(CFTypeRef range);
295 extern CFTypeRef (*wkCreateAXTextMarker)(const void *bytes, size_t len);
296 extern BOOL (*wkGetBytesFromAXTextMarker)(CFTypeRef textMarker, void *bytes, size_t length);
297 extern AXUIElementRef (*wkCreateAXUIElementRef)(id element);
298 #endif // !PLATFORM(IOS)
299
300 #if PLATFORM(IOS)
301 extern CGSize (*wkGetViewportScreenSize)(void);
302 extern void (*wkSetLayerContentsScale)(CALayer *);
303 extern float (*wkGetScreenScaleFactor)(void);
304 #endif
305
306 typedef const struct __CFURLStorageSession* CFURLStorageSessionRef;
307 extern CFURLStorageSessionRef (*wkCreatePrivateStorageSession)(CFStringRef);
308 extern NSURLRequest* (*wkCopyRequestWithStorageSession)(CFURLStorageSessionRef, NSURLRequest*);
309
310 typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef;
311 extern CFHTTPCookieStorageRef (*wkCopyHTTPCookieStorage)(CFURLStorageSessionRef);
312 extern unsigned (*wkGetHTTPCookieAcceptPolicy)(CFHTTPCookieStorageRef);
313 extern void (*wkSetHTTPCookieAcceptPolicy)(CFHTTPCookieStorageRef, unsigned);
314 extern NSArray *(*wkHTTPCookies)(CFHTTPCookieStorageRef);
315 extern NSArray *(*wkHTTPCookiesForURL)(CFHTTPCookieStorageRef, NSURL *);
316 extern void (*wkSetHTTPCookiesForURL)(CFHTTPCookieStorageRef, NSArray *, NSURL *, NSURL *);
317 extern void (*wkDeleteHTTPCookie)(CFHTTPCookieStorageRef, NSHTTPCookie *);
318 extern void (*wkDeleteAllHTTPCookies)(CFHTTPCookieStorageRef);
319
320 extern CFStringRef (*wkGetCFURLResponseMIMEType)(CFURLResponseRef);
321 extern CFURLRef (*wkGetCFURLResponseURL)(CFURLResponseRef);
322 extern CFHTTPMessageRef (*wkGetCFURLResponseHTTPResponse)(CFURLResponseRef);
323 extern CFStringRef (*wkCopyCFURLResponseSuggestedFilename)(CFURLResponseRef);
324 extern void (*wkSetCFURLResponseMIMEType)(CFURLResponseRef, CFStringRef mimeType);
325
326 extern void(*wkDestroyRenderingResources)(void);
327
328 #if USE(CFNETWORK)
329 extern CFHTTPCookieStorageRef (*wkGetDefaultHTTPCookieStorage)();
330 extern WKCFURLCredentialRef (*wkCopyCredentialFromCFPersistentStorage)(CFURLProtectionSpaceRef protectionSpace);
331 extern void (*wkSetCFURLRequestShouldContentSniff)(CFMutableURLRequestRef, bool);
332 extern CFArrayRef (*wkCFURLRequestCopyHTTPRequestBodyParts)(CFURLRequestRef);
333 extern void (*wkCFURLRequestSetHTTPRequestBodyParts)(CFMutableURLRequestRef, CFArrayRef bodyParts);
334 extern void (*wkSetRequestStorageSession)(CFURLStorageSessionRef, CFMutableURLRequestRef);
335 #endif
336 #if !PLATFORM(IOS)
337 extern void (*wkSetMetadataURL)(NSString *urlString, NSString *referrer, NSString *path);
338 #endif
339
340 #if !PLATFORM(IOS)
341 #import <dispatch/dispatch.h>
342
343 extern dispatch_source_t (*wkCreateVMPressureDispatchOnMainQueue)(void);
344 #endif
345
346 #if !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
347 extern dispatch_source_t (*wkCreateMemoryStatusPressureCriticalDispatchOnMainQueue)(void);
348 #endif
349     
350 #if !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
351 extern bool (*wkExecutableWasLinkedOnOrBeforeLion)(void);
352 #endif
353
354 extern void (*wkCGPathAddRoundedRect)(CGMutablePathRef path, const CGAffineTransform* matrix, CGRect rect, CGFloat cornerWidth, CGFloat cornerHeight);
355
356 extern void (*wkCFURLRequestAllowAllPostCaching)(CFURLRequestRef);
357
358 #if !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
359 extern CGFloat (*wkNSElasticDeltaForTimeDelta)(CGFloat initialPosition, CGFloat initialVelocity, CGFloat elapsedTime);
360 extern CGFloat (*wkNSElasticDeltaForReboundDelta)(CGFloat delta);
361 extern CGFloat (*wkNSReboundDeltaForElasticDelta)(CGFloat delta);
362 #endif
363
364 #if ENABLE(PUBLIC_SUFFIX_LIST)
365 extern bool (*wkIsPublicSuffix)(NSString *host);
366 #endif
367
368 #if ENABLE(CACHE_PARTITIONING)
369 extern CFStringRef (*wkCachePartitionKey)(void);
370 #endif
371 }
372
373 #endif