WebKit2: Use CFNetwork Sessions API.
[WebKit-https.git] / WebKitLibraries / win / include / WebKitSystemInterface / WebKitSystemInterface.h
1 /*
2  * Copyright (C) 2007, 2008, 2009 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 WebKitSystemInterface_h
27 #define WebKitSystemInterface_h
28
29 struct CGAffineTransform;
30 struct CGPoint;
31 struct CGRect;
32 struct CGSize;
33 struct IDirect3DDevice9;
34 struct WKCACFContext;
35 struct WKCACFUpdateRectEnumerator;
36
37 typedef struct _CACFLayer* CACFLayerRef;
38 typedef const struct __CFArray* CFArrayRef;
39 typedef const struct __CFData* CFDataRef;
40 typedef const struct __CFString* CFStringRef;
41 typedef double CFTimeInterval;
42 typedef struct CGColor* CGColorRef;
43 typedef struct CGContext* CGContextRef;
44 typedef unsigned short CGFontIndex;
45 typedef struct CGFont* CGFontRef;
46 typedef CGFontIndex CGGlyph;
47 typedef wchar_t UChar;
48 typedef struct _CFURLResponse* CFURLResponseRef;
49 typedef struct OpaqueCFHTTPCookieStorage*  CFHTTPCookieStorageRef;
50 typedef struct __CFDictionary* CFMutableDictionaryRef;
51 typedef struct _CFURLRequest* CFMutableURLRequestRef;
52 typedef const struct _CFURLRequest* CFURLRequestRef;
53 typedef struct __CFHTTPMessage* CFHTTPMessageRef;
54 typedef const struct __CFNumber* CFNumberRef;
55 typedef struct __CFReadStream* CFReadStreamRef;
56 typedef const struct __CFURL* CFURLRef;
57 typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef;
58 typedef struct tagLOGFONTW LOGFONTW;
59 typedef LOGFONTW LOGFONT;
60 typedef struct _CACFLayer *CACFLayerRef;
61 typedef struct __CVBuffer *CVBufferRef;
62 typedef CVBufferRef CVImageBufferRef;
63 typedef CVImageBufferRef CVPixelBufferRef;
64 typedef struct _CAImageQueue *CAImageQueueRef;
65 typedef unsigned long CFTypeID;
66 typedef struct _CFURLCredential* WKCFURLCredentialRef;
67 typedef const struct __CFURLStorageSession* CFURLStorageSessionRef;
68 typedef const struct _CFURLCache* CFURLCacheRef;
69
70 void wkSetFontSmoothingLevel(int type);
71 int wkGetFontSmoothingLevel();
72 void wkSetFontSmoothingContrast(CGFloat);
73 CGFloat wkGetFontSmoothingContrast();
74 void wkSystemFontSmoothingChanged();
75 uint32_t wkSetFontSmoothingStyle(CGContextRef cg, bool fontAllowsSmoothing);
76 void wkRestoreFontSmoothingStyle(CGContextRef cg, uint32_t oldStyle);
77 void wkSetCGContextFontRenderingStyle(CGContextRef, bool isSystemFont, bool isPrinterFont, bool usePlatformNativeGlyphs);
78 void wkGetGlyphAdvances(CGFontRef, const CGAffineTransform&, bool isSystemFont, bool isPrinterFont, CGGlyph, CGSize& advance);
79 void wkGetGlyphs(CGFontRef, const UChar[], CGGlyph[], size_t count);
80 void wkSetUpFontCache(size_t s);
81
82 void wkSetPatternBaseCTM(CGContextRef, CGAffineTransform);
83 void wkSetPatternPhaseInUserSpace(CGContextRef, CGPoint phasePoint);
84 CGAffineTransform wkGetUserToBaseCTM(CGContextRef);
85
86 void wkDrawFocusRing(CGContextRef, CGColorRef, float radius);
87
88 CFDictionaryRef wkGetSSLCertificateInfo(CFURLResponseRef);
89 void* wkGetSSLPeerCertificateData(CFDictionaryRef);
90 void* wkGetSSLCertificateChainContext(CFDictionaryRef);
91 CFHTTPCookieStorageRef wkGetDefaultHTTPCookieStorage();
92 CFHTTPCookieStorageRef wkCreatePrivateInMemoryHTTPCookieStorage(CFURLStorageSessionRef);
93 void wkSetCFURLRequestShouldContentSniff(CFMutableURLRequestRef, bool);
94 CFStringRef wkCopyFoundationCacheDirectory();
95 void wkSetClientCertificateInSSLProperties(CFMutableDictionaryRef, CFDataRef);
96
97 CFArrayRef wkCFURLRequestCopyHTTPRequestBodyParts(CFURLRequestRef);
98 void wkCFURLRequestSetHTTPRequestBodyParts(CFMutableURLRequestRef, CFArrayRef bodyParts);
99
100 CFURLStorageSessionRef wkCreatePrivateStorageSession(CFStringRef identifier);
101 void wkSetRequestStorageSession(CFURLStorageSessionRef, CFMutableURLRequestRef);
102 CFURLCacheRef wkCopyURLCache(CFURLStorageSessionRef);
103
104 CFArrayRef wkCFURLCacheCopyAllHostNamesInPersistentStore();
105 void wkCFURLCacheDeleteHostNamesInPersistentStore(CFArrayRef hostNames);
106
107 unsigned wkInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount);
108
109 void wkSetCONNECTProxyForStream(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
110 void wkSetCONNECTProxyAuthorizationForStream(CFReadStreamRef, CFStringRef proxyAuthorizationString);
111 CFHTTPMessageRef wkCopyCONNECTProxyResponse(CFReadStreamRef, CFURLRef responseURL);
112
113 WKCFURLCredentialRef wkCopyCredentialFromCFPersistentStorage(CFURLProtectionSpaceRef protectionSpace);
114
115 CFStringRef wkCFNetworkErrorGetLocalizedDescription(CFIndex errorCode);
116
117
118 enum wkCAImageQueueFlags {
119     kWKCAImageQueueAsync = 1U << 0,
120     kWKCAImageQueueFill = 1U << 1,
121     kWKCAImageQueueProtected = 1U << 2,
122     kWKCAImageQueueUseCleanAperture = 1U << 3,
123     kWKCAImageQueueUseAspectRatio = 1U << 4,
124     kWKCAImageQueueLowQualityColor = 1U << 5,
125 };
126
127 enum wkWKCAImageQueueImageType {
128     kWKCAImageQueueNil = 1,
129     kWKCAImageQueueSurface,
130     kWKCAImageQueueBuffer,
131     kWKCAImageQueueIOSurface,
132 };
133
134 enum wkWKCAImageQueueImageFlags {
135     kWKCAImageQueueOpaque = 1U << 0,
136     kWKCAImageQueueFlush = 1U << 1,
137     kWKCAImageQueueWillFlush = 1U << 2,
138     kWKCAImageQueueFlipped = 1U << 3,
139     kWKCAImageQueueWaitGPU = 1U << 4,
140 };
141
142 typedef void (*wkCAImageQueueReleaseCallback)(unsigned int type, uint64_t id, void *info);
143 CAImageQueueRef wkCAImageQueueCreate(uint32_t width, uint32_t height, uint32_t capacity);
144 void wkCAImageQueueInvalidate(CAImageQueueRef iq);
145 size_t wkCAImageQueueCollect(CAImageQueueRef iq);
146 bool wkCAImageQueueInsertImage(CAImageQueueRef iq, CFTimeInterval t, unsigned int type, uint64_t id, uint32_t flags, wkCAImageQueueReleaseCallback release, void *info);
147 uint64_t wkCAImageQueueRegisterPixelBuffer(CAImageQueueRef iq, void *data, size_t data_size, size_t rowbytes, size_t width, size_t height, OSType pixel_format, CFDictionaryRef attachments, uint32_t flags);
148 void wkCAImageQueueSetFlags(CAImageQueueRef iq, uint32_t mask, uint32_t flags);
149 uint32_t wkCAImageQueueGetFlags(CAImageQueueRef iq);
150 CFTypeID wkCAImageQueueGetTypeID(void);
151
152 WKCACFContext* wkCACFContextCreate();
153 void wkCACFContextDestroy(WKCACFContext*);
154
155 void wkCACFContextSetLayer(WKCACFContext*, CACFLayerRef);
156 void wkCACFContextFlush(WKCACFContext*);
157
158 CFTimeInterval wkCACFContextGetLastCommitTime(WKCACFContext*);
159 CFTimeInterval wkCACFContextGetNextUpdateTime(WKCACFContext*);
160
161 void* wkCACFContextGetUserData(WKCACFContext*);
162 void wkCACFContextSetUserData(WKCACFContext*, void*);
163
164 void* wkCACFLayerGetContextUserData(CACFLayerRef);
165
166 void wkCACFContextSetD3DDevice(WKCACFContext*, IDirect3DDevice9*);
167 void wkCACFContextReleaseD3DResources(WKCACFContext*);
168
169 bool wkCACFContextBeginUpdate(WKCACFContext*, void* buffer, size_t bufferSize, CFTimeInterval time, const CGRect& bounds, const CGRect dirtyRects[], size_t dirtyRectCount);
170 void wkCACFContextRenderUpdate(WKCACFContext*);
171 void wkCACFContextFinishUpdate(WKCACFContext*);
172 void wkCACFContextAddUpdateRect(WKCACFContext*, const CGRect&);
173
174 WKCACFUpdateRectEnumerator* wkCACFContextCopyUpdateRectEnumerator(WKCACFContext*);
175 const CGRect* wkCACFUpdateRectEnumeratorNextRect(WKCACFUpdateRectEnumerator*);
176 void wkCACFUpdateRectEnumeratorRelease(WKCACFUpdateRectEnumerator*);
177
178 CFDictionaryRef wkCFURLRequestCreateSerializableRepresentation(CFURLRequestRef cfRequest, CFTypeRef tokenNull);
179 CFURLRequestRef wkCFURLRequestCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
180 CFDictionaryRef wkCFURLResponseCreateSerializableRepresentation(CFURLResponseRef cfResponse, CFTypeRef tokenNull);
181 CFURLResponseRef wkCFURLResponseCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
182
183 typedef void (*wkQuickTimeMIMETypeCallBack)(const char* mimeType);
184 void wkGetQuickTimeMIMETypeList(wkQuickTimeMIMETypeCallBack);
185
186 typedef enum {
187     WKMediaUIPartFullscreenButton   = 0,
188     WKMediaUIPartMuteButton,
189     WKMediaUIPartPlayButton,
190     WKMediaUIPartSeekBackButton,
191     WKMediaUIPartSeekForwardButton,
192     WKMediaUIPartTimelineSlider,
193     WKMediaUIPartTimelineSliderThumb,
194     WKMediaUIPartRewindButton,
195     WKMediaUIPartSeekToRealtimeButton,
196     WKMediaUIPartShowClosedCaptionsButton,
197     WKMediaUIPartHideClosedCaptionsButton,
198     WKMediaUIPartUnMuteButton,
199     WKMediaUIPartPauseButton,
200     WKMediaUIPartBackground,
201     WKMediaUIPartCurrentTimeDisplay,
202     WKMediaUIPartTimeRemainingDisplay,
203     WKMediaUIPartStatusDisplay,
204     WKMediaUIPartControlsPanel,
205     WKMediaUIPartVolumeSliderContainer,
206     WKMediaUIPartVolumeSlider,
207     WKMediaUIPartVolumeSliderThumb
208 } WKMediaUIPart;
209
210 typedef enum {
211     WKMediaControllerThemeClassic   = 1,
212     WKMediaControllerThemeQuickTime = 2
213 } WKMediaControllerThemeStyle;
214
215 typedef enum {
216     WKMediaControllerFlagDisabled = 1 << 0,
217     WKMediaControllerFlagPressed = 1 << 1,
218     WKMediaControllerFlagDrawEndCaps = 1 << 3,
219     WKMediaControllerFlagFocused = 1 << 4
220 } WKMediaControllerThemeState;
221
222 #ifdef __cplusplus
223 extern "C" {
224 #endif
225
226 bool WKMediaControllerThemeAvailable(int themeStyle);
227 bool WKHitTestMediaUIPart(int part, int themeStyle, CGRect bounds, CGPoint point);
228 void WKMeasureMediaUIPart(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
229 void WKDrawMediaUIPart(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state);
230 void WKDrawMediaSliderTrack(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, float duration, unsigned state);
231
232 #ifdef __cplusplus
233 }
234 #endif
235
236 #endif // WebKitSystemInterface_h