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