Add support for Device Orientation / Motion permission API
[WebKit-https.git] / Source / WebKit / UIProcess / API / C / WKPageUIClient.h
1 /*
2  * Copyright (C) 2013-2018 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 INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #include <WebKit/WKBase.h>
29 #include <WebKit/WKEvent.h>
30 #include <WebKit/WKGeometry.h>
31 #include <WebKit/WKNativeEvent.h>
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 enum {
38     kWKFocusDirectionBackward = 0,
39     kWKFocusDirectionForward = 1
40 };
41 typedef uint32_t WKFocusDirection;
42
43 enum {
44     kWKPluginUnavailabilityReasonPluginMissing,
45     kWKPluginUnavailabilityReasonPluginCrashed,
46     kWKPluginUnavailabilityReasonInsecurePluginVersion
47 };
48 typedef uint32_t WKPluginUnavailabilityReason;
49
50 enum {
51     kWKAutoplayEventDidPreventFromAutoplaying,
52     kWKAutoplayEventDidPlayMediaWithUserGesture,
53     kWKAutoplayEventDidAutoplayMediaPastThresholdWithoutUserInterference,
54     kWKAutoplayEventUserDidInterfereWithPlayback,
55 };
56 typedef uint32_t WKAutoplayEvent;
57
58 enum {
59     kWKAutoplayEventFlagsNone = 0,
60     kWKAutoplayEventFlagsHasAudio = 1 << 0,
61     kWKAutoplayEventFlagsPlaybackWasPrevented = 1 << 1,
62     kWKAutoplayEventFlagsMediaIsMainContent = 1 << 2,
63 };
64 typedef uint32_t WKAutoplayEventFlags;
65
66 enum {
67     kWKResourceLimitMemory,
68     kWKResourceLimitCPU,
69 };
70 typedef uint32_t WKResourceLimit;
71
72 WK_EXPORT WKTypeID WKPageRunBeforeUnloadConfirmPanelResultListenerGetTypeID();
73 WK_EXPORT void WKPageRunBeforeUnloadConfirmPanelResultListenerCall(WKPageRunBeforeUnloadConfirmPanelResultListenerRef listener, bool result);
74
75 WK_EXPORT WKTypeID WKPageRunJavaScriptAlertResultListenerGetTypeID();
76 WK_EXPORT void WKPageRunJavaScriptAlertResultListenerCall(WKPageRunJavaScriptAlertResultListenerRef listener);
77
78 WK_EXPORT WKTypeID WKPageRunJavaScriptConfirmResultListenerGetTypeID();
79 WK_EXPORT void WKPageRunJavaScriptConfirmResultListenerCall(WKPageRunJavaScriptConfirmResultListenerRef listener, bool result);
80
81 WK_EXPORT WKTypeID WKPageRunJavaScriptPromptResultListenerGetTypeID();
82 WK_EXPORT void WKPageRunJavaScriptPromptResultListenerCall(WKPageRunJavaScriptPromptResultListenerRef listener, WKStringRef result);
83
84 WK_EXPORT WKTypeID WKPageRequestStorageAccessConfirmResultListenerGetTypeID();
85 WK_EXPORT void WKPageRequestStorageAccessConfirmResultListenerCall(WKPageRequestStorageAccessConfirmResultListenerRef listener, bool result);
86     
87 typedef void (*WKPageUIClientCallback)(WKPageRef page, const void* clientInfo);
88 typedef WKPageRef (*WKPageCreateNewPageCallback)(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo);
89 typedef void (*WKPageRunBeforeUnloadConfirmPanelCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKPageRunBeforeUnloadConfirmPanelResultListenerRef listener, const void *clientInfo);
90 typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo);
91 typedef void (*WKPageRunJavaScriptConfirmCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo);
92 typedef void (*WKPageRunJavaScriptPromptCallback)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo);
93 typedef void (*WKPageRequestStorageAccessConfirmCallback)(WKPageRef page, WKFrameRef frame, WKStringRef requestingDomain, WKStringRef currentDomain, WKPageRequestStorageAccessConfirmResultListenerRef listener, const void *clientInfo);
94 typedef void (*WKPageTakeFocusCallback)(WKPageRef page, WKFocusDirection direction, const void *clientInfo);
95 typedef void (*WKPageFocusCallback)(WKPageRef page, const void *clientInfo);
96 typedef void (*WKPageUnfocusCallback)(WKPageRef page, const void *clientInfo);
97 typedef void (*WKPageSetStatusTextCallback)(WKPageRef page, WKStringRef text, const void *clientInfo);
98 typedef void (*WKPageMouseDidMoveOverElementCallback)(WKPageRef page, WKHitTestResultRef hitTestResult, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
99 typedef void (*WKPageDidNotHandleKeyEventCallback)(WKPageRef page, WKNativeEventPtr event, const void *clientInfo);
100 typedef void (*WKPageDidNotHandleWheelEventCallback)(WKPageRef page, WKNativeEventPtr event, const void *clientInfo);
101 typedef bool (*WKPageGetToolbarsAreVisibleCallback)(WKPageRef page, const void *clientInfo);
102 typedef void (*WKPageSetToolbarsAreVisibleCallback)(WKPageRef page, bool toolbarsVisible, const void *clientInfo);
103 typedef bool (*WKPageGetMenuBarIsVisibleCallback)(WKPageRef page, const void *clientInfo);
104 typedef void (*WKPageSetMenuBarIsVisibleCallback)(WKPageRef page, bool menuBarVisible, const void *clientInfo);
105 typedef bool (*WKPageGetStatusBarIsVisibleCallback)(WKPageRef page, const void *clientInfo);
106 typedef void (*WKPageSetStatusBarIsVisibleCallback)(WKPageRef page, bool statusBarVisible, const void *clientInfo);
107 typedef bool (*WKPageGetIsResizableCallback)(WKPageRef page, const void *clientInfo);
108 typedef void (*WKPageSetIsResizableCallback)(WKPageRef page, bool resizable, const void *clientInfo);
109 typedef WKRect (*WKPageGetWindowFrameCallback)(WKPageRef page, const void *clientInfo);
110 typedef void (*WKPageSetWindowFrameCallback)(WKPageRef page, WKRect frame, const void *clientInfo);
111 typedef unsigned long long (*WKPageExceededDatabaseQuotaCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKStringRef databaseName, WKStringRef displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage, const void *clientInfo);
112 typedef void (*WKPageRunOpenPanelCallback)(WKPageRef page, WKFrameRef frame, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener, const void *clientInfo);
113 typedef void (*WKPageDecidePolicyForGeolocationPermissionRequestCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKGeolocationPermissionRequestRef permissionRequest, const void* clientInfo);
114 typedef float (*WKPageHeaderHeightCallback)(WKPageRef page, WKFrameRef frame, const void* clientInfo);
115 typedef float (*WKPageFooterHeightCallback)(WKPageRef page, WKFrameRef frame, const void* clientInfo);
116 typedef void (*WKPageDrawHeaderCallback)(WKPageRef page, WKFrameRef frame, WKRect rect, const void* clientInfo);
117 typedef void (*WKPageDrawFooterCallback)(WKPageRef page, WKFrameRef frame, WKRect rect, const void* clientInfo);
118 typedef void (*WKPagePrintFrameCallback)(WKPageRef page, WKFrameRef frame, const void* clientInfo);
119 typedef void (*WKPageSaveDataToFileInDownloadsFolderCallback)(WKPageRef page, WKStringRef suggestedFilename, WKStringRef mimeType, WKURLRef originatingURL, WKDataRef data, const void* clientInfo);
120 typedef void (*WKPageDecidePolicyForNotificationPermissionRequestCallback)(WKPageRef page, WKSecurityOriginRef origin, WKNotificationPermissionRequestRef permissionRequest, const void *clientInfo);
121 typedef void (*WKPageShowColorPickerCallback)(WKPageRef page, WKStringRef initialColor, WKColorPickerResultListenerRef listener, const void* clientInfo);
122 typedef void (*WKPageHideColorPickerCallback)(WKPageRef page, const void* clientInfo);
123 typedef void (*WKPageUnavailablePluginButtonClickedCallback)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKDictionaryRef pluginInfoDictionary, const void* clientInfo);
124 typedef void (*WKPagePinnedStateDidChangeCallback)(WKPageRef page, const void* clientInfo);
125 typedef void (*WKPageIsPlayingAudioDidChangeCallback)(WKPageRef page, const void* clientInfo);
126 typedef void (*WKPageDecidePolicyForUserMediaPermissionRequestCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef userMediaDocumentOrigin, WKSecurityOriginRef topLevelDocumentOrigin, WKUserMediaPermissionRequestRef permissionRequest, const void* clientInfo);
127 typedef void (*WKCheckUserMediaPermissionCallback)(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef userMediaDocumentOrigin, WKSecurityOriginRef topLevelDocumentOrigin, WKUserMediaPermissionCheckRef devicesRequest, const void *clientInfo);
128 typedef void (*WKPageDidClickAutoFillButtonCallback)(WKPageRef page, WKTypeRef userData, const void *clientInfo);
129 typedef void (*WKPageMediaSessionMetadataDidChangeCallback)(WKPageRef page, WKMediaSessionMetadataRef metadata, const void* clientInfo);
130 typedef void (*WKHandleAutoplayEventCallback)(WKPageRef page, WKAutoplayEvent event, WKAutoplayEventFlags flags, const void* clientInfo);
131 typedef void (*WKFullscreenMayReturnToInlineCallback)(WKPageRef page, const void* clientInfo);
132 typedef void (*WKRequestPointerLockCallback)(WKPageRef page, const void* clientInfo);
133 typedef void (*WKDidLosePointerLockCallback)(WKPageRef page, const void* clientInfo);
134 typedef void (*WKHasVideoInPictureInPictureDidChangeCallback)(WKPageRef page, bool hasVideoInPictureInPicture, const void* clientInfo);
135 typedef void (*WKDidExceedBackgroundResourceLimitWhileInForegroundCallback)(WKPageRef page, WKResourceLimit limit, const void* clientInfo);
136 typedef void (*WKPageDidResignInputElementStrongPasswordAppearanceCallback)(WKPageRef page, WKTypeRef userData, const void *clientInfo);
137 typedef bool (*WKPageShouldAllowDeviceOrientationAndMotionAccessCallback)(WKPageRef page, WKSecurityOriginRef securityOrigin, const void *clientInfo);
138
139 // Deprecated
140 typedef WKPageRef (*WKPageCreateNewPageCallback_deprecatedForUseWithV0)(WKPageRef page, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo);
141 typedef void      (*WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0)(WKPageRef page, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo);
142 typedef void (*WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
143 typedef void (*WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1)(WKPageRef page, WKPluginUnavailabilityReason pluginUnavailabilityReason, WKStringRef mimeType, WKStringRef url, WKStringRef pluginsPageURL, const void* clientInfo);
144 typedef void (*WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void *clientInfo);
145 typedef bool (*WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef message, WKFrameRef frame, const void *clientInfo);
146 typedef WKStringRef (*WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, const void *clientInfo);
147 typedef WKPageRef (*WKPageCreateNewPageCallback_deprecatedForUseWithV1)(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo);
148 typedef void (*WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);
149 typedef bool (*WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);
150 typedef WKStringRef (*WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);
151 typedef bool (*WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6)(WKPageRef page, WKStringRef message, WKFrameRef frame, const void *clientInfo);
152
153 typedef struct WKPageUIClientBase {
154     int                                                                 version;
155     const void *                                                        clientInfo;
156 } WKPageUIClientBase;
157
158 typedef struct WKPageUIClientV0 {
159     WKPageUIClientBase                                                  base;
160
161     // Version 0.
162     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
163     WKPageUIClientCallback                                              showPage;
164     WKPageUIClientCallback                                              close;
165     WKPageTakeFocusCallback                                             takeFocus;
166     WKPageFocusCallback                                                 focus;
167     WKPageUnfocusCallback                                               unfocus;
168     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert;
169     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm;
170     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt;
171     WKPageSetStatusTextCallback                                         setStatusText;
172     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
173     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
174     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
175     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
176     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
177     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
178     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
179     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
180     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
181     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
182     WKPageGetIsResizableCallback                                        isResizable;
183     WKPageSetIsResizableCallback                                        setIsResizable;
184     WKPageGetWindowFrameCallback                                        getWindowFrame;
185     WKPageSetWindowFrameCallback                                        setWindowFrame;
186     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
187     WKPageUIClientCallback                                              didDraw;
188     WKPageUIClientCallback                                              pageDidScroll;
189     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
190     WKPageRunOpenPanelCallback                                          runOpenPanel;
191     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
192     WKPageHeaderHeightCallback                                          headerHeight;
193     WKPageFooterHeightCallback                                          footerHeight;
194     WKPageDrawHeaderCallback                                            drawHeader;
195     WKPageDrawFooterCallback                                            drawFooter;
196     WKPagePrintFrameCallback                                            printFrame;
197     WKPageUIClientCallback                                              runModal;
198     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
199     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
200     void*                                                               shouldInterruptJavaScript_unavailable;
201 } WKPageUIClientV0;
202
203 typedef struct WKPageUIClientV1 {
204     WKPageUIClientBase                                                  base;
205
206     // Version 0.
207     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
208     WKPageUIClientCallback                                              showPage;
209     WKPageUIClientCallback                                              close;
210     WKPageTakeFocusCallback                                             takeFocus;
211     WKPageFocusCallback                                                 focus;
212     WKPageUnfocusCallback                                               unfocus;
213     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert;
214     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm;
215     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt;
216     WKPageSetStatusTextCallback                                         setStatusText;
217     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
218     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
219     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
220     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
221     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
222     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
223     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
224     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
225     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
226     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
227     WKPageGetIsResizableCallback                                        isResizable;
228     WKPageSetIsResizableCallback                                        setIsResizable;
229     WKPageGetWindowFrameCallback                                        getWindowFrame;
230     WKPageSetWindowFrameCallback                                        setWindowFrame;
231     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
232     WKPageUIClientCallback                                              didDraw;
233     WKPageUIClientCallback                                              pageDidScroll;
234     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
235     WKPageRunOpenPanelCallback                                          runOpenPanel;
236     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
237     WKPageHeaderHeightCallback                                          headerHeight;
238     WKPageFooterHeightCallback                                          footerHeight;
239     WKPageDrawHeaderCallback                                            drawHeader;
240     WKPageDrawFooterCallback                                            drawFooter;
241     WKPagePrintFrameCallback                                            printFrame;
242     WKPageUIClientCallback                                              runModal;
243     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
244     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
245     void*                                                               shouldInterruptJavaScript_unavailable;
246
247     // Version 1.
248     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage;
249     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
250     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
251     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
252 } WKPageUIClientV1;
253
254 typedef struct WKPageUIClientV2 {
255     WKPageUIClientBase                                                  base;
256
257     // Version 0.
258     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
259     WKPageUIClientCallback                                              showPage;
260     WKPageUIClientCallback                                              close;
261     WKPageTakeFocusCallback                                             takeFocus;
262     WKPageFocusCallback                                                 focus;
263     WKPageUnfocusCallback                                               unfocus;
264     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert;
265     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm;
266     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt;
267     WKPageSetStatusTextCallback                                         setStatusText;
268     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
269     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
270     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
271     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
272     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
273     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
274     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
275     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
276     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
277     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
278     WKPageGetIsResizableCallback                                        isResizable;
279     WKPageSetIsResizableCallback                                        setIsResizable;
280     WKPageGetWindowFrameCallback                                        getWindowFrame;
281     WKPageSetWindowFrameCallback                                        setWindowFrame;
282     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
283     WKPageUIClientCallback                                              didDraw;
284     WKPageUIClientCallback                                              pageDidScroll;
285     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
286     WKPageRunOpenPanelCallback                                          runOpenPanel;
287     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
288     WKPageHeaderHeightCallback                                          headerHeight;
289     WKPageFooterHeightCallback                                          footerHeight;
290     WKPageDrawHeaderCallback                                            drawHeader;
291     WKPageDrawFooterCallback                                            drawFooter;
292     WKPagePrintFrameCallback                                            printFrame;
293     WKPageUIClientCallback                                              runModal;
294     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
295     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
296     void*                                                               shouldInterruptJavaScript_unavailable;
297
298     // Version 1.
299     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage;
300     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
301     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
302     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
303
304     // Version 2.
305     WKPageShowColorPickerCallback                                       showColorPicker;
306     WKPageHideColorPickerCallback                                       hideColorPicker;
307     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
308 } WKPageUIClientV2;
309
310 typedef struct WKPageUIClientV3 {
311     WKPageUIClientBase                                                  base;
312
313     // Version 0.
314     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
315     WKPageUIClientCallback                                              showPage;
316     WKPageUIClientCallback                                              close;
317     WKPageTakeFocusCallback                                             takeFocus;
318     WKPageFocusCallback                                                 focus;
319     WKPageUnfocusCallback                                               unfocus;
320     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert;
321     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm;
322     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt;
323     WKPageSetStatusTextCallback                                         setStatusText;
324     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
325     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
326     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
327     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
328     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
329     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
330     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
331     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
332     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
333     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
334     WKPageGetIsResizableCallback                                        isResizable;
335     WKPageSetIsResizableCallback                                        setIsResizable;
336     WKPageGetWindowFrameCallback                                        getWindowFrame;
337     WKPageSetWindowFrameCallback                                        setWindowFrame;
338     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
339     WKPageUIClientCallback                                              didDraw;
340     WKPageUIClientCallback                                              pageDidScroll;
341     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
342     WKPageRunOpenPanelCallback                                          runOpenPanel;
343     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
344     WKPageHeaderHeightCallback                                          headerHeight;
345     WKPageFooterHeightCallback                                          footerHeight;
346     WKPageDrawHeaderCallback                                            drawHeader;
347     WKPageDrawFooterCallback                                            drawFooter;
348     WKPagePrintFrameCallback                                            printFrame;
349     WKPageUIClientCallback                                              runModal;
350     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
351     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
352     void*                                                               shouldInterruptJavaScript_unavailable;
353
354     // Version 1.
355     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage;
356     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
357     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
358     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
359
360     // Version 2.
361     WKPageShowColorPickerCallback                                       showColorPicker;
362     WKPageHideColorPickerCallback                                       hideColorPicker;
363     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
364
365     // Version 3.
366     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
367 } WKPageUIClientV3;
368
369 typedef struct WKPageUIClientV4 {
370     WKPageUIClientBase                                                  base;
371
372     // Version 0.
373     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
374     WKPageUIClientCallback                                              showPage;
375     WKPageUIClientCallback                                              close;
376     WKPageTakeFocusCallback                                             takeFocus;
377     WKPageFocusCallback                                                 focus;
378     WKPageUnfocusCallback                                               unfocus;
379     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert;
380     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm;
381     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt;
382     WKPageSetStatusTextCallback                                         setStatusText;
383     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
384     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
385     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
386     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
387     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
388     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
389     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
390     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
391     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
392     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
393     WKPageGetIsResizableCallback                                        isResizable;
394     WKPageSetIsResizableCallback                                        setIsResizable;
395     WKPageGetWindowFrameCallback                                        getWindowFrame;
396     WKPageSetWindowFrameCallback                                        setWindowFrame;
397     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
398     WKPageUIClientCallback                                              didDraw;
399     WKPageUIClientCallback                                              pageDidScroll;
400     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
401     WKPageRunOpenPanelCallback                                          runOpenPanel;
402     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
403     WKPageHeaderHeightCallback                                          headerHeight;
404     WKPageFooterHeightCallback                                          footerHeight;
405     WKPageDrawHeaderCallback                                            drawHeader;
406     WKPageDrawFooterCallback                                            drawFooter;
407     WKPagePrintFrameCallback                                            printFrame;
408     WKPageUIClientCallback                                              runModal;
409     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame.
410     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
411     void*                                                               shouldInterruptJavaScript_unavailable;
412
413     // Version 1.
414     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage;
415     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
416     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
417     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
418
419     // Version 2.
420     WKPageShowColorPickerCallback                                       showColorPicker;
421     WKPageHideColorPickerCallback                                       hideColorPicker;
422     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
423     
424     // Version 3.
425     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
426
427     // Version 4.
428     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
429     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
430     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
431     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
432 } WKPageUIClientV4;
433
434 typedef struct WKPageUIClientV5 {
435     WKPageUIClientBase                                                  base;
436
437     // Version 0.
438     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
439     WKPageUIClientCallback                                              showPage;
440     WKPageUIClientCallback                                              close;
441     WKPageTakeFocusCallback                                             takeFocus;
442     WKPageFocusCallback                                                 focus;
443     WKPageUnfocusCallback                                               unfocus;
444     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
445     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
446     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
447     WKPageSetStatusTextCallback                                         setStatusText;
448     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
449     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
450     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
451     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
452     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
453     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
454     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
455     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
456     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
457     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
458     WKPageGetIsResizableCallback                                        isResizable;
459     WKPageSetIsResizableCallback                                        setIsResizable;
460     WKPageGetWindowFrameCallback                                        getWindowFrame;
461     WKPageSetWindowFrameCallback                                        setWindowFrame;
462     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
463     WKPageUIClientCallback                                              didDraw;
464     WKPageUIClientCallback                                              pageDidScroll;
465     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
466     WKPageRunOpenPanelCallback                                          runOpenPanel;
467     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
468     WKPageHeaderHeightCallback                                          headerHeight;
469     WKPageFooterHeightCallback                                          footerHeight;
470     WKPageDrawHeaderCallback                                            drawHeader;
471     WKPageDrawFooterCallback                                            drawFooter;
472     WKPagePrintFrameCallback                                            printFrame;
473     WKPageUIClientCallback                                              runModal;
474     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
475     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
476     void*                                                               shouldInterruptJavaScript_unavailable;
477
478     // Version 1.
479     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage;
480     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
481     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
482     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
483
484     // Version 2.
485     WKPageShowColorPickerCallback                                       showColorPicker;
486     WKPageHideColorPickerCallback                                       hideColorPicker;
487     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
488     
489     // Version 3.
490     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
491
492     // Version 4.
493     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
494     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
495     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
496     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
497
498     // Version 5.
499     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
500     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
501     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert;
502     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm;
503     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt;
504     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
505 } WKPageUIClientV5;
506
507 typedef struct WKPageUIClientV6 {
508     WKPageUIClientBase                                                  base;
509
510     // Version 0.
511     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
512     WKPageUIClientCallback                                              showPage;
513     WKPageUIClientCallback                                              close;
514     WKPageTakeFocusCallback                                             takeFocus;
515     WKPageFocusCallback                                                 focus;
516     WKPageUnfocusCallback                                               unfocus;
517     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
518     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
519     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
520     WKPageSetStatusTextCallback                                         setStatusText;
521     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
522     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
523     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
524     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
525     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
526     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
527     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
528     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
529     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
530     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
531     WKPageGetIsResizableCallback                                        isResizable;
532     WKPageSetIsResizableCallback                                        setIsResizable;
533     WKPageGetWindowFrameCallback                                        getWindowFrame;
534     WKPageSetWindowFrameCallback                                        setWindowFrame;
535     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel;
536     WKPageUIClientCallback                                              didDraw;
537     WKPageUIClientCallback                                              pageDidScroll;
538     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
539     WKPageRunOpenPanelCallback                                          runOpenPanel;
540     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
541     WKPageHeaderHeightCallback                                          headerHeight;
542     WKPageFooterHeightCallback                                          footerHeight;
543     WKPageDrawHeaderCallback                                            drawHeader;
544     WKPageDrawFooterCallback                                            drawFooter;
545     WKPagePrintFrameCallback                                            printFrame;
546     WKPageUIClientCallback                                              runModal;
547     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
548     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
549     void*                                                               shouldInterruptJavaScript_unavailable;
550
551     // Version 1.
552     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
553     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
554     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
555     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
556
557     // Version 2.
558     WKPageShowColorPickerCallback                                       showColorPicker;
559     WKPageHideColorPickerCallback                                       hideColorPicker;
560     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
561
562     // Version 3.
563     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
564
565     // Version 4.
566     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
567     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
568     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
569     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
570
571     // Version 5.
572     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
573     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
574     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
575     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
576     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
577     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
578
579     // Version 6.
580     WKPageCreateNewPageCallback                                         createNewPage;
581     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
582     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
583     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
584     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
585 } WKPageUIClientV6;
586
587 typedef struct WKPageUIClientV7 {
588     WKPageUIClientBase                                                  base;
589
590     // Version 0.
591     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
592     WKPageUIClientCallback                                              showPage;
593     WKPageUIClientCallback                                              close;
594     WKPageTakeFocusCallback                                             takeFocus;
595     WKPageFocusCallback                                                 focus;
596     WKPageUnfocusCallback                                               unfocus;
597     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
598     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
599     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
600     WKPageSetStatusTextCallback                                         setStatusText;
601     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
602     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
603     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
604     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
605     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
606     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
607     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
608     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
609     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
610     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
611     WKPageGetIsResizableCallback                                        isResizable;
612     WKPageSetIsResizableCallback                                        setIsResizable;
613     WKPageGetWindowFrameCallback                                        getWindowFrame;
614     WKPageSetWindowFrameCallback                                        setWindowFrame;
615     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
616     WKPageUIClientCallback                                              didDraw;
617     WKPageUIClientCallback                                              pageDidScroll;
618     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
619     WKPageRunOpenPanelCallback                                          runOpenPanel;
620     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
621     WKPageHeaderHeightCallback                                          headerHeight;
622     WKPageFooterHeightCallback                                          footerHeight;
623     WKPageDrawHeaderCallback                                            drawHeader;
624     WKPageDrawFooterCallback                                            drawFooter;
625     WKPagePrintFrameCallback                                            printFrame;
626     WKPageUIClientCallback                                              runModal;
627     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
628     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
629     void*                                                               shouldInterruptJavaScript_unavailable;
630
631     // Version 1.
632     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
633     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
634     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
635     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
636
637     // Version 2.
638     WKPageShowColorPickerCallback                                       showColorPicker;
639     WKPageHideColorPickerCallback                                       hideColorPicker;
640     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
641
642     // Version 3.
643     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
644
645     // Version 4.
646     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
647     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
648     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
649     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
650
651     // Version 5.
652     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
653     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
654     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
655     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
656     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
657     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
658
659     // Version 6.
660     WKPageCreateNewPageCallback                                         createNewPage;
661     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
662     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
663     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
664     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
665
666     // Version 7.
667     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
668     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
669 } WKPageUIClientV7;
670
671 typedef struct WKPageUIClientV8 {
672     WKPageUIClientBase                                                  base;
673     
674     // Version 0.
675     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
676     WKPageUIClientCallback                                              showPage;
677     WKPageUIClientCallback                                              close;
678     WKPageTakeFocusCallback                                             takeFocus;
679     WKPageFocusCallback                                                 focus;
680     WKPageUnfocusCallback                                               unfocus;
681     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
682     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
683     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
684     WKPageSetStatusTextCallback                                         setStatusText;
685     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
686     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
687     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
688     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
689     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
690     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
691     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
692     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
693     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
694     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
695     WKPageGetIsResizableCallback                                        isResizable;
696     WKPageSetIsResizableCallback                                        setIsResizable;
697     WKPageGetWindowFrameCallback                                        getWindowFrame;
698     WKPageSetWindowFrameCallback                                        setWindowFrame;
699     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
700     WKPageUIClientCallback                                              didDraw;
701     WKPageUIClientCallback                                              pageDidScroll;
702     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
703     WKPageRunOpenPanelCallback                                          runOpenPanel;
704     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
705     WKPageHeaderHeightCallback                                          headerHeight;
706     WKPageFooterHeightCallback                                          footerHeight;
707     WKPageDrawHeaderCallback                                            drawHeader;
708     WKPageDrawFooterCallback                                            drawFooter;
709     WKPagePrintFrameCallback                                            printFrame;
710     WKPageUIClientCallback                                              runModal;
711     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
712     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
713     void*                                                               shouldInterruptJavaScript_unavailable;
714     
715     // Version 1.
716     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
717     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
718     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
719     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
720     
721     // Version 2.
722     WKPageShowColorPickerCallback                                       showColorPicker;
723     WKPageHideColorPickerCallback                                       hideColorPicker;
724     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
725     
726     // Version 3.
727     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
728     
729     // Version 4.
730     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
731     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
732     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
733     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
734     
735     // Version 5.
736     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
737     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
738     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
739     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
740     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
741     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
742     
743     // Version 6.
744     WKPageCreateNewPageCallback                                         createNewPage;
745     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
746     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
747     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
748     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
749     
750     // Version 7.
751     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
752     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
753     
754     // Version 8.
755     WKRequestPointerLockCallback                                        requestPointerLock;
756     WKDidLosePointerLockCallback                                        didLosePointerLock;
757 } WKPageUIClientV8;
758
759 typedef struct WKPageUIClientV9 {
760     WKPageUIClientBase                                                  base;
761
762     // Version 0.
763     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
764     WKPageUIClientCallback                                              showPage;
765     WKPageUIClientCallback                                              close;
766     WKPageTakeFocusCallback                                             takeFocus;
767     WKPageFocusCallback                                                 focus;
768     WKPageUnfocusCallback                                               unfocus;
769     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
770     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
771     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
772     WKPageSetStatusTextCallback                                         setStatusText;
773     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
774     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
775     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
776     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
777     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
778     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
779     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
780     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
781     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
782     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
783     WKPageGetIsResizableCallback                                        isResizable;
784     WKPageSetIsResizableCallback                                        setIsResizable;
785     WKPageGetWindowFrameCallback                                        getWindowFrame;
786     WKPageSetWindowFrameCallback                                        setWindowFrame;
787     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
788     WKPageUIClientCallback                                              didDraw;
789     WKPageUIClientCallback                                              pageDidScroll;
790     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
791     WKPageRunOpenPanelCallback                                          runOpenPanel;
792     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
793     WKPageHeaderHeightCallback                                          headerHeight;
794     WKPageFooterHeightCallback                                          footerHeight;
795     WKPageDrawHeaderCallback                                            drawHeader;
796     WKPageDrawFooterCallback                                            drawFooter;
797     WKPagePrintFrameCallback                                            printFrame;
798     WKPageUIClientCallback                                              runModal;
799     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
800     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
801     void*                                                               shouldInterruptJavaScript_unavailable;
802
803     // Version 1.
804     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
805     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
806     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
807     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
808
809     // Version 2.
810     WKPageShowColorPickerCallback                                       showColorPicker;
811     WKPageHideColorPickerCallback                                       hideColorPicker;
812     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
813
814     // Version 3.
815     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
816
817     // Version 4.
818     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
819     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
820     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
821     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
822
823     // Version 5.
824     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
825     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
826     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
827     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
828     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
829     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
830
831     // Version 6.
832     WKPageCreateNewPageCallback                                         createNewPage;
833     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
834     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
835     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
836     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
837
838     // Version 7.
839     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
840     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
841
842     // Version 8.
843     WKRequestPointerLockCallback                                        requestPointerLock;
844     WKDidLosePointerLockCallback                                        didLosePointerLock;
845
846     // Version 9.
847     WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
848 } WKPageUIClientV9;
849     
850 typedef struct WKPageUIClientV10 {
851     WKPageUIClientBase                                                  base;
852     
853     // Version 0.
854     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
855     WKPageUIClientCallback                                              showPage;
856     WKPageUIClientCallback                                              close;
857     WKPageTakeFocusCallback                                             takeFocus;
858     WKPageFocusCallback                                                 focus;
859     WKPageUnfocusCallback                                               unfocus;
860     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
861     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
862     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
863     WKPageSetStatusTextCallback                                         setStatusText;
864     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
865     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
866     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
867     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
868     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
869     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
870     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
871     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
872     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
873     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
874     WKPageGetIsResizableCallback                                        isResizable;
875     WKPageSetIsResizableCallback                                        setIsResizable;
876     WKPageGetWindowFrameCallback                                        getWindowFrame;
877     WKPageSetWindowFrameCallback                                        setWindowFrame;
878     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
879     WKPageUIClientCallback                                              didDraw;
880     WKPageUIClientCallback                                              pageDidScroll;
881     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
882     WKPageRunOpenPanelCallback                                          runOpenPanel;
883     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
884     WKPageHeaderHeightCallback                                          headerHeight;
885     WKPageFooterHeightCallback                                          footerHeight;
886     WKPageDrawHeaderCallback                                            drawHeader;
887     WKPageDrawFooterCallback                                            drawFooter;
888     WKPagePrintFrameCallback                                            printFrame;
889     WKPageUIClientCallback                                              runModal;
890     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
891     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
892     void*                                                               shouldInterruptJavaScript_unavailable;
893     
894     // Version 1.
895     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
896     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
897     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
898     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
899     
900     // Version 2.
901     WKPageShowColorPickerCallback                                       showColorPicker;
902     WKPageHideColorPickerCallback                                       hideColorPicker;
903     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
904     
905     // Version 3.
906     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
907     
908     // Version 4.
909     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
910     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
911     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
912     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
913     
914     // Version 5.
915     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
916     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
917     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
918     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
919     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
920     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
921     
922     // Version 6.
923     WKPageCreateNewPageCallback                                         createNewPage;
924     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
925     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
926     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
927     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
928     
929     // Version 7.
930     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
931     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
932     
933     // Version 8.
934     WKRequestPointerLockCallback                                        requestPointerLock;
935     WKDidLosePointerLockCallback                                        didLosePointerLock;
936     
937     // Version 9.
938     WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
939     
940     // Version 10.
941     WKHasVideoInPictureInPictureDidChangeCallback                       hasVideoInPictureInPictureDidChange;
942     WKDidExceedBackgroundResourceLimitWhileInForegroundCallback         didExceedBackgroundResourceLimitWhileInForeground;
943 } WKPageUIClientV10;
944
945 typedef struct WKPageUIClientV11 {
946     WKPageUIClientBase                                                  base;
947
948     // Version 0.
949     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
950     WKPageUIClientCallback                                              showPage;
951     WKPageUIClientCallback                                              close;
952     WKPageTakeFocusCallback                                             takeFocus;
953     WKPageFocusCallback                                                 focus;
954     WKPageUnfocusCallback                                               unfocus;
955     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
956     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
957     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
958     WKPageSetStatusTextCallback                                         setStatusText;
959     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
960     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
961     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
962     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
963     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
964     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
965     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
966     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
967     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
968     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
969     WKPageGetIsResizableCallback                                        isResizable;
970     WKPageSetIsResizableCallback                                        setIsResizable;
971     WKPageGetWindowFrameCallback                                        getWindowFrame;
972     WKPageSetWindowFrameCallback                                        setWindowFrame;
973     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
974     WKPageUIClientCallback                                              didDraw;
975     WKPageUIClientCallback                                              pageDidScroll;
976     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
977     WKPageRunOpenPanelCallback                                          runOpenPanel;
978     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
979     WKPageHeaderHeightCallback                                          headerHeight;
980     WKPageFooterHeightCallback                                          footerHeight;
981     WKPageDrawHeaderCallback                                            drawHeader;
982     WKPageDrawFooterCallback                                            drawFooter;
983     WKPagePrintFrameCallback                                            printFrame;
984     WKPageUIClientCallback                                              runModal;
985     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
986     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
987     void*                                                               shouldInterruptJavaScript_unavailable;
988
989     // Version 1.
990     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
991     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
992     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
993     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
994
995     // Version 2.
996     WKPageShowColorPickerCallback                                       showColorPicker;
997     WKPageHideColorPickerCallback                                       hideColorPicker;
998     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
999
1000     // Version 3.
1001     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
1002
1003     // Version 4.
1004     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
1005     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
1006     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
1007     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
1008
1009     // Version 5.
1010     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
1011     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
1012     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
1013     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
1014     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
1015     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
1016
1017     // Version 6.
1018     WKPageCreateNewPageCallback                                         createNewPage;
1019     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
1020     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
1021     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
1022     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
1023
1024     // Version 7.
1025     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
1026     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
1027
1028     // Version 8.
1029     WKRequestPointerLockCallback                                        requestPointerLock;
1030     WKDidLosePointerLockCallback                                        didLosePointerLock;
1031
1032     // Version 9.
1033     WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
1034
1035     // Version 10.
1036     WKHasVideoInPictureInPictureDidChangeCallback                       hasVideoInPictureInPictureDidChange;
1037     WKDidExceedBackgroundResourceLimitWhileInForegroundCallback         didExceedBackgroundResourceLimitWhileInForeground;
1038
1039     // Version 11.
1040     WKPageDidResignInputElementStrongPasswordAppearanceCallback         didResignInputElementStrongPasswordAppearance;
1041 } WKPageUIClientV11;
1042
1043 typedef struct WKPageUIClientV12 {
1044     WKPageUIClientBase                                                  base;
1045     
1046     // Version 0.
1047     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
1048     WKPageUIClientCallback                                              showPage;
1049     WKPageUIClientCallback                                              close;
1050     WKPageTakeFocusCallback                                             takeFocus;
1051     WKPageFocusCallback                                                 focus;
1052     WKPageUnfocusCallback                                               unfocus;
1053     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
1054     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
1055     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
1056     WKPageSetStatusTextCallback                                         setStatusText;
1057     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
1058     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
1059     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
1060     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
1061     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
1062     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
1063     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
1064     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
1065     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
1066     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
1067     WKPageGetIsResizableCallback                                        isResizable;
1068     WKPageSetIsResizableCallback                                        setIsResizable;
1069     WKPageGetWindowFrameCallback                                        getWindowFrame;
1070     WKPageSetWindowFrameCallback                                        setWindowFrame;
1071     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
1072     WKPageUIClientCallback                                              didDraw;
1073     WKPageUIClientCallback                                              pageDidScroll;
1074     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
1075     WKPageRunOpenPanelCallback                                          runOpenPanel;
1076     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
1077     WKPageHeaderHeightCallback                                          headerHeight;
1078     WKPageFooterHeightCallback                                          footerHeight;
1079     WKPageDrawHeaderCallback                                            drawHeader;
1080     WKPageDrawFooterCallback                                            drawFooter;
1081     WKPagePrintFrameCallback                                            printFrame;
1082     WKPageUIClientCallback                                              runModal;
1083     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
1084     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
1085     void*                                                               shouldInterruptJavaScript_unavailable;
1086     
1087     // Version 1.
1088     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
1089     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
1090     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
1091     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
1092     
1093     // Version 2.
1094     WKPageShowColorPickerCallback                                       showColorPicker;
1095     WKPageHideColorPickerCallback                                       hideColorPicker;
1096     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
1097     
1098     // Version 3.
1099     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
1100     
1101     // Version 4.
1102     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
1103     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
1104     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
1105     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
1106     
1107     // Version 5.
1108     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
1109     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
1110     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
1111     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
1112     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
1113     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
1114     
1115     // Version 6.
1116     WKPageCreateNewPageCallback                                         createNewPage;
1117     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
1118     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
1119     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
1120     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
1121     
1122     // Version 7.
1123     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
1124     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
1125     
1126     // Version 8.
1127     WKRequestPointerLockCallback                                        requestPointerLock;
1128     WKDidLosePointerLockCallback                                        didLosePointerLock;
1129     
1130     // Version 9.
1131     WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
1132     
1133     // Version 10.
1134     WKHasVideoInPictureInPictureDidChangeCallback                       hasVideoInPictureInPictureDidChange;
1135     WKDidExceedBackgroundResourceLimitWhileInForegroundCallback         didExceedBackgroundResourceLimitWhileInForeground;
1136     
1137     // Version 11.
1138     WKPageDidResignInputElementStrongPasswordAppearanceCallback         didResignInputElementStrongPasswordAppearance;
1139
1140     // Version 12.
1141     WKPageRequestStorageAccessConfirmCallback                           requestStorageAccessConfirm;
1142 } WKPageUIClientV12;
1143
1144 typedef struct WKPageUIClientV13 {
1145     WKPageUIClientBase                                                  base;
1146
1147     // Version 0.
1148     WKPageCreateNewPageCallback_deprecatedForUseWithV0                  createNewPage_deprecatedForUseWithV0;
1149     WKPageUIClientCallback                                              showPage;
1150     WKPageUIClientCallback                                              close;
1151     WKPageTakeFocusCallback                                             takeFocus;
1152     WKPageFocusCallback                                                 focus;
1153     WKPageUnfocusCallback                                               unfocus;
1154     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0             runJavaScriptAlert_deprecatedForUseWithV0;
1155     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0           runJavaScriptConfirm_deprecatedForUseWithV0;
1156     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0            runJavaScriptPrompt_deprecatedForUseWithV0;
1157     WKPageSetStatusTextCallback                                         setStatusText;
1158     WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0        mouseDidMoveOverElement_deprecatedForUseWithV0;
1159     WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0     missingPluginButtonClicked_deprecatedForUseWithV0;
1160     WKPageDidNotHandleKeyEventCallback                                  didNotHandleKeyEvent;
1161     WKPageDidNotHandleWheelEventCallback                                didNotHandleWheelEvent;
1162     WKPageGetToolbarsAreVisibleCallback                                 toolbarsAreVisible;
1163     WKPageSetToolbarsAreVisibleCallback                                 setToolbarsAreVisible;
1164     WKPageGetMenuBarIsVisibleCallback                                   menuBarIsVisible;
1165     WKPageSetMenuBarIsVisibleCallback                                   setMenuBarIsVisible;
1166     WKPageGetStatusBarIsVisibleCallback                                 statusBarIsVisible;
1167     WKPageSetStatusBarIsVisibleCallback                                 setStatusBarIsVisible;
1168     WKPageGetIsResizableCallback                                        isResizable;
1169     WKPageSetIsResizableCallback                                        setIsResizable;
1170     WKPageGetWindowFrameCallback                                        getWindowFrame;
1171     WKPageSetWindowFrameCallback                                        setWindowFrame;
1172     WKPageRunBeforeUnloadConfirmPanelCallback_deprecatedForUseWithV6    runBeforeUnloadConfirmPanel_deprecatedForUseWithV6;
1173     WKPageUIClientCallback                                              didDraw;
1174     WKPageUIClientCallback                                              pageDidScroll;
1175     WKPageExceededDatabaseQuotaCallback                                 exceededDatabaseQuota;
1176     WKPageRunOpenPanelCallback                                          runOpenPanel;
1177     WKPageDecidePolicyForGeolocationPermissionRequestCallback           decidePolicyForGeolocationPermissionRequest;
1178     WKPageHeaderHeightCallback                                          headerHeight;
1179     WKPageFooterHeightCallback                                          footerHeight;
1180     WKPageDrawHeaderCallback                                            drawHeader;
1181     WKPageDrawFooterCallback                                            drawFooter;
1182     WKPagePrintFrameCallback                                            printFrame;
1183     WKPageUIClientCallback                                              runModal;
1184     void*                                                               unused1; // Used to be didCompleteRubberBandForMainFrame
1185     WKPageSaveDataToFileInDownloadsFolderCallback                       saveDataToFileInDownloadsFolder;
1186     void*                                                               shouldInterruptJavaScript_unavailable;
1187
1188     // Version 1.
1189     WKPageCreateNewPageCallback_deprecatedForUseWithV1                  createNewPage_deprecatedForUseWithV1;
1190     WKPageMouseDidMoveOverElementCallback                               mouseDidMoveOverElement;
1191     WKPageDecidePolicyForNotificationPermissionRequestCallback          decidePolicyForNotificationPermissionRequest;
1192     WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1;
1193
1194     // Version 2.
1195     WKPageShowColorPickerCallback                                       showColorPicker;
1196     WKPageHideColorPickerCallback                                       hideColorPicker;
1197     WKPageUnavailablePluginButtonClickedCallback                        unavailablePluginButtonClicked;
1198
1199     // Version 3.
1200     WKPagePinnedStateDidChangeCallback                                  pinnedStateDidChange;
1201
1202     // Version 4.
1203     void*                                                               unused2; // Used to be didBeginTrackingPotentialLongMousePress.
1204     void*                                                               unused3; // Used to be didRecognizeLongMousePress.
1205     void*                                                               unused4; // Used to be didCancelTrackingPotentialLongMousePress.
1206     WKPageIsPlayingAudioDidChangeCallback                               isPlayingAudioDidChange;
1207
1208     // Version 5.
1209     WKPageDecidePolicyForUserMediaPermissionRequestCallback             decidePolicyForUserMediaPermissionRequest;
1210     WKPageDidClickAutoFillButtonCallback                                didClickAutoFillButton;
1211     WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5             runJavaScriptAlert_deprecatedForUseWithV5;
1212     WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5           runJavaScriptConfirm_deprecatedForUseWithV5;
1213     WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5            runJavaScriptPrompt_deprecatedForUseWithV5;
1214     WKPageMediaSessionMetadataDidChangeCallback                         mediaSessionMetadataDidChange;
1215
1216     // Version 6.
1217     WKPageCreateNewPageCallback                                         createNewPage;
1218     WKPageRunJavaScriptAlertCallback                                    runJavaScriptAlert;
1219     WKPageRunJavaScriptConfirmCallback                                  runJavaScriptConfirm;
1220     WKPageRunJavaScriptPromptCallback                                   runJavaScriptPrompt;
1221     WKCheckUserMediaPermissionCallback                                  checkUserMediaPermissionForOrigin;
1222
1223     // Version 7.
1224     WKPageRunBeforeUnloadConfirmPanelCallback                           runBeforeUnloadConfirmPanel;
1225     WKFullscreenMayReturnToInlineCallback                               fullscreenMayReturnToInline;
1226
1227     // Version 8.
1228     WKRequestPointerLockCallback                                        requestPointerLock;
1229     WKDidLosePointerLockCallback                                        didLosePointerLock;
1230
1231     // Version 9.
1232     WKHandleAutoplayEventCallback                                       handleAutoplayEvent;
1233
1234     // Version 10.
1235     WKHasVideoInPictureInPictureDidChangeCallback                       hasVideoInPictureInPictureDidChange;
1236     WKDidExceedBackgroundResourceLimitWhileInForegroundCallback         didExceedBackgroundResourceLimitWhileInForeground;
1237
1238     // Version 11.
1239     WKPageDidResignInputElementStrongPasswordAppearanceCallback         didResignInputElementStrongPasswordAppearance;
1240
1241     // Version 12.
1242     WKPageRequestStorageAccessConfirmCallback                           requestStorageAccessConfirm;
1243
1244     // Version 13.
1245     WKPageShouldAllowDeviceOrientationAndMotionAccessCallback           shouldAllowDeviceOrientationAndMotionAccess;
1246 } WKPageUIClientV13;
1247
1248 #ifdef __cplusplus
1249 }
1250 #endif